Mads 6 giorni fa
parent
commit
efc48a621d

+ 3 - 2
myapp/src/app/tab2/tab2.page.html

@@ -69,8 +69,9 @@
                   <p>{{ consult.updatedAt | date:'yyyy-MM-dd HH:mm' }}</p>
                 </ion-label>
 
-                <ion-badge slot="end" color="light">
-                </ion-badge>
+                <ion-button slot="end" fill="clear" color="danger" (click)="$event.stopPropagation(); deleteConsult(consult)">
+                  <ion-icon slot="icon-only" name="trash"></ion-icon>
+                </ion-button>
               </ion-item>
             }
           </ion-list>

+ 34 - 0
myapp/src/app/tab2/tab2.page.scss

@@ -76,4 +76,38 @@ ion-content {
     font-weight: 500;
     letter-spacing: 0.5px;
   }
+}
+/* 添加在文件末尾 */
+.consult-item {
+  --padding-start: 0;
+  --inner-padding-end: 0;
+  margin-bottom: 8px;
+  border-radius: 8px;
+  background: white;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
+  
+  ion-button {
+    --padding-start: 8px;
+    --padding-end: 8px;
+    margin: 0;
+  }
+}
+
+/* 添加确认删除对话框样式 */
+.confirm-delete {
+  .alert-message {
+    color: #666;
+  }
+  
+  .alert-button-group {
+    padding: 0 8px 8px;
+  }
+  
+  .alert-button-cancel {
+    color: var(--ion-color-medium);
+  }
+  
+  .alert-button-confirm {
+    color: var(--ion-color-danger);
+  }
 }

+ 87 - 64
myapp/src/app/tab2/tab2.page.ts

@@ -1,5 +1,5 @@
 import { Component } from '@angular/core';
-import { ModalController } from '@ionic/angular/standalone';
+import { ModalController, AlertController } from '@ionic/angular/standalone';
 import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
 import Parse from "parse";
 import { CloudObject, CloudQuery } from 'src/lib/ncloud';
@@ -13,32 +13,31 @@ import { CloudObject, CloudQuery } from 'src/lib/ncloud';
 export class Tab2Page {
 
   constructor(
-    private modalCtrl:ModalController
-  ) {
+    private modalCtrl: ModalController,
+    private alertCtrl: AlertController
+  ) { }
 
-  }
-
-openConsult(chatId?:string){
-    localStorage.setItem("company","E4KpGvTEto")
-    let options:ChatPanelOptions = {
-      roleId:"2DXJkRsjXK", // 预设,无需更改
-      chatId:chatId, // 若存在,则恢复会话。若不存在,则开启新会话
-      onChatInit:(chat:FmodeChat)=>{
+  openConsult(chatId?: string) {
+    localStorage.setItem("company", "E4KpGvTEto")
+    let options: ChatPanelOptions = {
+      roleId: "2DXJkRsjXK", // 预设,无需更改
+      chatId: chatId, // 若存在,则恢复会话。若不存在,则开启新会话
+      onChatInit: (chat: FmodeChat) => {
         console.log("onChatInit");
-        console.log("Chat类",chat);
-        console.log("预设角色",chat.role);
+        console.log("Chat类", chat);
+        console.log("预设角色", chat.role);
         // 角色名称
-        chat.role.set("name","林正鸿");
+        chat.role.set("name", "林正鸿");
         // 角色称号
-        chat.role.set("title","专业律师");
+        chat.role.set("title", "专业律师");
         // 角色描述
-        chat.role.set("desc","一名亲切和蔼的律师,林正鸿,年龄45岁");
+        chat.role.set("desc", "一名亲切和蔼的律师,林正鸿,年龄45岁");
         // 角色标签
-        chat.role.set("tags",['刚正务实', '儒雅']);
+        chat.role.set("tags", ['刚正务实', '儒雅']);
         // 角色头像
-        chat.role.set("avatar","/assets/lin.jpg")
+        chat.role.set("avatar", "/assets/lin.jpg")
         // 角色提示词
-        chat.role.set("prompt",`
+        chat.role.set("prompt", `
 # 角色设定
 身份:
 45岁,北京「国正律师事务所」创始合伙人,全国律协刑事专业委员会副主任,曾获「全国优秀律师」称号。
@@ -48,16 +47,16 @@ openConsult(chatId?:string){
 面容沉稳,目光如炬,言谈间带有一种不怒自威的气场,但对待普通当事人时语气温和,极具亲和力。
 
 性格特质:
-刚正务实:坚持“法律是底线,也是武器”,厌恶投机取巧,擅长以扎实的证据链和法理分析取胜。
+刚正务实:坚持"法律是底线,也是武器",厌恶投机取巧,擅长以扎实的证据链和法理分析取胜。
 家国情怀:代理案件时不仅考虑胜诉,更关注社会影响,曾多次为农民工、消费者群体提供公益法律援助。
 儒雅学者风:精通中国法制史,常在辩论中引用古代律法(如《唐律疏议》)与现代法条对比,增强说服力。
 
 语言风格:
-善用“根据我国《刑事诉讼法》第XX条”“最高人民法院指导意见明确……”等专业表述。
-偶尔引用传统智慧,如:“古人云‘律设大法,理顺人情’,本案应当兼顾法理与情理。”
+善用"根据我国《刑事诉讼法》第XX条""最高人民法院指导意见明确……"等专业表述。
+偶尔引用传统智慧,如:"古人云'律设大法,理顺人情',本案应当兼顾法理与情理。"
 
 执业理念:
-坚持“党的领导+依法执业”,代理敏感案件时注重政治效果、法律效果与社会效果统一。
+坚持"党的领导+依法执业",代理敏感案件时注重政治效果、法律效果与社会效果统一。
 
 生活细节:
 早晨习惯听《新闻联播》了解政策动向,办公室常备《求是》杂志。
@@ -78,44 +77,44 @@ openConsult(chatId?:string){
           }
         ]
         setTimeout(() => {
-          chat.role.set("promptCates",promptCates)
+          chat.role.set("promptCates", promptCates)
         }, 500);
         // 对话灵感列表
         let promptList = [
           {
-            cate:"劳动就业问题",img:"/assets/icon/ld.jpg",
-            messageList:[
-            "公司不签劳动合同怎么办?",
-            "离职后老板拖欠工资该如何维权?",
-            "加班不给加班费是否合法?",
-            "试用期被无故辞退能要求赔偿吗?",
-            "工伤认定需要准备哪些材料?"  
-          ]
+            cate: "劳动就业问题", img: "/assets/icon/ld.jpg",
+            messageList: [
+              "公司不签劳动合同怎么办?",
+              "离职后老板拖欠工资该如何维权?",
+              "加班不给加班费是否合法?",
+              "试用期被无故辞退能要求赔偿吗?",
+              "工伤认定需要准备哪些材料?"
+            ]
           },
           {
-            cate:"婚姻家庭问题",img:"/assets/icon/hy.jpg",
-            messageList:[
+            cate: "婚姻家庭问题", img: "/assets/icon/hy.jpg",
+            messageList: [
               "离婚必须要有30天冷静期吗?",
               "婚前财产婚后会变成共同财产吗?",
               "家暴报警后警察一般会怎么处理?",
               "抚养费标准是如何计算的?",
-              "对方出轨能让他净身出户吗?" 
+              "对方出轨能让他净身出户吗?"
             ]
           },
           {
-            cate:"日常生活纠纷",img:"/assets/icon/sh.jpg",
+            cate: "日常生活纠纷", img: "/assets/icon/sh.jpg",
             messageList: [
-            "网购遇到假货怎么索赔?",
-            "房东突然涨租金合法吗?",
-            "邻居装修噪音太大能起诉吗?",
-            "被宠物狗咬伤谁该负责?",
-            "健身房跑路怎么追回会员费?" 
-          ]
+              "网购遇到假货怎么索赔?",
+              "房东突然涨租金合法吗?",
+              "邻居装修噪音太大能起诉吗?",
+              "被宠物狗咬伤谁该负责?",
+              "健身房跑路怎么追回会员费?"
+            ]
           },
         ]
         let ChatPrompt = Parse.Object.extend("ChatPrompt");
         setTimeout(() => {
-          chat.promptList = promptList.map(item=>{
+          chat.promptList = promptList.map(item => {
             let prompt = new ChatPrompt();
             prompt.set(item);
             prompt.img = item.img;
@@ -126,23 +125,23 @@ openConsult(chatId?:string){
         // 功能按钮区域预设
         chat.leftButtons = [
           { // 提示 当角色配置预设提示词时 显示
-           title:"话题灵感", // 按钮标题
-           showTitle:true, // 是否显示标题文字
-           icon:"color-wand-outline", // 标题icon图标
-           onClick:()=>{ // 按钮点击事件
-               chat.isPromptModalOpen = true
-           },
-           show:()=>{ // 按钮显示条件
-             return chat?.promptList?.length // 存在话题提示词时显示
-           }
-         },
-      ]
+            title: "话题灵感", // 按钮标题
+            showTitle: true, // 是否显示标题文字
+            icon: "color-wand-outline", // 标题icon图标
+            onClick: () => { // 按钮点击事件
+              chat.isPromptModalOpen = true
+            },
+            show: () => { // 按钮显示条件
+              return chat?.promptList?.length // 存在话题提示词时显示
+            }
+          },
+        ]
 
       },
-      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
-        console.log("onMessage",message)
-        let content:any = message?.content
-        if(typeof content == "string"){
+      onMessage: (chat: FmodeChat, message: FmodeChatMessage) => {
+        console.log("onMessage", message)
+        let content: any = message?.content
+        if (typeof content == "string") {
           // 根据阶段标记判断下一步处理过程
           if (content.includes('[导诊完成]')) {
             // 进入问诊环节
@@ -159,11 +158,11 @@ openConsult(chatId?:string){
           }
         }
       },
-      onChatSaved: async (chat:FmodeChat)=>{
+      onChatSaved: async (chat: FmodeChat) => {
         // chat?.chatSession?.id 本次会话的 chatId
-        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
+        console.log("onChatSaved", chat, chat?.chatSession, chat?.chatSession?.id)
         let chatId = chat?.chatSession?.id;
-        console.log("chatId",chatId);
+        console.log("chatId", chatId);
         let query = new CloudQuery("LawConsult");
         let lawConsult = await query.get(chatId);
         console.log("lawConsult", lawConsult);
@@ -172,7 +171,7 @@ openConsult(chatId?:string){
         }
         lawConsult.set({
           "chatId": chatId,
-          "messageList": chat.messageList, 
+          "messageList": chat.messageList,
           "name": chat.role.get("name"),
           "avatar": chat.role.get("avatar")
         })
@@ -180,14 +179,38 @@ openConsult(chatId?:string){
         lawConsult.save();
       }
     }
-    openChatPanelModal(this.modalCtrl,options)
+    openChatPanelModal(this.modalCtrl, options)
   }
+
   // 加载健康咨询记录
   consultList: Array<CloudObject> = []
+
   async loadConsult() {
     let query = new CloudQuery("LawConsult");
     this.consultList = await query.find()
     console.log(this.consultList)
   }
 
-}
+  // 新增的删除咨询记录方法
+  async deleteConsult(consult: CloudObject) {
+    const alert = await this.alertCtrl.create({
+      header: '确认删除',
+      message: '确定要删除这条咨询记录吗?删除后不可恢复。',
+      buttons: [
+        {
+          text: '取消',
+          role: 'cancel'
+        },
+        {
+          text: '删除',
+          handler: async () => {
+            await consult.destroy();
+            this.loadConsult(); // 重新加载列表
+          }
+        }
+      ]
+    });
+    
+    await alert.present();
+  }
+}