Browse Source

feat:new write page with aigc

s202226701043 3 months ago
parent
commit
6aecbc8c7d

+ 4 - 1
creation-app/angular.json

@@ -126,7 +126,10 @@
     }
   },
   "cli": {
-    "schematicCollections": ["@ionic/angular-toolkit"]
+    "schematicCollections": [
+      "@ionic/angular-toolkit"
+    ],
+    "analytics": "80b9978b-41ca-41bb-bfb7-650ae753fe5a"
   },
   "schematics": {
     "@ionic/angular-toolkit:component": {

File diff suppressed because it is too large
+ 641 - 14
creation-app/package-lock.json


+ 1 - 0
creation-app/package.json

@@ -27,6 +27,7 @@
     "@capacitor/keyboard": "6.0.3",
     "@capacitor/status-bar": "6.0.2",
     "@ionic/angular": "^8.0.0",
+    "fmode-ng": "^0.0.62",
     "ionicons": "^7.2.1",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",

+ 3 - 2
creation-app/src/app/app.component.html

@@ -1,3 +1,4 @@
-<ion-app>
+<!-- <ion-app>
   <ion-router-outlet></ion-router-outlet>
-</ion-app>
+</ion-app> -->
+<router-outlet></router-outlet>

+ 3 - 2
creation-app/src/app/app.component.ts

@@ -1,12 +1,13 @@
 import { Component } from '@angular/core';
+import { RouterOutlet } from '@angular/router';
 import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';
 
 @Component({
   selector: 'app-root',
   templateUrl: 'app.component.html',
   standalone: true,
-  imports: [IonApp, IonRouterOutlet],
+  imports: [RouterOutlet],
 })
 export class AppComponent {
   constructor() {}
-}
+}

+ 146 - 0
creation-app/src/app/home/home.page.html

@@ -0,0 +1,146 @@
+<ion-header>
+  <ion-toolbar>
+    <ion-buttons slot="start">
+      <ion-button (click)="navigateHome()">
+        <ion-icon slot="icon-only" name="logo-ionic"></ion-icon>
+      </ion-button>
+    </ion-buttons>
+    <ion-title>智绘文创APP</ion-title>
+    <ion-buttons slot="end">
+      <ion-button (click)="navigateToLogin()">登录</ion-button>
+      <ion-button (click)="navigateToRegister()">注册</ion-button>
+    </ion-buttons>
+  </ion-toolbar>
+</ion-header>
+
+<!--<ion-content>
+  <ion-slides pager>
+    <ion-slide>
+      <img src="assets/images/slide1.jpg" />
+      <h2>个性化故事生成</h2>
+      <p>根据您的输入,快速生成个性化小说故事。</p>
+      <ion-button expand="full" (click)="navigateToGenerate()">开始创作</ion-button>
+    </ion-slide>
+    <ion-slide>
+      <img src="assets/images/slide2.jpg" />
+      <h2>与角色对话</h2>
+      <p>与小说中的角色进行智能对话,体验沉浸式互动。</p>
+      <ion-button expand="full" (click)="navigateToDialogue()">开始对话</ion-button>
+    </ion-slide>
+    <ion-slide>
+      <img src="assets/images/slide3.jpg" />
+      <h2>情节拓展</h2>
+      <p>自动拓展故事情节,确保连贯性和吸引力。</p>
+      <ion-button expand="full" (click)="navigateToExpand()">拓展情节</ion-button>
+    </ion-slide>
+  </ion-slides>
+</ion-content>-->
+
+<ion-content>
+  <ion-grid>
+    <ion-row>
+      <ion-col size="12" size-md="6">
+        <ion-card>
+          <ion-card-header>
+            <ion-card-title>
+              <ion-icon name="book" slot="start"></ion-icon>
+              自动生成故事
+            </ion-card-title>
+          </ion-card-header>
+          <ion-card-content>
+            根据您的输入,快速生成个性化小说故事。
+            <ion-button expand="full" (click)="navigateToGenerate()">开始生成</ion-button>
+          </ion-card-content>
+        </ion-card>
+      </ion-col>
+      <ion-col size="12" size-md="6">
+        <ion-card>
+          <ion-card-header>
+            <ion-card-title>
+              <ion-icon name="chatbubbles" slot="start"></ion-icon>
+              角色交互对话
+            </ion-card-title>
+          </ion-card-header>
+          <ion-card-content>
+            与小说中的角色进行智能对话,体验沉浸式互动。
+            <ion-button expand="full" (click)="navigateToDialogue()">开始对话</ion-button>
+          </ion-card-content>
+        </ion-card>
+      </ion-col>
+      <ion-col size="12" size-md="6">
+        <ion-card>
+          <ion-card-header>
+            <ion-card-title>
+              <ion-icon name="expand" slot="start"></ion-icon>
+              情节拓展
+            </ion-card-title>
+          </ion-card-header>
+          <ion-card-content>
+            自动拓展故事情节,确保连贯性和吸引力。
+            <ion-button expand="full" (click)="navigateToExpand()">拓展情节</ion-button>
+          </ion-card-content>
+        </ion-card>
+      </ion-col>
+      <ion-col size="12" size-md="6">
+        <ion-card>
+          <ion-card-header>
+            <ion-card-title>
+              <ion-icon name="construct" slot="start"></ion-icon>
+              用户定制
+            </ion-card-title>
+          </ion-card-header>
+          <ion-card-content>
+            根据您的喜好进行故事定制,增强参与感。
+            <ion-button expand="full" (click)="navigateToCustomize()">开始定制</ion-button>
+          </ion-card-content>
+        </ion-card>
+      </ion-col>
+    </ion-row>
+  </ion-grid>
+</ion-content>
+
+<ion-content>
+  <ion-list>
+    <ion-item-group>
+      <ion-item-divider color="light">
+        <ion-label>用户评价</ion-label>
+      </ion-item-divider>
+      <ion-item>
+        <ion-label>
+          “这个应用让我可以轻松生成我想要的故事,太棒了!”
+        </ion-label>
+      </ion-item>
+      <ion-item>
+        <ion-label>
+          “与角色的对话功能让我感到身临其境,非常有趣。”
+        </ion-label>
+      </ion-item>
+    </ion-item-group>
+  </ion-list>
+</ion-content>
+
+<ion-content>
+  <ion-list>
+    <ion-item-divider color="light">
+      <ion-label>推荐故事</ion-label>
+    </ion-item-divider>
+    <ion-item *ngFor="let story of recommendedStories">
+      <ion-label>{{ story.title }}</ion-label>
+      <ion-button slot="end" (click)="navigateToStory(story.id)">阅读</ion-button>
+    </ion-item>
+  </ion-list>
+</ion-content>
+
+<ion-footer>
+  <ion-toolbar>
+    <ion-buttons slot="start">
+      <ion-button (click)="navigateToAbout()">关于我们</ion-button>
+      <ion-button (click)="navigateToHelp()">帮助</ion-button>
+    </ion-buttons>
+    <ion-buttons slot="end">
+      <ion-button (click)="navigateToContact()">联系客服</ion-button>
+    </ion-buttons>
+  </ion-toolbar>
+</ion-footer>
+
+

+ 0 - 0
creation-app/src/app/tab1/tab1.page.scss → creation-app/src/app/home/home.page.scss


+ 4 - 4
creation-app/src/app/tab1/tab1.page.spec.ts → creation-app/src/app/home/home.page.spec.ts

@@ -1,13 +1,13 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
-import { Tab1Page } from './tab1.page';
+import { HomePage } from './home.page';
 
 describe('Tab1Page', () => {
-  let component: Tab1Page;
-  let fixture: ComponentFixture<Tab1Page>;
+  let component: HomePage;
+  let fixture: ComponentFixture<HomePage>;
 
   beforeEach(async () => {
-    fixture = TestBed.createComponent(Tab1Page);
+    fixture = TestBed.createComponent(HomePage);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });

+ 78 - 0
creation-app/src/app/home/home.page.ts

@@ -0,0 +1,78 @@
+import { Component ,OnInit,CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
+import { IonHeader, IonToolbar, IonTitle, IonContent,IonSearchbar,IonButtons,IonButton,IonIcon,IonMenuButton,IonAvatar,
+  IonGrid,IonRow,IonCol,IonCard,IonCardHeader,IonCardContent,IonList,IonItem,IonLabel
+ } from '@ionic/angular/standalone';
+import { ExploreContainerComponent } from '../explore-container/explore-container.component';
+import { NavController } from '@ionic/angular';
+import { FormControl } from '@angular/forms';
+import { CommonModule } from '@angular/common';
+import { Router } from '@angular/router'; // 用于路由导航
+
+@Component({
+  selector: 'app-home',
+  templateUrl: 'home.page.html',
+  styleUrls: ['home.page.scss'],
+  standalone: true,
+  imports: [
+    IonHeader, IonToolbar, IonContent,
+    IonButtons,IonButton,IonIcon,IonGrid,IonRow,
+    IonCol,IonCard,IonCardHeader,IonCardContent,IonList,IonItem,IonLabel,IonLabel,CommonModule
+  ],
+  schemas:[CUSTOM_ELEMENTS_SCHEMA]
+})
+export class HomePage {
+  // 定义推荐故事的属性
+  recommendedStories = [
+    { id: 1, title: '故事一:勇者的冒险' },
+    { id: 2, title: '故事二:神秘的森林' },
+    { id: 3, title: '故事三:时间的旅行' },
+    { id: 4, title: '故事四:遗失的宝藏' },
+  ];
+
+  constructor(private router: Router) {} // 构造函数,注入 Router 服务
+
+  // 导航方法
+  navigateHome() {
+    this.router.navigate(['/']);
+  }
+
+  navigateToLogin() {
+    this.router.navigate(['/login']);
+  }
+
+  navigateToRegister() {
+    this.router.navigate(['/register']);
+  }
+
+  navigateToGenerate() {
+    this.router.navigate(['/tabs/write']);
+  }
+
+  navigateToDialogue() {
+    this.router.navigate(['/dialogue']);
+  }
+
+  navigateToExpand() {
+    this.router.navigate(['/expand']);
+  }
+
+  navigateToCustomize() {
+    this.router.navigate(['/customize']);
+  }
+
+  navigateToStory(storyId: number) {
+    this.router.navigate(['/story', storyId]);
+  }
+
+  navigateToAbout() {
+    this.router.navigate(['/about']);
+  }
+
+  navigateToHelp() {
+    this.router.navigate(['/help']);
+  }
+
+  navigateToContact() {
+    this.router.navigate(['/contact']);
+  }
+}

+ 15 - 0
creation-app/src/app/page-write/page-write.component.html

@@ -0,0 +1,15 @@
+<ion-content>
+  <h1>自定义生成器</h1>
+  <h2>你要写的小说风格类型</h2>
+   <ion-input [value]="type" (ionInput)="typeInput($event)" placeholder="文本提示词" autoGrow="true"></ion-input>
+
+  <!-- 文本域:生成提示词 -->
+  <h2>你想要生成什么样的内容呢?</h2>
+  <ion-textarea [value]="userPrompt" (ionInput)="promptInput($event)" placeholder="文本提示词" autoGrow="true"></ion-textarea>
+
+  <!-- 按钮:执行消息生成函数 -->
+  <ion-button (click)="sendMessage()" expand="block">小说生成</ion-button>
+    
+  <!-- 展示:返回消息内容 -->
+  <div>{{responseMsg}}</div>
+</ion-content>

+ 0 - 0
creation-app/src/app/page-write/page-write.component.scss


+ 22 - 0
creation-app/src/app/page-write/page-write.component.spec.ts

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

+ 53 - 0
creation-app/src/app/page-write/page-write.component.ts

@@ -0,0 +1,53 @@
+import { Component, OnInit } from '@angular/core';
+import { IonButton, IonContent,IonInput,IonTextarea } from '@ionic/angular/standalone';
+/** 引用:从fmode-ng库引用FmodeChatCompletion类 */
+import { FmodeChatCompletion } from 'fmode-ng';
+
+@Component({
+  selector: 'app-page-write',
+  templateUrl: './page-write.component.html',
+  styleUrls: ['./page-write.component.scss'],
+  standalone: true,
+  imports: [IonButton,IonContent,IonTextarea,IonInput
+    ],
+})
+export class PageWriteComponent  implements OnInit {
+
+  constructor() {}
+  // 用户输入提示词
+  type:string = "玄幻"
+  typeInput(ev:any){
+    this.type = ev.detail.value;
+  }
+  // 用户输入提示词
+  userPrompt:string = "帮我生成一部以古代文人墨客与现代作家之间的灵魂交流为线索的小说概要。"
+  promptInput(ev:any){
+    this.type = ev.detail.value;
+  }
+  // 属性:组件内用于展示消息内容的变量
+  ngOnInit(): void {
+    
+  }
+  responseMsg:any = ""
+  // 方法:实例化completion对象,传入消息数组,并订阅生成的可观察对象。
+  sendMessage(){
+    console.log("create")
+
+    let PromptTemplate =`
+    您作为一名专业的${this.type}小说作家,请您根据用户的描述的想要生成的小说内容,写出一篇小说,
+    以下是用户的描述:${this.userPrompt}
+    `
+
+    let completion = new FmodeChatCompletion([
+      {role:"system",content:""},
+      {role:"user",content:PromptTemplate}
+    ])
+    completion.sendCompletion().subscribe((message:any)=>{
+      // 打印消息体
+      console.log(message.content)
+      // 赋值消息内容给组件内属性
+      this.responseMsg = message.content
+    })
+  }
+
+}

+ 0 - 100
creation-app/src/app/tab1/tab1.page.html

@@ -1,100 +0,0 @@
-<ion-header>
-  <ion-toolbar>
-    <ion-buttons slot="start">
-      <ion-button (click)="goToHome()">
-        <ion-icon name="home-outline"></ion-icon>
-      </ion-button>
-    </ion-buttons>
-    <ion-searchbar  (ionInput)="onSearchInput($event)" placeholder="搜索小说、角色或创意内容"></ion-searchbar>
-    <ion-buttons slot="end">
-      <ion-menu-button></ion-menu-button>
-      <ion-button (click)="openUserMenu($event)">
-        <ion-avatar>
-          <img [src]="userAvatar" *ngIf="userAvatar; else defaultAvatar">
-          <ng-template #defaultAvatar>
-            <ion-icon name="person-outline"></ion-icon>
-          </ng-template>
-        </ion-avatar>
-      </ion-button>
-    </ion-buttons>
-  </ion-toolbar>
-</ion-header>
-
-<ion-content [fullscreen]="true">
-   <ion-slides pager="true" autoplay="3000">
-    <ion-slide *ngFor="let item of recommendedItems; let i = index">
-      <img [src]="item.image" />
-      <div class="carousel-caption">
-        <h3>{{ item.title }}</h3>
-        <p>{{ item.description }}</p>
-        <button (click)="goToItem(item)">阅读更多</button>
-      </div>
-    </ion-slide>
-  </ion-slides> 
-  
-  <ion-grid>
-    <ion-row>
-      <ion-col size="6" *ngFor="let feature of features">
-        <ion-card (click)="goToFeature(feature)">
-          <ion-card-header>
-            <ion-icon [name]="feature.icon"></ion-icon>
-            <h2>{{ feature.title }}</h2>
-          </ion-card-header>
-          <ion-card-content>
-            <p>{{ feature.description }}</p>
-          </ion-card-content>
-        </ion-card>
-      </ion-col>
-    </ion-row>
-  </ion-grid>
-
-  <ion-list>
-    <ion-item *ngFor="let item of popularItems">
-      <ion-avatar slot="start">
-        
-        <ng-template #defaultAuthorAvatar>
-          <ion-icon name="person-outline"></ion-icon>
-        </ng-template>
-      </ion-avatar>
-      <ion-label>
-        <h3>{{ item.title }}</h3>
-        <p>{{ item.authorName }}</p>
-        <p>{{ item.description }}</p>
-      </ion-label>
-      <ion-buttons slot="end">
-        <ion-button (click)="goToItemDetail(item)">阅读</ion-button>
-      </ion-buttons>
-    </ion-item>
-  </ion-list>
-
-  <ion-card>
-    <ion-card-header>
-      <h2>用户评论</h2>
-    </ion-card-header>
-    <ion-card-content>
-      <ion-list>
-        <ion-item *ngFor="let comment of comments">
-          <ion-avatar slot="start">
-            
-            <ng-template #defaultCommentAvatar>
-              <ion-icon name="person-outline"></ion-icon>
-            </ng-template>
-          </ion-avatar>
-          <ion-label>
-            <h3>{{ comment.username }}</h3>
-            <p>{{ comment.content }}</p>
-            
-          </ion-label>
-          <ion-buttons slot="end">
-            <ion-button (click)="likeComment(comment)">点赞</ion-button>
-            <ion-button (click)="replyToComment(comment)">回复</ion-button>
-          </ion-buttons>
-        </ion-item>
-      </ion-list>
-      <ion-buttons>
-        <ion-button (click)="shareContent()">分享</ion-button>
-      </ion-buttons>
-    </ion-card-content>
-  </ion-card>
-
-</ion-content>

+ 0 - 112
creation-app/src/app/tab1/tab1.page.ts

@@ -1,112 +0,0 @@
-import { Component ,CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
-import { IonHeader, IonToolbar, IonTitle, IonContent,IonSearchbar,IonButtons,IonButton,IonIcon,IonMenuButton,IonAvatar,
-  IonGrid,IonRow,IonCol,IonCard,IonCardHeader,IonCardContent,IonList,IonItem,IonLabel
- } from '@ionic/angular/standalone';
-import { ExploreContainerComponent } from '../explore-container/explore-container.component';
-import { NavController } from '@ionic/angular';
-import { FormControl } from '@angular/forms';
-
-@Component({
-  selector: 'app-tab1',
-  templateUrl: 'tab1.page.html',
-  styleUrls: ['tab1.page.scss'],
-  standalone: true,
-  imports: [
-    IonHeader, IonToolbar, IonTitle, IonContent,ExploreContainerComponent,
-    IonSearchbar,IonButtons,IonButton,IonIcon,IonMenuButton,IonAvatar,IonGrid,IonRow,
-    IonCol,IonCard,IonCardHeader,IonCardContent,IonList,IonItem,IonLabel,IonLabel,
-  ],
-  schemas:[CUSTOM_ELEMENTS_SCHEMA]
-})
-export class Tab1Page {
-// 属性
-searchQuery: string = ''; // 搜索查询字符串
-recommendedItems: any[] = []; // 推荐位数据
-features: any[] = []; // 功能入口区数据
-popularItems: any[] = []; // 热门作品/作者数据
-comments: any[] = []; // 用户评论数据
-userAvatar: string | null = null; // 用户头像
-
-// 构造函数(可选,用于依赖注入等)
-constructor() {}
-
-// 生命周期钩子
-ngOnInit() {
-  // 初始化数据,例如从服务中获取推荐位、功能入口区、热门作品/作者和用户评论等数据
-  this.loadRecommendedItems();
-  this.loadFeatures();
-  this.loadPopularItems();
-  this.loadComments();
-  // ... 其他初始化操作
-}
-
-// 方法
-
-// 导航到首页
-goToHome() {
-  // 实现导航逻辑,例如使用Angular Router
-}
-
-// 处理搜索输入
-onSearchInput(event: any) {
-  // 处理搜索输入的逻辑,例如过滤显示结果
-  console.log(this.searchQuery);
-}
-
-// 打开用户菜单
-openUserMenu(event: Event) {
-  event.stopPropagation();
-  // 实现打开用户菜单的逻辑,例如显示一个菜单列表
-}
-
-// 跳转到推荐项详情页
-goToItem(item: any) {
-  // 实现跳转到推荐项详情页的逻辑,例如使用Angular Router
-}
-
-// 跳转到功能页面
-goToFeature(feature: any) {
-  // 实现跳转到功能页面的逻辑,例如使用Angular Router
-}
-
-// 跳转到作品详情页
-goToItemDetail(item: any) {
-  // 实现跳转到作品详情页的逻辑,例如使用Angular Router
-}
-
-// 点赞评论
-likeComment(comment: any) {
-  // 实现点赞评论的逻辑,例如更新评论的点赞数并发送请求到服务器
-}
-
-// 回复评论
-replyToComment(comment: any) {
-  // 实现回复评论的逻辑,例如打开一个回复框或导航到回复页面
-}
-
-// 分享内容
-shareContent() {
-  // 实现分享内容的逻辑,例如使用Ionic的ShareSheet
-}
-
-// 加载推荐位数据
-loadRecommendedItems() {
-  // 实现加载推荐位数据的逻辑,例如从API获取数据
-}
-
-// 加载功能入口区数据
-loadFeatures() {
-  // 实现加载功能入口区数据的逻辑,例如从API获取数据
-}
-
-// 加载热门作品/作者数据
-loadPopularItems() {
-  // 实现加载热门作品/作者数据的逻辑,例如从API获取数据
-}
-
-// 加载用户评论数据
-loadComments() {
-  // 实现加载用户评论数据的逻辑,例如从API获取数据
-}
-  }
-

+ 3 - 3
creation-app/src/app/tabs/tabs.page.html

@@ -1,16 +1,16 @@
 <ion-tabs>
   <ion-tab-bar slot="bottom">
-    <ion-tab-button tab="tab1" href="/tabs/tab1">
+    <ion-tab-button tab="tab1" (click)="goPage('/tabs/home')">
       <ion-icon aria-hidden="true" name="home"></ion-icon>
       <ion-label>首页</ion-label>
     </ion-tab-button>
 
-    <ion-tab-button tab="tab2" href="/tabs/tab2">
+    <ion-tab-button tab="tab2" (click)="goPage('/tabs/tab2')">
       <ion-icon aria-hidden="true" name="pencil"></ion-icon>
       <ion-label>创作平台</ion-label>
     </ion-tab-button>
 
-    <ion-tab-button tab="tab3" href="/tabs/tab3">
+    <ion-tab-button tab="tab3" (click)="goPage('/tabs/tab3')">
       <ion-icon aria-hidden="true" name="person"></ion-icon>
       <ion-label>个人中心</ion-label>
     </ion-tab-button>

+ 5 - 1
creation-app/src/app/tabs/tabs.page.ts

@@ -1,4 +1,5 @@
 import { Component, EnvironmentInjector, inject } from '@angular/core';
+import { Router} from "@angular/router"
 import { IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel } from '@ionic/angular/standalone';
 import { addIcons } from 'ionicons';
 import { home, pencil,person} from 'ionicons/icons';
@@ -13,7 +14,10 @@ import { home, pencil,person} from 'ionicons/icons';
 export class TabsPage {
   public environmentInjector = inject(EnvironmentInjector);
 
-  constructor() {
+  constructor(private router:Router) {
     addIcons({ home, pencil, person});
   }
+  goPage(page:any){
+    this.router.navigateByUrl(page)
+  }
 }

+ 9 - 4
creation-app/src/app/tabs/tabs.routes.ts

@@ -7,9 +7,9 @@ export const routes: Routes = [
     component: TabsPage,
     children: [
       {
-        path: 'tab1',
+        path: 'home',
         loadComponent: () =>
-          import('../tab1/tab1.page').then((m) => m.Tab1Page),
+          import('../home/home.page').then((m) => m.HomePage),
       },
       {
         path: 'tab2',
@@ -21,16 +21,21 @@ export const routes: Routes = [
         loadComponent: () =>
           import('../tab3/tab3.page').then((m) => m.Tab3Page),
       },
+      {
+        path: 'write',
+        loadComponent: () =>
+          import('../page-write/page-write.component').then((m) => m.PageWriteComponent),
+      },
       {
         path: '',
-        redirectTo: '/tabs/tab1',
+        redirectTo: '/tabs/home',
         pathMatch: 'full',
       },
     ],
   },
   {
     path: '',
-    redirectTo: '/tabs/tab1',
+    redirectTo: '/tabs/home',
     pathMatch: 'full',
   },
 ];

+ 17 - 0
creation-app/src/main.ts

@@ -5,10 +5,27 @@ import { IonicRouteStrategy, provideIonicAngular } from '@ionic/angular/standalo
 import { routes } from './app/app.routes';
 import { AppComponent } from './app/app.component';
 
+
+// 引用HttpClient方法
+import { provideHttpClient } from '@angular/common/http';
+// 引用移动端授权检测供应器
+import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
+// 设置Parse服务属性
+import Parse from "parse";
+Parse.initialize("ncloudmaster");
+Parse.serverURL = "https://server.fmode.cn/parse";
+localStorage.setItem("NOVA_APIG_SERVER", 'aHR0cHMlM0ElMkYlMkZzZXJ2ZXIuZm1vZGUuY24lMkZhcGklMkZhcGlnJTJG')
+
+// 注意:替换Token 根据Token设置Parse服务帐套权限
+Parse.User.become("r:fa7d4ac69f8949f9ccaf2fbbde263cf8")
 bootstrapApplication(AppComponent, {
   providers: [
     { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
     provideIonicAngular(),
     provideRouter(routes, withPreloading(PreloadAllModules)),
+     // 添加HttpClient供应器
+     provideHttpClient(),
+     // 添加Diagnostic
+     Diagnostic,
   ],
 });

+ 1 - 0
creation-app/src/node_modules/.package_versions.json

@@ -0,0 +1 @@
+{}

+ 1 - 0
creation-app/tsconfig.json

@@ -2,6 +2,7 @@
 {
   "compileOnSave": false,
   "compilerOptions": {
+    "allowSyntheticDefaultImports":true,
     "baseUrl": "./",
     "outDir": "./dist/out-tsc",
     "forceConsistentCasingInFileNames": true,

+ 6 - 0
package-lock.json

@@ -0,0 +1,6 @@
+{
+  "name": "s202226701043",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {}
+}

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