Repository: Cry-StalL/virtual-campus-tour-2.0-front
Pull request #4: 侧边栏组件基础
Author: login: luozhj33
Created: 2025-04-02T17:51:15Z | Merged: 2025-04-03T03:03:09Z

涉及到HomeView.vue


Diff:
diff --git a/assets/icons/SideBar/about.png b/assets/icons/SideBar/about.png
new file mode 100644
index 0000000..0a109e3
Binary files /dev/null and b/assets/icons/SideBar/about.png differ
diff --git a/assets/icons/SideBar/about_selected.png b/assets/icons/SideBar/about_selected.png
new file mode 100644
index 0000000..2f9d284
Binary files /dev/null and b/assets/icons/SideBar/about_selected.png differ
diff --git a/assets/icons/SideBar/help.png b/assets/icons/SideBar/help.png
new file mode 100644
index 0000000..e5b221f
Binary files /dev/null and b/assets/icons/SideBar/help.png differ
diff --git a/assets/icons/SideBar/help_selected.png b/assets/icons/SideBar/help_selected.png
new file mode 100644
index 0000000..b4a6ee0
Binary files /dev/null and b/assets/icons/SideBar/help_selected.png differ
diff --git a/assets/icons/SideBar/info.png b/assets/icons/SideBar/info.png
new file mode 100644
index 0000000..a68ca61
Binary files /dev/null and b/assets/icons/SideBar/info.png differ
diff --git a/assets/icons/SideBar/info_selected.png b/assets/icons/SideBar/info_selected.png
new file mode 100644
index 0000000..1bbc349
Binary files /dev/null and b/assets/icons/SideBar/info_selected.png differ
diff --git a/assets/icons/SideBar/language.png b/assets/icons/SideBar/language.png
new file mode 100644
index 0000000..ebad915
Binary files /dev/null and b/assets/icons/SideBar/language.png differ
diff --git a/assets/icons/SideBar/language_selected.png b/assets/icons/SideBar/language_selected.png
new file mode 100644
index 0000000..bf6e906
Binary files /dev/null and b/assets/icons/SideBar/language_selected.png differ
diff --git a/assets/icons/SideBar/location.png b/assets/icons/SideBar/location.png
new file mode 100644
index 0000000..0e27e73
Binary files /dev/null and b/assets/icons/SideBar/location.png differ
diff --git a/assets/icons/SideBar/location_selected.png b/assets/icons/SideBar/location_selected.png
new file mode 100644
index 0000000..63f1dca
Binary files /dev/null and b/assets/icons/SideBar/location_selected.png differ
diff --git a/assets/icons/SideBar/privacy.png b/assets/icons/SideBar/privacy.png
new file mode 100644
index 0000000..fee136c
Binary files /dev/null and b/assets/icons/SideBar/privacy.png differ
diff --git a/assets/icons/SideBar/privacy_selected.png b/assets/icons/SideBar/privacy_selected.png
new file mode 100644
index 0000000..edba8ec
Binary files /dev/null and b/assets/icons/SideBar/privacy_selected.png differ
diff --git a/assets/icons/more.png b/assets/icons/more.png
new file mode 100644
index 0000000..ffcff97
Binary files /dev/null and b/assets/icons/more.png differ
diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue
new file mode 100644
index 0000000..af3a11a
--- /dev/null
+++ b/src/components/Sidebar.vue
@@ -0,0 +1,242 @@
+<template>
+  <div class="sidebar-content">
+    <h3 class="project-name">Virtual Campus Tour</h3>
+
+    <div class="sidebar-menu">
+      <!-- 地点跳转 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('location')">
+          <img class="menu-icon" :src="sectionsState.location ? '../../assets/icons/SideBar/location_selected.png' : '../../assets/icons/SideBar/location.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.location?'bold':'normal', textDecoration: sectionsState.location?'underline':'none'}" >地点跳转</text>
+        </button>
+      </div>
+      
+      <!-- 实用信息 -->
+      <div class="menu-section"  @click="toggleSection('info')">
+        <button class="menu-button">
+          <img class="menu-icon" :src="sectionsState.info ? '../../assets/icons/SideBar/info_selected.png' : '../../assets/icons/SideBar/info.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.info?'bold':'normal', textDecoration: sectionsState.info?'underline':'none'}">实用信息</text>
+        </button>
+      </div>
+      
+      <!-- 帮助 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('help')">
+          <img class="menu-icon" :src="sectionsState.help ? '../../assets/icons/SideBar/help_selected.png' : '../../assets/icons/SideBar/help.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.help?'bold':'normal', textDecoration: sectionsState.help?'underline':'none'}">帮助</text>
+        </button>
+      </div>
+      
+      <!-- 语言 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('language')">
+          <img class="menu-icon" :src="sectionsState.language ? '../../assets/icons/SideBar/language_selected.png' : '../../assets/icons/SideBar/language.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.language?'bold':'normal', textDecoration: sectionsState.language?'underline':'none'}">Language</text>
+        </button>
+      </div>
+      
+      <!-- 隐私政策 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('privacy')">
+          <img class="menu-icon" :src="sectionsState.privacy ? '../../assets/icons/SideBar/privacy_selected.png' : '../../assets/icons/SideBar/privacy.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.privacy?'bold':'normal', textDecoration: sectionsState.privacy?'underline':'none'}">隐私政策</text>
+        </button>
+      </div>
+
+      <!-- 关于我们 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('about')">
+          <img class="menu-icon" src="../../assets/icons/SideBar/about_selected.png" v-if="sectionsState.about" />
+          <img class="menu-icon" src="../../assets/icons/SideBar/about.png" v-else />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.about?'bold':'normal', textDecoration: sectionsState.about?'underline':'none'}">关于我们</text>
+        </button>
+      </div>
+
+      
+
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+  import { ref, onMounted, computed, watch } from 'vue';
+
+  // Define types
+  type SectionState = {
+    location: boolean;
+    info: boolean;
+    help: boolean;
+    language: boolean;
+    privacy: boolean;
+    about: boolean;
+
+    [key: string]: boolean; // Index signature for dynamic access
+  };
+  const src_path1 = ref('../../assets/icons/SideBar/help_selected.png')
+  const src_path2 = ref('../../assets/icons/SideBar/help.png')
+
+  const sectionsState = ref<SectionState>({
+    location: false,
+    info: false,
+    help: false,
+    language: false,
+    privacy: false,
+    about: false
+  });
+  const showPlace = () => {
+    console.log('显示地点');
+    alert('显示地点')
+  };
+  const showInfo = () => {
+    console.log('显示实用信息');
+    alert('显示实用信息')
+  };
+  const navigateToPlace = (location: string) => {
+    console.log(`Navigating to ${location}`);
+  };
+
+  const navigateToInfo = (type: string) => {
+    console.log(`导航到实用信息: ${type}`);
+  };
+
+  const navigateToHelp = (type: string) => {
+    console.log(`导航到帮助页面: ${type}`);
+  };
+
+  const navigateToAbout = (type: string) => {
+    console.log(`导航到关于我们页面: ${type}`);
+  };
+
+  const navigateToLanguage = (type: string) => {
+    console.log(`导航到语言页面: ${type}`);
+  };
+
+  const navigateToPrivacy = (type: string) => {
+    console.log(`导航到隐私政策页面: ${type}`);
+  };
+
+  const toggleSection = (section: string) => {
+    sectionsState.value['location'] = false;
+    sectionsState.value['info'] = false;
+    sectionsState.value['help'] = false;
+    sectionsState.value['language'] = false;
+    sectionsState.value['privacy'] = false;
+    sectionsState.value['about'] = false;
+    sectionsState.value[section] = true;
+  };
+  watch(
+    sectionsState.value,
+    (newValue) => {
+      if (newValue.location == true) {
+        showPlace();
+      }
+      if (newValue.info == true) {
+        showInfo();
+      }
+      if (newValue.help == true) {
+        navigateToHelp('help');
+      }
+      if (newValue.language == true) {
+        navigateToLanguage('language');
+      }
+      if (newValue.privacy == true) {
+        navigateToPrivacy('privacy');
+      }
+      if (newValue.about == true) {
+        navigateToAbout('about');
+      }
+    },
+    { deep: true }
+  )
+  onMounted(() => {
+
+  });
+
+</script>
+
+
+
+
+<style>
+/* 侧边栏样式 */
+.sidebar {
+  position: absolute;
+  top: 0;
+  left: -18%;
+  width: 18%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.5);
+  box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
+  color: black;
+  transition: left 0.3s ease;
+  z-index: 20;
+  overflow-y: auto;
+}
+.sidebar.active {
+  left: 0%;
+}
+
+.sidebar-content {
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+
+.sidebar-menu {
+  flex-direction: column;
+}
+
+
+/* 云游中珠 */
+.project-name {
+  height: 10vh;
+  font-size: 1.5vw;
+  margin: 0;
+  margin-top: 12vh;
+  margin-bottom: 5vh;
+}
+
+.menu-section {
+  height: 6vh;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.menu-button {
+  border: 0;
+  width: 60%;
+  height: 80%;
+  background-color: rgba(255, 255, 255, 0);
+  color: black;
+  display: flex;
+}
+.menu-button:hover {
+  text-decoration-line: underline;
+}
+
+.menu-icon{
+  width: 2.5vh;
+  height: 2.5vh;
+  margin: auto;
+
+  align-items: center;
+  justify-content: center;
+  margin-right: 1vw;
+}
+
+.menu-text{
+  width: 80%;
+  font-size: 1.5vw;
+  text-align: left;
+  display: flex;
+  align-items: center;
+  padding-bottom: 0.2vh;
+}
+
+
+
+
+
+</style>
\ No newline at end of file
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index ed3b231..4fae831 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -10,90 +10,12 @@
 
     <!-- 侧边栏切换按钮 -->
     <div class="toggle-btn" @click="toggleSidebar">
-      <el-icon>
-        <ArrowRight v-if="!sidebarVisible" />
-        <ArrowLeft v-else />
-      </el-icon>
+      <img class="toggle-icon" src="../../assets/icons/more.png" >
     </div>
 
     <!-- 侧边栏 -->
     <div class="sidebar" :class="{ active: sidebarVisible }">
-      <div class="sidebar-content">
-        <div class="sidebar-header">
-          <h3>Virtual Campus Tour</h3>
-        </div>
-        <div class="sidebar-menu">
-          <!-- 地点跳转 -->
-          <div class="menu-section">
-            <div class="section-title" @click="toggleSection('location')">
-              地点跳转
-              <el-icon class="section-icon">
-                <ArrowDown v-if="sectionsState.location" />
-                <ArrowRight v-else />
-              </el-icon>
-            </div>
-            <transition name="section">
-              <div class="section-content" v-if="sectionsState.location">
-                <div class="menu-item" @click="navigateTo('overview')">校园概览</div>
-                <div class="menu-item" @click="navigateTo('teaching')">教学楼</div>
-                <div class="menu-item" @click="navigateTo('library')">图书馆</div>
-                <div class="menu-item" @click="navigateTo('dorm')">宿舍区</div>
-                <div class="menu-item" @click="navigateTo('sports')">体育馆</div>
-              </div>
-            </transition>
-          </div>
-          
-          <!-- 实用信息 -->
-          <div class="menu-section">
-            <div class="section-title" @click="toggleSection('info')">
-              实用信息
-              <el-icon class="section-icon">
-                <ArrowDown v-if="sectionsState.info" />
-                <ArrowRight v-else />
-              </el-icon>
-            </div>
-            <transition name="section">
-              <div class="section-content" v-if="sectionsState.info">
-
-              </div>
-            </transition>
-          </div>
-          
-          <!-- 帮助 -->
-          <div class="menu-section">
-            <div class="section-title" @click="toggleSection('help')">
-              帮助
-              <el-icon class="section-icon">
-                <ArrowDown v-if="sectionsState.help" />
-                <ArrowRight v-else />
-              </el-icon>
-            </div>
-            <transition name="section">
-              <div class="section-content" v-if="sectionsState.help">
-                <div class="menu-item" @click="navigateToHelp('guide')">使用指南</div>
-                <div class="menu-item" @click="navigateToHelp('faq')">常见问题</div>
-              </div>
-            </transition>
-          </div>
-          
-          <!-- 关于我们 -->
-          <div class="menu-section">
-            <div class="section-title" @click="toggleSection('about')">
-              关于我们
-              <el-icon class="section-icon">
-                <ArrowDown v-if="sectionsState.about" />
-                <ArrowRight v-else />
-              </el-icon>
-            </div>
-            <transition name="section">
-              <div class="section-content" v-if="sectionsState.about">
-                <div class="menu-item" @click="navigateToAbout('team')">团队介绍</div>
-                <div class="menu-item" @click="navigateToAbout('contact')">联系我们</div>
-              </div>
-            </transition>
-          </div>
-        </div>
-      </div>
+      <Sidebar />        
     </div>
 
     <!-- 登录和注册 -->
@@ -135,6 +57,7 @@ import { useRouter } from 'vue-router';
 import Cookies from 'js-cookie';
 import { ArrowRight, ArrowLeft, ArrowDown, User, SwitchButton } from '@element-plus/icons-vue';
 import PanoramaViewer from '../components/PanoramaViewer.vue';
+import Sidebar from '../components/Sidebar.vue';
 import { ElMessage } from 'element-plus';
 
 // 导入HotSpot接口类型 TODO
@@ -273,37 +196,6 @@ const logout = () => {
   router.push('/login');
 };
 
-const navigateTo = (location: string) => {
-  console.log(`Navigating to ${location}`);
-  // 导航后关闭侧边栏
-  sidebarVisible.value = false;
-};
-
-const navigateToInfo = (type: string) => {
-  console.log(`导航到实用信息: ${type}`);
-  // 这里可以实现具体的导航逻辑
-
-  sidebarVisible.value = false;
-};
-
-const navigateToHelp = (type: string) => {
-  console.log(`导航到帮助页面: ${type}`);
-  // 这里可以实现具体的导航逻辑
-
-  sidebarVisible.value = false;
-};
-
-const navigateToAbout = (type: string) => {
-  console.log(`导航到关于我们页面: ${type}`);
-  // 这里可以实现具体的导航逻辑
-
-  sidebarVisible.value = false;
-};
-
-const toggleSection = (section: string) => {
-  sectionsState.value[section] = !sectionsState.value[section];
-};
-
 onMounted(() => {
   checkLoginStatus();
 });
@@ -336,6 +228,23 @@ body, html, #app {
   z-index: 10;
 }
 
+/* 侧边栏切换按钮样式 */
+.toggle-btn {
+  display: flex;
+  position: absolute;
+  top: 2%;
+  left: 1.5%;
+  width: 3vw;
+  height: 3vw;
+
+  /* background-color: #409EFF; */
+
+ 
+  z-index: 999;
+
+  transition: transform 0.3s;
+}
+
 /* 侧边栏样式 */
 .sidebar {
   position: absolute;
@@ -374,42 +283,16 @@ body, html, #app {
   flex-direction: column;
 }
 
-.menu-item {
-  padding: 12px 10px;
-  margin-bottom: 5px;
-  border-radius: 4px;
-  color: #333;
-  cursor: pointer;
-  transition: background-color 0.2s;
-}
-
-.menu-item:hover {
-  background-color: #f0f0f0;
-}
-
-/* 侧边栏切换按钮样式 */
-.toggle-btn {
-  position: absolute;
-  top: 10px;
-  left: 10px;
-  width: 40px;
-  height: 40px;
-  background-color: #409EFF;
-  color: white;
-  border-radius: 50%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  cursor: pointer;
-  z-index: 30;
-  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
-  transition: transform 0.3s;
-}
-
 .toggle-btn:hover {
   transform: scale(1.1);
 }
 
+.toggle-icon{
+  width: 65%;
+  height: 65%;
+  margin: auto;
+}
+
 .menu-section {
   margin-bottom: 15px;
 }
diff --git a/src/views/more.png b/src/views/more.png
new file mode 100644
index 0000000..ffcff97
Binary files /dev/null and b/src/views/more.png differ


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR refactors the sidebar functionality in the HomeView by extracting the sidebar into a dedicated component and updating the toggle button design. Key changes include replacing the inline sidebar with a Sidebar component, updating the toggle button to use an image icon, and adding a new Sidebar.vue component with its own styles and functionality.

### Reviewed Changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 2 comments.

| File                        | Description                                                                  |
| --------------------------- | ---------------------------------------------------------------------------- |
| src/views/HomeView.vue      | Removed inline sidebar markup and navigation functions in favor of Sidebar; updated toggle button UI and CSS. |
| src/components/Sidebar.vue  | Introduced a new Sidebar component to handle sidebar navigation and UI with its own state and styling. |




state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T02:51:36Z

Review comments:
diff_hunk: @@ -0,0 +1,242 @@
+<template>
+  <div class="sidebar-content">
+    <h3 class="project-name">Virtual Campus Tour</h3>
+
+    <div class="sidebar-menu">
+      <!-- 地点跳转 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('location')">
+          <img class="menu-icon" :src="sectionsState.location ? '../../assets/icons/SideBar/location_selected.png' : '../../assets/icons/SideBar/location.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.location?'bold':'normal', textDecoration: sectionsState.location?'underline':'none'}" >地点跳转</text>
+        </button>
+      </div>
+      
+      <!-- 实用信息 -->
+      <div class="menu-section"  @click="toggleSection('info')">
+        <button class="menu-button">
+          <img class="menu-icon" :src="sectionsState.info ? '../../assets/icons/SideBar/info_selected.png' : '../../assets/icons/SideBar/info.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.info?'bold':'normal', textDecoration: sectionsState.info?'underline':'none'}">实用信息</text>
+        </button>
+      </div>
+      
+      <!-- 帮助 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('help')">
+          <img class="menu-icon" :src="sectionsState.help ? '../../assets/icons/SideBar/help_selected.png' : '../../assets/icons/SideBar/help.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.help?'bold':'normal', textDecoration: sectionsState.help?'underline':'none'}">帮助</text>
+        </button>
+      </div>
+      
+      <!-- 语言 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('language')">
+          <img class="menu-icon" :src="sectionsState.language ? '../../assets/icons/SideBar/language_selected.png' : '../../assets/icons/SideBar/language.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.language?'bold':'normal', textDecoration: sectionsState.language?'underline':'none'}">Language</text>
+        </button>
+      </div>
+      
+      <!-- 隐私政策 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('privacy')">
+          <img class="menu-icon" :src="sectionsState.privacy ? '../../assets/icons/SideBar/privacy_selected.png' : '../../assets/icons/SideBar/privacy.png'" />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.privacy?'bold':'normal', textDecoration: sectionsState.privacy?'underline':'none'}">隐私政策</text>
+        </button>
+      </div>
+
+      <!-- 关于我们 -->
+      <div class="menu-section">
+        <button class="menu-button" @click="toggleSection('about')">
+          <img class="menu-icon" src="../../assets/icons/SideBar/about_selected.png" v-if="sectionsState.about" />
+          <img class="menu-icon" src="../../assets/icons/SideBar/about.png" v-else />
+          <text class="menu-text" :style="{ fontWeight: sectionsState.about?'bold':'normal', textDecoration: sectionsState.about?'underline':'none'}">关于我们</text>
+        </button>
+      </div>
+
+      
+
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+  import { ref, onMounted, computed, watch } from 'vue';
+
+  // Define types
+  type SectionState = {
+    location: boolean;
+    info: boolean;
+    help: boolean;
+    language: boolean;
+    privacy: boolean;
+    about: boolean;
+
+    [key: string]: boolean; // Index signature for dynamic access
+  };
+  const src_path1 = ref('../../assets/icons/SideBar/help_selected.png')
+  const src_path2 = ref('../../assets/icons/SideBar/help.png')
+
+  const sectionsState = ref<SectionState>({
+    location: false,
+    info: false,
+    help: false,
+    language: false,
+    privacy: false,
+    about: false
+  });
+  const showPlace = () => {
+    console.log('显示地点');
+    alert('显示地点')
+  };
+  const showInfo = () => {
+    console.log('显示实用信息');
+    alert('显示实用信息')
+  };
+  const navigateToPlace = (location: string) => {
+    console.log(`Navigating to ${location}`);
+  };
+
+  const navigateToInfo = (type: string) => {
+    console.log(`导航到实用信息: ${type}`);
+  };
+
+  const navigateToHelp = (type: string) => {
+    console.log(`导航到帮助页面: ${type}`);
+  };
+
+  const navigateToAbout = (type: string) => {
+    console.log(`导航到关于我们页面: ${type}`);
+  };
+
+  const navigateToLanguage = (type: string) => {
+    console.log(`导航到语言页面: ${type}`);
+  };
+
+  const navigateToPrivacy = (type: string) => {
+    console.log(`导航到隐私政策页面: ${type}`);
+  };
+
+  const toggleSection = (section: string) => {
+    sectionsState.value['location'] = false;
+    sectionsState.value['info'] = false;
+    sectionsState.value['help'] = false;
+    sectionsState.value['language'] = false;
+    sectionsState.value['privacy'] = false;
+    sectionsState.value['about'] = false;
+    sectionsState.value[section] = true;
+  };
+  watch(
+    sectionsState.value,
path: src/components/Sidebar.vue
user: login: Copilot
body: Consider passing the reactive ref 'sectionsState' to watch instead of 'sectionsState.value' to ensure proper reactivity tracking. For example, use watch(sectionsState, ...) rather than watch(sectionsState.value, ...).
```suggestion
    sectionsState,
```
created_at: 2025-04-03T02:51:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -128,8 +52,9 @@
 import { ref, onMounted, computed } from 'vue';
 import { useRouter } from 'vue-router';
 import Cookies from 'js-cookie';
-import { ArrowRight, ArrowLeft, ArrowDown, User, SwitchButton } from '@element-plus/icons-vue';
+import { ArrowRight, ArrowLeft, ArrowDown, User, SwitchButton, MoreFilled } from '@element-plus/icons-vue';
path: src/views/HomeView.vue
user: login: Copilot
body: The import 'MoreFilled' is not used anywhere in this file. Removing the unused import will help maintain cleaner code.
```suggestion
import { ArrowRight, ArrowLeft, ArrowDown, User, SwitchButton } from '@element-plus/icons-vue';
```
created_at: 2025-04-03T02:51:36Z
author_association: CONTRIBUTOR

PR comments:
user: login: Cry-StalL
created_at: 2025-04-03T02:50:28Z
body: 罗老师辛苦了
author_association: OWNER
user: login: Cry-StalL
created_at: 2025-04-03T03:14:47Z
body: 罗老师 你本地的Git账户名和邮箱没有设成跟Github账号一样的，Commit里面看不到你的Github账号，这样Github就没法记录你的Contribution
author_association: OWNER
user: login: luozhj33
created_at: 2025-04-03T05:46:53Z
body: 好的
我去看看



发自我的iPhone


------------------ 原始邮件 ------------------
发件人: Mark.G ***@***.***&gt;
发送时间: 2025年4月3日 11:15
收件人: Cry-StalL/virtual-campus-tour-2.0-front ***@***.***&gt;
抄送: luozhj33 ***@***.***&gt;, Author ***@***.***&gt;
主题: Re: [Cry-StalL/virtual-campus-tour-2.0-front] 侧边栏组件基础 (PR #4)



   
罗老师 你本地的Git账户名和邮箱没有设成跟Github账号一样的，Commit里面看不到你的Github账号，这样Github就没法记录你的Contribution

—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***&gt;
  Cry-StalL left a comment (Cry-StalL/virtual-campus-tour-2.0-front#4)
 
罗老师 你本地的Git账户名和邮箱没有设成跟Github账号一样的，Commit里面看不到你的Github账号，这样Github就没法记录你的Contribution
 
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***&gt;
author_association: COLLABORATOR