Bläddra i källkod

调整了项目文件组织为按用户类型,完善了路由守卫

chillqi 2 år sedan
förälder
incheckning
649387f4b9

+ 3 - 1
components.d.ts

@@ -8,7 +8,7 @@ export {}
 declare module 'vue' {
   export interface GlobalComponents {
     AllStore: typeof import('./src/components/AllStore.vue')['default']
-    Dashboard: typeof import('./src/components/Dashboard.vue')['default']
+    Dashboard: typeof import('./src/views/portal/Dashboard.vue')['default']
     DropFile: typeof import('./src/components/DropFile.vue')['default']
     ElAside: typeof import('element-plus/es')['ElAside']
     ElAvatar: typeof import('element-plus/es')['ElAvatar']
@@ -17,6 +17,8 @@ declare module 'vue' {
     ElCol: typeof import('element-plus/es')['ElCol']
     ElContainer: typeof import('element-plus/es')['ElContainer']
     ElDivider: typeof import('element-plus/es')['ElDivider']
+    ElForm: typeof import('element-plus/es')['ElForm']
+    ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElHeader: typeof import('element-plus/es')['ElHeader']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']

+ 2 - 2
src/api/store.ts

@@ -11,8 +11,8 @@ export const createStore = payload => {
 }
 
 // 获取全部商店
-export const getAllStore = payload => {
-    return axios.get(`${STORE_MODULE}/`, payload)
+export const getAllStore = () => {
+    return axios.get(`${STORE_MODULE}/`, )
         .then(res => {
             return res;
         })

+ 1 - 1
src/components/Header.vue

@@ -43,7 +43,7 @@ function search() {
       <div class="flex items-center justify-between space-x-4">
 
         <div class="flex items-center">
-          <router-link to="/home" v-slot="{navigate}">
+          <router-link to="/allStore" v-slot="{navigate}">
             <h1 @click="navigate" class="text-xl text-white"> 蓝鲸在线购物 </h1>
           </router-link>
         </div>

+ 1 - 1
src/components/Login.vue

@@ -42,7 +42,7 @@
           localStorage.setItem('token', token)
 
           // 路由跳转
-          router.push({ path: "/home" })
+          router.push({ path: "/allStore" })
         })
         .catch(e => {
           console.log(e.message)

+ 24 - 9
src/router/index.ts

@@ -1,24 +1,30 @@
-import { createRouter, createWebHistory } from "vue-router";
+import {createRouter, createWebHistory} from "vue-router";
 
 const router = createRouter({
     history: createWebHistory(),
     routes: [{
         path: '/',
         redirect: '/login',
-    },{
+    }, {
         path: '/login',
         component: () => import('../components/Login.vue'),
-    },{
+    }, {
         path: '/register',
         component: () => import('../components/Register.vue'),
     }, {
         path: '/home',
-        component: () => import('../views/Home.vue'),
+        redirect: '/allStore',
+        component: () => import('../views/portal/Home.vue'),
         children: [
+            {
+                path: '/allStore',
+                name: 'allStore',
+                component: () => import('../views/portal/AllStore.vue'),
+            },
             {
                 path: '/dashboard',
                 name: 'Dashboard',
-                component: () => import('../components/Dashboard.vue'),
+                component: () => import('../views/portal/Dashboard.vue'),
                 meta: {
                     title: '个人信息'
                 }
@@ -26,7 +32,7 @@ const router = createRouter({
         ]
     }, {
         path: '/manager/createStore',
-        component: () => import('../views/store/CreateStore.vue'),
+        component: () => import('../views/Manager/CreateStore.vue'),
     }]
 })
 
@@ -35,11 +41,20 @@ router.beforeEach((to, from, next) => {
 
     console.log(role);
 
-    if (!role && to.path !== '/login') {
-        next('/login');
-    } else {
+    if (role) {
         next();
+    } else {
+        if(to.path === '/login') {
+            next();
+        }
+        else if(to.path === '/register') {
+            next();
+        }
+        else {
+            next('/login');
+        }
     }
 });
 
+
 export {router};

+ 0 - 38
src/views/Home.vue

@@ -1,38 +0,0 @@
-<script setup lang="ts">
-import Header from "../components/Header.vue"
-import StoreItem from "./store/component/StoreItem.vue";
-import {watch, ref} from "vue";
-import {getAllStore} from "../api/store.ts";
-
-let storeList = ref([])
-
-function getStoreList() {
-  getAllStore().then(res => {
-    storeList = res.result;
-  })
-}
-
-getStoreList();
-</script>
-
-<template>
-  <Header/>
-  <StoreItem v-for="(storeVO, index) in storeList" :key="index" :store="storeVO" />
-
-</template>
-
-<style scoped>
-.item {
-  border: 1px solid black;
-  /*边框合并*/
-  margin: 0 0 -1px -1px;
-  position: relative;
-  z-index: 0;
-}
-
-.item:hover {
-  border-color: #409EFF;
-  border-width: medium;
-  z-index: 1;
-}
-</style>

+ 0 - 0
src/views/store/CreateStore.vue → src/views/Manager/CreateStore.vue


+ 2 - 2
src/views/store/component/StoreItem.vue → src/views/common/StoreItem.vue

@@ -6,8 +6,8 @@ const props = defineProps({
     required: true
   }
 })
-//
-// let storeList = ref([])
+
+console.log(props.storeVO)
 
 const id = props.storeVO.id
 const name = props.storeVO.name

+ 26 - 0
src/views/portal/AllStore.vue

@@ -0,0 +1,26 @@
+<script setup lang="ts">
+
+import StoreItem from "../common/StoreItem.vue";
+import {ref} from "vue";
+import {getAllStore} from "../../api/store.ts";
+
+let storeList = ref([])
+
+function getStoreList() {
+  getAllStore().then(res => {
+    storeList.value = res.result;
+    console.log(storeList.value)
+  })
+}
+
+getStoreList();
+
+</script>
+
+<template>
+  <StoreItem v-for="storeVO in storeList" :storeVO="storeVO" />
+</template>
+
+<style scoped>
+
+</style>

+ 2 - 2
src/components/Dashboard.vue → src/views/portal/Dashboard.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import {onBeforeMount, ref, computed} from 'vue';
-  import {userInfo, userInfoUpdate} from '../api/user.ts'
-import {router} from '../router'
+  import {userInfo, userInfoUpdate} from '../../api/user.ts'
+import {router} from '../../router'
 
   const name = ref('')
   const tel = ref('')

+ 14 - 0
src/views/portal/Home.vue

@@ -0,0 +1,14 @@
+<script setup lang="ts">
+import Header from "../../components/Header.vue"
+
+</script>
+
+<template>
+  <Header/>
+  <router-view></router-view>
+
+</template>
+
+<style scoped>
+
+</style>