确定气泡字体样式
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
|
||||
;(function(){
|
||||
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
|
||||
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"test1","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"5.07","entryPagePath":"pages/text/IntuitiveAipptViewer","entryPageQuery":"","realEntryPagePath":"pages/Login/Login","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
|
||||
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"test1","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"5.07","entryPagePath":"pages/Login/Login","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
|
||||
const __uniRoutes = [{"path":"pages/Login/Login","meta":{"isQuit":true,"isEntry":true,"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"登录页面","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/Chat/Chat","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"聊天页面(主页面)","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/WorkSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"工作区文件管理","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/UserProfileModal/UserProfileModal","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/ContactPages/ContactPages","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/TemplateSpace/TemplateSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDatabase/CloudDatabase","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"云端数据","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDbDetail/CloudDbDetail","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"数据库详情","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/text/text","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/text/IntuitiveAipptViewer","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
|
||||
__uniConfig.styles=[];//styles
|
||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
|
||||
98
unpackage/dist/dev/app-plus/app-service.js
vendored
98
unpackage/dist/dev/app-plus/app-service.js
vendored
@@ -5686,7 +5686,10 @@ This will fail in production.`);
|
||||
html += "<tr>";
|
||||
cells.forEach((cell, ci) => {
|
||||
const align = alignments[ci] ? ` style="text-align:${alignments[ci]}"` : "";
|
||||
let cellContent = cell.trim().replace(/_/g, "_").replace(/\*/g, "*");
|
||||
let cellContent = cell.trim();
|
||||
cellContent = cellContent.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>");
|
||||
cellContent = cellContent.replace(/\*(.+?)\*/g, "<em>$1</em>");
|
||||
cellContent = cellContent.replace(/_/g, "_").replace(/\*/g, "*");
|
||||
html += `<${tag}${align} style="padding:6px 10px;border:1px solid #ddd">${cellContent}</${tag}>`;
|
||||
});
|
||||
html += "</tr>";
|
||||
@@ -5714,7 +5717,7 @@ This will fail in production.`);
|
||||
);
|
||||
return html;
|
||||
} catch (e2) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:455", "解析失败", e2);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:460", "解析失败", e2);
|
||||
return content;
|
||||
}
|
||||
};
|
||||
@@ -5773,7 +5776,7 @@ This will fail in production.`);
|
||||
files
|
||||
};
|
||||
} catch (e2) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:532", "解析文件信息失败:", e2);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:537", "解析文件信息失败:", e2);
|
||||
return {
|
||||
textContent: content,
|
||||
files: []
|
||||
@@ -5810,7 +5813,7 @@ This will fail in production.`);
|
||||
}
|
||||
takeUserConversations();
|
||||
} catch (error) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:577", "新建普通会话失败:", error);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:582", "新建普通会话失败:", error);
|
||||
uni.showToast({
|
||||
title: "创建会话失败,请重试",
|
||||
icon: "none"
|
||||
@@ -5848,7 +5851,7 @@ This will fail in production.`);
|
||||
};
|
||||
const previewFileArray = vue.ref([]);
|
||||
const uploadPhoto = () => {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:626", "点击了拍照上传");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:631", "点击了拍照上传");
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sourceType: ["camera", "album"],
|
||||
@@ -5871,7 +5874,7 @@ This will fail in production.`);
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:644", "选择图片失败", err);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:649", "选择图片失败", err);
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -5880,12 +5883,12 @@ This will fail in production.`);
|
||||
};
|
||||
const fileList = vue.ref([]);
|
||||
const uploadFile = () => {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:655", "点击了上传文件");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:660", "点击了上传文件");
|
||||
chooseFile({
|
||||
count: 5,
|
||||
type: "all",
|
||||
success: (res) => {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:660", "成功了");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:665", "成功了");
|
||||
fileList.value = res.tempFiles;
|
||||
previewFileArray.value.push(...res.tempFiles);
|
||||
uni.showToast({
|
||||
@@ -5894,7 +5897,7 @@ This will fail in production.`);
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:671", "选择失败:", err);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:676", "选择失败:", err);
|
||||
uni.showToast({
|
||||
title: "选择失败",
|
||||
icon: "error"
|
||||
@@ -6094,7 +6097,7 @@ This will fail in production.`);
|
||||
previewFileArray.value = [];
|
||||
} catch (err) {
|
||||
uni.hideLoading();
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:895", "文件上传失败:", err);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:900", "文件上传失败:", err);
|
||||
uni.showToast({
|
||||
title: "文件上传失败,请重试",
|
||||
icon: "error"
|
||||
@@ -6228,15 +6231,15 @@ This will fail in production.`);
|
||||
}
|
||||
};
|
||||
const stopConversation = async () => {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1064", "中断对话 - 当前会话ID:", currentSessionId.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1069", "中断对话 - 当前会话ID:", currentSessionId.value);
|
||||
try {
|
||||
await socketStore.send({
|
||||
type: "stop",
|
||||
conversation_id: currentSessionId.value
|
||||
});
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1070", "中断指令已发送成功");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1075", "中断指令已发送成功");
|
||||
} catch (err) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1072", "中断指令发送失败:", err);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1077", "中断指令发送失败:", err);
|
||||
}
|
||||
if (streamingMessageId.value) {
|
||||
allmessages.value = allmessages.value.filter((m) => m._id !== streamingMessageId.value);
|
||||
@@ -6254,9 +6257,9 @@ This will fail in production.`);
|
||||
});
|
||||
};
|
||||
vue.watch(() => socketStore.isThinking, (newVal, oldVal) => {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1096", "isThinking 变化:", oldVal, "→", newVal, "messageString:", socketStore.messageString);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1101", "isThinking 变化:", oldVal, "→", newVal, "messageString:", socketStore.messageString);
|
||||
if (!oldVal && newVal) {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1099", "AI开始回复(跨设备同步),锁定输入框");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1104", "AI开始回复(跨设备同步),锁定输入框");
|
||||
isThinking.value = true;
|
||||
if (!streamingMessageId.value) {
|
||||
streamingMessageId.value = "streaming-" + Date.now();
|
||||
@@ -6270,7 +6273,7 @@ This will fail in production.`);
|
||||
return;
|
||||
}
|
||||
if (oldVal && !newVal) {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1115", "AI回复结束(正常/中断),解锁并刷新消息列表");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1120", "AI回复结束(正常/中断),解锁并刷新消息列表");
|
||||
if (streamingMessageId.value) {
|
||||
allmessages.value = allmessages.value.filter((m) => m._id !== streamingMessageId.value);
|
||||
streamingMessageId.value = null;
|
||||
@@ -6322,15 +6325,15 @@ This will fail in production.`);
|
||||
UserData.value = await getUserInfo(userToken.value);
|
||||
UserId.value = UserData.value._id;
|
||||
UserAvatar.value = UserData.value.avatar || "";
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1179", "用户信息已加载:", UserId.value, UserAvatar.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1184", "用户信息已加载:", UserId.value, UserAvatar.value);
|
||||
} catch (error) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1181", "获取用户信息失败:", error);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1186", "获取用户信息失败:", error);
|
||||
}
|
||||
};
|
||||
const takeUserConversations = async () => {
|
||||
try {
|
||||
userToken.value = getToken();
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1189", "token:", userToken.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1194", "token:", userToken.value);
|
||||
UserConversations.value = await getUserConversations(userToken.value) || [];
|
||||
const savedSessionId = getCurrentSessionId();
|
||||
if (savedSessionId && UserConversations.value.some((c) => c._id === savedSessionId)) {
|
||||
@@ -6340,7 +6343,7 @@ This will fail in production.`);
|
||||
} else {
|
||||
currentSessionId.value = "";
|
||||
}
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1201", "保存会话id:", currentSessionId.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1206", "保存会话id:", currentSessionId.value);
|
||||
uni.setStorageSync("currentSessionId", currentSessionId.value);
|
||||
} catch (error) {
|
||||
uni.showToast({
|
||||
@@ -6352,17 +6355,17 @@ This will fail in production.`);
|
||||
const FriendInfoList = vue.ref([]);
|
||||
const takeFriendList = async () => {
|
||||
try {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1216", "开始获取好友列表");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1221", "开始获取好友列表");
|
||||
const friendList = await getChatFriend(UserId.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1219", "friendList:", friendList);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1224", "friendList:", friendList);
|
||||
if (friendList && friendList.length) {
|
||||
FriendInfoList.value = await takeUserAvatar(friendList);
|
||||
} else {
|
||||
FriendInfoList.value = [];
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1224", "好友列表为空");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1229", "好友列表为空");
|
||||
}
|
||||
} catch (error) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1227", "获取好友列表失败:", error);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1232", "获取好友列表失败:", error);
|
||||
FriendInfoList.value = [];
|
||||
} finally {
|
||||
UserConversations.value = FriendInfoList.value;
|
||||
@@ -6389,17 +6392,17 @@ This will fail in production.`);
|
||||
};
|
||||
});
|
||||
} catch (err) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1257", "获取好友头像失败", err);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1262", "获取好友头像失败", err);
|
||||
return friendList;
|
||||
}
|
||||
};
|
||||
const GroupList = vue.ref([]);
|
||||
const takeGroupList = async () => {
|
||||
try {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1267", "开始获取群聊列表");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1272", "开始获取群聊列表");
|
||||
GroupList.value = await getGroup(UserId.value);
|
||||
} catch (error) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1272", "获取群聊列表失败:", error);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1277", "获取群聊列表失败:", error);
|
||||
GroupList.value = [];
|
||||
} finally {
|
||||
UserConversations.value = GroupList.value;
|
||||
@@ -6411,22 +6414,22 @@ This will fail in production.`);
|
||||
return [];
|
||||
try {
|
||||
const memberIds = memberList.map((item) => item.groupContactId);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1286", "请求头像的ID列表:", memberIds);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1291", "请求头像的ID列表:", memberIds);
|
||||
const memberAvatarList = await getUserAvatar(userToken.value, memberIds);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1288", "头像接口返回数据:", memberAvatarList);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1293", "头像接口返回数据:", memberAvatarList);
|
||||
const userMap = new Map(memberAvatarList.map((user) => [user.user_id, user]) || []);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1291", "userMap的keys:", Array.from(userMap.keys()));
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1296", "userMap的keys:", Array.from(userMap.keys()));
|
||||
return memberList.map((member) => {
|
||||
const memberId = member.groupContactId;
|
||||
const userInfo = userMap.get(memberId);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1296", `查找 ${memberId} 的头像:`, userInfo);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1301", `查找 ${memberId} 的头像:`, userInfo);
|
||||
return {
|
||||
...member,
|
||||
avatar: (userInfo == null ? void 0 : userInfo.avatar) || null
|
||||
};
|
||||
});
|
||||
} catch (err) {
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1303", "获取群成员头像失败", err);
|
||||
formatAppLog("error", "at pages/Chat/Chat.vue:1308", "获取群成员头像失败", err);
|
||||
return memberList;
|
||||
}
|
||||
};
|
||||
@@ -6469,12 +6472,12 @@ This will fail in production.`);
|
||||
const takeGroupMessages = async () => {
|
||||
try {
|
||||
allmessages.value = await getGroupMessages(currentSessionId.value) || [];
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1363", "群聊消息:", allmessages.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1368", "群聊消息:", allmessages.value);
|
||||
const memberList = await getGroupMemberList(currentSessionId.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1366", "获取到的群成员列表:", memberList);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1371", "获取到的群成员列表:", memberList);
|
||||
if (memberList && memberList.length) {
|
||||
groupMemberList.value = await takeGroupMemberAvatar(memberList);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1369", "群成员列表(带头像):", groupMemberList.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1374", "群成员列表(带头像):", groupMemberList.value);
|
||||
} else {
|
||||
groupMemberList.value = [];
|
||||
}
|
||||
@@ -6496,9 +6499,9 @@ This will fail in production.`);
|
||||
}
|
||||
};
|
||||
vue.watch(() => friendSocketStore.MessageReceived, (newId) => {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1414", "收到了好友消息");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1419", "收到了好友消息");
|
||||
if (newId) {
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1416", "ChatType:", ChatType.value);
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1421", "ChatType:", ChatType.value);
|
||||
switch (ChatType.value) {
|
||||
case 0:
|
||||
takeConversationMessages();
|
||||
@@ -6513,7 +6516,7 @@ This will fail in production.`);
|
||||
friendSocketStore.MessageReceived = false;
|
||||
break;
|
||||
default:
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1432", "default 分支");
|
||||
formatAppLog("log", "at pages/Chat/Chat.vue:1437", "default 分支");
|
||||
friendSocketStore.MessageReceived = false;
|
||||
break;
|
||||
}
|
||||
@@ -7510,6 +7513,7 @@ This will fail in production.`);
|
||||
uni.hideLoading();
|
||||
if (downloadRes.statusCode === 200) {
|
||||
const tempPath = downloadRes.tempFilePath;
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:396", "// 下载成功,文件下载路径为:", tempPath);
|
||||
openFile(tempPath);
|
||||
} else {
|
||||
uni.showToast({
|
||||
@@ -7520,7 +7524,7 @@ This will fail in production.`);
|
||||
},
|
||||
fail: (err) => {
|
||||
uni.hideLoading();
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:406", "下载文件失败:", err);
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:407", "下载文件失败:", err);
|
||||
uni.showToast({
|
||||
title: "下载失败,请重试",
|
||||
icon: "error"
|
||||
@@ -7529,7 +7533,7 @@ This will fail in production.`);
|
||||
});
|
||||
} catch (error) {
|
||||
uni.hideLoading();
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:415", "获取下载链接失败:", error);
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:416", "获取下载链接失败:", error);
|
||||
uni.showToast({
|
||||
title: "获取下载链接失败,请重试",
|
||||
icon: "error"
|
||||
@@ -7544,7 +7548,7 @@ This will fail in production.`);
|
||||
icon: "success"
|
||||
}),
|
||||
fail: (err) => {
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:432", "打开文件失败:", err);
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:433", "打开文件失败:", err);
|
||||
uni.showToast({
|
||||
title: "无法打开此文件",
|
||||
icon: "error"
|
||||
@@ -7561,7 +7565,7 @@ This will fail in production.`);
|
||||
icon: "success"
|
||||
}),
|
||||
fail: (err) => {
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:451", "打开文件失败:", err);
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:452", "打开文件失败:", err);
|
||||
uni.showToast({
|
||||
title: "无法打开此文件",
|
||||
icon: "error"
|
||||
@@ -7577,7 +7581,7 @@ This will fail in production.`);
|
||||
if (res.confirm) {
|
||||
try {
|
||||
const filePath = `./${folder.path}`;
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:470", "删除的是:", filePath);
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:471", "删除的是:", filePath);
|
||||
await daleteWorkspace(UserToken.value, workspaceId.value, filePath);
|
||||
uni.showToast({
|
||||
title: "删除成功",
|
||||
@@ -7585,7 +7589,7 @@ This will fail in production.`);
|
||||
});
|
||||
initCurrentFolderList();
|
||||
} catch (error) {
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:478", "删除失败:", error);
|
||||
formatAppLog("error", "at pages/WorkSpace/WorkSpace.vue:479", "删除失败:", error);
|
||||
uni.showToast({
|
||||
title: "删除失败,请重试",
|
||||
icon: "error"
|
||||
@@ -7653,7 +7657,7 @@ This will fail in production.`);
|
||||
const currentFolderList = vue.ref([]);
|
||||
const getCurrentFolderList = () => {
|
||||
var _a, _b;
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:559", "当前路径为:", JSON.stringify(folderStack.value));
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:560", "当前路径为:", JSON.stringify(folderStack.value));
|
||||
const currentPath = folderStack.value.length > 0 ? folderStack.value[folderStack.value.length - 1].path : ".";
|
||||
if (currentPath === ".") {
|
||||
return ((_a = allFoldersData.value) == null ? void 0 : _a.children) || [];
|
||||
@@ -7677,7 +7681,7 @@ This will fail in production.`);
|
||||
const initCurrentFolderList = async () => {
|
||||
workspaceId.value = getWorkspaceId();
|
||||
UserToken.value = getToken();
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:586", "getWorkspaceId:", workspaceId.value);
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:587", "getWorkspaceId:", workspaceId.value);
|
||||
allFoldersData.value = await getWorkspaceList(UserToken.value, workspaceId.value);
|
||||
currentFolderList.value = getCurrentFolderList();
|
||||
};
|
||||
@@ -7722,7 +7726,7 @@ This will fail in production.`);
|
||||
uni.navigateBack({
|
||||
delta: 1,
|
||||
fail() {
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:643", "返回失败,进入兜底跳转");
|
||||
formatAppLog("log", "at pages/WorkSpace/WorkSpace.vue:644", "返回失败,进入兜底跳转");
|
||||
uni.reLaunch({
|
||||
url: "/pages/Chat/Chat"
|
||||
});
|
||||
|
||||
10
unpackage/dist/dev/app-plus/app.css
vendored
10
unpackage/dist/dev/app-plus/app.css
vendored
@@ -243,6 +243,16 @@
|
||||
.icon-qita:before {
|
||||
content: "\e600";
|
||||
}
|
||||
/* ===== 全局系统字体栈 ===== */
|
||||
/* iPhone: PingFang SC */
|
||||
/* 华为鸿蒙: HarmonyOS Sans */
|
||||
/* 小米: MiSans */
|
||||
/* OPPO/vivo/realme: 系统默认黑体 */
|
||||
/* 其他安卓: Source Han Sans CN / Roboto */
|
||||
body, uni-view, uni-text, uni-input, uni-textarea, uni-button {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans", "MiSans", "Source Han Sans CN", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
|
||||
font-weight: 400;
|
||||
}
|
||||
/* 顶部状态栏占位(自动适配刘海高度) */
|
||||
.status-bar {
|
||||
height: var(--status-bar-height);
|
||||
|
||||
2
unpackage/dist/dev/app-plus/manifest.json
vendored
2
unpackage/dist/dev/app-plus/manifest.json
vendored
@@ -124,7 +124,7 @@
|
||||
"style": "dark",
|
||||
"background": "#F8F8F8"
|
||||
},
|
||||
"arguments": "{\"path\":\"pages/text/IntuitiveAipptViewer\"}",
|
||||
"arguments": "{\"name\":\"\",\"path\":\"\",\"query\":\"\"}",
|
||||
"uniStatistics": {
|
||||
"enable": false
|
||||
},
|
||||
|
||||
17
unpackage/dist/dev/app-plus/pages/Chat/Chat.css
vendored
17
unpackage/dist/dev/app-plus/pages/Chat/Chat.css
vendored
@@ -1655,8 +1655,15 @@ to { opacity: 1; transform: translateY(0);
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 气泡内容字体:确保 v-html 渲染的 markdown 内容使用系统字体栈 */
|
||||
.chat-content {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans", "MiSans", "Source Han Sans CN", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif !important;
|
||||
font-size: 16px !important;
|
||||
font-weight: 600 !important;
|
||||
line-height: 1.6;
|
||||
margin: 0.25rem 0;
|
||||
/* 普通正文 */
|
||||
/* 粗体和斜体样式 */
|
||||
/* 气泡内的内联链接(替代 <a> 标签,点击由 JS 拦截处理) */
|
||||
}
|
||||
.chat-content h1 {
|
||||
@@ -1684,10 +1691,20 @@ to { opacity: 1; transform: translateY(0);
|
||||
.chat-content p,
|
||||
.chat-content uni-text,
|
||||
.chat-content span {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans", "MiSans", "Source Han Sans CN", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif !important;
|
||||
font-size: 1.1875rem !important;
|
||||
font-weight: 400 !important;
|
||||
line-height: 1.6;
|
||||
margin: 0.25rem 0;
|
||||
}
|
||||
.chat-content strong,
|
||||
.chat-content b {
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
.chat-content em,
|
||||
.chat-content i {
|
||||
font-style: italic !important;
|
||||
}
|
||||
.chat-content .chat-inline-link {
|
||||
color: #3b86ff !important;
|
||||
text-decoration: underline;
|
||||
|
||||
@@ -1,526 +0,0 @@
|
||||
|
||||
.book-viewer[data-v-dc6aee90] {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: #1a1a2e;
|
||||
z-index: 9999;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* ========== 工具栏 ========== */
|
||||
.toolbar[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 0.625rem;
|
||||
height: 2.1875rem;
|
||||
background: rgba(26, 26, 46, 0.95);
|
||||
border-bottom: 0.0625rem solid rgba(255, 255, 255, 0.08);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.toolbar-left[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
.toolbar-brand[data-v-dc6aee90] {
|
||||
font-size: 0.6875rem;
|
||||
font-weight: 800;
|
||||
color: #0ea5e9;
|
||||
letter-spacing: 0.0625rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.toolbar-title[data-v-dc6aee90] {
|
||||
font-size: 0.8125rem;
|
||||
color: #e2e8f0;
|
||||
font-weight: 500;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.toolbar-right[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.toolbar-btn[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0.25rem 0.4375rem;
|
||||
border-radius: 0.25rem;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
min-width: 2.125rem;
|
||||
}
|
||||
.toolbar-btn[data-v-dc6aee90]:active {
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
}
|
||||
.toolbar-close[data-v-dc6aee90] {
|
||||
background: rgba(239, 68, 68, 0.15);
|
||||
margin-left: 0.25rem;
|
||||
}
|
||||
.toolbar-close[data-v-dc6aee90]:active {
|
||||
background: rgba(239, 68, 68, 0.3);
|
||||
}
|
||||
.toolbar-icon[data-v-dc6aee90] {
|
||||
font-size: 0.875rem;
|
||||
color: #cbd5e1;
|
||||
}
|
||||
.toolbar-label[data-v-dc6aee90] {
|
||||
font-size: 0.5625rem;
|
||||
color: #94a3b8;
|
||||
margin-top: 0.0625rem;
|
||||
}
|
||||
.page-display[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.1875rem;
|
||||
padding: 0 0.3125rem;
|
||||
font-size: 0.75rem;
|
||||
color: #e2e8f0;
|
||||
font-weight: 600;
|
||||
min-width: 2.5rem;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* ========== 目录侧边栏 ========== */
|
||||
.toc-overlay[data-v-dc6aee90] {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 10001;
|
||||
}
|
||||
.toc-sidebar[data-v-dc6aee90] {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 13.75rem;
|
||||
background: #16213e;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-shadow: 0.25rem 0 1.25rem rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
.toc-header[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0.75rem 0.875rem;
|
||||
border-bottom: 0.0625rem solid rgba(255, 255, 255, 0.08);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.toc-header-title[data-v-dc6aee90] {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
color: #e2e8f0;
|
||||
}
|
||||
.toc-close[data-v-dc6aee90] {
|
||||
width: 1.625rem;
|
||||
height: 1.625rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
font-size: 0.875rem;
|
||||
color: #94a3b8;
|
||||
}
|
||||
.toc-close[data-v-dc6aee90]:active {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
.toc-list[data-v-dc6aee90] {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
.toc-item[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.625rem 0.875rem;
|
||||
border-bottom: 0.03125rem solid rgba(255, 255, 255, 0.04);
|
||||
gap: 0.4375rem;
|
||||
}
|
||||
.toc-item[data-v-dc6aee90]:active {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
.toc-active[data-v-dc6aee90] {
|
||||
background: rgba(14, 165, 233, 0.12);
|
||||
border-left: 0.1875rem solid #0ea5e9;
|
||||
}
|
||||
.toc-level-1 .toc-text[data-v-dc6aee90] {
|
||||
font-weight: 700;
|
||||
font-size: 0.8125rem;
|
||||
color: #e2e8f0;
|
||||
}
|
||||
.toc-level-2 .toc-text[data-v-dc6aee90] {
|
||||
padding-left: 0.75rem;
|
||||
font-size: 0.75rem;
|
||||
color: #cbd5e1;
|
||||
}
|
||||
.toc-level-3 .toc-text[data-v-dc6aee90] {
|
||||
padding-left: 1.5rem;
|
||||
font-size: 0.6875rem;
|
||||
color: #94a3b8;
|
||||
}
|
||||
.toc-bullet[data-v-dc6aee90] {
|
||||
font-size: 0.5rem;
|
||||
color: #0ea5e9;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.toc-text[data-v-dc6aee90] {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.toc-page[data-v-dc6aee90] {
|
||||
font-size: 0.625rem;
|
||||
color: #64748b;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* ========== 书本舞台 ========== */
|
||||
.book-stage[data-v-dc6aee90] {
|
||||
flex: 1;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #1a1a2e;
|
||||
}
|
||||
|
||||
/* ========== 3D 书本容器 ========== */
|
||||
.book-flip-container[data-v-dc6aee90] {
|
||||
width: 92%;
|
||||
height: 88%;
|
||||
position: relative;
|
||||
perspective: 1600px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
/* ========== 展开页(底层) ========== */
|
||||
.book-spread[data-v-dc6aee90] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
z-index: 1;
|
||||
}
|
||||
.book-page[data-v-dc6aee90] {
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
.book-page-left[data-v-dc6aee90] {
|
||||
border-radius: 0.375rem 0 0 0.375rem;
|
||||
}
|
||||
.book-page-right[data-v-dc6aee90] {
|
||||
border-radius: 0 0.375rem 0.375rem 0;
|
||||
}
|
||||
|
||||
/* ========== 翻页层 ========== */
|
||||
.book-flipper[data-v-dc6aee90] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
transform-style: preserve-3d;
|
||||
z-index: 10;
|
||||
}
|
||||
.flipper-right[data-v-dc6aee90] {
|
||||
right: 0;
|
||||
border-radius: 0 0.375rem 0.375rem 0;
|
||||
}
|
||||
.flipper-left[data-v-dc6aee90] {
|
||||
left: 0;
|
||||
border-radius: 0.375rem 0 0 0.375rem;
|
||||
}
|
||||
.flipper-face[data-v-dc6aee90] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
backface-visibility: hidden;
|
||||
-webkit-backface-visibility: hidden;
|
||||
overflow: hidden;
|
||||
}
|
||||
.flipper-front[data-v-dc6aee90] {
|
||||
z-index: 2;
|
||||
background: linear-gradient(135deg, #fefefe 0%, #f5f5f4 100%);
|
||||
}
|
||||
.flipper-right .flipper-front[data-v-dc6aee90] {
|
||||
border-radius: 0 0.375rem 0.375rem 0;
|
||||
box-shadow: -0.125rem 0 0.9375rem rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.flipper-left .flipper-front[data-v-dc6aee90] {
|
||||
border-radius: 0.375rem 0 0 0.375rem;
|
||||
box-shadow: 0.125rem 0 0.9375rem rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.flipper-back[data-v-dc6aee90] {
|
||||
transform: rotateY(180deg);
|
||||
background: linear-gradient(135deg, #fefefe 0%, #f5f5f4 100%);
|
||||
}
|
||||
.flipper-right .flipper-back[data-v-dc6aee90] {
|
||||
border-radius: 0.375rem 0 0 0.375rem;
|
||||
box-shadow: 0.125rem 0 0.9375rem rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.flipper-left .flipper-back[data-v-dc6aee90] {
|
||||
border-radius: 0 0.375rem 0.375rem 0;
|
||||
box-shadow: -0.125rem 0 0.9375rem rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
/* ========== 书脊线 ========== */
|
||||
.book-spine[data-v-dc6aee90] {
|
||||
position: absolute;
|
||||
top: 4%;
|
||||
left: 50%;
|
||||
bottom: 4%;
|
||||
width: 0.0625rem;
|
||||
background: linear-gradient(180deg,
|
||||
transparent 0%,
|
||||
rgba(0,0,0,0.15) 15%,
|
||||
rgba(0,0,0,0.15) 85%,
|
||||
transparent 100%);
|
||||
z-index: 5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ========== 页面内容通用 ========== */
|
||||
.page-scroll[data-v-dc6aee90] {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.page-content[data-v-dc6aee90] {
|
||||
min-height: 100%;
|
||||
padding: 1.25rem;
|
||||
background: linear-gradient(135deg, #fefefe 0%, #f5f5f4 100%);
|
||||
border-radius: 0.375rem;
|
||||
box-shadow: 0 0.25rem 1.25rem rgba(0, 0, 0, 0.35);
|
||||
color: #1e293b;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.8;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
/* ========== 底部翻页提示 ========== */
|
||||
.page-hint[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0.4375rem 1rem;
|
||||
flex-shrink: 0;
|
||||
background: rgba(26, 26, 46, 0.95);
|
||||
border-top: 0.0625rem solid rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
.hint-btn[data-v-dc6aee90] {
|
||||
padding: 0.3125rem 0.875rem;
|
||||
border-radius: 0.625rem;
|
||||
background: rgba(14, 165, 233, 0.15);
|
||||
color: #0ea5e9;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.hint-btn[data-v-dc6aee90]:active {
|
||||
background: rgba(14, 165, 233, 0.3);
|
||||
}
|
||||
.hint-disabled[data-v-dc6aee90] {
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: #475569;
|
||||
pointer-events: none;
|
||||
}
|
||||
.hint-center[data-v-dc6aee90] {
|
||||
font-size: 0.75rem;
|
||||
color: #94a3b8;
|
||||
padding: 0.3125rem 0.75rem;
|
||||
border-radius: 0.625rem;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
.hint-center[data-v-dc6aee90]:active {
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
}
|
||||
|
||||
/* 页面内部元素自适应 */
|
||||
.book-stage[data-v-dc6aee90] img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] th,
|
||||
.book-stage[data-v-dc6aee90] td {
|
||||
border: 0.03125rem solid #cbd5e1;
|
||||
padding: 0.375rem 0.5rem;
|
||||
text-align: left;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] th {
|
||||
background: #f1f5f9;
|
||||
font-weight: 600;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] pre {
|
||||
background: #1e293b;
|
||||
color: #e2e8f0;
|
||||
padding: 0.75rem;
|
||||
border-radius: 0.3125rem;
|
||||
overflow-x: auto;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] code {
|
||||
font-family: 'SF Mono', 'Menlo', monospace;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] blockquote {
|
||||
border-left: 0.1875rem solid #0ea5e9;
|
||||
padding: 0.5rem 0.875rem;
|
||||
margin: 0.625rem 0;
|
||||
background: #f0f9ff;
|
||||
border-radius: 0 0.25rem 0.25rem 0;
|
||||
color: #334155;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] h1 {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 800;
|
||||
color: #0f172a;
|
||||
margin: 0.5rem 0 0.75rem;
|
||||
padding-bottom: 0.375rem;
|
||||
border-bottom: 0.09375rem solid #0ea5e9;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] h2 {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
color: #1e293b;
|
||||
margin: 0.5rem 0 0.625rem;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] h3 {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 600;
|
||||
color: #334155;
|
||||
margin: 0.4375rem 0 0.5rem;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] h4,
|
||||
.book-stage[data-v-dc6aee90] h5,
|
||||
.book-stage[data-v-dc6aee90] h6 {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 600;
|
||||
color: #475569;
|
||||
margin: 0.375rem 0 0.4375rem;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] ul,
|
||||
.book-stage[data-v-dc6aee90] ol {
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] li {
|
||||
margin: 0.3125rem 0;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] p {
|
||||
margin: 0.4375rem 0;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] a {
|
||||
color: #0ea5e9;
|
||||
text-decoration: none;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] hr {
|
||||
border: none;
|
||||
border-top: 0.0625rem solid #e2e8f0;
|
||||
margin: 0.875rem 0;
|
||||
}
|
||||
.book-stage[data-v-dc6aee90] uni-video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
/* ========== 加载状态 ========== */
|
||||
.book-loading[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.9375rem;
|
||||
}
|
||||
.loading-spinner[data-v-dc6aee90] {
|
||||
width: 1.875rem;
|
||||
height: 1.875rem;
|
||||
border: 0.125rem solid rgba(14, 165, 233, 0.2);
|
||||
border-top-color: #0ea5e9;
|
||||
border-radius: 50%;
|
||||
animation: spin-dc6aee90 0.8s linear infinite;
|
||||
}
|
||||
@keyframes spin-dc6aee90 {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
.loading-text[data-v-dc6aee90] {
|
||||
font-size: 0.8125rem;
|
||||
color: #94a3b8;
|
||||
}
|
||||
|
||||
/* ========== 空状态 ========== */
|
||||
.book-empty[data-v-dc6aee90] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
.empty-icon[data-v-dc6aee90] {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
.empty-text[data-v-dc6aee90] {
|
||||
font-size: 0.875rem;
|
||||
color: #64748b;
|
||||
}
|
||||
|
||||
/* ========== 页码跳转浮层 ========== */
|
||||
.page-jump-bar[data-v-dc6aee90] {
|
||||
position: absolute;
|
||||
top: 0.5rem;
|
||||
right: 0.9375rem;
|
||||
z-index: 99;
|
||||
}
|
||||
.jump-input[data-v-dc6aee90] {
|
||||
width: 6.25rem;
|
||||
height: 1.875rem;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
border: 0.0625rem solid #0ea5e9;
|
||||
border-radius: 0.3125rem;
|
||||
padding: 0 0.625rem;
|
||||
font-size: 0.8125rem;
|
||||
color: #1e293b;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* ========== 错误提示 ========== */
|
||||
.error-toast[data-v-dc6aee90] {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background: rgba(239, 68, 68, 0.92);
|
||||
color: #fff;
|
||||
padding: 0.625rem 1.25rem;
|
||||
border-radius: 0.375rem;
|
||||
font-size: 0.8125rem;
|
||||
z-index: 10010;
|
||||
max-width: 80vw;
|
||||
text-align: center;
|
||||
}
|
||||
Reference in New Issue
Block a user