|
@@ -4,7 +4,7 @@
|
|
|
<div class="nav-icons">
|
|
|
<i v-if="showNavIcons" class="icon-menu" @click="showMenu = true"></i>
|
|
|
<router-link class="icon-logo" to="/"></router-link>
|
|
|
- <i v-if="showNavIcons" class="icon-mine" @click="showMine = true"></i>
|
|
|
+ <i v-if="showNavIcons" class="icon-mine" @click="onClickMine"></i>
|
|
|
</div>
|
|
|
<transition
|
|
|
v-if="showNavIcons"
|
|
@@ -35,9 +35,11 @@
|
|
|
</transition>
|
|
|
</div>
|
|
|
<div v-if="showNavIcons" class="nav-bar-right">
|
|
|
- <div class="user flex-ac" @click="showMine = !showMine">
|
|
|
+ <div class="user pointer flex-ac" @click="onClickMine">
|
|
|
<i class="icon-mine"></i>
|
|
|
- <span class="user-name">Rebecca</span>
|
|
|
+ <span class="user-name">{{
|
|
|
+ state.userInfo ? state.userInfo.name : 'Sign in'
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
<div class="contact">
|
|
|
<i class="icon-phone"></i>
|
|
@@ -49,9 +51,10 @@
|
|
|
</div>
|
|
|
<transition enter-active-class="fadeIn" leave-active-class="fadeOut">
|
|
|
<div
|
|
|
+ v-if="state.userInfo"
|
|
|
v-show="showMine"
|
|
|
class="nav-menu nav-dropdown"
|
|
|
- :class="{ 'is-member': 1 }"
|
|
|
+ :class="{ 'is-member': state.userInfo.orders.length }"
|
|
|
>
|
|
|
<div class="nav-menu-header">
|
|
|
<i class="logo"></i>
|
|
@@ -60,12 +63,16 @@
|
|
|
<div class="nav-menu-body">
|
|
|
<div class="info">
|
|
|
<div class="p1">
|
|
|
- <p class="name">Hi, Rebecca</p>
|
|
|
- <p class="intro">Ordinary member</p>
|
|
|
+ <p class="name">Hi, {{ state.userInfo.name }}</p>
|
|
|
+ <p class="intro">
|
|
|
+ {{ state.userInfo.orders.length ? 'Pro' : 'Ordinary' }} member
|
|
|
+ </p>
|
|
|
</div>
|
|
|
- <div v-if="0" class="p2">
|
|
|
+ <div v-if="!state.userInfo.orders.length" class="p2">
|
|
|
<p class="txt">You have not purchased a member</p>
|
|
|
- <button class="btn">BUY</button>
|
|
|
+ <button class="btn" @click="$router.push('/fill-order')">
|
|
|
+ BUY
|
|
|
+ </button>
|
|
|
</div>
|
|
|
<div v-else class="p3">
|
|
|
<div class="txt">
|
|
@@ -73,35 +80,54 @@
|
|
|
<strong class="primary">Buy now ></strong>
|
|
|
</div>
|
|
|
<div class="swiper">
|
|
|
- <div class="swiper-item">
|
|
|
+ <div
|
|
|
+ v-for="(item, index) of state.userInfo.orders"
|
|
|
+ :key="index"
|
|
|
+ class="swiper-item"
|
|
|
+ >
|
|
|
<div class="service">
|
|
|
<div class="service-title">
|
|
|
<i class="service-icon icon-lite"></i>
|
|
|
- <div class="service-type">Lite</div>
|
|
|
- <div class="service-period">2021/09/01 to 2022/08/31</div>
|
|
|
+ <div class="service-type">{{ item.product_name }}</div>
|
|
|
+ <div class="service-period">
|
|
|
+ {{ item.start_time }} to {{ item.end_time }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="service-model tac">iPhone 12</div>
|
|
|
- <div class="service-code tac">QWERTYUIO12345678</div>
|
|
|
+ <div class="service-model tac">{{ item.phone_info }}</div>
|
|
|
+ <div class="service-code tac">{{ item.phone_imei }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="pagination">
|
|
|
- <i class="dot active"></i>
|
|
|
- <i class="dot"></i>
|
|
|
- <i class="dot"></i>
|
|
|
+ <div
|
|
|
+ v-if="state.userInfo.orders.length > Infinity"
|
|
|
+ class="pagination"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ v-for="n of state.userInfo.orders.length"
|
|
|
+ :key="n"
|
|
|
+ class="dot active"
|
|
|
+ ></i>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="role" @click="$router.push('/account')">
|
|
|
- {{ 1 ? 'Pro Member >' : 'Ordinary Member >' }}
|
|
|
+ {{
|
|
|
+ state.userInfo.orders.length
|
|
|
+ ? 'Pro Member >'
|
|
|
+ : 'Ordinary Member >'
|
|
|
+ }}
|
|
|
</div>
|
|
|
<ul class="dropdown-list">
|
|
|
- <li class="dropdown-item">
|
|
|
- <router-link to="/repaire/history">MY REPAIR REQUEST</router-link>
|
|
|
- </li>
|
|
|
- <li class="dropdown-item">
|
|
|
- <router-link to="/order">MY ORDER</router-link>
|
|
|
- </li>
|
|
|
+ <template v-if="state.userInfo.orders.length">
|
|
|
+ <li class="dropdown-item">
|
|
|
+ <router-link to="/repaire/history"
|
|
|
+ >MY REPAIR REQUEST</router-link
|
|
|
+ >
|
|
|
+ </li>
|
|
|
+ <li class="dropdown-item">
|
|
|
+ <router-link to="/order">MY ORDER</router-link>
|
|
|
+ </li>
|
|
|
+ </template>
|
|
|
<li class="dropdown-item">
|
|
|
<router-link to="/gift-card">MY DISCOUNT COUPON</router-link>
|
|
|
</li>
|
|
@@ -114,7 +140,7 @@
|
|
|
<li class="dropdown-item">
|
|
|
<router-link to="/account">ACCOUNT INFORMATION</router-link>
|
|
|
</li>
|
|
|
- <li class="dropdown-item">SIGN OUT</li>
|
|
|
+ <li class="dropdown-item" @click="signOut">SIGN OUT</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -124,7 +150,9 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref, watch } from 'vue'
|
|
|
-import { useRoute } from 'vue-router'
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
+import { state, logout } from '@/store'
|
|
|
+import Dialog from '@/components/dialog'
|
|
|
|
|
|
interface Props {
|
|
|
showNavIcons?: boolean
|
|
@@ -133,6 +161,7 @@ interface Props {
|
|
|
|
|
|
defineProps<Props>()
|
|
|
|
|
|
+const router = useRouter()
|
|
|
const route = useRoute()
|
|
|
const showMenu = ref(false)
|
|
|
const showMine = ref(false)
|
|
@@ -143,6 +172,22 @@ watch(
|
|
|
showMenu.value = showMine.value = false
|
|
|
}
|
|
|
)
|
|
|
+
|
|
|
+function onClickMine() {
|
|
|
+ if (state.userInfo) {
|
|
|
+ showMine.value = !showMine.value
|
|
|
+ } else {
|
|
|
+ router.push('/login')
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function signOut() {
|
|
|
+ await Dialog.confirm('TIPS', 'Are you sure you want to sign out?', {
|
|
|
+ confirmText: 'YES',
|
|
|
+ })
|
|
|
+ await logout()
|
|
|
+ router.push('/')
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|