fix-0430: 优化论坛页面展示

This commit is contained in:
Shu Guang 2025-04-06 21:59:05 +08:00
parent 6028118a63
commit 9ecf6e451a
43 changed files with 1078 additions and 392 deletions

6
.gitignore vendored
View File

@ -1,6 +1,6 @@
# .DS_Store .DS_Store
# node_modules node_modules
# /dist /dist
# # local env files # # local env files
# .env.local # .env.local

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/edit/tinymce.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/edit/tinymce.vue","mtime":1742646402768},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL3RpbnltY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwNjVlZTlhJnNjb3BlZD10cnVlIgppbXBvcnQgc2NyaXB0IGZyb20gIi4vdGlueW1jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmV4cG9ydCAqIGZyb20gIi4vdGlueW1jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi90aW55bWNlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTcwNjVlZTlhJnNjb3BlZD10cnVlJmxhbmc9Y3NzIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgIjcwNjVlZTlhIiwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNzA2NWVlOWEnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCc3MDY1ZWU5YScsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnNzA2NWVlOWEnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL3RpbnltY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwNjVlZTlhJnNjb3BlZD10cnVlIiwgZnVuY3Rpb24gKCkgewogICAgICBhcGkucmVyZW5kZXIoJzcwNjVlZTlhJywgewogICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zCiAgICAgIH0pCiAgICB9KQogIH0KfQpjb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAic3JjL2NvbXBvbmVudHMvZWRpdC90aW55bWNlLnZ1ZSIKZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHM="}]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/edit/tinymce.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/edit/tinymce.vue","mtime":1743947405816},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL3RpbnltY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwNjVlZTlhJnNjb3BlZD10cnVlIgppbXBvcnQgc2NyaXB0IGZyb20gIi4vdGlueW1jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmV4cG9ydCAqIGZyb20gIi4vdGlueW1jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi90aW55bWNlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTcwNjVlZTlhJnNjb3BlZD10cnVlJmxhbmc9Y3NzIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgIjcwNjVlZTlhIiwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNzA2NWVlOWEnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCc3MDY1ZWU5YScsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnNzA2NWVlOWEnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL3RpbnltY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwNjVlZTlhJnNjb3BlZD10cnVlIiwgZnVuY3Rpb24gKCkgewogICAgICBhcGkucmVyZW5kZXIoJzcwNjVlZTlhJywgewogICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zCiAgICAgIH0pCiAgICB9KQogIH0KfQpjb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAic3JjL2NvbXBvbmVudHMvZWRpdC90aW55bWNlLnZ1ZSIKZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHM="}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue","mtime":1742646402766},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL0xvZ2luU3RhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzNzQwOGU4JnNjb3BlZD10cnVlIgppbXBvcnQgc2NyaXB0IGZyb20gIi4vTG9naW5TdGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmV4cG9ydCAqIGZyb20gIi4vTG9naW5TdGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9Mb2dpblN0YXRlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWQzNzQwOGU4JnNjb3BlZD10cnVlJmxhbmc9c3R5bHVzIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgImQzNzQwOGU4IiwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnZDM3NDA4ZTgnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCdkMzc0MDhlOCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnZDM3NDA4ZTgnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL0xvZ2luU3RhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzNzQwOGU4JnNjb3BlZD10cnVlIiwgZnVuY3Rpb24gKCkgewogICAgICBhcGkucmVyZW5kZXIoJ2QzNzQwOGU4JywgewogICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zCiAgICAgIH0pCiAgICB9KQogIH0KfQpjb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAic3JjL2NvbXBvbmVudHMvY29tbW9uL0xvZ2luU3RhdGUudnVlIgpleHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cw=="}]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue","mtime":1743947900593},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL0xvZ2luU3RhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzNzQwOGU4JnNjb3BlZD10cnVlIgppbXBvcnQgc2NyaXB0IGZyb20gIi4vTG9naW5TdGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmV4cG9ydCAqIGZyb20gIi4vTG9naW5TdGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9Mb2dpblN0YXRlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWQzNzQwOGU4JnNjb3BlZD10cnVlJmxhbmc9c3R5bHVzIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgImQzNzQwOGU4IiwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnZDM3NDA4ZTgnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCdkMzc0MDhlOCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnZDM3NDA4ZTgnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL0xvZ2luU3RhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzNzQwOGU4JnNjb3BlZD10cnVlIiwgZnVuY3Rpb24gKCkgewogICAgICBhcGkucmVyZW5kZXIoJ2QzNzQwOGU4JywgewogICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zCiAgICAgIH0pCiAgICB9KQogIH0KfQpjb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAic3JjL2NvbXBvbmVudHMvY29tbW9uL0xvZ2luU3RhdGUudnVlIgpleHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cw=="}]}

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue?vue&type=template&id=76d05bf0&scoped=true","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue","mtime":1742646402773},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/templateLoader.js","mtime":1743264597097},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CjxkaXYgY2xhc3M9InRhYi1sYXlvdXQiPgogIDxhLXRhYnMKICAgIHR5cGU9ImVkaXRhYmxlLWNhcmQiCiAgICBjbGFzcz0idGFiLWJhciIKICAgIDpoaWRlLWFkZD0idHJ1ZSIKICAgIDphY3RpdmUta2V5PSJhY3RpdmVQYWdlIgogICAgQGNoYW5nZT0iY2hhbmdlUGFnZSIKICAgIEBlZGl0PSJlZGl0UGFnZSIKICAgIEBjb250ZXh0bWVudT0ib25Db250ZXh0bWVudSIKICA+CiAgICA8YS10YWItcGFuZSB2LWZvcj0icGFnZSBpbiBwYWdlTGlzdCIgOmtleT0icGFnZS5mdWxsUGF0aCI+CiAgICAgIDx0ZW1wbGF0ZSAjdGFiPgogICAgICAgIDxzcGFuIDpkYXRhLWtleT0icGFnZS5mdWxsUGF0aCI+CiAgICAgICAgICB7eyBwYWdlLm1ldGEudGl0bGUgfX0KICAgICAgICA8L3NwYW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2EtdGFiLXBhbmU+CiAgPC9hLXRhYnM+CiAgPFBhZ2VUb2dnbGVUcmFuc2l0aW9uIG5hbWU9ImZhZGVJbiI+CiAgICA8a2VlcC1hbGl2ZSA6ZXhjbHVkZT0iZHVzdGJpbiI+CiAgICAgIDxyb3V0ZXItdmlldyAvPgogICAgPC9rZWVwLWFsaXZlPgogIDwvUGFnZVRvZ2dsZVRyYW5zaXRpb24+CiAgPENvbnRleHRNZW51CiAgICA6bGlzdD0ibWVudUl0ZW1zIgogICAgOnZpc2libGUuc3luYz0ibWVudVZpc2libGUiCiAgICBAc2VsZWN0PSJvbk1lbnVTZWxlY3QiCiAgLz4KPC9kaXY+Cg=="},null]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue?vue&type=template&id=76d05bf0&scoped=true","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue","mtime":1743945250914},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/templateLoader.js","mtime":1743264597097},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CjxkaXYgY2xhc3M9InRhYi1sYXlvdXQiPgogIDxhLXRhYnMKICAgIHR5cGU9ImVkaXRhYmxlLWNhcmQiCiAgICBjbGFzcz0idGFiLWJhciIKICAgIDpoaWRlLWFkZD0idHJ1ZSIKICAgIDphY3RpdmUta2V5PSJhY3RpdmVQYWdlIgogICAgQGNoYW5nZT0iY2hhbmdlUGFnZSIKICAgIEBlZGl0PSJlZGl0UGFnZSIKICAgIEBjb250ZXh0bWVudT0ib25Db250ZXh0bWVudSIKICA+CiAgICA8YS10YWItcGFuZSB2LWZvcj0icGFnZSBpbiBwYWdlTGlzdCIgOmtleT0icGFnZS5mdWxsUGF0aCI+CiAgICAgIDx0ZW1wbGF0ZSAjdGFiPgogICAgICAgIDxzcGFuIDpkYXRhLWtleT0icGFnZS5mdWxsUGF0aCI+CiAgICAgICAgICB7eyBwYWdlLm1ldGEudGl0bGUgfX0KICAgICAgICA8L3NwYW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2EtdGFiLXBhbmU+CiAgPC9hLXRhYnM+CiAgPFBhZ2VUb2dnbGVUcmFuc2l0aW9uIG5hbWU9ImZhZGVJbiI+CiAgICA8a2VlcC1hbGl2ZSA6ZXhjbHVkZT0iZHVzdGJpbiI+CiAgICAgIDxyb3V0ZXItdmlldyAvPgogICAgPC9rZWVwLWFsaXZlPgogIDwvUGFnZVRvZ2dsZVRyYW5zaXRpb24+CiAgPENvbnRleHRNZW51CiAgICA6bGlzdD0ibWVudUl0ZW1zIgogICAgOnZpc2libGUuc3luYz0ibWVudVZpc2libGUiCiAgICBAc2VsZWN0PSJvbk1lbnVTZWxlY3QiCiAgLz4KPC9kaXY+Cg=="},null]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue?vue&type=template&id=6cf2f728","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue","mtime":1743939532635},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/templateLoader.js","mtime":1743264597097},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Cjxwcm8tbGF5b3V0CiAgOm1lbnVzPSJtZW51cyIKICA6Y29sbGFwc2VkPSJjb2xsYXBzZWQiCiAgOm1lZGlhUXVlcnk9InF1ZXJ5IgogIDppc01vYmlsZT0iaXNNb2JpbGUiCiAgOmhhbmRsZU1lZGlhUXVlcnk9ImhhbmRsZU1lZGlhUXVlcnkiCiAgOmhhbmRsZUNvbGxhcHNlPSJoYW5kbGVDb2xsYXBzZSIKICBmaXhlZEhlYWRlcgogIGZpeFNpZGVyYmFyCj4KICA8dGVtcGxhdGUgI21lbnVIZWFkZXJSZW5kZXI+CiAgICA8YS1hdmF0YXIgc3JjPSIvbG9nby5wbmciIDpzaXplPSI0MCIgLz4KICAgIDxoMT7nq57otZvnrqHnkIbns7vnu588L2gxPgogIDwvdGVtcGxhdGU+CiAgPHRlbXBsYXRlICNyaWdodENvbnRlbnRSZW5kZXI+CiAgICA8ZGl2IDpjbGFzcz0icmlnaHRDb250ZW50Q2xhc3MiPgogICAgICA8TG9naW5TdGF0ZSAvPgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KICA8dGVtcGxhdGUgI2Zvb3RlclJlbmRlcj4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb250YWluZXIiPgogICAgICDmoKHlm63kv6Hmga/ljJYt56ue6LWb566h55CG57O757ufIMKpMjAyNCBDcmVhdGVkIGJ5IOmZleilv+enkeaKgOWkp+WtpumVkOS6rOWtpumZogogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KICA8dGVtcGxhdGUgI2hlYWRlckNvbnRlbnRSZW5kZXI+CiAgICA8YS1icmVhZGNydW1iCiAgICAgIHN0eWxlPSJoZWlnaHQ6IDY0cHg7IGxpbmUtaGVpZ2h0OiA2NHB4IgogICAgICBjbGFzcz0iYnJlYWRjcnVtYiIKICAgICAgOnJvdXRlcz0iJHJvdXRlLm1hdGNoZWQiCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSAjaXRlbVJlbmRlcj0ieyByb3V0ZSB9Ij4KICAgICAgICB7eyByb3V0ZS5tZXRhLnRpdGxlIH19CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2EtYnJlYWRjcnVtYj4KICA8L3RlbXBsYXRlPgogIDxUYWJMYXlvdXQgLz4KPC9wcm8tbGF5b3V0Pgo="},null]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue?vue&type=template&id=6cf2f728","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue","mtime":1743947423844},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/templateLoader.js","mtime":1743264597097},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Cjxwcm8tbGF5b3V0CiAgOm1lbnVzPSJtZW51cyIKICA6Y29sbGFwc2VkPSJjb2xsYXBzZWQiCiAgOm1lZGlhUXVlcnk9InF1ZXJ5IgogIDppc01vYmlsZT0iaXNNb2JpbGUiCiAgOmhhbmRsZU1lZGlhUXVlcnk9ImhhbmRsZU1lZGlhUXVlcnkiCiAgOmhhbmRsZUNvbGxhcHNlPSJoYW5kbGVDb2xsYXBzZSIKICBmaXhlZEhlYWRlcgogIGZpeFNpZGVyYmFyCj4KICA8dGVtcGxhdGUgI21lbnVIZWFkZXJSZW5kZXI+CiAgICA8YS1hdmF0YXIgc3JjPSIvbG9nby5wbmciIDpzaXplPSI0MCIgLz4KICAgIDxoMT7nq57otZvnrqHnkIbns7vnu588L2gxPgogIDwvdGVtcGxhdGU+CiAgPHRlbXBsYXRlICNyaWdodENvbnRlbnRSZW5kZXI+CiAgICA8ZGl2IDpjbGFzcz0icmlnaHRDb250ZW50Q2xhc3MiPgogICAgICA8TG9naW5TdGF0ZSAvPgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KICA8dGVtcGxhdGUgI2Zvb3RlclJlbmRlcj4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb250YWluZXIiPgogICAgICDmoKHlm63kv6Hmga/ljJYt56ue6LWb566h55CG57O757ufIMKpMjAyNCBDcmVhdGVkIGJ5IOmZleilv+enkeaKgOWkp+WtpumVkOS6rOWtpumZogogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KICA8dGVtcGxhdGUgI2hlYWRlckNvbnRlbnRSZW5kZXI+CiAgICA8YS1icmVhZGNydW1iCiAgICAgIHN0eWxlPSJoZWlnaHQ6IDY0cHg7IGxpbmUtaGVpZ2h0OiA2NHB4IgogICAgICBjbGFzcz0iYnJlYWRjcnVtYiIKICAgICAgOnJvdXRlcz0iJHJvdXRlLm1hdGNoZWQiCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSAjaXRlbVJlbmRlcj0ieyByb3V0ZSB9Ij4KICAgICAgICB7eyByb3V0ZS5tZXRhLnRpdGxlIH19CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2EtYnJlYWRjcnVtYj4KICA8L3RlbXBsYXRlPgogIDxUYWJMYXlvdXQgLz4KPC9wcm8tbGF5b3V0Pgo="},null]}

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue","mtime":1743941931949},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MDZiOWQ1NCZzY29wZWQ9dHJ1ZSIKaW1wb3J0IHNjcmlwdCBmcm9tICIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyIKZXhwb3J0ICogZnJvbSAiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9pbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03MDZiOWQ1NCZsYW5nPWxlc3Mmc2NvcGVkPXRydWUiCgoKLyogbm9ybWFsaXplIGNvbXBvbmVudCAqLwppbXBvcnQgbm9ybWFsaXplciBmcm9tICIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIKdmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoCiAgc2NyaXB0LAogIHJlbmRlciwKICBzdGF0aWNSZW5kZXJGbnMsCiAgZmFsc2UsCiAgbnVsbCwKICAiNzA2YjlkNTQiLAogIG51bGwKICAKKQoKLyogaG90IHJlbG9hZCAqLwppZiAobW9kdWxlLmhvdCkgewogIHZhciBhcGkgPSByZXF1aXJlKCIvVXNlcnMvc2h1Z3VhbmcvRGVza3RvcC/mr5Xorr4vQ29kZU1hc3Rlci9Db2RlTWFzdGVyL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qcyIpCiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpCiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7CiAgICBtb2R1bGUuaG90LmFjY2VwdCgpCiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc3MDZiOWQ1NCcpKSB7CiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzcwNmI5ZDU0JywgY29tcG9uZW50Lm9wdGlvbnMpCiAgICB9IGVsc2UgewogICAgICBhcGkucmVsb2FkKCc3MDZiOWQ1NCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfQogICAgbW9kdWxlLmhvdC5hY2NlcHQoIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwNmI5ZDU0JnNjb3BlZD10cnVlIiwgZnVuY3Rpb24gKCkgewogICAgICBhcGkucmVyZW5kZXIoJzcwNmI5ZDU0JywgewogICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zCiAgICAgIH0pCiAgICB9KQogIH0KfQpjb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAic3JjL3ZpZXdzL2FjY291bnQvY2VudGVyL2luZGV4LnZ1ZSIKZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHM="}]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue","mtime":1743943089632},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MDZiOWQ1NCZzY29wZWQ9dHJ1ZSIKaW1wb3J0IHNjcmlwdCBmcm9tICIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyIKZXhwb3J0ICogZnJvbSAiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9pbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03MDZiOWQ1NCZsYW5nPWxlc3Mmc2NvcGVkPXRydWUiCgoKLyogbm9ybWFsaXplIGNvbXBvbmVudCAqLwppbXBvcnQgbm9ybWFsaXplciBmcm9tICIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIKdmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoCiAgc2NyaXB0LAogIHJlbmRlciwKICBzdGF0aWNSZW5kZXJGbnMsCiAgZmFsc2UsCiAgbnVsbCwKICAiNzA2YjlkNTQiLAogIG51bGwKICAKKQoKLyogaG90IHJlbG9hZCAqLwppZiAobW9kdWxlLmhvdCkgewogIHZhciBhcGkgPSByZXF1aXJlKCIvVXNlcnMvc2h1Z3VhbmcvRGVza3RvcC/mr5Xorr4vQ29kZU1hc3Rlci9Db2RlTWFzdGVyL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qcyIpCiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpCiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7CiAgICBtb2R1bGUuaG90LmFjY2VwdCgpCiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc3MDZiOWQ1NCcpKSB7CiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzcwNmI5ZDU0JywgY29tcG9uZW50Lm9wdGlvbnMpCiAgICB9IGVsc2UgewogICAgICBhcGkucmVsb2FkKCc3MDZiOWQ1NCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfQogICAgbW9kdWxlLmhvdC5hY2NlcHQoIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTcwNmI5ZDU0JnNjb3BlZD10cnVlIiwgZnVuY3Rpb24gKCkgewogICAgICBhcGkucmVyZW5kZXIoJzcwNmI5ZDU0JywgewogICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zCiAgICAgIH0pCiAgICB9KQogIH0KfQpjb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSAic3JjL3ZpZXdzL2FjY291bnQvY2VudGVyL2luZGV4LnZ1ZSIKZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHM="}]}

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue?vue&type=template&id=d37408e8&scoped=true","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue","mtime":1742646402766},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/templateLoader.js","mtime":1743264597097},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CjxhLWRyb3Bkb3duPgogIDxhLXNwaW4gdi1pZj0iIXVzZXIubmFtZSIgc2l6ZT0ic21hbGwiIC8+CiAgPGRpdiB2LWVsc2UgY2xhc3M9ImhlYWRlci1hdmF0YXIiPgogICAgPGEtaWNvbiBjbGFzcz0iYXZhdGFyIiB0eXBlPSJ1c2VyIiAvPgogICAgPHNwYW4gY2xhc3M9Im5hbWUiPnt7IHVzZXIubmFtZSB9fTwvc3Bhbj4KICA8L2Rpdj4KICA8YS1tZW51IHNsb3Q9Im92ZXJsYXkiPgogICAgPGEtbWVudS1pdGVtIGRpc2FibGVkPgogICAgICA8YS1pY29uIHR5cGU9InNtaWxlIiAvPgogICAgICB7eyB1c2VyLnJvbGUgJiYgdXNlci5yb2xlLmxhYmVsIH19CiAgICA8L2EtbWVudS1pdGVtPgogICAgPGEtbWVudS1pdGVtIEBjbGljaz0ibW9kaWZ5U2VsZkluZm8iPgogICAgICA8YS1pY29uIHR5cGU9InVzZXIiIC8+CiAgICAgIDxzcGFuPuS4quS6uuS/oeaBrzwvc3Bhbj4KICAgIDwvYS1tZW51LWl0ZW0+CiAgICA8YS1tZW51LWl0ZW0gQGNsaWNrPSJtb2RpZnlQYXNzd29yZCI+CiAgICAgIDxhLWljb24gdHlwZT0ibG9jayIgLz4KICAgICAgPHNwYW4+5L+u5pS55a+G56CBPC9zcGFuPgogICAgPC9hLW1lbnUtaXRlbT4KICAgIDxhLW1lbnUtZGl2aWRlciAvPgogICAgPGEtbWVudS1pdGVtIEBjbGljaz0ibG9nb3V0Ij4KICAgICAgPGEtaWNvbiB0eXBlPSJwb3dlcm9mZiIgLz4KICAgICAgPHNwYW4+6YCA5Ye655m75b2VPC9zcGFuPgogICAgPC9hLW1lbnUtaXRlbT4KICA8L2EtbWVudT4KPC9hLWRyb3Bkb3duPgo="},null]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue?vue&type=template&id=d37408e8&scoped=true","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/components/common/LoginState.vue","mtime":1743947900593},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/loaders/templateLoader.js","mtime":1743264597097},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CjxhLWRyb3Bkb3duPgogIDxhLXNwaW4gdi1pZj0iIXVzZXIiIHNpemU9InNtYWxsIiAvPgogIDxkaXYgdi1lbHNlIGNsYXNzPSJoZWFkZXItYXZhdGFyIj4KICAgIDxhLWljb24gY2xhc3M9ImF2YXRhciIgdHlwZT0idXNlciIgLz4KICAgIDxzcGFuIGNsYXNzPSJuYW1lIj57eyB1c2VyLnVzZXJOYW1lIH19PC9zcGFuPgogIDwvZGl2PgogIDxhLW1lbnUgc2xvdD0ib3ZlcmxheSI+CiAgICA8IS0tIDxhLW1lbnUtaXRlbSBkaXNhYmxlZD4KICAgICAgPGEtaWNvbiB0eXBlPSJzbWlsZSIgLz4KICAgICAge3sgdXNlci5yb2xlICYmIHVzZXIucm9sZS5sYWJlbCB9fQogICAgPC9hLW1lbnUtaXRlbT4gLS0+CiAgICA8YS1tZW51LWl0ZW0gQGNsaWNrPSJtb2RpZnlTZWxmSW5mbyI+CiAgICAgIDxhLWljb24gdHlwZT0idXNlciIgLz4KICAgICAgPHNwYW4+5Liq5Lq65L+h5oGvPC9zcGFuPgogICAgPC9hLW1lbnUtaXRlbT4KICAgIDxhLW1lbnUtaXRlbSBAY2xpY2s9Im1vZGlmeVBhc3N3b3JkIj4KICAgICAgPGEtaWNvbiB0eXBlPSJsb2NrIiAvPgogICAgICA8c3Bhbj7kv67mlLnlr4bnoIE8L3NwYW4+CiAgICA8L2EtbWVudS1pdGVtPgogICAgPGEtbWVudS1kaXZpZGVyIC8+CiAgICA8YS1tZW51LWl0ZW0gQGNsaWNrPSJsb2dvdXQiPgogICAgICA8YS1pY29uIHR5cGU9InBvd2Vyb2ZmIiAvPgogICAgICA8c3Bhbj7pgIDlh7rnmbvlvZU8L3NwYW4+CiAgICA8L2EtbWVudS1pdGVtPgogIDwvYS1tZW51Pgo8L2EtZHJvcGRvd24+Cg=="},null]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue","mtime":1743939532635},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL0dsb2JhbExheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmNmMmY3MjgiCmltcG9ydCBzY3JpcHQgZnJvbSAiLi9HbG9iYWxMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzIgpleHBvcnQgKiBmcm9tICIuL0dsb2JhbExheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9HbG9iYWxMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NmNmMmY3MjgmbGFuZz1sZXNzIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgbnVsbCwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNmNmMmY3MjgnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCc2Y2YyZjcyOCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnNmNmMmY3MjgnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL0dsb2JhbExheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmNmMmY3MjgiLCBmdW5jdGlvbiAoKSB7CiAgICAgIGFwaS5yZXJlbmRlcignNmNmMmY3MjgnLCB7CiAgICAgICAgcmVuZGVyOiByZW5kZXIsCiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMKICAgICAgfSkKICAgIH0pCiAgfQp9CmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJzcmMvbGF5b3V0cy9HbG9iYWxMYXlvdXQudnVlIgpleHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cw=="}]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/GlobalLayout.vue","mtime":1743947423844},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL0dsb2JhbExheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmNmMmY3MjgiCmltcG9ydCBzY3JpcHQgZnJvbSAiLi9HbG9iYWxMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzIgpleHBvcnQgKiBmcm9tICIuL0dsb2JhbExheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9HbG9iYWxMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NmNmMmY3MjgmbGFuZz1sZXNzIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgbnVsbCwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNmNmMmY3MjgnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCc2Y2YyZjcyOCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnNmNmMmY3MjgnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL0dsb2JhbExheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmNmMmY3MjgiLCBmdW5jdGlvbiAoKSB7CiAgICAgIGFwaS5yZXJlbmRlcignNmNmMmY3MjgnLCB7CiAgICAgICAgcmVuZGVyOiByZW5kZXIsCiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMKICAgICAgfSkKICAgIH0pCiAgfQp9CmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJzcmMvbGF5b3V0cy9HbG9iYWxMYXlvdXQudnVlIgpleHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cw=="}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue","mtime":1742646402773},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL1RhYkxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzZkMDViZjAmc2NvcGVkPXRydWUiCmltcG9ydCBzY3JpcHQgZnJvbSAiLi9UYWJMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzIgpleHBvcnQgKiBmcm9tICIuL1RhYkxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9UYWJMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzZkMDViZjAmc2NvcGVkPXRydWUmbGFuZz1jc3MiCgoKLyogbm9ybWFsaXplIGNvbXBvbmVudCAqLwppbXBvcnQgbm9ybWFsaXplciBmcm9tICIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIKdmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoCiAgc2NyaXB0LAogIHJlbmRlciwKICBzdGF0aWNSZW5kZXJGbnMsCiAgZmFsc2UsCiAgbnVsbCwKICAiNzZkMDViZjAiLAogIG51bGwKICAKKQoKLyogaG90IHJlbG9hZCAqLwppZiAobW9kdWxlLmhvdCkgewogIHZhciBhcGkgPSByZXF1aXJlKCIvVXNlcnMvc2h1Z3VhbmcvRGVza3RvcC/mr5Xorr4vQ29kZU1hc3Rlci9Db2RlTWFzdGVyL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qcyIpCiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpCiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7CiAgICBtb2R1bGUuaG90LmFjY2VwdCgpCiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc3NmQwNWJmMCcpKSB7CiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzc2ZDA1YmYwJywgY29tcG9uZW50Lm9wdGlvbnMpCiAgICB9IGVsc2UgewogICAgICBhcGkucmVsb2FkKCc3NmQwNWJmMCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfQogICAgbW9kdWxlLmhvdC5hY2NlcHQoIi4vVGFiTGF5b3V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03NmQwNWJmMCZzY29wZWQ9dHJ1ZSIsIGZ1bmN0aW9uICgpIHsKICAgICAgYXBpLnJlcmVuZGVyKCc3NmQwNWJmMCcsIHsKICAgICAgICByZW5kZXI6IHJlbmRlciwKICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucwogICAgICB9KQogICAgfSkKICB9Cn0KY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gInNyYy9sYXlvdXRzL1RhYkxheW91dC52dWUiCmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRz"}]} {"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/layouts/TabLayout.vue","mtime":1743945250914},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tICIuL1RhYkxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzZkMDViZjAmc2NvcGVkPXRydWUiCmltcG9ydCBzY3JpcHQgZnJvbSAiLi9UYWJMYXlvdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzIgpleHBvcnQgKiBmcm9tICIuL1RhYkxheW91dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMiCmltcG9ydCBzdHlsZTAgZnJvbSAiLi9UYWJMYXlvdXQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzZkMDViZjAmbGFuZz1sZXNzJnNjb3BlZD10cnVlIgoKCi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi8KaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSAiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiCnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKAogIHNjcmlwdCwKICByZW5kZXIsCiAgc3RhdGljUmVuZGVyRm5zLAogIGZhbHNlLAogIG51bGwsCiAgIjc2ZDA1YmYwIiwKICBudWxsCiAgCikKCi8qIGhvdCByZWxvYWQgKi8KaWYgKG1vZHVsZS5ob3QpIHsKICB2YXIgYXBpID0gcmVxdWlyZSgiL1VzZXJzL3NodWd1YW5nL0Rlc2t0b3Av5q+V6K6+L0NvZGVNYXN0ZXIvQ29kZU1hc3Rlci9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanMiKQogIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKQogIGlmIChhcGkuY29tcGF0aWJsZSkgewogICAgbW9kdWxlLmhvdC5hY2NlcHQoKQogICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNzZkMDViZjAnKSkgewogICAgICBhcGkuY3JlYXRlUmVjb3JkKCc3NmQwNWJmMCcsIGNvbXBvbmVudC5vcHRpb25zKQogICAgfSBlbHNlIHsKICAgICAgYXBpLnJlbG9hZCgnNzZkMDViZjAnLCBjb21wb25lbnQub3B0aW9ucykKICAgIH0KICAgIG1vZHVsZS5ob3QuYWNjZXB0KCIuL1RhYkxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzZkMDViZjAmc2NvcGVkPXRydWUiLCBmdW5jdGlvbiAoKSB7CiAgICAgIGFwaS5yZXJlbmRlcignNzZkMDViZjAnLCB7CiAgICAgICAgcmVuZGVyOiByZW5kZXIsCiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMKICAgICAgfSkKICAgIH0pCiAgfQp9CmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9ICJzcmMvbGF5b3V0cy9UYWJMYXlvdXQudnVlIgpleHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cw=="}]}

View File

@ -1,9 +1,9 @@
<script> <script>
import { merge, isFunction } from 'lodash-es'; import { merge, isFunction } from "lodash-es";
import ColumnSetting from '@/components/common/ColumnSetting'; import ColumnSetting from "@/components/common/ColumnSetting";
export default { export default {
name: 'AntTable', name: "AntTable",
props: { props: {
// v-model // v-model
value: { value: {
@ -12,7 +12,7 @@ export default {
}, },
rowKey: { rowKey: {
type: [String, Function], type: [String, Function],
default: 'id', default: "id",
}, },
columns: { columns: {
type: Array, type: Array,
@ -20,7 +20,7 @@ export default {
}, },
size: { size: {
type: String, type: String,
default: 'middle', default: "middle",
}, },
rowSelection: { rowSelection: {
type: Object, type: Object,
@ -47,11 +47,11 @@ export default {
const allProps = { const allProps = {
scopedSlots: this.$scopedSlots, scopedSlots: this.$scopedSlots,
on: this.$listeners, on: this.$listeners,
props: merge({ props: merge(
{
size: this.customSize, size: this.customSize,
rowKey: this.rowKey, rowKey: this.rowKey,
columns: this.customTableColumns, columns: this.customTableColumns,
bordered: true,
scroll: { x: 1000 }, scroll: { x: 1000 },
rowSelection: useVModel rowSelection: useVModel
? { selectedRowKeys: this.value, onChange: input } ? { selectedRowKeys: this.value, onChange: input }
@ -59,9 +59,11 @@ export default {
pagination: { pagination: {
showQuickJumper: true, showQuickJumper: true,
showSizeChanger: true, showSizeChanger: true,
showTotal: total => `${total} 条记录`, showTotal: (total) => `${total} 条记录`,
}, },
}, this.$attrs), },
this.$attrs
),
}; };
return ( return (
<div class="table-wrapper"> <div class="table-wrapper">
@ -70,14 +72,16 @@ export default {
<div class="right"> <div class="right">
<ColumnSetting <ColumnSetting
columns={this.columns} columns={this.columns}
onChange={e => { this.customTableColumns = e; }} onChange={(e) => {
this.customTableColumns = e;
}}
/> />
</div> </div>
</div> </div>
<a-divider style="margin: 10px 0" /> <a-divider style="margin: 10px 0" />
<a-table {...allProps}> <a-table {...allProps}>
{/* 原样传递插槽 */} {/* 原样传递插槽 */}
{Object.keys(this.$slots).map(name => ( {Object.keys(this.$slots).map((name) => (
<template slot={name}>{this.$slots[name]}</template> <template slot={name}>{this.$slots[name]}</template>
))} ))}
</a-table> </a-table>

View File

@ -1,15 +1,15 @@
<template> <template>
<a-dropdown> <a-dropdown>
<a-spin v-if="!user.name" size="small" /> <a-spin v-if="!user" size="small" />
<div v-else class="header-avatar"> <div v-else class="header-avatar">
<a-icon class="avatar" type="user" /> <a-icon class="avatar" type="user" />
<span class="name">{{ user.name }}</span> <span class="name">{{ user.userName }}</span>
</div> </div>
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item disabled> <!-- <a-menu-item disabled>
<a-icon type="smile" /> <a-icon type="smile" />
{{ user.role && user.role.label }} {{ user.role && user.role.label }}
</a-menu-item> </a-menu-item> -->
<a-menu-item @click="modifySelfInfo"> <a-menu-item @click="modifySelfInfo">
<a-icon type="user" /> <a-icon type="user" />
<span>个人信息</span> <span>个人信息</span>
@ -28,39 +28,42 @@
</template> </template>
<script> <script>
import UpdatePassword from '@/components/common/UpdatePassword'; import UpdatePassword from "@/components/common/UpdatePassword";
import EditStudent from '@/components/edit/EditStudent'; import EditStudent from "@/components/edit/EditStudent";
import EditTeacher from '@/components/edit/EditTeacher'; import EditTeacher from "@/components/edit/EditTeacher";
import { mapState, mapActions } from 'vuex'; import { mapState, mapActions } from "vuex";
export default { export default {
name: 'LoginState', name: "LoginState",
computed: { computed: {
...mapState(['user']), ...mapState(["user"]),
}, },
methods: { methods: {
...mapActions(['initUser']), ...mapActions(["initUser"]),
logout() { logout() {
this.$store.commit('logout'); this.$store.commit("logout");
this.$router.replace('/login'); this.$router.replace("/login");
}, },
modifyPassword() { modifyPassword() {
let vnode; let vnode;
this.$drawer({ this.$drawer({
title: '修改密码', title: "修改密码",
content: h => (vnode = <UpdatePassword />), content: (h) => (vnode = <UpdatePassword />),
onOk: async () => { onOk: async () => {
const values = await vnode.componentInstance.validate(); const values = await vnode.componentInstance.validate();
return this.$api.updatePassword({ return this.$api
.updatePassword({
account: this.user.account, account: this.user.account,
identity: this.user.identity, identity: this.user.identity,
oldVal: values.oldVal, oldVal: values.oldVal,
newVal: values.newVal, newVal: values.newVal,
}).then(() => { })
this.$message.success('修改成功'); .then(() => {
}).catch(e => { this.$message.success("修改成功");
})
.catch((e) => {
console.error(e); console.error(e);
this.$message.error(e.msg || '修改失败'); this.$message.error(e.msg || "修改失败");
throw e; throw e;
}); });
}, },
@ -69,10 +72,14 @@ export default {
modifySelfInfo() { modifySelfInfo() {
let vnode; let vnode;
this.$drawer({ this.$drawer({
title: '修改个人信息', title: "修改个人信息",
content: h => (vnode = this.$store.state.user.userPrivileges == 2 content: (h) =>
? <EditStudent type="update" data={this.user} /> (vnode =
: <EditTeacher type="update" data={this.user} />), this.$store.state.user.userPrivileges == 2 ? (
<EditStudent type="update" data={this.user} />
) : (
<EditTeacher type="update" data={this.user} />
)),
onOk: async () => { onOk: async () => {
const values = await vnode.componentInstance.validate(); const values = await vnode.componentInstance.validate();
const data = { const data = {
@ -80,15 +87,16 @@ export default {
email: values.email, email: values.email,
UserPassword: values.password, UserPassword: values.password,
sTId: values.stid, sTId: values.stid,
} };
return this.$api.updateUser( return this.$api
data .updateUser(data)
).then(() => { .then(() => {
this.$message.success('修改成功'); this.$message.success("修改成功");
this.$store.dispatch('initUser'); this.$store.dispatch("initUser");
}).catch(e => { })
.catch((e) => {
console.error(e); console.error(e);
this.$message.error(e.msg || '修改失败'); this.$message.error(e.msg || "修改失败");
throw e; throw e;
}); });
}, },

View File

@ -1,31 +1,103 @@
<template> <template>
<div class="tinymce-editor"> <div class="tinymce-editor fade-in">
<a-input v-model="ArticleTitle" placeholder="请输入文字标题" /> <!-- 页面标题 -->
<div class="editor-header">
<h1 class="editor-title">创建新文章</h1>
<p class="editor-subtitle">分享你的知识经验和创意</p>
</div>
<!-- 文章标题输入 -->
<a-input
v-model="ArticleTitle"
placeholder="请输入文章标题 (5-50字)"
class="article-title-input"
:maxLength="50"
:allowClear="true"
/>
<!-- 文章简介输入 -->
<a-textarea <a-textarea
v-model="briefContent" v-model="briefContent"
placeholder="请输入文章简介" placeholder="请输入文章简介,简明扼要地介绍文章内容 (50-200字)"
:auto-size="{ minRows: 2, maxRows: 5 }" :auto-size="{ minRows: 2, maxRows: 5 }"
class="article-brief-textarea"
:maxLength="200"
/> />
<a-form-item style="width: 100%" label="选择比赛与类型:">
<!-- 文章信息 -->
<div class="article-info-card fade-in-delay-1">
<div class="info-title">
<a-icon type="info-circle" />
<span>文章信息</span>
</div>
<div class="form-item-container">
<!-- 选择比赛 -->
<a-form-item label="选择相关比赛">
<a-select <a-select
v-model="competitionId" v-model="competitionId"
style="width: 100%"
:options="grades" :options="grades"
allowClear allowClear
:placeholder="请选择相关比赛" placeholder="请选择相关比赛"
/> :showSearch="true"
<a-select :filterOption="filterOption"
v-model="articleType" >
style="width: 100%" <template slot="suffixIcon">
:options="message" <a-icon type="trophy" />
allowClear </template>
:placeholder="选择类型" </a-select>
/>
</a-form-item> </a-form-item>
<!-- 选择文章类型 -->
<a-form-item label="文章类型">
<a-select
v-model="articleType"
:options="message"
allowClear
placeholder="请选择文章类型"
>
<template slot="suffixIcon">
<a-icon type="tags" />
</template>
</a-select>
</a-form-item>
</div>
</div>
<!-- 文章封面 -->
<!-- <div class="cover-upload fade-in-delay-2">
<div class="cover-title">
<a-icon type="picture" />
<span style="margin-left: 8px">文章封面</span>
</div>
<p class="cover-description">
一个好的封面图能够吸引更多读者建议尺寸 900×500 像素
</p>
<div class="cover-preview hover-lift">
<img v-if="coverUrl" :src="coverUrl" alt="文章封面" />
<div v-else class="upload-placeholder">
<a-icon type="file-image" style="font-size: 48px; color: #d9d9d9" />
<p style="margin-top: 16px; color: #999">点击上传封面图片</p>
</div>
<a-upload
name="file"
:showUploadList="false"
:beforeUpload="beforeUpload"
@change="handleCoverChange"
>
<a-button type="primary" class="cover-upload-btn">
<a-icon :type="coverUrl ? 'edit' : 'upload'" />
{{ coverUrl ? "更换封面" : "上传封面" }}
</a-button>
</a-upload>
</div>
</div> -->
<!-- 编辑器容器 -->
<div class="editor-container fade-in-delay-2">
<Editor <Editor
:id="tinymceId" :id="tinymceId"
:init="init" :init="init"
@ -33,25 +105,55 @@
v-model="myValue" v-model="myValue"
@onClick="onClick" @onClick="onClick"
></Editor> ></Editor>
<a-button type="primary" @click="SendTinymce">发布文章</a-button> <div class="word-count">字数: {{ wordCount }}</div>
</div>
<!-- 内容预览区域 -->
<div v-if="showPreview" class="preview-container fade-in">
<div class="preview-title">
<a-icon type="eye" />
<span>文章预览</span>
</div>
<div class="preview-content" v-html="myValue"></div>
</div>
<!-- 操作按钮 -->
<div class="publish-container">
<a-button @click="togglePreview" style="margin-right: 16px">
<a-icon :type="showPreview ? 'eye-invisible' : 'eye'" />
{{ showPreview ? "关闭预览" : "预览文章" }}
</a-button>
<a-button type="primary" class="publish-btn" @click="confirmPublish">
<a-icon type="plus" />
发布文章
</a-button>
</div>
</div> </div>
</template> </template>
<script> <script>
import { message } from "@/utils/const"; import { message } from "@/utils/const";
import {createArticle,AllCompetition,SendSMS,SendEmail,AllArticle} from "@/api" import {
import tinymce from 'tinymce/tinymce' //tinymcehidden createArticle,
import Editor from '@tinymce/tinymce-vue'// AllCompetition,
import 'tinymce/themes/silver/theme'// SendSMS,
import 'tinymce/icons/default' //icon SendEmail,
AllArticle,
} from "@/api";
import tinymce from "tinymce/tinymce"; //tinymcehidden
import Editor from "@tinymce/tinymce-vue"; //
import "tinymce/themes/silver/theme"; //
import "tinymce/icons/default"; //icon
// //
import 'tinymce/plugins/advlist' // import "tinymce/plugins/advlist"; //
import 'tinymce/plugins/autolink' // import "tinymce/plugins/autolink"; //
import 'tinymce/plugins/link' // import "tinymce/plugins/link"; //
import 'tinymce/plugins/image' // import "tinymce/plugins/image"; //
import 'tinymce/plugins/lists' // import "tinymce/plugins/lists"; //
import 'tinymce/plugins/charmap' // import "tinymce/plugins/charmap"; //
import 'tinymce/plugins/media' // import "tinymce/plugins/media"; //
import 'tinymce/plugins/wordcount'// import "tinymce/plugins/wordcount"; //
// import Cookies from "js-cookie"; // import Cookies from "js-cookie";
const fonts = [ const fonts = [
@ -79,38 +181,39 @@ const fonts = [
"Trebuchet MS=trebuchet ms,geneva", "Trebuchet MS=trebuchet ms,geneva",
"Verdana=verdana,geneva", "Verdana=verdana,geneva",
"Webdings=webdings", "Webdings=webdings",
"Wingdings=wingdings,zapf dingbats" "Wingdings=wingdings,zapf dingbats",
]; ];
export default { export default {
components: { components: {
Editor Editor,
}, },
props: { props: {
// //
value: { value: {
type: String, type: String,
default: '' default: "",
}, },
// //
disabled: { disabled: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
// tinymce // tinymce
tinymceId: { tinymceId: {
type: String, type: String,
default: "tinymce" default: "tinymce",
}, },
// //
plugins: { plugins: {
type: [String, Array], type: [String, Array],
default: 'advlist autolink link image lists charmap media wordcount' default: "advlist autolink link image lists charmap media wordcount",
}, },
// //
toolbar: { toolbar: {
type: [String, Array], type: [String, Array],
default: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table' default:
} "undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table",
},
}, },
data() { data() {
return { return {
@ -123,86 +226,88 @@ export default {
articleType: "", articleType: "",
briefContent: "", briefContent: "",
init: { init: {
selector: '#' + this.tinymceId, selector: "#" + this.tinymceId,
language_url: '@/components/edit/zh_CN.js',//publicstatic language_url: "@/components/edit/zh_CN.js", //publicstatic
language: 'zh_CN', language: "zh_CN",
skin_url: '/tinymce/skins/ui/oxide',// skin_url: "/tinymce/skins/ui/oxide", //
plugins: this.plugins, // plugins: this.plugins, //
// //
toolbar: this.toolbar, toolbar: this.toolbar,
toolbar_location: '/', toolbar_location: "/",
fontsize_formats: '12px 14px 16px 18px 20px 22px 24px 28px 32px 36px 48px 56px 72px', // fontsize_formats:
"12px 14px 16px 18px 20px 22px 24px 28px 32px 36px 48px 56px 72px", //
font_formats: fonts.join(";"), font_formats: fonts.join(";"),
content_style: "p {margin: 0px; border:0px ; padding: 0px}", // p content_style: "p {margin: 0px; border:0px ; padding: 0px}", // p
width: "100%", width: "100%",
// height: 500,// // height: 500,//
placeholder: '在这里输入文字', placeholder: "在这里输入文字",
branding: false, // branding: false, //
// //
}, },
ArticleId: "", ArticleId: "",
Article: {}, Article: {},
} };
}, },
watch: { watch: {
// //
value(newValue) { value(newValue) {
this.myValue = (newValue == null ? '' : newValue) this.myValue = newValue == null ? "" : newValue;
}, },
myValue(newValue) { myValue(newValue) {
if (this.triggerChange) { if (this.triggerChange) {
this.$emit('change', newValue) this.$emit("change", newValue);
} else { } else {
this.$emit('input', newValue) this.$emit("input", newValue);
}
} }
}, },
},
mounted() { mounted() {
tinymce.init({}) tinymce.init({});
// console.log(this.toolbar,'======') // console.log(this.toolbar,'======')
this.GetAritle() this.GetAritle();
AllCompetition().then(response => { AllCompetition()
.then((response) => {
// //
const competitions = response.data; const competitions = response.data;
// select // select
const selectOptions = competitions.map(competition => ({ const selectOptions = competitions.map((competition) => ({
label: competition.competitionName, label: competition.competitionName,
value: competition.competitionId value: competition.competitionId,
})); }));
// Vue便使 // Vue便使
this.grades = selectOptions; this.grades = selectOptions;
}).catch(error => { })
.catch((error) => {
console.error(error); console.error(error);
}); });
}, },
methods: { methods: {
GetAritle() { GetAritle() {
console.log(this.ArticleId) console.log(this.ArticleId);
if(this.ArticleId!=''||null){ if (this.ArticleId != "" || null) {
AllArticle().then((res) => { AllArticle().then((res) => {
res.data.forEach(item=>{ res.data.forEach((item) => {
console.log(item) console.log(item);
if (item.articleId == this.ArticleId) { if (item.articleId == this.ArticleId) {
console.log(item) console.log(item);
this.competitionId=item.competitionId this.competitionId = item.competitionId;
this.ArticleTitle = item.articleTitle, (this.ArticleTitle = item.articleTitle),
this.myValue=item.articleContent, (this.myValue = item.articleContent),
this.articleType=item.articleType, (this.articleType = item.articleType),
this.briefContent=item.briefContent (this.briefContent = item.briefContent);
} }
}) });
}) });
} }
}, },
onClick(e) { onClick(e) {
this.$emit('onClick', e, tinymce) this.$emit("onClick", e, tinymce);
}, },
// //
clear() { clear() {
this.myValue = '' this.myValue = "";
}, },
SendTinymce() { SendTinymce() {
const data = { const data = {
@ -211,39 +316,42 @@ export default {
competitionId: this.competitionId, competitionId: this.competitionId,
articleType: this.articleType, articleType: this.articleType,
articleTitle: this.ArticleTitle, articleTitle: this.ArticleTitle,
articleContent: this.myValue articleContent: this.myValue,
}; };
createArticle(data) createArticle(data)
.then(res => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
this.$message.success('发送成功'); this.$message.success("发送成功");
this.articleId=res.data this.articleId = res.data;
if (this.articleType == '公告') { if (this.articleType == "公告") {
// //
this.$modal.confirm({ this.$modal.confirm({
title: `确认发送短信与邮件通知用户?`, title: `确认发送短信与邮件通知用户?`,
onOk: () => { onOk: () => {
let data = { let data = {
competitionId: this.competitionId, competitionId: this.competitionId,
articleId:this.articleId articleId: this.articleId,
} };
this.$api.SendEmail(data).then(() => { this.$api
.SendEmail(data)
.then(() => {
this.$api.SendSMS(data).then(() => { this.$api.SendSMS(data).then(() => {
this.$message.success('短信邮件提醒成功!'); this.$message.success("短信邮件提醒成功!");
});
}) })
}).catch(e => { .catch((e) => {
this.$message.error(e.msg || '发送失败!'); this.$message.error(e.msg || "发送失败!");
throw e; throw e;
}) });
} },
}); });
} }
} else { } else {
throw new Error("发布失败"); throw new Error("发布失败");
} }
}) })
.then(notificationData => { .then((notificationData) => {
if (notificationData) { if (notificationData) {
return SendEmail(notificationData) return SendEmail(notificationData)
.then(() => SendSMS(notificationData)) .then(() => SendSMS(notificationData))
@ -252,20 +360,480 @@ export default {
}); });
} }
}) })
.catch(error => { .catch((error) => {
console.error(error); console.error(error);
this.$notify.error({ title: '错误', message: error.message }); this.$notify.error({ title: "错误", message: error.message });
}); });
} },
},
} };
}
</script> </script>
<style scoped> <style scoped>
/* 在线发帖页面美化样式 */
/* 整体容器样式 */
.tinymce-editor { .tinymce-editor {
/* max-width: 1200px; */
margin: 0 auto;
padding: 30px;
background-color: #fff;
border-radius: 16px;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.08);
position: relative;
}
/* 页面标题 */
.editor-header {
text-align: center;
margin-bottom: 40px;
position: relative;
}
.editor-title {
font-size: 28px;
font-weight: 600;
color: #333;
margin-bottom: 10px;
position: relative;
display: inline-block;
}
.editor-title::after {
content: "";
position: absolute;
bottom: -10px;
left: 50%;
transform: translateX(-50%);
width: 80px;
height: 4px;
background: linear-gradient(90deg, #3690cf, #6dc6ff);
border-radius: 2px;
}
.editor-subtitle {
font-size: 16px;
color: #666;
margin-top: 20px;
}
/* 输入框美化 */
.tinymce-editor .ant-input,
.tinymce-editor .ant-input-affix-wrapper {
border-radius: 10px;
border: 1px solid #e8e8e8;
padding: 12px 16px;
font-size: 16px;
transition: all 0.3s;
margin-bottom: 20px;
box-shadow: 0 0 0 2px transparent;
}
.tinymce-editor .ant-input:hover,
.tinymce-editor .ant-input-affix-wrapper:hover {
border-color: #3690cf;
}
.tinymce-editor .ant-input:focus,
.tinymce-editor .ant-input-affix-wrapper-focused {
border-color: #3690cf;
box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.2);
}
/* 标题输入框特殊样式 */
.article-title-input {
font-size: 20px !important;
font-weight: 500;
padding: 16px 20px !important;
margin-bottom: 20px;
border-radius: 12px !important;
}
.article-title-input::placeholder {
color: #aaa;
}
/* 文章简介美化 */
.article-brief-textarea {
border-radius: 10px;
min-height: 80px !important;
margin-bottom: 30px;
background-color: #f9fafc;
}
/* 表单项美化 */
.form-item-container {
display: flex;
gap: 20px;
margin-bottom: 25px;
}
.form-item-container .ant-form-item {
flex: 1;
margin-bottom: 0;
}
.tinymce-editor .ant-form-item-label {
margin-bottom: 8px;
}
.tinymce-editor .ant-form-item-label > label {
font-size: 16px;
font-weight: 500;
color: #333;
height: auto;
}
/* 下拉选择框美化 */
.tinymce-editor .ant-select {
width: 100%;
}
.tinymce-editor .ant-select-selector {
border-radius: 10px !important;
padding: 8px 16px !important;
height: auto !important;
min-height: 48px !important;
display: flex;
align-items: center;
transition: all 0.3s;
}
.tinymce-editor .ant-select-selection-search {
display: flex; display: flex;
flex-direction: column;
justify-content: center;
align-items: center; align-items: center;
} }
.tinymce-editor .ant-select:hover .ant-select-selector {
border-color: #3690cf !important;
}
.tinymce-editor .ant-select-focused .ant-select-selector {
border-color: #3690cf !important;
box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.2) !important;
}
/* 编辑器容器 */
.editor-container {
position: relative;
margin-bottom: 25px;
border-radius: 12px;
overflow: hidden;
border: 1px solid #e8e8e8;
transition: all 0.3s;
}
.editor-container:hover {
border-color: #3690cf;
box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.05);
}
/* TinyMCE编辑器自定义样式 */
.tox-tinymce {
border-radius: 12px !important;
overflow: hidden;
border: none !important;
}
.tox .tox-toolbar__group {
border-radius: 6px !important;
margin: 2px 4px !important;
padding: 0 4px !important;
}
.tox .tox-tbtn {
border-radius: 6px !important;
}
.tox .tox-tbtn:hover {
background-color: rgba(54, 144, 207, 0.1) !important;
}
.tox .tox-tbtn--enabled {
background-color: rgba(54, 144, 207, 0.2) !important;
}
/* 发布按钮容器 */
.publish-container {
display: flex;
justify-content: center;
margin-top: 40px;
position: relative;
}
/* 发布按钮 */
.publish-btn {
min-width: 180px;
height: 50px;
padding: 0 30px;
font-size: 16px;
font-weight: 500;
background: linear-gradient(135deg, #3690cf, #2a78b8) !important;
border: none !important;
border-radius: 25px !important;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8px 15px rgba(54, 144, 207, 0.3);
transition: all 0.3s !important;
}
.publish-btn:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(54, 144, 207, 0.4) !important;
background: linear-gradient(135deg, #2a78b8, #1e5c8e) !important;
}
.publish-btn .anticon {
margin-right: 8px;
font-size: 18px;
}
/* 文章信息卡片 */
.article-info-card {
background-color: #f9fafc;
border-radius: 12px;
padding: 20px;
margin-bottom: 25px;
border: 1px dashed #e0e0e0;
}
.article-info-card .info-title {
font-size: 16px;
font-weight: 500;
color: #333;
margin-bottom: 15px;
display: flex;
align-items: center;
}
.article-info-card .info-title .anticon {
color: #3690cf;
margin-right: 8px;
font-size: 18px;
}
/* 编辑器底部状态栏 */
.tox-statusbar {
border-top: 1px solid #eee !important;
}
/* 上传图片区域 */
.upload-box {
border: 2px dashed #e0e0e0;
border-radius: 12px;
padding: 20px;
text-align: center;
cursor: pointer;
transition: all 0.3s;
margin-bottom: 25px;
}
.upload-box:hover {
border-color: #3690cf;
background-color: rgba(54, 144, 207, 0.05);
}
.upload-icon {
font-size: 48px;
color: #d0d0d0;
margin-bottom: 10px;
transition: all 0.3s;
}
.upload-box:hover .upload-icon {
color: #3690cf;
}
.upload-text {
color: #666;
font-size: 14px;
}
/* 响应式调整 */
@media (max-width: 768px) {
.tinymce-editor {
padding: 20px 15px;
}
.form-item-container {
flex-direction: column;
gap: 15px;
}
.editor-title {
font-size: 24px;
}
.publish-btn {
width: 100%;
}
}
/* 动画效果 */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.fade-in {
animation: fadeIn 0.5s ease forwards;
}
.fade-in-delay-1 {
animation: fadeIn 0.5s ease 0.1s forwards;
opacity: 0;
}
.fade-in-delay-2 {
animation: fadeIn 0.5s ease 0.2s forwards;
opacity: 0;
}
/* 字数统计提示 */
.word-count {
position: absolute;
right: 15px;
bottom: 15px;
font-size: 12px;
color: #999;
background: rgba(255, 255, 255, 0.9);
padding: 4px 10px;
border-radius: 15px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 预览效果区域 */
.preview-container {
margin-top: 30px;
padding: 20px;
border-radius: 12px;
background-color: #f9fafc;
border: 1px solid #eee;
}
.preview-title {
font-size: 18px;
font-weight: 500;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
color: #333;
display: flex;
align-items: center;
}
.preview-title .anticon {
margin-right: 8px;
color: #3690cf;
}
.preview-content {
padding: 15px;
background: white;
border-radius: 8px;
min-height: 100px;
}
/* 自定义悬停效果 */
.hover-lift {
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.hover-lift:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
/* 标签选择区域 */
.tags-container {
margin-bottom: 25px;
}
.tags-title {
font-size: 16px;
font-weight: 500;
color: #333;
margin-bottom: 12px;
}
.tag-select {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.tag-item {
display: inline-flex;
align-items: center;
padding: 6px 12px;
background-color: #f0f2f5;
color: #555;
border-radius: 20px;
font-size: 14px;
cursor: pointer;
transition: all 0.3s;
}
.tag-item:hover {
background-color: #e6f7ff;
color: #3690cf;
}
.tag-item.active {
background-color: #3690cf;
color: white;
}
.tag-item .anticon {
margin-right: 5px;
}
/* 文章封面上传区域 */
.cover-upload {
margin-bottom: 25px;
}
.cover-title {
font-size: 16px;
font-weight: 500;
color: #333;
margin-bottom: 12px;
}
.cover-description {
font-size: 14px;
color: #888;
margin-bottom: 15px;
}
.cover-preview {
width: 100%;
height: 200px;
border-radius: 12px;
overflow: hidden;
background-color: #f5f5f5;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.cover-preview img {
width: 100%;
height: 100%;
object-fit: cover;
}
.cover-upload-btn {
position: absolute;
bottom: 15px;
right: 15px;
z-index: 5;
}
</style> </style>

View File

@ -116,6 +116,7 @@ export default {
margin: 10px 10px 0 10px; margin: 10px 10px 0 10px;
padding: 10px; padding: 10px;
background-color: white; background-color: white;
height: 100vh;
} }
.ant-pro-global-header-index-right { .ant-pro-global-header-index-right {

View File

@ -31,24 +31,24 @@
</template> </template>
<script> <script>
import { message } from 'ant-design-vue'; import { message } from "ant-design-vue";
import { last } from 'lodash-es'; import { last } from "lodash-es";
import ContextMenu from '../components/common/ContextMenu'; import ContextMenu from "../components/common/ContextMenu";
import PageToggleTransition from '../components/transition/PageToggleTransition'; import PageToggleTransition from "../components/transition/PageToggleTransition";
export default { export default {
name: 'TabLayout', name: "TabLayout",
components: { PageToggleTransition, ContextMenu }, components: { PageToggleTransition, ContextMenu },
data() { data() {
return { return {
pageList: [], pageList: [],
dustbin: [], dustbin: [],
activePage: '', activePage: "",
menuVisible: false, menuVisible: false,
menuItems: [ menuItems: [
{ key: '1', icon: 'arrow-left', text: '关闭左侧' }, { key: "1", icon: "arrow-left", text: "关闭左侧" },
{ key: '2', icon: 'arrow-right', text: '关闭右侧' }, { key: "2", icon: "arrow-right", text: "关闭右侧" },
{ key: '3', icon: 'close', text: '关闭其它' }, { key: "3", icon: "close", text: "关闭其它" },
], ],
}; };
}, },
@ -58,7 +58,9 @@ export default {
handler(route) { handler(route) {
this.activePage = route.fullPath; this.activePage = route.fullPath;
this.putCache(route); this.putCache(route);
const index = this.pageList.findIndex(item => item.fullPath === route.fullPath); const index = this.pageList.findIndex(
(item) => item.fullPath === route.fullPath
);
if (index === -1) { if (index === -1) {
this.pageList.push(route); this.pageList.push(route);
} }
@ -74,15 +76,15 @@ export default {
this.$router.push(key); this.$router.push(key);
}, },
editPage(key, action) { editPage(key, action) {
if (action === 'remove') { if (action === "remove") {
this.remove(key); this.remove(key);
} }
}, },
remove(key) { remove(key) {
if (this.pageList.length <= 1) { if (this.pageList.length <= 1) {
return message.info('最后一页了哦~'); return message.info("最后一页了哦~");
} }
let curIndex = this.pageList.findIndex(item => item.fullPath === key); let curIndex = this.pageList.findIndex((item) => item.fullPath === key);
const { matched } = this.pageList[curIndex]; const { matched } = this.pageList[curIndex];
const componentName = last(matched).components.default.name; const componentName = last(matched).components.default.name;
this.dustbin.push(componentName); this.dustbin.push(componentName);
@ -90,7 +92,10 @@ export default {
// //
if (key === this.activePage) { if (key === this.activePage) {
// //
curIndex = curIndex >= this.pageList.length ? this.pageList.length - 1 : curIndex; curIndex =
curIndex >= this.pageList.length
? this.pageList.length - 1
: curIndex;
const page = this.pageList[curIndex]; const page = this.pageList[curIndex];
this.$router.push(page.fullPath).finally(() => { this.$router.push(page.fullPath).finally(() => {
this.dustbin.splice(0); // this.dustbin.splice(0); //
@ -110,14 +115,21 @@ export default {
onMenuSelect(key, target) { onMenuSelect(key, target) {
const tabKey = getTabKey(target); const tabKey = getTabKey(target);
switch (key) { switch (key) {
case '1': this.closeLeft(tabKey); break; case "1":
case '2': this.closeRight(tabKey); break; this.closeLeft(tabKey);
case '3': this.closeOthers(tabKey); break; break;
default: break; case "2":
this.closeRight(tabKey);
break;
case "3":
this.closeOthers(tabKey);
break;
default:
break;
} }
}, },
closeOthers(tabKey) { closeOthers(tabKey) {
const index = this.pageList.findIndex(item => item.fullPath === tabKey); const index = this.pageList.findIndex((item) => item.fullPath === tabKey);
for (const route of this.pageList) { for (const route of this.pageList) {
if (route.fullPath !== tabKey) { if (route.fullPath !== tabKey) {
this.clearCache(route); this.clearCache(route);
@ -126,10 +138,10 @@ export default {
const page = this.pageList[index]; const page = this.pageList[index];
this.pageList = [page]; this.pageList = [page];
this.activePage = page.fullPath; this.activePage = page.fullPath;
this.$router.push(this.activePage).catch(e => e); this.$router.push(this.activePage).catch((e) => e);
}, },
closeLeft(tabKey) { closeLeft(tabKey) {
const index = this.pageList.findIndex(item => item.fullPath === tabKey); const index = this.pageList.findIndex((item) => item.fullPath === tabKey);
this.pageList.forEach((route, i) => { this.pageList.forEach((route, i) => {
if (i < index) { if (i < index) {
this.clearCache(route); this.clearCache(route);
@ -138,14 +150,16 @@ export default {
const restPages = this.pageList.slice(index); const restPages = this.pageList.slice(index);
this.pageList = restPages; this.pageList = restPages;
// activePage // activePage
const curActivePage = restPages.find(item => item.fullPath === this.activePage); const curActivePage = restPages.find(
(item) => item.fullPath === this.activePage
);
if (!curActivePage) { if (!curActivePage) {
this.activePage = restPages[0].fullPath; this.activePage = restPages[0].fullPath;
this.$router.push(this.activePage).catch(e => e); this.$router.push(this.activePage).catch((e) => e);
} }
}, },
closeRight(tabKey) { closeRight(tabKey) {
const index = this.pageList.findIndex(item => item.fullPath === tabKey); const index = this.pageList.findIndex((item) => item.fullPath === tabKey);
this.pageList.forEach((route, i) => { this.pageList.forEach((route, i) => {
if (i > index) { if (i > index) {
this.clearCache(route); this.clearCache(route);
@ -154,10 +168,12 @@ export default {
const restPages = this.pageList.slice(0, index + 1); const restPages = this.pageList.slice(0, index + 1);
this.pageList = restPages; this.pageList = restPages;
// activePage // activePage
const curActivePage = restPages.find(item => item.fullPath === this.activePage); const curActivePage = restPages.find(
(item) => item.fullPath === this.activePage
);
if (!curActivePage) { if (!curActivePage) {
this.activePage = last(restPages).fullPath; this.activePage = last(restPages).fullPath;
this.$router.push(this.activePage).catch(e => e); this.$router.push(this.activePage).catch((e) => e);
} }
}, },
/** /**
@ -170,7 +186,7 @@ export default {
putCache(route) { putCache(route) {
const componentName = last(route.matched).components.default.name; const componentName = last(route.matched).components.default.name;
if (this.dustbin.includes(componentName)) { if (this.dustbin.includes(componentName)) {
this.dustbin = this.dustbin.filter(item => item !== componentName); this.dustbin = this.dustbin.filter((item) => item !== componentName);
} }
}, },
}, },
@ -190,13 +206,95 @@ function getTabKey(target, depth = 0) {
} }
</script> </script>
<style scoped> <style lang="less" scoped>
.tab-bar >>> .ant-tabs-bar { .tab-layout {
margin-bottom: 0; background: #fff;
padding: 6px 4px 0;
margin-bottom: 10px;
height: 32px !important;
.tab-bar {
background: #fff;
margin-bottom: 10px;
:deep(.ant-tabs-bar) {
margin: 0;
border: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
}
:deep(.ant-tabs-nav-container) {
height: 32px !important;
}
:deep(.ant-tabs-tab) {
margin-right: 6px;
height: 32px !important;
line-height: 32px !important;
background: #fafafa;
border: 1px solid #f0f0f0;
border-radius: 4px;
transition: all 0.3s;
padding: 0 16px;
&:hover {
color: #1890ff;
background: #e6f7ff;
}
&.ant-tabs-tab-active {
background: #fff;
border-color: #1890ff;
color: #1890ff;
}
.ant-tabs-close-x {
width: 16px;
height: 16px;
line-height: 16px;
margin-right: -4px;
margin-left: 4px;
opacity: 0.45;
&:hover {
opacity: 1;
color: #ff4d4f;
}
}
}
:deep(.ant-tabs-ink-bar) {
display: none;
}
}
} }
.breadcrumb { .breadcrumb {
margin-bottom: 10px; margin-bottom: 12px;
padding: 8px 24px;
background: #fff;
border-radius: 4px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
}
//
:deep(.context-menu) {
background: #fff;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
.menu-item {
padding: 8px 16px;
cursor: pointer;
transition: all 0.3s;
&:hover {
background: #e6f7ff;
color: #1890ff;
}
.anticon {
margin-right: 8px;
}
}
} }
</style> </style>

View File

@ -29,7 +29,12 @@
> >
<div class="account-center-avatarHolder"> <div class="account-center-avatarHolder">
<div class="avatar"> <div class="avatar">
<img :src="userimg" alt="用户头像" /> <img
src="https://onlinephoto.oss-cn-chengdu.aliyuncs.com/hangtian/touxiang.jpg"
data-src="//www.cmstui.com/wp-content/themes/zibll/img/avatar-default.png"
class="lazyload avatar avatar-id-1"
alt="用户头像"
/>
</div> </div>
<div class="username">{{ $store.state.user.userName }}</div> <div class="username">{{ $store.state.user.userName }}</div>
<div class="bio">{{ shenfen }}</div> <div class="bio">{{ shenfen }}</div>
@ -410,8 +415,10 @@ export default {
return matches[0]; return matches[0];
} }
// const randomSeed = Math.floor(Math.random() * 10000);
return require("@/assets/bg.svg");
// 使
return "https://tu.ltyuanfang.cn/api/fengjing.php?" + randomSeed;
}, },
// //