diff --git a/components.d.ts b/components.d.ts index 85bc554..140e0e2 100644 --- a/components.d.ts +++ b/components.d.ts @@ -31,14 +31,19 @@ declare module 'vue' { APagination: typeof import('ant-design-vue/es')['Pagination'] APopover: typeof import('ant-design-vue/es')['Popover'] AQrcode: typeof import('ant-design-vue/es')['QRCode'] + ARadio: typeof import('ant-design-vue/es')['Radio'] + ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] ASkeleton: typeof import('ant-design-vue/es')['Skeleton'] ASpin: typeof import('ant-design-vue/es')['Spin'] + AStep: typeof import('ant-design-vue/es')['Step'] + ASteps: typeof import('ant-design-vue/es')['Steps'] ATabPane: typeof import('ant-design-vue/es')['TabPane'] ATabs: typeof import('ant-design-vue/es')['Tabs'] ATag: typeof import('ant-design-vue/es')['Tag'] ATextarea: typeof import('ant-design-vue/es')['Textarea'] ATooltip: typeof import('ant-design-vue/es')['Tooltip'] AUpload: typeof import('ant-design-vue/es')['Upload'] + AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger'] BoxDog: typeof import('./src/components/BoxDog/BoxDog.vue')['default'] Card3D: typeof import('./src/components/Card3D/Card3D.vue')['default'] CloseCircleOutlined: typeof import('@ant-design/icons-vue')['CloseCircleOutlined'] @@ -51,11 +56,13 @@ declare module 'vue' { EyeOutlined: typeof import('@ant-design/icons-vue')['EyeOutlined'] ForgetPage: typeof import('./src/views/Forget/ForgetPage.vue')['default'] GithubOutlined: typeof import('@ant-design/icons-vue')['GithubOutlined'] + InboxOutlined: typeof import('@ant-design/icons-vue')['InboxOutlined'] LandingPage: typeof import('./src/views/Landing/LandingPage.vue')['default'] LockOutlined: typeof import('@ant-design/icons-vue')['LockOutlined'] LoginFooter: typeof import('./src/views/Login/LoginFooter.vue')['default'] LoginPage: typeof import('./src/views/Login/LoginPage.vue')['default'] MainPage: typeof import('./src/views/Main/MainPage.vue')['default'] + MessageReport: typeof import('./src/components/CommentReply/src/MessageReport/MessageReport.vue')['default'] NotFound: typeof import('./src/views/404/NotFound.vue')['default'] QqOutlined: typeof import('@ant-design/icons-vue')['QqOutlined'] QRLogin: typeof import('./src/views/QRLogin/QRLogin.vue')['default'] @@ -67,6 +74,7 @@ declare module 'vue' { RouterView: typeof import('vue-router')['RouterView'] SafetyOutlined: typeof import('@ant-design/icons-vue')['SafetyOutlined'] TabletOutlined: typeof import('@ant-design/icons-vue')['TabletOutlined'] + TypeSelect: typeof import('./src/components/CommentReply/src/MessageReport/TypeSelect.vue')['default'] UserOutlined: typeof import('@ant-design/icons-vue')['UserOutlined'] WarningOutlined: typeof import('@ant-design/icons-vue')['WarningOutlined'] WechatOutlined: typeof import('@ant-design/icons-vue')['WechatOutlined'] diff --git a/package.json b/package.json index a99703f..dcf5580 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,9 @@ "@types/animejs": "^3.1.12", "@types/crypto-js": "^4.2.2", "@types/json-stringify-safe": "^5.0.3", - "@types/node": "^22.8.1", + "@types/node": "^22.8.6", "@types/nprogress": "^0.2.3", - "@vueuse/core": "^11.1.0", + "@vueuse/core": "^11.2.0", "alova": "^3.1.1", "animejs": "^3.2.2", "ant-design-vue": "^4.2.5", @@ -33,7 +33,7 @@ "localforage": "^1.10.0", "nprogress": "^0.2.0", "nsfwjs": "^4.2.0", - "pinia": "^2.2.4", + "pinia": "^2.2.5", "pinia-plugin-persistedstate": "^4.1.2", "seedrandom": "^3.0.5", "unplugin-auto-import": "^0.18.3", @@ -49,15 +49,15 @@ "devDependencies": { "@eslint/js": "^9.13.0", "@vitejs/plugin-vue": "^5.1.4", - "eslint-plugin-vue": "^9.29.1", + "eslint-plugin-vue": "^9.30.0", "globals": "^15.11.0", - "sass": "^1.80.4", + "sass": "^1.80.5", "typescript": "^5.6.3", - "typescript-eslint": "^8.11.0", + "typescript-eslint": "^8.12.2", "unplugin-vue-components": "^0.27.4", "vite": "^5.4.10", "vite-plugin-bundle-obfuscator": "1.2.1", "vite-plugin-chunk-split": "^0.5.0", - "vue-tsc": "^2.1.8" + "vue-tsc": "^2.1.10" } } diff --git a/src/assets/styles/theme.scss b/src/assets/styles/theme.scss index 8a95415..f55352b 100644 --- a/src/assets/styles/theme.scss +++ b/src/assets/styles/theme.scss @@ -3,7 +3,10 @@ --text-color: #000000; // 着陆页背景颜色 --landing-background-color-main: #b9f187; + // 评论文字颜色 --comment-text-color: #767779; + // 评论子评论背景颜色 + --comment-child-background-color: #f5f5f5; } [data-dark="dark"] { @@ -11,7 +14,10 @@ --text-color: #ffffff; // 着陆页背景颜色 --landing-background-color-main: rgb(0, 0, 0); + // 评论文字颜色 --comment-text-color: #ffffff; + // 评论子评论背景颜色 + --comment-child-background-color: rgb(0, 0, 0); } #app { diff --git a/src/components/CommentReply/src/CommentInput/CommentInput.vue b/src/components/CommentReply/src/CommentInput/CommentInput.vue index f7f5f11..87f54e7 100644 --- a/src/components/CommentReply/src/CommentInput/CommentInput.vue +++ b/src/components/CommentReply/src/CommentInput/CommentInput.vue @@ -210,7 +210,6 @@ const getSlideCaptchaDataThrottled = useThrottleFn(comment.getSlideCaptchaData, */ async function showSlideCaptcha() { if (commentContent.value.trim() === "") { - message.error(t('comment.commentContentNotEmpty')); return; } if (comment.imageList.length > 3) { diff --git a/src/components/CommentReply/src/CommentList/CommentList.vue b/src/components/CommentReply/src/CommentList/CommentList.vue index 3ad74be..e04d090 100644 --- a/src/components/CommentReply/src/CommentList/CommentList.vue +++ b/src/components/CommentReply/src/CommentList/CommentList.vue @@ -94,13 +94,13 @@ {{ item.browser }} - + @@ -149,6 +154,7 @@ import useStore from "@/store"; import {useRouter} from "vue-router"; import ReplyInput from "@/components/CommentReply/src/ReplyInput/ReplyInput.vue"; import ReplyList from "@/components/CommentReply/src/ReplyList/ReplyList.vue"; +import MessageReport from "@/components/CommentReply/src/MessageReport/MessageReport.vue"; const {t} = useI18n(); @@ -158,6 +164,7 @@ const user = useStore().user; const topicId = ref("123"); +const showMessageReport = ref(false); /** * 获取评论列表 diff --git a/src/components/CommentReply/src/MessageReport/MessageReport.vue b/src/components/CommentReply/src/MessageReport/MessageReport.vue new file mode 100644 index 0000000..2261f0e --- /dev/null +++ b/src/components/CommentReply/src/MessageReport/MessageReport.vue @@ -0,0 +1,103 @@ + + + diff --git a/src/components/CommentReply/src/MessageReport/index.scss b/src/components/CommentReply/src/MessageReport/index.scss new file mode 100644 index 0000000..dc4e514 --- /dev/null +++ b/src/components/CommentReply/src/MessageReport/index.scss @@ -0,0 +1,16 @@ +.steps-content { + margin-top: 16px; + border: 1px dashed #e9e9e9; + border-radius: 10px; + background-color: #fafafa; + min-height: 200px; + text-align: center; + //padding-top: 80px; +} + +.steps-action { + display: flex; + flex-direction: row; + justify-content: flex-end; + margin-top: 24px; +} diff --git a/src/components/CommentReply/src/ReplyInput/ReplyInput.vue b/src/components/CommentReply/src/ReplyInput/ReplyInput.vue index 223111e..9208b42 100644 --- a/src/components/CommentReply/src/ReplyInput/ReplyInput.vue +++ b/src/components/CommentReply/src/ReplyInput/ReplyInput.vue @@ -155,7 +155,6 @@ const replySubmitDebounced = useDebounceFn(replySubmit, 500); */ async function replySubmit(point: any) { if (replyContent.value.trim() === "") { - message.error(t('comment.commentContentNotEmpty')); return; } if (comment.imageList.length > 3) { diff --git a/src/components/CommentReply/src/ReplyList/ReplyList.vue b/src/components/CommentReply/src/ReplyList/ReplyList.vue index 0eac89c..d6b95a9 100644 --- a/src/components/CommentReply/src/ReplyList/ReplyList.vue +++ b/src/components/CommentReply/src/ReplyList/ReplyList.vue @@ -79,7 +79,7 @@