Browse Source

feat(home-page): restructure home page into modular components

0235966 2 weeks ago
parent
commit
16865ce4f7
19 changed files with 383 additions and 223 deletions
  1. 0 195
      cloth-dit-web/src/app/app.html
  2. 0 1
      cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.html
  3. 0 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.scss
  4. 0 11
      cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.ts
  5. 21 1
      cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/page-home.html
  6. 8 2
      cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/page-home.ts
  7. 10 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.html
  8. 40 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.scss
  9. 0 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.spec.ts
  10. 14 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.ts
  11. 30 1
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/banner-carousel/banner-carousel.html
  12. 71 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/banner-carousel/banner-carousel.scss
  13. 12 3
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/banner-carousel/banner-carousel.ts
  14. 45 1
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/popular-designs/popular-designs.html
  15. 72 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/popular-designs/popular-designs.scss
  16. 7 4
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/popular-designs/popular-designs.ts
  17. 4 1
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/quick-design-entry/quick-design-entry.html
  18. 43 0
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/quick-design-entry/quick-design-entry.scss
  19. 6 3
      cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/quick-design-entry/quick-design-entry.ts

File diff suppressed because it is too large
+ 0 - 195
cloth-dit-web/src/app/app.html


+ 0 - 1
cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.html

@@ -1 +0,0 @@
-<p>ai-recommendation works!</p>

+ 0 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.scss


+ 0 - 11
cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.ts

@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-ai-recommendation',
-  imports: [],
-  templateUrl: './ai-recommendation.html',
-  styleUrl: './ai-recommendation.scss'
-})
-export class AiRecommendation {
-
-}

+ 21 - 1
cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/page-home.html

@@ -1 +1,21 @@
-<p>page-home works!</p>
+<!-- 首页组件内容 -->
+<header class="header">
+    <div class="header-content">
+        <h1>FashionCraft</h1>
+        <p>让创意穿在身上</p>
+    </div>
+</header>
+
+<main class="main-content">
+    <!-- 轮播区域 -->
+    <app-banner-carousel></app-banner-carousel>
+    
+    <!-- 快速设计入口 -->
+    <app-quick-design-entry></app-quick-design-entry>
+    
+    <!-- 热门作品 -->
+    <app-popular-designs></app-popular-designs>
+    
+    <!-- AI推荐区 -->
+    <app-ai-recommendation></app-ai-recommendation>
+</main>

+ 8 - 2
cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/page-home.ts

@@ -1,9 +1,15 @@
 import { Component } from '@angular/core';
-
+import { BannerCarousel } from '../pages-home/components/banner-carousel/banner-carousel';
+import { QuickDesignEntry } from '../pages-home/components/quick-design-entry/quick-design-entry';
+import { PopularDesigns } from '../pages-home/components/popular-designs/popular-designs';
+import { AiRecommendation } from '../pages-home/components/ai-recommendation/ai-recommendation';
 @Component({
   selector: 'app-page-home',
   standalone: true,
-  imports: [],
+  imports: [ BannerCarousel,
+    QuickDesignEntry,
+    PopularDesigns,
+    AiRecommendation],
   templateUrl: './page-home.html',
   styleUrl: './page-home.scss'
 })

+ 10 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.html

@@ -0,0 +1,10 @@
+<section class="ai-recommend">
+    <h3>🤖 AI为你推荐</h3>
+    <div class="ai-items">
+        <div class="ai-item" (click)="showAIRecommend('商务')">👔</div>
+        <div class="ai-item" (click)="showAIRecommend('休闲')">👕</div>
+        <div class="ai-item" (click)="showAIRecommend('运动')">🏃</div>
+        <div class="ai-item" (click)="showAIRecommend('派对')">🎉</div>
+        <div class="ai-item" (click)="showAIRecommend('度假')">🏖️</div>
+    </div>
+</section>

+ 40 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.scss

@@ -0,0 +1,40 @@
+.ai-recommend {
+    margin: 20px;
+    padding: 20px;
+    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+    border-radius: 20px;
+    color: white;
+}
+
+.ai-recommend h3 {
+    font-size: 18px;
+    margin-bottom: 15px;
+    display: flex;
+    align-items: center;
+    gap: 8px;
+}
+
+.ai-items {
+    display: flex;
+    gap: 12px;
+    overflow-x: auto;
+    padding-bottom: 5px;
+}
+
+.ai-item {
+    min-width: 100px;
+    height: 80px;
+    background: rgba(255,255,255,0.2);
+    border-radius: 12px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 28px;
+    cursor: pointer;
+    transition: all 0.3s ease;
+}
+
+.ai-item:hover {
+    background: rgba(255,255,255,0.3);
+    transform: scale(1.05);
+}

+ 0 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/page-home/components/ai-recommendation/ai-recommendation.spec.ts → cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.spec.ts


+ 14 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/ai-recommendation/ai-recommendation.ts

@@ -0,0 +1,14 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-ai-recommendation',
+  templateUrl: './ai-recommendation.html',
+  styleUrls: ['./ai-recommendation.scss']
+})
+export class AiRecommendation {
+  // 添加 showAIRecommend 方法
+  showAIRecommend(style: string) {
+    console.log(`AI推荐: ${style}风格`);
+    // 这里可以添加AI推荐的逻辑
+  }
+}

+ 30 - 1
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/banner-carousel/banner-carousel.html

@@ -1 +1,30 @@
-<p>banner-carousel works!</p>
+<section class="banner-section">
+    <div class="banner-slider" id="bannerSlider">
+        <div class="banner-slide">
+            <div>
+                <div class="banner-icon">🎨</div>
+                <div>春季新品发布</div>
+                <div class="banner-desc">个性化设计,独一无二</div>
+            </div>
+        </div>
+        <div class="banner-slide" style="background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);">
+            <div>
+                <div class="banner-icon">✨</div>
+                <div>AI智能搭配</div>
+                <div class="banner-desc">科技赋能时尚创意</div>
+            </div>
+        </div>
+        <div class="banner-slide" style="background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);">
+            <div>
+                <div class="banner-icon">🏆</div>
+                <div>设计大赛进行中</div>
+                <div class="banner-desc">万元奖金等你来拿</div>
+            </div>
+        </div>
+    </div>
+    <div class="banner-indicators">
+        <div class="indicator active" data-slide="0"></div>
+        <div class="indicator" data-slide="1"></div>
+        <div class="indicator" data-slide="2"></div>
+    </div>
+</section>

+ 71 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/banner-carousel/banner-carousel.scss

@@ -0,0 +1,71 @@
+.banner-section {
+    position: relative;
+    height: 200px;
+    overflow: hidden;
+    margin: 20px;
+    border-radius: 20px;
+    box-shadow: 0 10px 30px rgba(0,0,0,0.2);
+}
+
+.banner-slider {
+    display: flex;
+    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
+    height: 100%;
+}
+
+.banner-slide {
+    min-width: 100%;
+    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    color: white;
+    font-size: 18px;
+    font-weight: 600;
+    position: relative;
+    overflow: hidden;
+}
+
+.banner-slide::before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><defs><linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:rgba(255,255,255,0.1)"/><stop offset="100%" style="stop-color:rgba(255,255,255,0)"/></linearGradient></defs><polygon points="0,0 100,0 0,100" fill="url(%23grad)"/></svg>');
+    pointer-events: none;
+}
+
+.banner-indicators {
+    position: absolute;
+    bottom: 15px;
+    left: 50%;
+    transform: translateX(-50%);
+    display: flex;
+    gap: 8px;
+}
+
+.indicator {
+    width: 8px;
+    height: 8px;
+    border-radius: 50%;
+    background: rgba(255,255,255,0.5);
+    cursor: pointer;
+    transition: all 0.3s ease;
+}
+
+.indicator.active {
+    background: white;
+    transform: scale(1.2);
+}
+
+.banner-icon {
+    font-size: 24px;
+    margin-bottom: 10px;
+}
+
+.banner-desc {
+    font-size: 14px;
+    opacity: 0.8;
+}

+ 12 - 3
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/banner-carousel/banner-carousel.ts

@@ -2,10 +2,19 @@ import { Component } from '@angular/core';
 
 @Component({
   selector: 'app-banner-carousel',
-  imports: [],
   templateUrl: './banner-carousel.html',
-  styleUrl: './banner-carousel.scss'
+  styleUrls: ['./banner-carousel.scss']
 })
 export class BannerCarousel {
-
+  // 添加轮播图相关的方法和逻辑
+  currentSlide = 0;
+  
+  // 示例方法
+  nextSlide() {
+    this.currentSlide = (this.currentSlide + 1) % 3;
+  }
+  
+  goToSlide(index: number) {
+    this.currentSlide = index;
+  }
 }

+ 45 - 1
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/popular-designs/popular-designs.html

@@ -1 +1,45 @@
-<p>popular-designs works!</p>
+<section class="popular-works">
+    <h3 class="section-title">热门作品</h3>
+    <div class="works-grid">
+        <div class="work-item" (click)="showWorkDetail('森系小清新')">
+            <div class="work-image">🌿</div>
+            <div class="work-info">
+                <div class="work-title">森系小清新</div>
+                <div class="work-stats">
+                    <span>❤️ 2.3k</span>
+                    <span>💬 186</span>
+                </div>
+            </div>
+        </div>
+        <div class="work-item" (click)="showWorkDetail('复古摩登')">
+            <div class="work-image" style="background: linear-gradient(45deg, #ffd89b 0%, #19547b 100%);">🎭</div>
+            <div class="work-info">
+                <div class="work-title">复古摩登</div>
+                <div class="work-stats">
+                    <span>❤️ 1.8k</span>
+                    <span>💬 142</span>
+                </div>
+            </div>
+        </div>
+        <div class="work-item" (click)="showWorkDetail('未来科技')">
+            <div class="work-image" style="background: linear-gradient(45deg, #667eea 0%, #764ba2 100%);">🚀</div>
+            <div class="work-info">
+                <div class="work-title">未来科技</div>
+                <div class="work-stats">
+                    <span>❤️ 3.1k</span>
+                    <span>💬 256</span>
+                </div>
+            </div>
+        </div>
+        <div class="work-item" (click)="showWorkDetail('简约现代')">
+            <div class="work-image" style="background: linear-gradient(45deg, #ff9a9e 0%, #fecfef 100%);">🏛️</div>
+            <div class="work-info">
+                <div class="work-title">简约现代</div>
+                <div class="work-stats">
+                    <span>❤️ 1.5k</span>
+                    <span>💬 98</span>
+                </div>
+            </div>
+        </div>
+    </div>
+</section>

+ 72 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/popular-designs/popular-designs.scss

@@ -0,0 +1,72 @@
+.popular-works {
+    margin: 20px;
+}
+
+.section-title {
+    font-size: 20px;
+    font-weight: 700;
+    margin-bottom: 15px;
+    color: #333;
+    position: relative;
+    padding-left: 15px;
+}
+
+.section-title::before {
+    content: '';
+    position: absolute;
+    left: 0;
+    top: 50%;
+    transform: translateY(-50%);
+    width: 4px;
+    height: 20px;
+    background: linear-gradient(45deg, #ff6b6b, #ffa726);
+    border-radius: 2px;
+}
+
+.works-grid {
+    display: grid;
+    grid-template-columns: repeat(2, 1fr);
+    gap: 15px;
+}
+
+.work-item {
+    background: #fff;
+    border-radius: 15px;
+    overflow: hidden;
+    box-shadow: 0 5px 20px rgba(0,0,0,0.1);
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+    cursor: pointer;
+}
+
+.work-item:hover {
+    transform: translateY(-8px);
+    box-shadow: 0 15px 40px rgba(0,0,0,0.2);
+}
+
+.work-image {
+    height: 120px;
+    background: linear-gradient(45deg, #a8edea 0%, #fed6e3 100%);
+    position: relative;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 36px;
+}
+
+.work-info {
+    padding: 12px;
+}
+
+.work-title {
+    font-size: 14px;
+    font-weight: 600;
+    margin-bottom: 4px;
+    color: #333;
+}
+
+.work-stats {
+    display: flex;
+    justify-content: space-between;
+    font-size: 12px;
+    color: #666;
+}

+ 7 - 4
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/popular-designs/popular-designs.ts

@@ -2,10 +2,13 @@ import { Component } from '@angular/core';
 
 @Component({
   selector: 'app-popular-designs',
-  imports: [],
   templateUrl: './popular-designs.html',
-  styleUrl: './popular-designs.scss'
+  styleUrls: ['./popular-designs.scss']
 })
 export class PopularDesigns {
-
-}
+  // 添加 showWorkDetail 方法
+  showWorkDetail(title: string) {
+    console.log(`查看作品详情: ${title}`);
+    // 这里可以添加导航到详情页的逻辑
+  }
+}

+ 4 - 1
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/quick-design-entry/quick-design-entry.html

@@ -1 +1,4 @@
-<p>quick-design-entry works!</p>
+<section class="quick-design" (click)="startDesign()">
+    <h2>开始设计</h2>
+    <p>点击开启你的创意之旅</p>
+</section>

+ 43 - 0
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/quick-design-entry/quick-design-entry.scss

@@ -0,0 +1,43 @@
+.quick-design {
+    margin: 20px;
+    padding: 25px;
+    background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 50%, #fecfef 100%);
+    border-radius: 20px;
+    text-align: center;
+    box-shadow: 0 8px 25px rgba(255, 154, 158, 0.4);
+    position: relative;
+    overflow: hidden;
+    cursor: pointer;
+    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+.quick-design:hover {
+    transform: translateY(-5px);
+    box-shadow: 0 15px 35px rgba(255, 154, 158, 0.6);
+}
+
+.quick-design::before {
+    content: '✨';
+    position: absolute;
+    top: 15px;
+    right: 20px;
+    font-size: 24px;
+    animation: sparkle 2s infinite;
+}
+
+@keyframes sparkle {
+    0%, 100% { transform: scale(1) rotate(0deg); opacity: 1; }
+    50% { transform: scale(1.2) rotate(180deg); opacity: 0.8; }
+}
+
+.quick-design h2 {
+    font-size: 22px;
+    color: #fff;
+    margin-bottom: 8px;
+    text-shadow: 0 2px 4px rgba(0,0,0,0.2);
+}
+
+.quick-design p {
+    color: rgba(255,255,255,0.9);
+    font-size: 14px;
+}

+ 6 - 3
cloth-dit-web/src/modules/cloth/color/page/page-home/pages-home/components/quick-design-entry/quick-design-entry.ts

@@ -2,10 +2,13 @@ import { Component } from '@angular/core';
 
 @Component({
   selector: 'app-quick-design-entry',
-  imports: [],
   templateUrl: './quick-design-entry.html',
-  styleUrl: './quick-design-entry.scss'
+  styleUrls: ['./quick-design-entry.scss']
 })
 export class QuickDesignEntry {
-
+  // 添加 startDesign 方法
+  startDesign() {
+    console.log('开始设计流程');
+    // 这里可以添加开始设计的逻辑
+  }
 }

Some files were not shown because too many files changed in this diff