diff --git a/uniapp/components/NoteRichEditor.vue b/uniapp/components/NoteRichEditor.vue
index 49cd699..e57bf0a 100644
--- a/uniapp/components/NoteRichEditor.vue
+++ b/uniapp/components/NoteRichEditor.vue
@@ -1,64 +1,104 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ')">
+
+
+
+
+
+
+
+
+ ')">
+
+
+
+
+
+
+
+
+
+
+
+
+ 行
+
+
+
+ 行
+
+
+
+ 行
+
+
+
+ 列
+
+
+
+ 列
+
+
+
+ 列
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/uniapp/pages/login/login.vue b/uniapp/pages/login/login.vue
index 2febc48..76fc642 100644
--- a/uniapp/pages/login/login.vue
+++ b/uniapp/pages/login/login.vue
@@ -371,9 +371,11 @@ async function handleLogin() {
if (ok) navigateAfterLogin()
} catch (err) {
const msg = err?.message || '人机验证失败'
- if (msg !== '人机验证未通过') {
+ if (msg !== '人机验证未通过' && msg !== '已取消人机验证') {
uni.showToast({ title: msg, icon: 'none' })
}
+ } finally {
+ submitting.value = false
}
return
}
diff --git a/uniapp/pages/tools/notepad/edit.vue b/uniapp/pages/tools/notepad/edit.vue
index a78d82f..6de3f6b 100644
--- a/uniapp/pages/tools/notepad/edit.vue
+++ b/uniapp/pages/tools/notepad/edit.vue
@@ -49,6 +49,7 @@ import { ref, reactive } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { getNote, createNote, updateNote, deleteNote } from '@/api/note.js'
import { formatDate } from '@/utils/date.js'
+import { injectTableInlineStyles } from '@/utils/table-editor.js'
import NoteRichEditor from '@/components/NoteRichEditor.vue'
const noteId = ref('')
@@ -81,7 +82,7 @@ async function loadNote(id) {
return
}
form.title = note.title
- form.content = note.content
+ form.content = injectTableInlineStyles(note.content || '')
form.pinned = !!note.pinned
meta.updatedAt = note.updatedAt
} catch (e) {
@@ -97,16 +98,17 @@ async function onSave() {
}
saving.value = true
try {
+ const formattedContent = injectTableInlineStyles(form.content)
if (noteId.value) {
await updateNote(noteId.value, {
title: form.title,
- content: form.content,
+ content: formattedContent,
pinned: form.pinned
})
} else {
await createNote({
title: form.title,
- content: form.content,
+ content: formattedContent,
pinned: form.pinned
})
}
@@ -191,14 +193,16 @@ function onDelete() {
padding: 24rpx 28rpx 0 28rpx;
overflow: hidden;
border-top: 1rpx solid $color-divider;
+ min-height: 520rpx;
}
.note-editor {
width: 100%;
flex: 1;
- min-height: 0;
+ min-height: 440rpx;
box-sizing: border-box;
- overflow: hidden;
+ display: flex;
+ flex-direction: column;
background: #f5f7fa;
border-radius: 12rpx;
padding: 20rpx;
diff --git a/uniapp/src/styles/rich-content.scss b/uniapp/src/styles/rich-content.scss
index e2a26ab..927b872 100644
--- a/uniapp/src/styles/rich-content.scss
+++ b/uniapp/src/styles/rich-content.scss
@@ -1,34 +1,112 @@
/**
- * 富文本 HTML 展示样式(与 platform UmoEditor / TipTap 输出对齐)
- * 用于 editor 组件、rich-text、v-html 等场景
+ * 全局富文本与表格展示样式
+ * 深度覆盖 editor 原生组件、rich-text、.rich-content、.ql-editor 等所有富文本容器
*/
+
+/* ================= 全局默认表格规范(确保全端、全组件均有明显边框与表头底色) ================= */
+table {
+ display: table !important;
+ border-collapse: collapse !important;
+ border-spacing: 0 !important;
+ border: 1px solid #dcdfe6 !important;
+ width: 100% !important;
+ margin: 12px 0 !important;
+ table-layout: auto !important;
+ box-sizing: border-box !important;
+
+ tbody {
+ display: table-row-group !important;
+ }
+
+ thead {
+ display: table-header-group !important;
+ }
+
+ tr {
+ display: table-row !important;
+ border-bottom: 1px solid #ebeef5 !important;
+ }
+
+ th,
+ td {
+ display: table-cell !important;
+ border: 1px solid #dcdfe6 !important;
+ background-color: #ffffff;
+ color: #303133 !important;
+ padding: 8px 12px !important;
+ font-size: 26rpx !important;
+ min-width: 50px !important;
+ min-height: 36px !important;
+ line-height: 1.5 !important;
+ vertical-align: top !important;
+ word-break: break-word !important;
+ box-sizing: border-box !important;
+ user-select: text !important;
+ -webkit-user-select: text !important;
+ cursor: text !important;
+ }
+
+ th {
+ background-color: #f5f7fa !important;
+ font-weight: 600 !important;
+ color: #303133 !important;
+ }
+
+ p {
+ margin: 0 !important;
+ min-height: 1.4em !important;
+ line-height: 1.5 !important;
+ }
+}
+
+editor,
+uni-editor,
.ql-editor,
-.rich-content {
+.rich-content,
+.note-rich-editor {
+ width: 100%;
+ box-sizing: border-box;
overflow-x: auto;
+ font-size: 28rpx;
+ line-height: 1.6;
+ color: #303133;
p {
margin: 8px 0;
- line-height: 1.8;
+ line-height: 1.7;
}
+ h1, h2, h3, h4, h5, h6 {
+ font-weight: 600;
+ color: #303133;
+ margin: 12px 0 8px;
+ }
+
+ h1 { font-size: 36rpx; }
+ h2 { font-size: 32rpx; }
+ h3 { font-size: 30rpx; }
+
img,
video {
max-width: 100%;
height: auto;
+ border-radius: 8rpx;
+ margin: 8px 0;
}
blockquote {
- border-left: 4px solid #3973ff;
+ border-left: 4px solid #3c9cff;
background-color: #f5f7fa;
color: #606266;
padding: 8px 16px;
margin: 12px 0;
+ border-radius: 0 8rpx 8rpx 0;
}
pre {
background-color: #f5f7fa;
border: 1px solid #e4e7ed;
- border-radius: 4px;
+ border-radius: 8rpx;
padding: 12px 16px;
margin: 12px 0;
overflow-x: auto;
@@ -37,37 +115,11 @@
code {
background-color: #f5f7fa;
border: 1px solid #e4e7ed;
- border-radius: 3px;
+ border-radius: 6rpx;
padding: 2px 6px;
font-family: Consolas, Monaco, monospace;
- font-size: 13px;
- }
-
- table {
- border-collapse: collapse !important;
- border: 1px solid #e4e7ed !important;
- width: 100% !important;
- margin: 12px 0;
- table-layout: auto;
-
- th,
- td {
- border: 1px solid #e4e7ed !important;
- background-color: #ffffff !important;
- color: #303133 !important;
- padding: 8px 12px !important;
- min-width: 60px;
- vertical-align: top;
- word-break: break-word;
- user-select: text;
- -webkit-user-select: text;
- cursor: text;
- }
-
- th {
- background-color: #f5f7fa !important;
- font-weight: 600 !important;
- }
+ font-size: 24rpx;
+ color: #e6a23c;
}
ul,
@@ -77,7 +129,7 @@
}
li {
- line-height: 1.8;
+ line-height: 1.7;
margin: 4px 0;
}
diff --git a/uniapp/static/html/geetest-captcha.html b/uniapp/static/html/geetest-captcha.html
index 2c89cc1..c7984cd 100644
--- a/uniapp/static/html/geetest-captcha.html
+++ b/uniapp/static/html/geetest-captcha.html
@@ -8,67 +8,133 @@
html, body {
margin: 0;
padding: 0;
- background: rgba(0, 0, 0, 0.45);
+ background: #f5f7fa;
height: 100%;
+ overflow: hidden;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ .loading-text {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
+ font-size: 14px;
+ color: #909399;
+ letter-spacing: 0.5px;
}
+正在加载安全验证...