hid_msrpuwgj56ccf29 vor 1 Jahr
Ursprung
Commit
69b107624e

+ 71 - 4
app-angular/angular.json

@@ -27,10 +27,48 @@
             "inlineStyleLanguage": "scss",
             "assets": [
               "src/favicon.ico",
-              "src/assets"
+              "src/assets",
+              {
+                "glob": "**/*.svg",
+                "input": "node_modules/ionicons/dist/ionicons/svg",
+                "output": "./svg"
+              }
             ],
             "styles": [
-              "src/styles.scss"
+              "src/styles.scss",
+              {
+                "input": "node_modules/@ionic/angular/css/core.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/normalize.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/structure.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/typography.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/display.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/padding.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/float-elements.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/text-alignment.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/text-transformation.css"
+              },
+              {
+                "input": "node_modules/@ionic/angular/css/flex-utils.css"
+              },
+              {
+                "input": "src/theme/variables.css"
+              }
             ],
             "scripts": []
           },
@@ -90,15 +128,44 @@
             "inlineStyleLanguage": "scss",
             "assets": [
               "src/favicon.ico",
-              "src/assets"
+              "src/assets",
+              {
+                "glob": "**/*.svg",
+                "input": "node_modules/ionicons/dist/ionicons/svg",
+                "output": "./svg"
+              }
             ],
             "styles": [
               "src/styles.scss"
             ],
             "scripts": []
           }
+        },
+        "ionic-cordova-serve": {
+          "builder": "@ionic/angular-toolkit:cordova-serve",
+          "options": {
+            "cordovaBuildTarget": "app-angular:ionic-cordova-build",
+            "devServerTarget": "app-angular:serve"
+          },
+          "configurations": {
+            "production": {
+              "cordovaBuildTarget": "app-angular:ionic-cordova-build:production",
+              "devServerTarget": "app-angular:serve:production"
+            }
+          }
+        },
+        "ionic-cordova-build": {
+          "builder": "@ionic/angular-toolkit:cordova-build",
+          "options": {
+            "browserTarget": "app-angular:build"
+          },
+          "configurations": {
+            "production": {
+              "browserTarget": "app-angular:build:production"
+            }
+          }
         }
       }
     }
   }
-}
+}

+ 62 - 2
app-angular/package-lock.json

@@ -16,6 +16,7 @@
         "@angular/platform-browser": "^16.2.0",
         "@angular/platform-browser-dynamic": "^16.2.0",
         "@angular/router": "^16.2.0",
+        "@ionic/angular": "^7.5.0",
         "rxjs": "~7.8.0",
         "tslib": "^2.3.0",
         "zone.js": "~0.13.0"
@@ -24,6 +25,7 @@
         "@angular-devkit/build-angular": "^16.2.3",
         "@angular/cli": "~16.2.3",
         "@angular/compiler-cli": "^16.2.0",
+        "@ionic/angular-toolkit": "latest",
         "@types/jasmine": "~4.3.0",
         "jasmine-core": "~4.6.0",
         "karma": "~6.4.0",
@@ -2651,6 +2653,45 @@
         "node": ">=12"
       }
     },
+    "node_modules/@ionic/angular": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmmirror.com/@ionic/angular/-/angular-7.5.0.tgz",
+      "integrity": "sha512-0eZB/2/4ArfBt6YcYDF8VwfK0J8VRmywpbzlmsQXrubOAqd+Xaq2yYfLmzRfyrdKBhg7TyA+L6MyJ6w0Y7fbXA==",
+      "dependencies": {
+        "@ionic/core": "7.5.0",
+        "ionicons": "^7.0.0",
+        "jsonc-parser": "^3.0.0",
+        "tslib": "^2.3.0"
+      },
+      "peerDependencies": {
+        "@angular/core": ">=14.0.0",
+        "@angular/forms": ">=14.0.0",
+        "@angular/router": ">=14.0.0",
+        "rxjs": ">=7.5.0",
+        "zone.js": ">=0.11.0"
+      }
+    },
+    "node_modules/@ionic/angular-toolkit": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmmirror.com/@ionic/angular-toolkit/-/angular-toolkit-10.0.0.tgz",
+      "integrity": "sha512-F72mvfCHEMQ/eFEgQfiIQQ7B9BLIBBS/Jjegk6UJJb/uMwgNOJG5KyHw6vaoSiBmLnHuPqLvnoz6DXJCrbKl0A==",
+      "dev": true,
+      "dependencies": {
+        "@angular-devkit/core": "^16.0.0",
+        "@angular-devkit/schematics": "^16.0.0",
+        "@schematics/angular": "^16.0.0"
+      }
+    },
+    "node_modules/@ionic/core": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmmirror.com/@ionic/core/-/core-7.5.0.tgz",
+      "integrity": "sha512-oreRvbKj8VqqO9JraxR/n56GC6MHQtnJEmZf/EFuw5ZvDV8My91uNIzLkb4P9SvPL5NRr/Z0TFem28cgRf5YVA==",
+      "dependencies": {
+        "@stencil/core": "^4.4.1",
+        "ionicons": "^7.2.1",
+        "tslib": "^2.1.0"
+      }
+    },
     "node_modules/@isaacs/cliui": {
       "version": "8.0.2",
       "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -3090,6 +3131,18 @@
       "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
       "dev": true
     },
+    "node_modules/@stencil/core": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/@stencil/core/-/core-4.4.1.tgz",
+      "integrity": "sha512-SirGcrb5yKHCn2BwdM7HGVXuvCdmwiXlVczEj8jJxQIm42CAUQCUECxtZidTzp+oZBZnWLnoAvfanchJsgkQzA==",
+      "bin": {
+        "stencil": "bin/stencil"
+      },
+      "engines": {
+        "node": ">=16.0.0",
+        "npm": ">=7.10.0"
+      }
+    },
     "node_modules/@tootallnate/once": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
@@ -6729,6 +6782,14 @@
         "node": ">=8"
       }
     },
+    "node_modules/ionicons": {
+      "version": "7.2.1",
+      "resolved": "https://registry.npmmirror.com/ionicons/-/ionicons-7.2.1.tgz",
+      "integrity": "sha512-2pvCM7DGVEtbbj48PJzQrCADCQrqjU1nUYX9l9PyEWz3ZfdnLdAouqwPxLdl8tbaF9cE7OZRSlyQD7oLOLnGoQ==",
+      "dependencies": {
+        "@stencil/core": "^4.0.3"
+      }
+    },
     "node_modules/ip": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz",
@@ -7204,8 +7265,7 @@
     "node_modules/jsonc-parser": {
       "version": "3.2.0",
       "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
-      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
-      "dev": true
+      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
     },
     "node_modules/jsonfile": {
       "version": "4.0.0",

+ 4 - 2
app-angular/package.json

@@ -18,6 +18,7 @@
     "@angular/platform-browser": "^16.2.0",
     "@angular/platform-browser-dynamic": "^16.2.0",
     "@angular/router": "^16.2.0",
+    "@ionic/angular": "^7.5.0",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",
     "zone.js": "~0.13.0"
@@ -33,6 +34,7 @@
     "karma-coverage": "~2.2.0",
     "karma-jasmine": "~5.1.0",
     "karma-jasmine-html-reporter": "~2.1.0",
-    "typescript": "~5.1.3"
+    "typescript": "~5.1.3",
+    "@ionic/angular-toolkit": "latest"
   }
-}
+}

+ 3 - 1
app-angular/src/app/app.module.ts

@@ -3,6 +3,7 @@ import { BrowserModule } from '@angular/platform-browser';
 
 import { AppRoutingModule } from './app-routing.module';
 import { AppComponent } from './app.component';
+import { IonicModule } from '@ionic/angular';
 
 @NgModule({
   declarations: [
@@ -10,7 +11,8 @@ import { AppComponent } from './app.component';
   ],
   imports: [
     BrowserModule,
-    AppRoutingModule
+    AppRoutingModule,
+    IonicModule.forRoot()
   ],
   providers: [],
   bootstrap: [AppComponent]

+ 3 - 1
app-angular/src/modules/lesson/lesson.module.ts

@@ -13,6 +13,7 @@ import { PageStudentDetailComponent } from './page-student-detail/page-student-d
 import { TokPipe } from './tok.pipe';
 import { ShopComponent } from './shop/shop.component';
 import { FindComponent } from './find/find.component';
+import { IonicModule } from '@ionic/angular';
 
 
 @NgModule({
@@ -31,7 +32,8 @@ import { FindComponent } from './find/find.component';
   imports: [
     CommonModule,
     FormsModule,
-    LessonRoutingModule
+    LessonRoutingModule,
+    IonicModule
   ]
 })
 export class LessonModule { }

+ 14 - 9
app-angular/src/modules/lesson/page-student/page-student.component.html

@@ -1,10 +1,15 @@
-
-<h1>学员</h1>
-
-<ul>
-    <ng-container *ngFor="let student of studentList">
+<ion-content>
+    <ion-list>
+      <ion-item *ngFor="let student of studentList; let index">
         <li (click)="goStudentDetail(student)">
-            {{student.name}} / {{student.stuno}}
-        </li>
-    </ng-container>
-</ul>
+        <ion-avatar slot="start">
+          <img [src]="'https://picsum.photos/80/80?random=' + index" alt="avatar" />
+        </ion-avatar>
+        <ion-label>{{ student.name }}</ion-label>
+      </ion-item>
+    </ion-list>
+    <ion-infinite-scroll>
+      <ion-infinite-scroll-content loadingText="Please wait..." loadingSpinner="bubbles"></ion-infinite-scroll-content>
+    </ion-infinite-scroll>
+  </ion-content>
+

+ 6 - 0
app-angular/src/theme/variables.css

@@ -0,0 +1,6 @@
+/* Ionic Variables and Theming. */
+/* This is just a placeholder file For more info, please see: */
+/* https://ionicframework.com/docs/theming/basics */
+
+/* To quickly generate your own theme, check out the color generator */
+/* https://ionicframework.com/docs/theming/color-generator */

+ 3 - 2
docs/product.md

@@ -238,8 +238,9 @@
 
 ## 竞品分析对比
 - Bilibili会员购 展会相关页面
-- 喵特
-    - https://www.nyato.com/about/nyato_app
+- https://www.woshipm.com/evaluating/4348818.html
+https://www.woshipm.com/evaluating/3057266.html
+
 
 ### 展会页面
 - 示意截图1