|
@@ -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();
|
|
|
+ }
|
|
|
+}
|