store.vue 7.09 KB
Newer Older
wanli's avatar
wanli committed
1 2 3
<template>
  <div class="app-container">
    <header class="header-nav">
wanli's avatar
wanli committed
4
      <div class="left" @click="onHomeClick">
wanli's avatar
wanli committed
5 6 7 8 9 10
        <img src="../assets/images/evm-store.svg" alt="evue-logo" />
        <h3>EVM应用商店</h3>
      </div>
      <div class="center">
        <nav>
          <ul>
wanli's avatar
wanli committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
            <router-link
              to="/gallery"
              v-slot="{ navigate, isActive, isExactActive }"
              custom
            >
              <li
                @click="navigate"
                :class="[
                  isActive && 'router-link-active',
                  isExactActive && 'router-link-exact-active',
                ]"
              >
                推荐
              </li>
            </router-link>
            <router-link
              to="/category"
              v-slot="{ navigate, isActive, isExactActive }"
              custom
            >
              <li
                @click="navigate"
                :class="[
                  isActive && 'router-link-active',
                  isExactActive && 'router-link-exact-active',
                ]"
              >
                应用
              </li>
            </router-link>
            <router-link
              to="/list"
              v-slot="{ navigate, isActive, isExactActive }"
              custom
            >
              <li
                @click="navigate"
                :class="[
                  isActive && 'router-link-active',
                  isExactActive && 'router-link-exact-active',
                ]"
              >
                游戏
              </li>
            </router-link>
            <router-link
              to="/rank"
              v-slot="{ navigate, isActive, isExactActive }"
              custom
            >
              <li
                @click="navigate"
                :class="[
                  isActive && 'router-link-active',
                  isExactActive && 'router-link-exact-active',
                ]"
              >
                排行
              </li>
            </router-link>
            <router-link
              to="/developer"
              v-slot="{ navigate, isActive, isExactActive }"
              custom
            >
              <li
                @click="navigate"
                :class="[
                  isActive && 'router-link-active',
                  isExactActive && 'router-link-exact-active',
                ]"
              >
                开放平台
              </li>
            </router-link>
wanli's avatar
wanli committed
86 87 88 89
          </ul>
        </nav>
      </div>
      <div class="right">
wanli's avatar
wanli committed
90
        <div class="input-wrapper" ref="search">
wanli's avatar
wanli committed
91 92 93 94 95
          <input
            @focus="onSearchFocus"
            type="text"
            placeholder="搜索应用、游戏"
          />
wanli's avatar
wanli committed
96 97
          <dl v-show="selectShow">
            <dt>热词</dt>
wanli's avatar
wanli committed
98 99 100 101 102
            <dd @click="onSearchClick(1)">微聊</dd>
            <dd @click="onSearchClick(2)">支付宝</dd>
            <dd @click="onSearchClick(3)">计算器</dd>
            <dd @click="onSearchClick(4)">手表管家</dd>
            <dd @click="onSearchClick(5)">语音助手</dd>
wanli's avatar
wanli committed
103
          </dl>
wanli's avatar
wanli committed
104 105
        </div>
        <p class="submit-btn">上传应用</p>
wanli's avatar
wanli committed
106 107 108 109 110 111
        <img
          class="avatar"
          @click="onAccountClick"
          src="../assets/images/avatar.png"
          alt="avatar"
        />
wanli's avatar
wanli committed
112 113 114 115 116 117
      </div>
    </header>
    <main>
      <router-view></router-view>
    </main>
    <footer>
wanli's avatar
wanli committed
118 119 120 121 122 123 124 125 126 127
      <p>
        <a
          href="https://www.yuque.com/docs/share/97df8f40-dc3c-4642-aeb1-9734bc3ef2c8"
          target="_blank"
          >EVM应用商店开发者协议</a
        >
        <a href="https://www.yuque.com/bytecode/evue" target="_blank"
          >EVM应用开发标准</a
        >
      </p>
wanli's avatar
wanli committed
128 129 130 131 132 133 134 135 136
      <p>Copyright © 武汉市字节码科技有限公司</p>
      <p>⭐⭐⭐⭐⭐</p>
    </footer>
  </div>
</template>
<script>
export default {
  name: "StoreLayout",
  data() {
wanli's avatar
wanli committed
137 138 139
    return {
      selectShow: false,
    };
wanli's avatar
wanli committed
140 141 142 143
  },
  computed: {},
  methods: {
    onSearchFocus() {
wanli's avatar
wanli committed
144
      this.selectShow = true;
wanli's avatar
wanli committed
145 146
    },
    onSearchBlur() {
wanli's avatar
wanli committed
147 148 149 150
      this.selectShow = false;
    },
    onHomeClick() {
      this.$router.push({ path: "/gallery" });
wanli's avatar
wanli committed
151
    },
wanli's avatar
wanli committed
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
    onAccountClick() {
      this.$router.push({ path: "/auth" });
    },
    onSearchClick(index) {
      console.log(index);
      this.$router.push({ path: "/search" });
      this.selectShow = false;
    },
    searchEvent(event) {
      const e = event || window.event;
      if (this.$refs.search && !this.$refs.search.contains(e.target)) {
        this.selectShow = false;
      }
    },
  },
  mounted() {
    document.addEventListener("click", this.searchEvent);
wanli's avatar
wanli committed
169 170
  },
  created() {},
wanli's avatar
wanli committed
171 172 173
  beforeDestroy() {
    document.removeEventListener("click", this.searchEvent);
  },
wanli's avatar
wanli committed
174 175 176 177 178 179 180 181
};
</script>
<style lang="scss">
@import "../styles/iconfont/iconfont.css";
.app-container {
  & > div.page-wrapper {
    margin: 10px 0px;
  }
wanli's avatar
wanli committed
182
  & > header.header-nav {
wanli's avatar
wanli committed
183
    display: flex;
wanli's avatar
wanli committed
184
    justify-content: center;
wanli's avatar
wanli committed
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
    padding: 12px 25px;
    border-bottom: 1px solid #f2f2f2;
    & > div {
      display: inline-flex;
      flex-direction: row;
      align-items: center;
    }
    & > div.left {
      cursor: pointer;
      & > img {
        width: 40px;
        height: 40px;
        display: block;
      }
      & > h3 {
        display: inline-block;
        margin: 0px 0px 0px 15px;
      }
    }
    & > div.center {
      & > nav {
        & > ul {
          display: inline-flex;
          flex-direction: row;
          & > li {
            cursor: pointer;
            padding: 0px 30px;
wanli's avatar
wanli committed
212 213 214
            &.router-link-active {
              color: #4cd1e0;
            }
wanli's avatar
wanli committed
215 216 217 218 219 220 221
          }
        }
      }
    }
    & > div.right {
      & > div.input-wrapper {
        margin-right: 15px;
wanli's avatar
wanli committed
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
        & > dl {
          width: 200px;
          height: auto;
          position: absolute;
          font-size: 14px;
          margin: 5px 0px 0px 0px;
          z-index: 1000;
          background: #ffffff;
          border-radius: 8px;
          border: 1px solid #f5f5f5;
          box-shadow: 1px 0px 3px 2px #dbdbdb;
          & > dt {
            font-size: 12px;
            color: grey;
            margin: 10px;
          }
          & > dd {
            cursor: pointer;
            padding: 10px;
            margin-inline-start: 0px;
            &:hover {
              background: #eeeeee;
            }
          }
        }
wanli's avatar
wanli committed
247 248 249 250 251 252 253 254 255 256 257 258
      }
      & > img.avatar {
        width: 32px;
        height: 32px;
        display: block;
        margin-left: 10px;
        cursor: pointer;
      }
    }
  }
  & > main {
    width: 50%;
wanli's avatar
wanli committed
259
    min-height: 76vh;
wanli's avatar
wanli committed
260
    margin: 0px auto;
wanli's avatar
wanli committed
261 262 263
    @media screen and (max-width: 1700px) {
      width: 66%;
    }
wanli's avatar
wanli committed
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
    @media screen and (max-width: 1170px) {
      width: 70%;
    }
    @media screen and (max-width: 920px) {
      width: 85%;
    }
    @media screen and (max-width: 750px) {
      width: 100%;
    }
  }
  & > footer {
    font-size: 13px;
    padding: 25px 0px;
    background-color: #f2f2f2;
    & > p {
wanli's avatar
wanli committed
279 280 281 282 283 284 285
      & > a {
        margin-right: 20px;
        color: royalblue;
        &:last-child {
          margin-right: 0px;
        }
      }
wanli's avatar
wanli committed
286 287 288 289 290
      text-align: center;
    }
  }
}
</style>