2026-04-10 15:21:02 +08:00

831 lines
37 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
const common_vendor = require("../../common/vendor.js");
require("../../common/libraries/request.js");
const common_store_useWeAppAuthStore = require("../../common/store/useWeAppAuthStore.js");
require("../../common/store/useWorkStore.js");
const pages_ai_method = require("./method.js");
const pages_ai_model = require("./model.js");
const common_libraries_userUserLogin = require("../../common/libraries/userUserLogin.js");
require("../../gen/Apis.js");
require("../../common/libraries/setTabBar.js");
require("../../common/libraries/apiLoading.js");
require("../../common/libraries/upload.js");
if (!Array) {
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
const _easycom_hs_empty2 = common_vendor.resolveComponent("hs-empty");
const _easycom_hs_button2 = common_vendor.resolveComponent("hs-button");
(_easycom_uni_icons2 + _easycom_hs_empty2 + _easycom_hs_button2)();
}
const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
const _easycom_hs_empty = () => "../../components/hs-empty/hs-empty.js";
const _easycom_hs_button = () => "../../components/hs-button/hs-button.js";
if (!Math) {
(MyHeaderPrologue + _easycom_uni_icons + _easycom_hs_empty + _easycom_hs_button)();
}
const MyHeaderPrologue = () => "./components/HeaderPrologue.js";
const _sfc_defineComponent = /* @__PURE__ */ common_vendor.defineComponent({
__name: "chat",
setup(__props) {
common_vendor.dayjs.extend(common_vendor.relativeTime);
common_vendor.dayjs.locale("zh-cn");
const auth = common_store_useWeAppAuthStore.useWeAppAuthStore();
const userLoginStatus = common_vendor.ref(false);
const inputMessage = common_vendor.ref("");
const isInputFocused = common_vendor.ref(false);
const messages = common_vendor.ref([]);
const loading = common_vendor.ref(false);
const loadingText = common_vendor.ref("正在输入中...");
let socketTask = null;
let isConnected = common_vendor.ref(false);
const showOpeningRemarks = common_vendor.ref(false);
const currentPage = common_vendor.ref(1);
const pageSize = common_vendor.ref(10);
const hasMore = common_vendor.ref(true);
const isLoadingHistory = common_vendor.ref(false);
const conversationId = common_vendor.ref("");
const currentOffset = common_vendor.ref(0);
const quickQuestionsData = common_vendor.ref({});
const lastMessageContent = common_vendor.ref("");
const goToPageLogin = () => {
common_vendor.index.navigateTo({
url: "/pages/login"
});
};
const scrollToBottom = () => {
common_vendor.nextTick$1(() => {
common_vendor.index.pageScrollTo({
scrollTop: 999999,
duration: 300
});
});
};
const getHistoryMessages = async (page = 1) => {
var _a, _b, _c;
const userPhone = (_b = (_a = auth.data) == null ? void 0 : _a.user) == null ? void 0 : _b.phone;
if (!userPhone) {
console.log("用户未登录,无法获取历史记录");
return;
}
if (isLoadingHistory.value) {
return;
}
try {
isLoadingHistory.value = true;
const offset = (page - 1) * pageSize.value;
currentOffset.value = offset;
const response = await ((_c = pages_ai_method.method) == null ? void 0 : _c.customRequest("public/customer/init", {
platform: "property",
platform_user_id: userPhone,
//userPhone
limit: pageSize.value,
offset
}));
if (response.statusCode === 200) {
const result = response.data;
let historyMessages = [];
if (result.conversation && result.conversation.id) {
conversationId.value = result.conversation.id;
console.log("获取到会话ID:", conversationId.value);
} else if (result.conversation_id) {
conversationId.value = result.conversation_id;
console.log("获取到会话ID:", conversationId.value);
} else if (result.conversations && result.conversations.id) {
conversationId.value = result.conversations.id;
console.log("获取到会话ID:", conversationId.value);
}
if (result.messages && Array.isArray(result.messages)) {
historyMessages = result.messages.map((item) => {
const message = {
role: item.sender_type === "customer" ? "user" : "ai",
content: item.message || item.content || "",
actions: item.actions || [],
created_at: item.created_at || item.timestamp || new Date().toISOString()
};
if (item.message_type) {
message.message_type = item.message_type;
}
let imageUrlData = null;
if (item.image_url && Array.isArray(item.image_url)) {
imageUrlData = item.image_url;
} else if (item.images && Array.isArray(item.images)) {
imageUrlData = item.images;
} else if (item.metadata && item.metadata.image_url && Array.isArray(item.metadata.image_url)) {
imageUrlData = item.metadata.image_url;
}
if (imageUrlData) {
message.image_url = imageUrlData;
message.images = imageUrlData;
}
if (item.metadata) {
message.metadata = item.metadata;
}
return message;
});
console.log("从messages字段获取到历史记录:", historyMessages.length);
} else if (result.data && Array.isArray(result.data)) {
historyMessages = result.data.map((item) => {
const message = {
role: item.sender_type === "customer" ? "user" : "ai",
content: item.message || item.content || "",
actions: item.actions || [],
created_at: item.created_at || item.timestamp || new Date().toISOString()
};
if (item.message_type) {
message.message_type = item.message_type;
}
let imageUrlData = null;
if (item.image_url && Array.isArray(item.image_url)) {
imageUrlData = item.image_url;
} else if (item.images && Array.isArray(item.images)) {
imageUrlData = item.images;
} else if (item.metadata && item.metadata.image_url && Array.isArray(item.metadata.image_url)) {
imageUrlData = item.metadata.image_url;
}
if (imageUrlData) {
message.image_url = imageUrlData;
message.images = imageUrlData;
}
if (item.metadata) {
message.metadata = item.metadata;
}
return message;
});
console.log("从data字段获取到历史记录:", historyMessages.length);
} else if (result.list && Array.isArray(result.list)) {
historyMessages = result.list.map((item) => {
const message = {
role: item.sender_type === "customer" ? "user" : "ai",
content: item.message || item.content || "",
actions: item.actions || [],
created_at: item.created_at || item.timestamp || new Date().toISOString()
};
if (item.message_type) {
message.message_type = item.message_type;
}
let imageUrlData = null;
if (item.image_url && Array.isArray(item.image_url)) {
imageUrlData = item.image_url;
} else if (item.images && Array.isArray(item.images)) {
imageUrlData = item.images;
} else if (item.metadata && item.metadata.image_url && Array.isArray(item.metadata.image_url)) {
imageUrlData = item.metadata.image_url;
}
if (imageUrlData) {
message.image_url = imageUrlData;
message.images = imageUrlData;
}
if (item.metadata) {
message.metadata = item.metadata;
}
return message;
});
console.log("从list字段获取到历史记录:", historyMessages.length);
}
if (page === 1) {
if (historyMessages.length > 0) {
messages.value = historyMessages;
console.log("第一页历史记录已加载,总共", historyMessages.length, "条消息");
} else {
console.log("没有历史记录");
messages.value = [];
}
} else {
if (historyMessages.length > 0) {
setTimeout(() => {
messages.value.unshift(...historyMessages);
console.log(
"加载更多历史记录,新增",
historyMessages.length,
"条消息,总共",
messages.value.length,
"条"
);
}, 300);
}
}
const totalItems = result.total || result.count || result.total_count || 0;
hasMore.value = totalItems > messages.value.length;
currentPage.value = page;
if (page === 1) {
setTimeout(() => {
scrollToBottom();
}, 100);
console.log("[Customer] 历史记录加载完成开始建立WebSocket连接");
initWebSocket();
}
} else {
console.error("获取历史记录失败,状态码:", response.statusCode);
}
} catch (error) {
console.error("获取历史记录异常:", error);
} finally {
isLoadingHistory.value = false;
}
};
common_vendor.onPullDownRefresh(async () => {
if (isLoadingHistory.value || !hasMore.value) {
console.log("正在加载或没有更多数据");
common_vendor.index.stopPullDownRefresh();
return;
}
console.log("触发下拉分页,加载更多历史记录");
const nextPage = currentPage.value + 1;
try {
await getHistoryMessages(nextPage);
await new Promise((resolve) => setTimeout(resolve, 500));
} catch (error) {
console.error("加载历史记录失败:", error);
} finally {
common_vendor.index.stopPullDownRefresh();
}
});
const initWebSocket = () => {
var _a;
if (socketTask) {
return;
}
try {
const wsUrl = `${(_a = pages_ai_model.useModel) == null ? void 0 : _a.WS_BASE_URL}/ws/socket.io/?EIO=4&transport=websocket`;
socketTask = common_vendor.index.connectSocket({
url: wsUrl,
header: {
"content-type": "application/json"
}
});
common_vendor.index.onSocketOpen((res) => {
isConnected.value = true;
const connectPacket = '40/customer,{"jwt":""}';
common_vendor.index.sendSocketMessage({
data: connectPacket,
success: () => {
if (conversationId.value) {
setTimeout(() => {
const joinMessage = `42/customer,["join_conversation",{"conversation_id":"${conversationId.value}"}]`;
console.log("[Customer] 加入会话房间:", joinMessage);
common_vendor.index.sendSocketMessage({
data: joinMessage,
success: () => {
console.log("[Customer] 成功加入会话房间");
},
fail: (error) => {
console.error("[Customer] 加入会话房间失败:", error);
}
});
}, 200);
}
},
fail: (error) => {
console.error("[Customer] Socket.IO连接包发送失败:", error);
}
});
});
common_vendor.index.onSocketError((error) => {
console.error("[Customer] WebSocket error:", error);
isConnected.value = false;
socketTask = null;
});
common_vendor.index.onSocketClose((res) => {
console.log("[Customer] WebSocket disconnected", res);
isConnected.value = false;
socketTask = null;
});
common_vendor.index.onSocketMessage((res) => {
const data = res.data;
if (typeof data === "string") {
if (data.startsWith("42/customer,")) {
const payload = data.substring("42/customer,".length);
try {
const parsedData = JSON.parse(payload);
console.log("解析Socket.IO事件:", parsedData);
handleSocketEvent(parsedData);
} catch (e) {
console.error("解析Socket.IO数据失败:", e, "原始数据:", payload);
}
} else if (data.startsWith("40/customer")) {
console.log("Socket.IO连接确认");
} else if (data.startsWith("2")) {
common_vendor.index.sendSocketMessage({
data: "3"
});
} else if (data.startsWith("0")) {
console.log("Socket.IO握手成功");
} else {
try {
const jsonData = JSON.parse(data);
console.log("解析JSON消息:", jsonData);
handleJsonMessage(jsonData);
} catch (e) {
console.log("非JSON格式的字符串消息:", data);
}
}
} else if (typeof data === "object") {
console.log("收到对象类型消息:", data);
handleObjectMessage(data);
} else {
console.log("收到其他类型消息,类型:", typeof data);
}
});
} catch (error) {
console.error("初始化Socket.IO异常:", error);
isConnected.value = false;
socketTask = null;
}
};
const handleSocketEvent = (parsedData) => {
if (Array.isArray(parsedData) && parsedData.length >= 2) {
const eventType = parsedData[0];
const eventData = parsedData[1];
console.log("[Customer] Socket.IO事件类型:", eventType, "事件数据:", eventData);
if (eventType === "new_message") {
processMessage(eventData);
} else if (eventType === "join_conversation_response") {
console.log("[Customer] Joined room:", eventData);
} else if (eventType === "message") {
processMessage(eventData);
} else if (eventType === "typing") {
processTypingIndicator(eventData);
} else {
console.log("[Customer] 未处理的Socket.IO事件类型:", eventType);
}
}
};
const handleJsonMessage = (jsonData) => {
console.log("[Customer] 处理JSON消息:", jsonData);
if (jsonData.type === "message" || jsonData.event === "new_message") {
processMessage(jsonData.data || jsonData);
} else if (jsonData.type === "typing" || jsonData.event === "typing") {
processTypingIndicator(jsonData.data || jsonData);
} else if (jsonData.message || jsonData.content) {
processMessage(jsonData);
} else {
console.log("[Customer] 未识别的JSON消息结构:", jsonData);
}
};
const handleObjectMessage = (objData) => {
console.log("[Customer] 处理对象消息:", objData);
if (objData.message || objData.content || objData.text) {
processMessage(objData);
} else if (objData.is_typing !== void 0) {
processTypingIndicator(objData);
} else {
console.log("[Customer] 未识别的对象消息结构:", objData);
}
};
const processTypingIndicator = (typingData) => {
if (typingData.is_typing && typingData.user_type === "staff") {
loading.value = true;
loadingText.value = "客服正在输入...";
} else {
loading.value = false;
}
};
const processMessage = (messageData) => {
if (messageData.sender_type === "customer" || messageData.role === "user") {
return;
}
let messageContent = "";
if (typeof messageData === "string") {
messageContent = messageData;
} else {
messageContent = messageData.message || messageData.content || messageData.text || messageData.body || "收到回复";
}
if (typeof messageContent === "string") {
messageContent = messageContent.replace(/↵/g, "\n").replace(/\\n/g, "\n");
}
console.log("[Customer] 收到新消息内容:", messageContent);
if (messageContent === lastMessageContent.value) {
console.log("[Customer] 消息与HTTP返回的消息相同跳过显示");
lastMessageContent.value = "";
return;
}
loading.value = false;
const newMessage = {
role: "ai",
content: messageContent,
created_at: messageData.created_at || messageData.timestamp || messageData.time || new Date().toISOString()
};
if (messageData.suggested_questions && Array.isArray(messageData.suggested_questions) && messageData.suggested_questions.length > 0) {
newMessage.quickQuestions = messageData.suggested_questions;
} else if (messageData.quickQuestions && Array.isArray(messageData.quickQuestions) && messageData.quickQuestions.length > 0) {
newMessage.quickQuestions = messageData.quickQuestions;
}
if (messageData.need_confirmation !== void 0) {
newMessage.needConfirmation = messageData.need_confirmation;
}
if (messageData.confirmation_type !== void 0) {
newMessage.confirmationType = messageData.confirmation_type;
}
messages.value.push(newMessage);
scrollToBottom();
};
const handleQuickQuestion = (question) => {
inputMessage.value = question;
handleSendMessage();
};
const handleQuickFast = (name) => {
handleQuickAction({ message: name });
};
const handleQuickAction = (action) => {
inputMessage.value = action.message;
handleSendMessage();
};
const handleConfirmation = (message, confirmation) => {
if (message.selectedConfirmation !== void 0) {
return;
}
message.selectedConfirmation = confirmation;
setTimeout(() => {
inputMessage.value = confirmation;
handleSendMessage();
}, 300);
};
const handleSendMessage = async () => {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
const message = inputMessage.value.trim();
const hasImages = ((_c = (_b = (_a = pages_ai_model.useModel) == null ? void 0 : _a.selectedImages) == null ? void 0 : _b.value) == null ? void 0 : _c.length) > 0;
if (!message && !hasImages || loading.value)
return;
const userPhone = (_e = (_d = auth.data) == null ? void 0 : _d.user) == null ? void 0 : _e.phone;
const projectId = (_g = (_f = auth.data) == null ? void 0 : _f.selected_house) == null ? void 0 : _g.asset_projects_id;
const projectName = (_i = (_h = auth.data) == null ? void 0 : _h.selected_house) == null ? void 0 : _i.full_name;
if (!userPhone || !projectId) {
common_vendor.index.showToast({
title: "请先登录并绑定房屋",
icon: "none"
});
return;
}
if (!isConnected.value) {
initWebSocket();
await new Promise((resolve) => setTimeout(resolve, 1e3));
}
const uploadedImages = ((_k = (_j = pages_ai_model.useModel) == null ? void 0 : _j.selectedImages) == null ? void 0 : _k.value) || [];
let messageType = "text";
if (hasImages && message) {
messageType = "mixed";
} else if (hasImages && !message) {
messageType = "image";
}
const userMessage = {
role: "user",
content: message || "",
// 纯图片时传空字符串
created_at: new Date().toISOString(),
message_type: messageType,
image_url: uploadedImages.length > 0 ? uploadedImages : void 0,
images: uploadedImages.length > 0 ? uploadedImages : void 0
};
messages.value.push(userMessage);
inputMessage.value = "";
pages_ai_model.useModel.selectedImages.value = [];
scrollToBottom();
console.log("发送消息时隐藏开场白3", showOpeningRemarks.value);
if (!showOpeningRemarks.value) {
showOpeningRemarks.value = true;
}
if (message && message.includes("查询")) {
loadingText.value = "正在查询中请稍后...";
} else {
loadingText.value = "正在输入中...";
}
loading.value = true;
try {
const response = await ((_l = pages_ai_method.method) == null ? void 0 : _l.customRequest("public/chat", {
platform: "property",
message: message || "",
// 纯图片时传空字符串
tenant_project_id: projectId,
message_type: messageType,
tenant_project_name: projectName || "",
conversation_id: conversationId.value,
image_url: uploadedImages.length > 0 ? uploadedImages : void 0
}));
if (response.statusCode === 200) {
const result = response.data;
console.log("[Customer] HTTP接口响应数据:", result);
let httpReplyMessage = null;
let suggestedQuestions = [];
let needConfirmation = false;
let confirmationType = null;
if (result.reply && typeof result.reply === "string") {
httpReplyMessage = result.reply;
suggestedQuestions = result.suggested_questions || [];
needConfirmation = result.need_confirmation || false;
confirmationType = result.confirmation_type || null;
} else if (result.reply && result.reply.message) {
httpReplyMessage = result.reply.message;
suggestedQuestions = result.reply.suggested_questions || result.suggested_questions || [];
needConfirmation = result.reply.need_confirmation || result.need_confirmation || false;
confirmationType = result.reply.confirmation_type || result.confirmation_type || null;
} else if (result.reply && result.reply.content) {
httpReplyMessage = result.reply.content;
suggestedQuestions = result.reply.suggested_questions || result.suggested_questions || [];
needConfirmation = result.reply.need_confirmation || result.need_confirmation || false;
confirmationType = result.reply.confirmation_type || result.confirmation_type || null;
} else if (result.message) {
httpReplyMessage = result.message;
suggestedQuestions = result.suggested_questions || [];
needConfirmation = result.need_confirmation || false;
confirmationType = result.confirmation_type || null;
} else if (result.content) {
httpReplyMessage = result.content;
suggestedQuestions = result.suggested_questions || [];
needConfirmation = result.need_confirmation || false;
confirmationType = result.confirmation_type || null;
} else if (result.answer) {
httpReplyMessage = result.answer;
suggestedQuestions = result.suggested_questions || [];
needConfirmation = result.need_confirmation || false;
confirmationType = result.confirmation_type || null;
} else if (result.response) {
httpReplyMessage = result.response;
suggestedQuestions = result.suggested_questions || [];
needConfirmation = result.need_confirmation || false;
confirmationType = result.confirmation_type || null;
} else if (typeof result === "string") {
httpReplyMessage = result;
}
if (httpReplyMessage) {
console.log("[Customer] HTTP接口返回回答消息:", httpReplyMessage);
console.log("[Customer] 建议问题:", suggestedQuestions);
console.log("[Customer] 需要确认:", needConfirmation, "确认类型:", confirmationType);
let formattedMessage = httpReplyMessage;
if (typeof formattedMessage === "string") {
formattedMessage = formattedMessage.replace(/↵/g, "\n").replace(/\\n/g, "\n");
}
lastMessageContent.value = formattedMessage;
loading.value = false;
messages.value.push({
role: "ai",
content: formattedMessage,
created_at: new Date().toISOString(),
quickQuestions: suggestedQuestions.length > 0 ? suggestedQuestions : void 0,
needConfirmation,
confirmationType,
...result
});
scrollToBottom();
} else {
console.log("[Customer] 消息发送成功等待WebSocket回复");
}
} else {
throw new Error("请求失败");
}
} catch (error) {
console.error("发送消息失败:", error);
common_vendor.index.showToast({
title: "发送失败,请稍后重试",
icon: "none"
});
messages.value.push({
role: "ai",
content: "抱歉,网络连接出现问题,请稍后再试。"
});
loading.value = false;
scrollToBottom();
}
};
common_vendor.onUnmounted(() => {
if (socketTask || isConnected.value) {
common_vendor.index.closeSocket();
socketTask = null;
isConnected.value = false;
console.log("页面卸载WebSocket连接已关闭");
}
});
common_vendor.onPageScroll((e) => {
if (e.scrollTop > pages_ai_model.useModel.scrollTopNumber.value) {
pages_ai_model.useModel.scrollTopNumber.value = e.scrollTop;
return;
}
if (pages_ai_model.useModel.scrollTopNumber.value - e.scrollTop > 60 && !showOpeningRemarks.value) {
showOpeningRemarks.value = true;
}
});
common_vendor.onShow(() => {
showOpeningRemarks.value = false;
pages_ai_model.useModel.scrollTopNumber.value = 0;
});
common_vendor.onLoad(async (op) => {
var _a, _b, _c;
await ((_a = common_vendor.getCurrentInstance()) == null ? void 0 : _a.appContext.config.globalProperties.$onLaunched);
if ((_b = common_libraries_userUserLogin.getUserLogin) == null ? void 0 : _b.getLoginStatus()) {
userLoginStatus.value = true;
quickQuestionsData.value = await ((_c = pages_ai_method.method) == null ? void 0 : _c.getQuickQuestions());
getHistoryMessages(1);
if (op == null ? void 0 : op.message) {
handleQuickAction(op);
}
} else {
userLoginStatus.value = false;
messages.value = [];
}
});
return (_ctx, _cache) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
return common_vendor.e({
a: userLoginStatus.value
}, userLoginStatus.value ? common_vendor.e({
b: common_vendor.o(handleQuickFast),
c: common_vendor.n(showOpeningRemarks.value ? "hide-opening-remarks" : ""),
d: common_vendor.f(messages.value, (message, index, i0) => {
var _a2, _b2;
return common_vendor.e({
a: message.role === "ai"
}, message.role === "ai" ? {} : {}, {
b: message.image_url && message.image_url.length > 0
}, message.image_url && message.image_url.length > 0 ? {
c: common_vendor.f(message.image_url, (image, imgIndex, i1) => {
return {
a: image,
b: common_vendor.o(($event) => {
var _a3;
return (_a3 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a3.previewImage(image, message.image_url);
}, imgIndex),
c: imgIndex
};
}),
d: message.image_url.length === 1 ? "widthFix" : "aspectFill",
e: message.image_url.length === 1 ? 1 : ""
} : message.images && message.images.length > 0 ? {
g: common_vendor.f(message.images, (image, imgIndex, i1) => {
return {
a: image,
b: common_vendor.o(($event) => {
var _a3;
return (_a3 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a3.previewImage(image, message.images);
}, imgIndex),
c: imgIndex
};
}),
h: message.images.length === 1 ? "widthFix" : "aspectFill",
i: message.images.length === 1 ? 1 : ""
} : message.metadata && message.metadata.image_url && message.metadata.image_url.length > 0 ? {
k: common_vendor.f(message.metadata.image_url, (image, imgIndex, i1) => {
return {
a: image,
b: common_vendor.o(($event) => {
var _a3;
return (_a3 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a3.previewImage(image, message.metadata.image_url);
}, imgIndex),
c: imgIndex
};
}),
l: message.metadata.image_url.length === 1 ? "widthFix" : "aspectFill",
m: message.metadata.image_url.length === 1 ? 1 : ""
} : {}, {
f: message.images && message.images.length > 0,
j: message.metadata && message.metadata.image_url && message.metadata.image_url.length > 0,
n: message.content && message.content.trim()
}, message.content && message.content.trim() ? {
o: common_vendor.f((_a2 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a2.formatMessageContent(message.content), (line, lineIndex, i1) => {
return {
a: common_vendor.t(line),
b: "text-" + lineIndex
};
})
} : {}, {
p: message.actions && message.actions.length > 0
}, message.actions && message.actions.length > 0 ? {
q: common_vendor.f(message.actions, (i, aIndex, i1) => {
return {
a: common_vendor.t(i == null ? void 0 : i.label),
b: `items_${aIndex}`,
c: common_vendor.o(($event) => {
var _a3;
return (_a3 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a3.GoToPage(i == null ? void 0 : i.url);
}, `items_${aIndex}`)
};
})
} : {}, {
r: !message.actions && message.quickQuestions && message.quickQuestions.length > 0
}, !message.actions && message.quickQuestions && message.quickQuestions.length > 0 ? {
s: common_vendor.f(message.quickQuestions, (question, qIndex, i1) => {
return {
a: common_vendor.t(question),
b: qIndex,
c: common_vendor.o(($event) => handleQuickQuestion(question), qIndex)
};
})
} : {}, {
t: message.needConfirmation
}, message.needConfirmation ? {
v: message.selectedConfirmation === "是" ? 1 : "",
w: message.selectedConfirmation !== void 0 ? 1 : "",
x: common_vendor.o(($event) => handleConfirmation(message, "是"), index),
y: message.selectedConfirmation === "否" ? 1 : "",
z: message.selectedConfirmation !== void 0 ? 1 : "",
A: common_vendor.o(($event) => handleConfirmation(message, "否"), index)
} : {}, {
B: message.created_at && !message.quickQuestions
}, message.created_at && !message.quickQuestions ? common_vendor.e({
C: message.role === "ai"
}, message.role === "ai" ? {
D: common_vendor.o(($event) => {
var _a3;
return (_a3 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a3.copyMessage(message.content);
}, index)
} : {}, {
E: common_vendor.t((_b2 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _b2.formatTime(message.created_at)),
F: message.role === "user"
}, message.role === "user" ? {
G: common_vendor.o(($event) => {
var _a3;
return (_a3 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a3.copyMessage(message.content);
}, index)
} : {}) : {}, {
H: index,
I: `msg-${index}`,
J: common_vendor.n(message.role === "user" ? "user-message" : "ai-message")
});
}),
e: loading.value
}, loading.value ? {
f: common_vendor.t(loadingText.value)
} : {}, {
g: common_vendor.n(`chat-messages chat-messages-chat ${showOpeningRemarks.value ? "chat-messages-update-top" : ""}`),
h: ((_c = (_b = (_a = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _a.selectedImages) == null ? void 0 : _b.value) == null ? void 0 : _c.length) > 0
}, ((_f = (_e = (_d = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _d.selectedImages) == null ? void 0 : _e.value) == null ? void 0 : _f.length) > 0 ? common_vendor.e({
i: common_vendor.f((_h = (_g = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _g.selectedImages) == null ? void 0 : _h.value, (image, index, i0) => {
return {
a: image,
b: "25c36616-1-" + i0,
c: common_vendor.o(($event) => {
var _a2;
return (_a2 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a2.removeImage(index);
}, index),
d: index
};
}),
j: common_vendor.p({
type: "closeempty",
size: "14",
color: "#fff"
}),
k: ((_k = (_j = (_i = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _i.selectedImages) == null ? void 0 : _j.value) == null ? void 0 : _k.length) < 9
}, ((_n = (_m = (_l = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _l.selectedImages) == null ? void 0 : _m.value) == null ? void 0 : _n.length) < 9 ? {
l: common_vendor.p({
type: "plus",
size: "30",
color: "#999"
}),
m: common_vendor.o(($event) => {
var _a2;
return (_a2 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a2.chooseImage();
})
} : {}) : {}, {
n: common_vendor.o(($event) => isInputFocused.value = true),
o: common_vendor.o(($event) => isInputFocused.value = false),
p: common_vendor.o(handleSendMessage),
q: inputMessage.value,
r: common_vendor.o(($event) => inputMessage.value = $event.detail.value),
s: !inputMessage.value.trim() && !isInputFocused.value && ((_q = (_p = (_o = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _o.selectedImages) == null ? void 0 : _p.value) == null ? void 0 : _q.length) === 0
}, !inputMessage.value.trim() && !isInputFocused.value && ((_t = (_s = (_r = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _r.selectedImages) == null ? void 0 : _s.value) == null ? void 0 : _t.length) === 0 ? {
t: common_vendor.p({
type: "camera",
size: "24",
color: "#666"
}),
v: common_vendor.o(($event) => {
var _a2;
return (_a2 = common_vendor.unref(pages_ai_method.method)) == null ? void 0 : _a2.chooseImage();
})
} : {}, {
w: (inputMessage.value.trim() || isInputFocused.value || ((_w = (_v = (_u = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _u.selectedImages) == null ? void 0 : _v.value) == null ? void 0 : _w.length) > 0) && !loading.value
}, (inputMessage.value.trim() || isInputFocused.value || ((_z = (_y = (_x = common_vendor.unref(pages_ai_model.useModel)) == null ? void 0 : _x.selectedImages) == null ? void 0 : _y.value) == null ? void 0 : _z.length) > 0) && !loading.value ? {
x: common_vendor.p({
type: "paperplane-filled",
size: "20",
color: "#fff"
}),
y: common_vendor.o(handleSendMessage)
} : {}, {
z: loading.value
}, loading.value ? {
A: common_vendor.p({
type: "spinner-cycle",
size: "20",
color: "#ccc"
})
} : {}) : {
B: common_vendor.p({
height: "20vh",
baseStyle: {
paddingTop: "35%"
},
text: "登录体验更多功能"
}),
C: common_vendor.o(goToPageLogin),
D: common_vendor.p({
label: "去登录",
size: "md",
type: "primary"
})
});
};
}
});
_sfc_defineComponent.__runtimeHooks = 1;
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_defineComponent, [["__file", "/Users/zsq/Sources/github/2025property-pay/pay-customer/src/pages/ai/chat.vue"]]);
wx.createPage(MiniProgramPage);