Browse Source

init: web3-0210427

林财明 1 year ago
parent
commit
3a5661e32b
100 changed files with 1017 additions and 983 deletions
  1. 18 1
      CraftsMart-angular/src/app/app-routing.module.ts
  2. 0 24
      CraftsMart-angular/src/app/app.component.html
  3. 0 74
      CraftsMart-angular/src/app/app.component.scss
  4. 14 2
      CraftsMart-angular/src/app/app.module.ts
  5. BIN
      CraftsMart-angular/src/assets/image/cp1.jpg
  6. 35 0
      CraftsMart-angular/src/modules/craftsmart/craftsmart-routing.module.ts
  7. 30 0
      CraftsMart-angular/src/modules/craftsmart/craftsmart.module.ts
  8. 30 0
      CraftsMart-angular/src/modules/craftsmart/home/home.component.html
  9. 70 0
      CraftsMart-angular/src/modules/craftsmart/home/home.component.scss
  10. 0 0
      CraftsMart-angular/src/modules/craftsmart/home/home.component.spec.ts
  11. 40 0
      CraftsMart-angular/src/modules/craftsmart/home/home.component.ts
  12. 20 0
      CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.html
  13. 45 0
      CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.scss
  14. 6 6
      CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.spec.ts
  15. 24 0
      CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.ts
  16. 1 0
      CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.html
  17. 0 0
      CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.scss
  18. 21 0
      CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.spec.ts
  19. 12 0
      CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.ts
  20. 1 0
      CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.html
  21. 0 0
      CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.scss
  22. 21 0
      CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.spec.ts
  23. 10 0
      CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.ts
  24. 1 0
      CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.html
  25. 4 0
      CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.scss
  26. 0 0
      CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.spec.ts
  27. 0 0
      CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.ts
  28. 0 10
      CraftsMart-angular/src/modules/shopping/shopping-routing.module.ts
  29. 0 17
      CraftsMart-angular/src/modules/shopping/shopping.module.ts
  30. 0 16
      app-angular/src/app/app-routing.module.ts
  31. 0 34
      app-angular/src/app/app.component.html
  32. 0 42
      app-angular/src/app/app.component.scss
  33. 0 6
      app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.html
  34. 0 9
      app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.scss
  35. 0 21
      app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.spec.ts
  36. 0 12
      app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.ts
  37. 0 4
      app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.html
  38. 0 10
      app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.scss
  39. 0 21
      app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.spec.ts
  40. 0 13
      app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.ts
  41. 0 5
      app-angular/src/modules/lesson/detail/detail.component.html
  42. 0 19
      app-angular/src/modules/lesson/detail/detail.component.ts
  43. 0 50
      app-angular/src/modules/lesson/home/home.component.html
  44. 0 75
      app-angular/src/modules/lesson/home/home.component.scss
  45. 0 30
      app-angular/src/modules/lesson/home/home.component.ts
  46. 0 31
      app-angular/src/modules/lesson/lesson-routing.module.ts
  47. 0 32
      app-angular/src/modules/lesson/lesson.module.ts
  48. 0 5
      app-angular/src/modules/lesson/page-mine/page-mine.component.html
  49. 0 1
      app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.html
  50. 0 21
      app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.spec.ts
  51. 0 10
      app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.ts
  52. 0 7
      app-angular/src/modules/lesson/page-student/page-student.component.html
  53. 0 21
      app-angular/src/modules/lesson/page-student/page-student.component.spec.ts
  54. 0 63
      app-angular/src/modules/lesson/page-student/page-student.component.ts
  55. 0 19
      app-angular/src/modules/lesson/pipe-tok/tok.pipe.ts
  56. 0 14
      app-angular/src/modules/user/user.module.ts
  57. 114 0
      app-backend/package-lock.json
  58. 5 0
      app-backend/package.json
  59. 0 0
      app-backend/page-js-sdk/showcase.js
  60. 21 1
      docs/product.md
  61. 49 0
      docs/核心.md
  62. 0 0
      mart-angular/.editorconfig
  63. 0 0
      mart-angular/.gitignore
  64. 0 0
      mart-angular/.vscode/extensions.json
  65. 0 0
      mart-angular/.vscode/launch.json
  66. 0 0
      mart-angular/.vscode/tasks.json
  67. 2 2
      mart-angular/README.md
  68. 7 7
      mart-angular/angular.json
  69. 247 233
      mart-angular/package-lock.json
  70. 3 3
      mart-angular/package.json
  71. 23 0
      mart-angular/src/app/app-routing.module.ts
  72. 6 0
      mart-angular/src/app/app.component.html
  73. 0 0
      mart-angular/src/app/app.component.scss
  74. 3 3
      mart-angular/src/app/app.component.spec.ts
  75. 1 4
      mart-angular/src/app/app.component.ts
  76. 7 3
      mart-angular/src/app/app.module.ts
  77. 0 0
      mart-angular/src/assets/.gitkeep
  78. 0 0
      mart-angular/src/favicon.ico
  79. 1 1
      mart-angular/src/index.html
  80. 0 0
      mart-angular/src/main.ts
  81. 1 1
      mart-angular/src/modules/cmart/cmart-routing.module.ts
  82. 23 0
      mart-angular/src/modules/cmart/cmart.module.ts
  83. 0 0
      mart-angular/src/modules/cmart/home/home.component.html
  84. 0 0
      mart-angular/src/modules/cmart/home/home.component.scss
  85. 0 0
      mart-angular/src/modules/cmart/home/home.component.spec.ts
  86. 0 0
      mart-angular/src/modules/cmart/home/home.component.ts
  87. 6 0
      mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.html
  88. 0 0
      mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.scss
  89. 21 0
      mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.spec.ts
  90. 10 0
      mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.ts
  91. 1 0
      mart-angular/src/modules/cmart/page-cart/page-cart.component.html
  92. 0 0
      mart-angular/src/modules/cmart/page-cart/page-cart.component.scss
  93. 21 0
      mart-angular/src/modules/cmart/page-cart/page-cart.component.spec.ts
  94. 10 0
      mart-angular/src/modules/cmart/page-cart/page-cart.component.ts
  95. 1 0
      mart-angular/src/modules/cmart/page-mine/page-mine.component.html
  96. 0 0
      mart-angular/src/modules/cmart/page-mine/page-mine.component.scss
  97. 21 0
      mart-angular/src/modules/cmart/page-mine/page-mine.component.spec.ts
  98. 10 0
      mart-angular/src/modules/cmart/page-mine/page-mine.component.ts
  99. 0 0
      mart-angular/src/styles.scss
  100. 0 0
      mart-angular/tsconfig.app.json

+ 18 - 1
CraftsMart-angular/src/app/app-routing.module.ts

@@ -1,7 +1,24 @@
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
+import { HomeComponent } from 'src/modules/craftsmart/home/home.component';
+import { NavTabsComponent } from 'src/modules/craftsmart/nav-tabs/nav-tabs.component';
+import { PageCartComponent } from 'src/modules/craftsmart/page-cart/page-cart.component';
+import { PageMineComponent } from 'src/modules/craftsmart/page-mine/page-mine.component';
 
-const routes: Routes = [];
+const routes: Routes = [
+   {
+  path:"",redirectTo:"/craftsmart/home",pathMatch:"full"
+   },
+   {
+    path:'craftsmart',
+    loadChildren:() => import('../modules/craftsmart/craftsmart.module').then(m => m.CraftsmartModule)
+   },
+   { path: 'home', component: HomeComponent },
+   { path: 'nav-tabs', component: NavTabsComponent },
+   { path: 'page-cart', component: PageCartComponent },
+   { path: 'page-mine', component: PageMineComponent },
+
+];
 
 @NgModule({
   imports: [RouterModule.forRoot(routes)],

File diff suppressed because it is too large
+ 0 - 24
CraftsMart-angular/src/app/app.component.html


+ 0 - 74
CraftsMart-angular/src/app/app.component.scss

@@ -1,74 +0,0 @@
-.page {
-  display: flex;
-  flex-direction: column;
-  min-height: 100vh;
-  padding-bottom: 60px; /* 底部导航栏的高度 */
-}
-
-.search-area {
-  display: flex;
-  height: 30px; /* 将搜索框的高度设为60px */
-  align-items: center;
-  padding: 10px;
-  position: relative;
-  border: 1px solid #00aa86; /* 添加钝角边框 */
-  border-radius: 14px; /* 设置边框的钝角半径 */
-}
-
-.search-area input[type="text"] {
-  flex: 1;
-  padding: 12px;
-  border: none;
-  border-radius: 4px;
-  font-size: 16px;
-  text-align: left;
-  box-sizing: border-box;
-}
-
-.search-icon {
-  width: auto; /* 设置搜索icon宽度为自适应 */
-  height: 30px; /* 将搜索框的高度设为60px */
-  fill: #00aa86;
-  margin-left: 5px; /* 调整搜索icon与搜索框的间距 */
-}
-.search-button {
-  background-color: #ccc;
-  padding: 5px;
-  border: none;
-  border-radius: 5px;
-  margin-left: 10px;
-}
-
-.shopping-area {
-  flex: 1;
-  /* 购物区域样式 */
-}
-
-.bottom-navigation {
-  display: flex;
-  justify-content: space-around;
-  align-items: center;
-  background-color: #ffffff;
-  position: fixed;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  height: 60px;
-  border: none; /* 去除边框 */
-}
-
-.tab-button {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  height: 50px;
-  background-color: transparent; /* 设置为透明背景,去除黑边 */
-  border: none; /* 去除边框 */
-  font-size: 4px !important; /* 使用!important确保优先级 */
-}
-
-.icon-house,
-.icon-shopping-cart,
-.icon-person {
-  /* 图标样式 */
-}

+ 14 - 2
CraftsMart-angular/src/app/app.module.ts

@@ -1,8 +1,19 @@
 import { NgModule } from '@angular/core';
 import { BrowserModule } from '@angular/platform-browser';
-
 import { AppRoutingModule } from './app-routing.module';
+import { RouterModule, Routes } from '@angular/router'; // 导入 RouterModule 和 Routes
+
+
 import { AppComponent } from './app.component';
+import { HomeComponent } from 'src/modules/craftsmart/home/home.component';
+import { PageCartComponent } from 'src/modules/craftsmart/page-cart/page-cart.component';
+import { PageMineComponent } from 'src/modules/craftsmart/page-mine/page-mine.component';
+
+const routes: Routes = [
+  { path: 'home', component: HomeComponent },
+  { path: 'cart', component: PageCartComponent },
+  { path: 'mine', component: PageMineComponent },
+];
 
 @NgModule({
   declarations: [
@@ -10,7 +21,8 @@ import { AppComponent } from './app.component';
   ],
   imports: [
     BrowserModule,
-    AppRoutingModule
+    AppRoutingModule,
+    RouterModule.forRoot(routes) // 在这里配置根路由
   ],
   providers: [],
   bootstrap: [AppComponent]

BIN
CraftsMart-angular/src/assets/image/cp1.jpg


+ 35 - 0
CraftsMart-angular/src/modules/craftsmart/craftsmart-routing.module.ts

@@ -0,0 +1,35 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { PageCartComponent } from './page-cart/page-cart.component';
+import { HomeComponent } from './home/home.component';
+import { PageMineComponent } from './page-mine/page-mine.component';
+import { NavTabsComponent } from './nav-tabs/nav-tabs.component';
+import { PageDiscoverComponent } from './page-discover/page-discover.component';
+
+const routes: Routes = [
+  {
+    path:"",
+    component:NavTabsComponent,
+    children:[
+      {    path:"home",component:HomeComponent
+
+      },
+      {
+           path:"page-cart",component:PageCartComponent
+      },
+      {
+           path:"page-mine",component:PageMineComponent
+      },
+      {
+           path:"page-discover",component:PageDiscoverComponent
+      }
+    ]
+  },
+  
+];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class CraftsmartRoutingModule { }

+ 30 - 0
CraftsMart-angular/src/modules/craftsmart/craftsmart.module.ts

@@ -0,0 +1,30 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NavTabsComponent } from './nav-tabs/nav-tabs.component';
+import { PageMineComponent } from './page-mine/page-mine.component';
+import { PageCartComponent } from './page-cart/page-cart.component';
+import { RouterModule } from '@angular/router';
+import { CraftsmartRoutingModule } from './craftsmart-routing.module';
+import { PageDiscoverComponent } from './page-discover/page-discover.component';
+
+
+@NgModule({
+  
+  declarations: [
+    NavTabsComponent,
+    PageMineComponent,
+    PageCartComponent,
+    PageDiscoverComponent
+  ],
+  imports: [
+    CommonModule,
+    RouterModule,
+    CraftsmartRoutingModule
+    ],
+  exports:[
+    NavTabsComponent,
+    PageCartComponent,
+    PageMineComponent
+  ]
+})
+export class CraftsmartModule { }

+ 30 - 0
CraftsMart-angular/src/modules/craftsmart/home/home.component.html

@@ -0,0 +1,30 @@
+<div class="page">
+    <!-- 搜索区域 -->
+    <div class="search-area">
+      <input type="text" placeholder="快来搜寻您喜欢的物品吧" />
+      <svg t="1696908172482" class="search-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17736" width="128" height="128"><path d="M953.474215 908.234504l-152.576516-163.241391c61.92508-74.48211 95.81186-167.36973 95.81186-265.073744 0-229.294809-186.63531-415.930119-416.102133-415.930119-229.294809 0-415.930119 186.63531-415.930119 415.930119s186.63531 415.930119 415.930119 415.930119c60.032925 0 118.00168-12.55703 172.186125-37.327062 16.169326-7.396607 23.221905-26.318159 15.825298-42.315471-7.396607-16.169326-26.318159-23.221905-42.315471-15.825298-45.927768 20.813707-94.951789 31.478582-145.695952 31.478582-194.031917 0-351.94087-157.908953-351.94087-351.94087 0-194.031917 157.908953-351.94087 351.94087-351.94087 194.031917 0 351.94087 157.908953 351.94087 351.94087 0 91.339493-34.918864 177.86259-98.048043 243.743995-12.213002 12.729044-11.868974 33.026709 0.860071 45.239711 1.032085 0.860071 2.236183 1.204099 3.268268 2.064169 0.860071 1.204099 1.376113 2.752226 2.408198 3.956325l165.477574 177.00252c6.192508 6.70855 14.793214 10.148833 23.393919 10.148833 7.912649 0 15.653284-2.92424 21.845792-8.600706C964.827146 941.433227 965.515202 921.135562 953.474215 908.234504z" fill="#999999" p-id="17737"></path></svg>
+    </div>
+  
+    <!-- 购物区域 -->
+    <div class="shopping-area">
+      <div class="filter-tags">
+        <!-- 筛选标签 -->
+      </div>
+      <ul class="item-type-list">
+        <!-- 物品类型列表 -->
+      </ul>
+    </div>
+    
+
+    <div *ngFor="let home of homes">
+      <div>
+        <h2>{{ home.name }}</h2>
+        <p>{{ home.description }}</p>
+        <img src="../../../assets/image/cp1.jpg" alt="Home Image" />
+      </div>
+    </div>
+  
+
+  </div>
+  
+  

+ 70 - 0
CraftsMart-angular/src/modules/craftsmart/home/home.component.scss

@@ -0,0 +1,70 @@
+.page {
+    display: flex;
+    flex-direction: column;
+    min-height: 100vh;
+    padding-bottom: 60px; /* 底部导航栏的高度 */
+  }
+  
+  .search-area {
+    display: flex;
+    height: 30px; /* 将搜索框的高度设为60px */
+    align-items: center;
+    padding: 10px;
+    position: relative;
+    border: 1px solid #00aa86; /* 添加钝角边框 */
+    border-radius: 14px; /* 设置边框的钝角半径 */
+  }
+  
+  .search-area input[type="text"] {
+    flex: 1;
+    padding: 12px;
+    border: none;
+    border-radius: 4px;
+    font-size: 16px;
+    text-align: left;
+    box-sizing: border-box;
+  }
+  
+  .search-icon {
+    width: auto; /* 设置搜索icon宽度为自适应 */
+    height: 30px; /* 将搜索框的高度设为60px */
+    fill: #00aa86;
+    margin-left: 5px; /* 调整搜索icon与搜索框的间距 */
+  }
+  .search-button {
+    background-color: #ccc;
+    padding: 5px;
+    border: none;
+    border-radius: 5px;
+    margin-left: 10px;
+  }
+  
+  .shopping-area {
+    flex: 1;
+    /* 购物区域样式 */
+  }
+
+  .bottom-navigation {
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    background-color: #ffffff;
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    height: 60px;
+    border: none; /* 去除边框 */
+  }
+  
+  .tab-button {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    height: 50px;
+    background-color: transparent; /* 设置为透明背景,去除黑边 */
+    border: none; /* 去除边框 */
+    font-size: 4px !important; /* 使用!important确保优先级 */
+  }
+  
+  

+ 0 - 0
CraftsMart-angular/src/modules/home/home.component.spec.ts → CraftsMart-angular/src/modules/craftsmart/home/home.component.spec.ts


+ 40 - 0
CraftsMart-angular/src/modules/craftsmart/home/home.component.ts

@@ -0,0 +1,40 @@
+import { Component, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+interface home {
+  name: string;
+  description: string;
+  image: string;
+}
+
+@Component({
+  selector: 'app-home',
+  templateUrl: './home.component.html',
+  styleUrls: ['./home.component.scss']
+})
+export class HomeComponent {
+  homes: home[] = [
+    {
+      name: 'Digital Collectible 1',
+      description: 'This is the first digital collectible.',
+      image: 'https://example.com/digital-collectible1.jpg'
+    },
+    {
+      name: 'Digital Collectible 2',
+      description: 'This is the second digital collectible.',
+      image: 'https://example.com/digital-collectible-2.jpg'
+    },
+    {
+      name: 'Digital Collectible 3',
+      description: 'This is the third digital collectible.',
+      image: 'https://example.com/digital-collectible-3.jpg'
+    }
+    // 添加更多的数字藏品数据...
+  ];
+}
+
+@NgModule({
+  imports: [CommonModule],
+  declarations: [HomeComponent]
+})
+export class HomeModule { }

File diff suppressed because it is too large
+ 20 - 0
CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.html


+ 45 - 0
CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.scss

@@ -0,0 +1,45 @@
+
+  .bottom-navigation {
+    display: flex;
+    justify-content: space-evenly;
+    padding: 10px;
+    background-color: #ffffff;
+    position: fixed;
+    bottom: 0px;
+    left:0px;
+    width: 100vw;
+
+    .tab-button {
+      button {
+        border:none;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        background: none;
+        color: #888;
+  
+        svg {
+          width: 2em;height: 2em;
+          // width: 24px;
+          // height: 24px;
+          margin-bottom: 5px;
+        }
+        img {
+          width: 24px;
+          height: 24px;
+          margin-bottom: 5px;
+        }
+  
+        span {
+          font-size: 12px;
+        }
+      }
+
+      .active{
+        color: aqua;
+        font-weight: bold;
+      }
+     
+    }
+  }

+ 6 - 6
app-angular/src/modules/lesson/detail/detail.component.spec.ts → CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.spec.ts

@@ -1,16 +1,16 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
-import { DetailComponent } from './detail.component';
+import { NavTabsComponent } from './nav-tabs.component';
 
-describe('DetailComponent', () => {
-  let component: DetailComponent;
-  let fixture: ComponentFixture<DetailComponent>;
+describe('NavTabsComponent', () => {
+  let component: NavTabsComponent;
+  let fixture: ComponentFixture<NavTabsComponent>;
 
   beforeEach(() => {
     TestBed.configureTestingModule({
-      declarations: [DetailComponent]
+      declarations: [NavTabsComponent]
     });
-    fixture = TestBed.createComponent(DetailComponent);
+    fixture = TestBed.createComponent(NavTabsComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });

+ 24 - 0
CraftsMart-angular/src/modules/craftsmart/nav-tabs/nav-tabs.component.ts

@@ -0,0 +1,24 @@
+import { Component } from '@angular/core';
+import { ActivatedRoute, Router } from '@angular/router';
+import { RouterModule } from '@angular/router'; // 导入 RouterModule
+
+@Component({
+  selector: 'app-nav-tabs',
+  templateUrl: './nav-tabs.component.html',
+  styleUrls: ['./nav-tabs.component.scss'],
+  
+})
+export class NavTabsComponent {
+  public path = '';
+
+  constructor(private route: ActivatedRoute, private router: Router) {
+    this.route.queryParams.subscribe(params => {
+      this.path = location.pathname;
+    });
+  }
+
+  goTab(path: string) {
+    this.path = path;
+    this.router.navigate([path]);
+  }
+}

+ 1 - 0
CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.html

@@ -0,0 +1 @@
+<p>page-cart works!</p>

+ 0 - 0
CraftsMart-angular/src/modules/home/home.component.scss → CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.scss


+ 21 - 0
CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.spec.ts

@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PageCartComponent } from './page-cart.component';
+
+describe('PageCartComponent', () => {
+  let component: PageCartComponent;
+  let fixture: ComponentFixture<PageCartComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [PageCartComponent]
+    });
+    fixture = TestBed.createComponent(PageCartComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 12 - 0
CraftsMart-angular/src/modules/craftsmart/page-cart/page-cart.component.ts

@@ -0,0 +1,12 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-page-cart',
+  templateUrl: './page-cart.component.html',
+  styleUrls: ['./page-cart.component.scss']
+})
+
+
+export class PageCartComponent {
+
+}

+ 1 - 0
CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.html

@@ -0,0 +1 @@
+<p>page-discover works!</p>

+ 0 - 0
app-angular/src/assets/.gitkeep → CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.scss


+ 21 - 0
CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.spec.ts

@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PageDiscoverComponent } from './page-discover.component';
+
+describe('PageDiscoverComponent', () => {
+  let component: PageDiscoverComponent;
+  let fixture: ComponentFixture<PageDiscoverComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [PageDiscoverComponent]
+    });
+    fixture = TestBed.createComponent(PageDiscoverComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 10 - 0
CraftsMart-angular/src/modules/craftsmart/page-discover/page-discover.component.ts

@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-page-discover',
+  templateUrl: './page-discover.component.html',
+  styleUrls: ['./page-discover.component.scss']
+})
+export class PageDiscoverComponent {
+
+}

+ 1 - 0
CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.html

@@ -0,0 +1 @@
+<p>page-mine works!</p>

+ 4 - 0
CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.scss

@@ -0,0 +1,4 @@
+.active {
+    background-color: yellow;
+    color: white;
+  }

+ 0 - 0
app-angular/src/modules/lesson/page-mine/page-mine.component.spec.ts → CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.spec.ts


+ 0 - 0
app-angular/src/modules/lesson/page-mine/page-mine.component.ts → CraftsMart-angular/src/modules/craftsmart/page-mine/page-mine.component.ts


+ 0 - 10
CraftsMart-angular/src/modules/shopping/shopping-routing.module.ts

@@ -1,10 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-
-const routes: Routes = [];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
-})
-export class ShoppingRoutingModule { }

+ 0 - 17
CraftsMart-angular/src/modules/shopping/shopping.module.ts

@@ -1,17 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-import { ShoppingRoutingModule } from './shopping-routing.module';
-import { HomeComponent } from '../home/home.component';
-
-
-@NgModule({
-  declarations: [
-    HomeComponent
-  ],
-  imports: [
-    CommonModule,
-    ShoppingRoutingModule
-  ]
-})
-export class ShoppingModule { }

+ 0 - 16
app-angular/src/app/app-routing.module.ts

@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-
-
-const routes: Routes = [
-  {
-    path:'lesson',
-    loadChildren:()=>import('../modules/lesson/lesson.module').then(m => m.LessonModule)
-  },
-];
-
-@NgModule({
-  imports: [RouterModule.forRoot(routes)],
-  exports: [RouterModule]
-})
-export class AppRoutingModule { }

+ 0 - 34
app-angular/src/app/app.component.html

@@ -1,34 +0,0 @@
-<div class="page">
-  <!-- 搜索区域 -->
-  <div class="search-area">
-    <input type="text" placeholder="快来搜寻您喜欢的物品吧" />
-  </div>
-
-  <!-- 购物区域 -->
-  <div class="shopping-area">
-    <div class="filter-tags">
-      <!-- 筛选标签 -->
-    </div>
-    <ul class="item-type-list">
-      <!-- 物品类型列表 -->
-    </ul>
-  </div>
-
-  <!-- 底部导航区域 -->
-  <div class="bottom-navigation">
-    <button class="tab-button">
-      <i class="icon-house"></i>
-      首页
-    </button>
-    <button class="tab-button">
-      <i class="icon-shopping-cart"></i>
-      购物车
-    </button>
-    <button class="tab-button">
-      <i class="icon-person"></i>
-      我的
-    </button>
-  </div>
-</div>
-
-<router-outlet></router-outlet>

+ 0 - 42
app-angular/src/app/app.component.scss

@@ -1,42 +0,0 @@
-
-.bottom-navigation {
-  display: flex;
-  justify-content: space-between;
-  padding: 10px;
-  background-color: #f5f5f5;
-  position: fixed;
-  bottom: 0px;
-  left:0px;
-  width: 90%;
-
-  .tab-button {
-    button {
-      display: flex;
-      flex-direction: column;
-      align-items: center;
-      justify-content: center;
-      color: #888;
-
-      svg {
-        width: 2em;height: 2em;
-        // width: 24px;
-        // height: 24px;
-        margin-bottom: 5px;
-      }
-      img {
-        width: 24px;
-        height: 24px;
-        margin-bottom: 5px;
-      }
-
-      span {
-        font-size: 12px;
-      }
-    }
-
-    .active {
-      color: #000;
-      font-weight: bold;
-    }
-  }
-}

+ 0 - 6
app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.html

@@ -1,6 +0,0 @@
-<div class="lesson-card">
-    <h1>{{name}}</h1>
-    <h2>{{author}}</h2>
-    <h1>{{lesson?.name}}</h1>
-    <h2>{{lesson?.author}}</h2>
-</div>

+ 0 - 9
app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.scss

@@ -1,9 +0,0 @@
-.lesson-card{
-    min-height: 80px;
-    width: 80%;
-    border: solid 1px;
-    border-color: black;
-    margin-bottom: 10px;
-    padding: 15px;
-    text-align: center;
-}

+ 0 - 21
app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.spec.ts

@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { CompLessonCardComponent } from './comp-lesson-card.component';
-
-describe('CompLessonCardComponent', () => {
-  let component: CompLessonCardComponent;
-  let fixture: ComponentFixture<CompLessonCardComponent>;
-
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      declarations: [CompLessonCardComponent]
-    });
-    fixture = TestBed.createComponent(CompLessonCardComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 12
app-angular/src/modules/lesson/comp-lesson-card/comp-lesson-card.component.ts

@@ -1,12 +0,0 @@
-import { Component, Input } from '@angular/core';
-
-@Component({
-  selector: 'app-comp-lesson-card',
-  templateUrl: './comp-lesson-card.component.html',
-  styleUrls: ['./comp-lesson-card.component.scss']
-})
-export class CompLessonCardComponent {
-  @Input() name:string = "未命名"
-  @Input() author:string = "未命名"
-  @Input() lesson:any = {}
-}

+ 0 - 4
app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.html

@@ -1,4 +0,0 @@
-<div class="line-button" (click)="showName()"> 
-    {{btName}}
-    <span>></span>
-</div>

+ 0 - 10
app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.scss

@@ -1,10 +0,0 @@
-.line-button{
-    width: 90%;
-    margin-bottom: 5px;
-    border: solid 0.5px;
-    padding:5px;
-    span{
-        float: right;
-        right: 5px;
-    }
-}

+ 0 - 21
app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.spec.ts

@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { CompNavButtonComponent } from './comp-nav-button.component';
-
-describe('CompNavButtonComponent', () => {
-  let component: CompNavButtonComponent;
-  let fixture: ComponentFixture<CompNavButtonComponent>;
-
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      declarations: [CompNavButtonComponent]
-    });
-    fixture = TestBed.createComponent(CompNavButtonComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 13
app-angular/src/modules/lesson/comp-nav-button/comp-nav-button.component.ts

@@ -1,13 +0,0 @@
-import { Component, Input } from '@angular/core';
-
-@Component({
-  selector: 'app-comp-nav-button',
-  templateUrl: './comp-nav-button.component.html',
-  styleUrls: ['./comp-nav-button.component.scss']
-})
-export class CompNavButtonComponent {
-  @Input("name") btName:string = ""
-  showName(){
-    alert(this.btName);
-  }
-}

+ 0 - 5
app-angular/src/modules/lesson/detail/detail.component.html

@@ -1,5 +0,0 @@
-<h1>{{lesson.name}}</h1>
-<h2>作者:{{lesson.author}}</h2>
-<p>
-    描述:{{lesson.desc}}
-</p>

+ 0 - 19
app-angular/src/modules/lesson/detail/detail.component.ts

@@ -1,19 +0,0 @@
-import { Component } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
-
-@Component({
-  selector: 'app-detail',
-  templateUrl: './detail.component.html',
-  styleUrls: ['./detail.component.scss']
-})
-export class DetailComponent {
-
-  lesson:any = {}
-  constructor(private route:ActivatedRoute){
-    // 参数接收:通过ActivatedRoute服务,实现查询参数的接收
-    this.route.queryParams.subscribe(params=>{
-      console.log(params)
-      this.lesson = params
-    })
-  }
-}

+ 0 - 50
app-angular/src/modules/lesson/home/home.component.html

@@ -1,50 +0,0 @@
-<div class="page-content">
-  <div class="search-area">
-    <div class="left-component">
-      <select [(ngModel)]="selectedOption">
-        <option value="frontend">大前端</option>
-        <option value="backend">后端开发</option>
-        <option value="mobile">移动开发</option>
-      </select>
-    </div>
-    <div class="right-component">
-      <input type="text" placeholder="搜索课程/技术">
-    </div>
-  </div>
-  <div class="quick-links">
-    <h1>{{lessonName}}</h1>
-
-    <!-- 指令:*ngFor循环指令 *ngIf条件指令 ng-container虚拟DOM容器 -->
-    <ul style="font-size: 36px;">
-      <ng-container *ngFor="let lesson of lessonList;let i = index">
-        <li *ngIf="lesson.isEnabled" (click)="goDetail(lesson)">
-            课程{{i+1}}:{{lesson.name}}
-        </li>
-      </ng-container>
-    </ul>
-
-    <!-- 组件:通过selector标签引用组件,并通过@Input传参,用[]传递变量 -->
-    <ng-container *ngFor="let lesson of lessonList;let i = index">
-      <app-comp-lesson-card [name]="lesson.name" [author]="lesson.author" [lesson]="lesson"
-      *ngIf="lesson.isEnabled" (click)="goDetail(lesson)"></app-comp-lesson-card>
-    </ng-container>
-
-    <!-- 组件:通过selector标签引用组件,并通过@Input传参 -->
-    <app-comp-lesson-card [name]="title"></app-comp-lesson-card>
-    <app-comp-lesson-card [name]="'title123'"></app-comp-lesson-card>
-    <app-comp-lesson-card name="666"></app-comp-lesson-card>
-    <app-comp-lesson-card name="{{title}}"></app-comp-lesson-card>
-    <app-comp-lesson-card></app-comp-lesson-card>
-    <app-comp-lesson-card></app-comp-lesson-card>
-    <app-comp-lesson-card></app-comp-lesson-card>
-    <!-- 添加更多的行 -->
-  </div>
-  <div class="course-area">
-    <div class="filter-tags">
-      <!-- 添加筛选标签 -->
-    </div>
-    <div class="course-list">
-      <!-- 添加课程列表 -->
-    </div>
-  </div>
-</div>

+ 0 - 75
app-angular/src/modules/lesson/home/home.component.scss

@@ -1,75 +0,0 @@
-.page-content {
-    padding: 20px;
-  }
-  
-  .search-area {
-    display: flex;
-    align-items: center;
-    margin-bottom: 20px;
-  
-    .left-component {
-      select {
-        width: 150px;
-        height: 30px;
-        padding: 5px;
-        border: 1px solid #ccc;
-        border-radius: 4px;
-      }
-    }
-  
-    .right-component {
-      input[type="text"] {
-        width: 200px;
-        height: 30px;
-        padding: 5px;
-        border: 1px solid #ccc;
-        border-radius: 4px;
-      }
-    }
-  }
-  
-  .quick-links {
-    .row {
-      display: flex;
-      flex-wrap: wrap;
-      margin-bottom: 20px;
-  
-      .col {
-        flex: 1 0 20%;
-        max-width: 20%;
-  
-        .quick-link-item {
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-          justify-content: center;
-          text-align: center;
-          margin-bottom: 10px;
-  
-          img {
-            width: 50px;
-            height: 50px;
-          }
-  
-          span {
-            margin-top: 5px;
-          }
-        }
-      }
-    }
-  }
-  
-  .course-area {
-    .filter-tags {
-      display: flex;
-      align-items: center;
-      margin-bottom: 20px;
-  
-      // 添加筛选标签的样式
-    }
-  
-    .course-list {
-      // 添加课程列表的样式
-    }
-  }
-  

+ 0 - 30
app-angular/src/modules/lesson/home/home.component.ts

@@ -1,30 +0,0 @@
-import { Component } from '@angular/core';
-import { Router } from '@angular/router';
-
-@Component({
-  selector: 'app-home',
-  templateUrl: './home.component.html',
-  styleUrls: ['./home.component.scss']
-})
-export class HomeComponent {
-  selectedOption: string = 'frontend';
-  title = "临时tittle"
-  constructor(private router:Router){}
-  // 添加其他需要的逻辑和属性
-  lessonName = "Web3.0未来全栈工程师"
-  lessonList = [
-    {name:"大前端",author:"未来全栈", desc:`课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍`,isEnabled:true},
-    {name:"微服务",author:"未来全栈", desc:`课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍`,isEnabled:true},
-    {name:"数据库",author:"未来全栈", desc:`课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍`,isEnabled:false},
-    {name:"人工智能",author:"未来全栈", desc:`课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍`,isEnabled:true},
-    {name:"区块链",author:"未来全栈", desc:`课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍`,isEnabled:false},
-    {name:"DevOps",author:"未来全栈", desc:`课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍课程介绍`,isEnabled:false},
-  ]
-
-  // 路由传参:通过Router服务,携带查询参数,跳转至课程详情页
-  goDetail(lesson:any){
-    this.router.navigate(["/lesson/detail"],{
-      queryParams:lesson
-    })
-  }
-}

+ 0 - 31
app-angular/src/modules/lesson/lesson-routing.module.ts

@@ -1,31 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { HomeComponent } from './home/home.component';
-import { DetailComponent } from './detail/detail.component';
-import { PageMineComponent } from './page-mine/page-mine.component';
-import { PageStudentComponent } from './page-student/page-student.component';
-import { PageStudentDetailComponent } from './page-student-detail/page-student-detail.component';
-
-const routes: Routes = [
-  {
-    path:"home",component:HomeComponent
-  },
-  {
-    path:"detail",component:DetailComponent
-  },
-  {
-    path:"mine",component:PageMineComponent
-  },
-  {
-    path:"student",component:PageStudentComponent
-  },
-  {
-    path:"student/detail",component:PageStudentDetailComponent
-  }
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
-})
-export class LessonRoutingModule { }

+ 0 - 32
app-angular/src/modules/lesson/lesson.module.ts

@@ -1,32 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-import { LessonRoutingModule } from './lesson-routing.module';
-import { HomeComponent } from './home/home.component';
-import { DetailComponent } from './detail/detail.component';
-import { FormsModule } from '@angular/forms';
-import { PageMineComponent } from './page-mine/page-mine.component';
-import { CompNavButtonComponent } from './comp-nav-button/comp-nav-button.component';
-import { CompLessonCardComponent } from './comp-lesson-card/comp-lesson-card.component';
-import { PageStudentComponent } from './page-student/page-student.component';
-import { PageStudentDetailComponent } from './page-student-detail/page-student-detail.component';
-
-
-
-@NgModule({
-  declarations: [
-    HomeComponent,
-    DetailComponent,
-    PageMineComponent,
-    CompNavButtonComponent,
-    CompLessonCardComponent,
-    PageStudentComponent,
-    PageStudentDetailComponent
-  ],
-  imports: [
-    CommonModule,
-    FormsModule,
-    LessonRoutingModule
-  ]
-})
-export class LessonModule { }

+ 0 - 5
app-angular/src/modules/lesson/page-mine/page-mine.component.html

@@ -1,5 +0,0 @@
-<h1>我的页面</h1>
-
-<app-comp-nav-button name="我的课堂"></app-comp-nav-button>
-<app-comp-nav-button name="我的收藏"></app-comp-nav-button>
-<app-comp-nav-button name="我的浏览"></app-comp-nav-button>

+ 0 - 1
app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.html

@@ -1 +0,0 @@
-<p>page-student-detail works!</p>

+ 0 - 21
app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.spec.ts

@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageStudentDetailComponent } from './page-student-detail.component';
-
-describe('PageStudentDetailComponent', () => {
-  let component: PageStudentDetailComponent;
-  let fixture: ComponentFixture<PageStudentDetailComponent>;
-
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      declarations: [PageStudentDetailComponent]
-    });
-    fixture = TestBed.createComponent(PageStudentDetailComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 10
app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.ts

@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-page-student-detail',
-  templateUrl: './page-student-detail.component.html',
-  styleUrls: ['./page-student-detail.component.scss']
-})
-export class PageStudentDetailComponent {
-
-}

+ 0 - 7
app-angular/src/modules/lesson/page-student/page-student.component.html

@@ -1,7 +0,0 @@
-<ul>
-    <ng-container *ngFor="let student of studentList">
-        <li>
-            {{student.name}} / {{student.stuno}}
-        </li>
-    </ng-container>
-</ul>

+ 0 - 21
app-angular/src/modules/lesson/page-student/page-student.component.spec.ts

@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PageStudentComponent } from './page-student.component';
-
-describe('PageStudentComponent', () => {
-  let component: PageStudentComponent;
-  let fixture: ComponentFixture<PageStudentComponent>;
-
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      declarations: [PageStudentComponent]
-    });
-    fixture = TestBed.createComponent(PageStudentComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 63
app-angular/src/modules/lesson/page-student/page-student.component.ts

@@ -1,63 +0,0 @@
-import { Component } from '@angular/core';
-
-
-interface Student{
-  name:string // 名称
-  stuno:string // 学号
-  gender?:string // 性别
-  age?:number // 年龄
-  signDate?:Date, // 注册时间
-  skills?:Array<string> // 擅长技术
-}
-
-@Component({
-  selector: 'app-page-student',
-  templateUrl: './page-student.component.html',
-  styleUrls: ['./page-student.component.scss']
-})
-export class PageStudentComponent {
-
-
-  studentList:Array<Student> = [
-    {
-      name:"刘聪明", 
-      stuno:"021666001", 
-      gender:"男",
-      age:18,
-      signDate:new Date(), 
-      skills:[
-        "HTML","JS"
-      ]
-    },
-    {
-      name:"王智慧", 
-      stuno:"021666002", 
-      gender:"男",
-      age:19,
-      signDate:new Date(), 
-      skills:[
-        "HTML","JS"
-      ]
-    },
-    {
-      name:"李漂亮", 
-      stuno:"021666003", 
-      gender:"女",
-      age:18,
-      signDate:new Date(), 
-      skills:[
-        "CSS"
-      ]
-    },
-    {
-      name:"钱多多", 
-      stuno:"021666004", 
-      gender:"男",
-      age:21,
-      signDate:new Date(), 
-      skills:[
-        "AIGC"
-      ]
-    },
-  ]
-}

+ 0 - 19
app-angular/src/modules/lesson/pipe-tok/tok.pipe.ts

@@ -1,19 +0,0 @@
-import { Pipe, PipeTransform } from '@angular/core';
-
-@Pipe({
-  name: 'tok'
-})
-export class TokPipe implements PipeTransform {
-
-  transform(value: string|number, ...args: unknown[]): unknown {
-    value = Number(value)
-    if(value>1000*1000){
-      return (value / 1000 / 1000).toFixed(2) + "m"
-    }
-    if(value>1000){
-      return (value / 1000).toFixed(2) + "k"
-    }
-    return value
-  }
-
-}

+ 0 - 14
app-angular/src/modules/user/user.module.ts

@@ -1,14 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-import { UserRoutingModule } from './user-routing.module';
-
-
-@NgModule({
-  declarations: [],
-  imports: [
-    CommonModule,
-    UserRoutingModule
-  ]
-})
-export class UserModule { }

+ 114 - 0
app-backend/package-lock.json

@@ -0,0 +1,114 @@
+{
+  "name": "app-backend",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "parse": "^4.2.0"
+      }
+    },
+    "node_modules/@babel/runtime-corejs3": {
+      "version": "7.21.0",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.21.0.tgz",
+      "integrity": "sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw==",
+      "dependencies": {
+        "core-js-pure": "^3.25.1",
+        "regenerator-runtime": "^0.13.11"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/core-js-pure": {
+      "version": "3.33.0",
+      "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.33.0.tgz",
+      "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==",
+      "hasInstallScript": true
+    },
+    "node_modules/crypto-js": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz",
+      "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==",
+      "optional": true
+    },
+    "node_modules/idb-keyval": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/idb-keyval/-/idb-keyval-6.2.0.tgz",
+      "integrity": "sha512-uw+MIyQn2jl3+hroD7hF8J7PUviBU7BPKWw4f/ISf32D4LoGu98yHjrzWWJDASu9QNrX10tCJqk9YY0ClWm8Ng==",
+      "dependencies": {
+        "safari-14-idb-fix": "^3.0.0"
+      }
+    },
+    "node_modules/parse": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/parse/-/parse-4.2.0.tgz",
+      "integrity": "sha512-K8bWs0wM2qRhkSr6N16j8OvsF6Uallrynqng9e+tzR3RdKuB09vaJh48qrf9MbiJ1Ya4JZI7AfEHYF+ywEKs7Q==",
+      "dependencies": {
+        "@babel/runtime-corejs3": "7.21.0",
+        "idb-keyval": "6.2.0",
+        "react-native-crypto-js": "1.0.0",
+        "uuid": "9.0.0",
+        "ws": "8.13.0",
+        "xmlhttprequest": "1.8.0"
+      },
+      "engines": {
+        "node": ">=14.21.0 <17 || >=18 <20"
+      },
+      "optionalDependencies": {
+        "crypto-js": "4.1.1"
+      }
+    },
+    "node_modules/react-native-crypto-js": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/react-native-crypto-js/-/react-native-crypto-js-1.0.0.tgz",
+      "integrity": "sha512-FNbLuG/HAdapQoybeZSoes1PWdOj0w242gb+e1R0hicf3Gyj/Mf8M9NaED2AnXVOX01b2FXomwUiw1xP1K+8sA=="
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+    },
+    "node_modules/safari-14-idb-fix": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
+      "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog=="
+    },
+    "node_modules/uuid": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.0.tgz",
+      "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.13.0",
+      "resolved": "https://registry.npmmirror.com/ws/-/ws-8.13.0.tgz",
+      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xmlhttprequest": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmmirror.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+      "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    }
+  }
+}

+ 5 - 0
app-backend/package.json

@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "parse": "^4.2.0"
+  }
+}

+ 0 - 0
app-angular/src/modules/lesson/detail/detail.component.scss → app-backend/page-js-sdk/showcase.js


+ 21 - 1
docs/product.md

@@ -259,4 +259,24 @@
  ## 图片示意
 ![Alt text](image-1.png)
 
-![Alt text](image-2.png)
+![Alt text](image-2.png)
+
+
+### 核心
+手艺之窗的核心功能是连接手工艺品制作者和消费者,并提供便捷的在线展示、销售和物流配送服务。以下是可能吸引用户的潜在功能:
+
+本地特色手工艺品展示:手艺之窗可以提供一个平台,展示小县城独特而精美的手工艺品。用户可以通过小程序浏览各类本地特色手工艺品,了解其背后的文化魅力和制作传统。(拍照识别手工艺品,未来可以接入AR,3D 特殊展示)
+
+制作者与消费者的直接互动:手艺之窗允许消费者与手工艺品制作者直接进行交流。用户可以通过平台与制作者沟通、了解手工艺品的制作过程、定制个性化的产品,并获取制作者的专业建议。(缺陷 用户量大的时候 无法及时回复 )  (解决;引入AI 或者聊天机器人 提供一些简单的问题答复,产品制作过程)
+
+安全的在线购买体验:手艺之窗提供便捷的在线购买功能,用户可以直接在平台上浏览和购买手工艺品。为了确保产品的安全送达,手艺之窗提供物流配送服务,用户可以放心购买,享受方便、可靠的购物体验。   
+
+评价和评分系统:手艺之窗可以引入评价和评分系统,让用户对购买的手工艺品进行评价和反馈。这可以帮助其他用户了解产品的质量和制作者的信誉,增加购买的信心。
+
+个性化推荐和定制服务:通过分析用户的浏览和购买行为,手艺之窗可以提供个性化的推荐服务,向用户展示他们可能感兴趣的手工艺品。此外,平台还可以提供定制服务,让用户根据自己的需求定制特别的手工艺品。
+
+文化活动和工作坊:手艺之窗可以组织各种与手工艺品相关的文化活动和工作坊,吸引用户参与。这些活动可以增加用户对手工艺品的认可度和兴趣,并提供学习和交流的机会。
+
+社区和分享功能:手艺之窗可以建立一个用户社区,让用户之间分享他们的手工艺品心得、经验和创作。这种社区互动可以增加用户粘性,促进用户之间的互动和交流。
+
+通过提供上述潜在功能,手艺之窗可以吸引更多的用户。用户可以通过平台发现独特、精美的本地手工艺品,与制作者直接互动,享受安全便捷的购物体验,并参与到手工艺品相关的文化活动和社区中。这些功能将增加用户对平台的参与度和忠诚度,促进手艺之窗的用户增长和业务发展。D

+ 49 - 0
docs/核心.md

@@ -0,0 +1,49 @@
+手艺之窗
+
+# 连接手工艺品制作者和消费者,并提供便捷的在线展示、销售和物流配送服务。以下是可能
+
+ ## 本地特色手工艺品展示:
+
+- 手艺之窗可以提供一个平台,展示小县城独特而精美的手工艺品。用户可以通过小程序浏览各类本地特色手工艺品,了解其背后的文化魅力和制作传统。
+
+## 制作者与消费者的直接互动:
+
+- 手艺之窗允许消费者与手工艺品制作者直接进行交流。用户可以通过平台与制作者沟通、了解手工艺品的制作过程、定制个性化的产品,并获取制作者的专业建议。
+
+
+- 手艺之窗提供便捷的在线购买功能,用户可以直接在平台上浏览和购买手工艺品。为了确保产品的安全送达,手艺之窗提供物流配送服务,用户可以放心购买,享受方便、可靠的购物体验。
+
+## 评价和评分系统:
+
+- 手艺之窗可以引入评价和评分系统,让用户对购买的手工艺品进行评价和反馈。这可以帮助其他用户了解产品的质量和制作者的信誉,增加购买的信心。
+
+## 个性化推荐和定制服务:
+
+- 通过分析用户的浏览和购买行为,手艺之窗可以提供个性化的推荐服务,向用户展示他们可能感兴趣的手工艺品。此外,平台还可以提供定制服务,让用户根据自己的需求定制特别的手工艺品。
+
+## 文化活动和工作坊:
+
+- 手艺之窗可以组织各种与手工艺品相关的文化活动和工作坊,吸引用户参与。这些活动可以增加用户对手工艺品的认可度和兴趣,并提供学习和交流的机会。
+
+## 社区和分享功能:
+
+- 手艺之窗可以建立一个用户社区,让用户之间分享他们的手工艺品心得、经验和创作。这种社区互动可以增加用户粘性,促进用户之间的互动和交流。
+
+
+
+
+## 首页
+
+- 一个类似小红书的界面
+- 搜索栏 可以实现搜索各种种草手工艺品动态 视频
+- 搜索栏下方有不同频道 (可以自组选择) 推荐 关注 广场 视频
+
+## 购买
+
+- 搜索框
+- 商品分类频道
+- 商品
+
+## 页面3
+ 
+ - fnag

+ 0 - 0
app-angular/.editorconfig → mart-angular/.editorconfig


+ 0 - 0
app-angular/.gitignore → mart-angular/.gitignore


+ 0 - 0
app-angular/.vscode/extensions.json → mart-angular/.vscode/extensions.json


+ 0 - 0
app-angular/.vscode/launch.json → mart-angular/.vscode/launch.json


+ 0 - 0
app-angular/.vscode/tasks.json → mart-angular/.vscode/tasks.json


+ 2 - 2
app-angular/README.md → mart-angular/README.md

@@ -1,6 +1,6 @@
-# AppAngular
+# MartAngular
 
-This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.2.
+This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.6.
 
 ## Development server
 

+ 7 - 7
app-angular/angular.json → mart-angular/angular.json

@@ -3,7 +3,7 @@
   "version": 1,
   "newProjectRoot": "projects",
   "projects": {
-    "app-angular": {
+    "mart-angular": {
       "projectType": "application",
       "schematics": {
         "@schematics/angular:component": {
@@ -17,7 +17,7 @@
         "build": {
           "builder": "@angular-devkit/build-angular:browser",
           "options": {
-            "outputPath": "dist/app-angular",
+            "outputPath": "dist/mart-angular",
             "index": "src/index.html",
             "main": "src/main.ts",
             "polyfills": [
@@ -31,7 +31,7 @@
             ],
             "styles": [
               "src/styles.scss"
-         ],
+            ],
             "scripts": []
           },
           "configurations": {
@@ -65,10 +65,10 @@
           "builder": "@angular-devkit/build-angular:dev-server",
           "configurations": {
             "production": {
-              "browserTarget": "app-angular:build:production"
+              "browserTarget": "mart-angular:build:production"
             },
             "development": {
-              "browserTarget": "app-angular:build:development"
+              "browserTarget": "mart-angular:build:development"
             }
           },
           "defaultConfiguration": "development"
@@ -76,7 +76,7 @@
         "extract-i18n": {
           "builder": "@angular-devkit/build-angular:extract-i18n",
           "options": {
-            "browserTarget": "app-angular:build"
+            "browserTarget": "mart-angular:build"
           }
         },
         "test": {
@@ -102,6 +102,6 @@
     }
   },
   "cli": {
-    "analytics": "bb6bc101-16ac-4c9b-b6d5-21ccaef3df93"
+    "analytics": "f44b8533-81c8-4046-94a7-33e2011a6f79"
   }
 }

File diff suppressed because it is too large
+ 247 - 233
mart-angular/package-lock.json


+ 3 - 3
app-angular/package.json → mart-angular/package.json

@@ -1,5 +1,5 @@
 {
-  "name": "app-angular",
+  "name": "mart-angular",
   "version": "0.0.0",
   "scripts": {
     "ng": "ng",
@@ -23,8 +23,8 @@
     "zone.js": "~0.13.0"
   },
   "devDependencies": {
-    "@angular-devkit/build-angular": "^16.2.2",
-    "@angular/cli": "~16.2.2",
+    "@angular-devkit/build-angular": "^16.2.6",
+    "@angular/cli": "^16.2.6",
     "@angular/compiler-cli": "^16.2.0",
     "@types/jasmine": "~4.3.0",
     "jasmine-core": "~4.6.0",

+ 23 - 0
mart-angular/src/app/app-routing.module.ts

@@ -0,0 +1,23 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { HomeComponent } from 'src/modules/cmart/home/home.component';
+import { PageCartComponent } from 'src/modules/cmart/page-cart/page-cart.component';
+import { PageMineComponent } from 'src/modules/cmart/page-mine/page-mine.component';
+
+const routes: Routes = [
+  {
+    path: 'cmart',
+    children: [
+      { path: '', redirectTo: 'home', pathMatch: 'full' },
+      { path: 'home', component: HomeComponent },
+      { path: 'page-cart', component: PageCartComponent },
+      { path: 'page-mine', component: PageMineComponent }
+    ]
+  }
+];
+
+@NgModule({
+  imports: [RouterModule.forRoot(routes)],
+  exports: [RouterModule]
+})
+export class AppRoutingModule { }

+ 6 - 0
mart-angular/src/app/app.component.html

@@ -0,0 +1,6 @@
+
+<app-nav-tabs></app-nav-tabs>
+
+
+<router-outlet></router-outlet>
+

+ 0 - 0
app-angular/src/modules/lesson/page-mine/page-mine.component.scss → mart-angular/src/app/app.component.scss


+ 3 - 3
app-angular/src/app/app.component.spec.ts → mart-angular/src/app/app.component.spec.ts

@@ -14,16 +14,16 @@ describe('AppComponent', () => {
     expect(app).toBeTruthy();
   });
 
-  it(`should have as title 'app-angular'`, () => {
+  it(`should have as title 'mart-angular'`, () => {
     const fixture = TestBed.createComponent(AppComponent);
     const app = fixture.componentInstance;
-    expect(app.title).toEqual('app-angular');
+    expect(app.title).toEqual('mart-angular');
   });
 
   it('should render title', () => {
     const fixture = TestBed.createComponent(AppComponent);
     fixture.detectChanges();
     const compiled = fixture.nativeElement as HTMLElement;
-    expect(compiled.querySelector('.content span')?.textContent).toContain('app-angular app is running!');
+    expect(compiled.querySelector('.content span')?.textContent).toContain('mart-angular app is running!');
   });
 });

+ 1 - 4
app-angular/src/app/app.component.ts → mart-angular/src/app/app.component.ts

@@ -6,8 +6,5 @@ import { Component } from '@angular/core';
   styleUrls: ['./app.component.scss']
 })
 export class AppComponent {
-  title = '第一个项目app-angular';
-  onClick(){
-    alert("我被点击了")
-  }
+  title = 'mart-angular';
 }

+ 7 - 3
app-angular/src/app/app.module.ts → mart-angular/src/app/app.module.ts

@@ -1,16 +1,20 @@
 import { NgModule } from '@angular/core';
 import { BrowserModule } from '@angular/platform-browser';
+import { RouterModule } from '@angular/router';
 
-import { AppRoutingModule } from './app-routing.module';
 import { AppComponent } from './app.component';
+import { NavTabsComponent } from 'src/modules/cmart/nav-tabs/nav-tabs.component';
 
 @NgModule({
   declarations: [
-    AppComponent
+    AppComponent,
+    NavTabsComponent
   ],
   imports: [
     BrowserModule,
-    AppRoutingModule
+    RouterModule.forRoot([
+      // 定义你的路由配置
+    ])
   ],
   providers: [],
   bootstrap: [AppComponent]

+ 0 - 0
app-angular/src/modules/lesson/page-student-detail/page-student-detail.component.scss → mart-angular/src/assets/.gitkeep


+ 0 - 0
app-angular/src/favicon.ico → mart-angular/src/favicon.ico


+ 1 - 1
app-angular/src/index.html → mart-angular/src/index.html

@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
   <meta charset="utf-8">
-  <title>AppAngular</title>
+  <title>MartAngular</title>
   <base href="/">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="icon" type="image/x-icon" href="favicon.ico">

+ 0 - 0
app-angular/src/main.ts → mart-angular/src/main.ts


+ 1 - 1
app-angular/src/modules/user/user-routing.module.ts → mart-angular/src/modules/cmart/cmart-routing.module.ts

@@ -7,4 +7,4 @@ const routes: Routes = [];
   imports: [RouterModule.forChild(routes)],
   exports: [RouterModule]
 })
-export class UserRoutingModule { }
+export class CmartRoutingModule { }

+ 23 - 0
mart-angular/src/modules/cmart/cmart.module.ts

@@ -0,0 +1,23 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import { CmartRoutingModule } from './cmart-routing.module';
+import { HomeComponent } from './home/home.component';
+import { NavTabsComponent } from './nav-tabs/nav-tabs.component';
+import { PageCartComponent } from './page-cart/page-cart.component';
+import { PageMineComponent } from './page-mine/page-mine.component';
+
+
+@NgModule({
+  declarations: [
+    HomeComponent,
+    NavTabsComponent,
+    PageCartComponent,
+    PageMineComponent
+  ],
+  imports: [
+    CommonModule,
+    CmartRoutingModule
+  ]
+})
+export class CmartModule { }

+ 0 - 0
CraftsMart-angular/src/modules/home/home.component.html → mart-angular/src/modules/cmart/home/home.component.html


+ 0 - 0
app-angular/src/modules/lesson/page-student/page-student.component.scss → mart-angular/src/modules/cmart/home/home.component.scss


+ 0 - 0
app-angular/src/modules/lesson/home/home.component.spec.ts → mart-angular/src/modules/cmart/home/home.component.spec.ts


+ 0 - 0
CraftsMart-angular/src/modules/home/home.component.ts → mart-angular/src/modules/cmart/home/home.component.ts


+ 6 - 0
mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.html

@@ -0,0 +1,6 @@
+<div class="nav-tabs">
+    <button (click)="navigateTo('home')">首页</button>
+    <button (click)="navigateTo('page-cart')">购物车</button>
+    <button (click)="navigateTo('page-mine')">我的</button>
+</div>
+  

+ 0 - 0
mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.scss


+ 21 - 0
mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.spec.ts

@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { NavTabsComponent } from './nav-tabs.component';
+
+describe('NavTabsComponent', () => {
+  let component: NavTabsComponent;
+  let fixture: ComponentFixture<NavTabsComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [NavTabsComponent]
+    });
+    fixture = TestBed.createComponent(NavTabsComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 10 - 0
mart-angular/src/modules/cmart/nav-tabs/nav-tabs.component.ts

@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-nav-tabs',
+  templateUrl: './nav-tabs.component.html',
+  styleUrls: ['./nav-tabs.component.scss']
+})
+export class NavTabsComponent {
+
+}

+ 1 - 0
mart-angular/src/modules/cmart/page-cart/page-cart.component.html

@@ -0,0 +1 @@
+<p>page-cart works!</p>

+ 0 - 0
mart-angular/src/modules/cmart/page-cart/page-cart.component.scss


+ 21 - 0
mart-angular/src/modules/cmart/page-cart/page-cart.component.spec.ts

@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PageCartComponent } from './page-cart.component';
+
+describe('PageCartComponent', () => {
+  let component: PageCartComponent;
+  let fixture: ComponentFixture<PageCartComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [PageCartComponent]
+    });
+    fixture = TestBed.createComponent(PageCartComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 10 - 0
mart-angular/src/modules/cmart/page-cart/page-cart.component.ts

@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-page-cart',
+  templateUrl: './page-cart.component.html',
+  styleUrls: ['./page-cart.component.scss']
+})
+export class PageCartComponent {
+
+}

+ 1 - 0
mart-angular/src/modules/cmart/page-mine/page-mine.component.html

@@ -0,0 +1 @@
+<p>page-mine works!</p>

+ 0 - 0
mart-angular/src/modules/cmart/page-mine/page-mine.component.scss


+ 21 - 0
mart-angular/src/modules/cmart/page-mine/page-mine.component.spec.ts

@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { PageMineComponent } from './page-mine.component';
+
+describe('PageMineComponent', () => {
+  let component: PageMineComponent;
+  let fixture: ComponentFixture<PageMineComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [PageMineComponent]
+    });
+    fixture = TestBed.createComponent(PageMineComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 10 - 0
mart-angular/src/modules/cmart/page-mine/page-mine.component.ts

@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-page-mine',
+  templateUrl: './page-mine.component.html',
+  styleUrls: ['./page-mine.component.scss']
+})
+export class PageMineComponent {
+
+}

+ 0 - 0
app-angular/src/styles.scss → mart-angular/src/styles.scss


+ 0 - 0
app-angular/tsconfig.app.json → mart-angular/tsconfig.app.json


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