1 line
19 KiB
JSON
1 line
19 KiB
JSON
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/communtiy/pages.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/communtiy/pages.vue","mtime":1742741088688},{"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/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:CmltcG9ydCB7CiAgQXJ0aWNsZUJ5SWQsCiAgQ29tbWVudHNCeUlkLAogIFB1Ymxpc2hDb21tZW50cywKICBEZWxldGVDb21tZW50cywKICBBbGxVc2VyLAp9IGZyb20gIkAvYXBpIjsKaW1wb3J0IENvbHVtblNldHRpbmcgZnJvbSAiQC9jb21wb25lbnRzL2NvbW1vbi9Db2x1bW5TZXR0aW5nLnZ1ZSI7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiVXNlckNlbnRlciIsCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHVzZXJJZDogdGhpcy4kc3RvcmUuc3RhdGUudXNlci51c2VySWQsCiAgICAgIHVzZXJOYW1lOiB0aGlzLiRzdG9yZS5zdGF0ZS51c2VyLnVzZXJOYW1lLAogICAgICBsaWtlczogIiIsCiAgICAgIGRpYW56YW46ICIiLAogICAgICBmb3J1bXM6IHt9LAogICAgICBBcnRpY2xlSWQ6IHRoaXMuJHJvdXRlLnF1ZXJ5LmlkLAogICAgICB0ZXh0OiAiIiwKICAgICAgbXNnOiAiIiwKICAgICAgY29tbWVudHM6IFtdLAogICAgICB1c2VyczogW10sCiAgICB9OwogIH0sCgogIG1vdW50ZWQoKSB7CiAgICB0aGlzLmZldGNoRGF0YSgpOwogICAgdGhpcy5nZXR1c2VyKCk7CiAgfSwKICBmaWx0ZXJzOiB7CiAgICBmb3JtYXRUaW1lKHRpbWUpIHsKICAgICAgLy8g5bCGIElTTyA4NjAxIOagvOW8j+eahOaXtumXtOi9rOaNouS4uiBEYXRlIOWvueixoQogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZSk7CiAgICAgIC8vIOiOt+WPluW5tOaciOaXpeaXtuWIhuenkgogICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOwogICAgICBjb25zdCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAiMCIpOwogICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICIwIik7CiAgICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgIjAiKTsKICAgICAgY29uc3QgbWludXRlcyA9IFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgIjAiKTsKICAgICAgY29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgIjAiKTsKICAgICAgLy8g6L+U5Zue5qC85byP5YyW5ZCO55qE5pe26Ze05a2X56ym5LiyCiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9YDsKICAgIH0sCiAgfSwKICBtZXRob2RzOiB7CiAgICBzaG93Q29uZmlybSgpIHsKICAgICAgdGhpcy4kY29uZmlybSh7CiAgICAgICAgdGl0bGU6ICLmt7vliqDlpb3lj4s/IiwKICAgICAgICBjb250ZW50OiAi5piv5ZCm546w5Zyo5LiO6K+l55So5oi36L+b6KGM6IGK5aSpIiwKICAgICAgICBvbk9rOiAoKSA9PiB7CiAgICAgICAgICAvLyDkvb/nlKjnrq3lpLTlh73mlbDlrprkuYnlm57osIPlh73mlbAKICAgICAgICAgIGxldCBkYXRhID0gewogICAgICAgICAgICBmcmllbmRJZDogdGhpcy5mb3J1bXMudXNlcklkLAogICAgICAgICAgICBmcmllbmROYW1lOiB0aGlzLmdldFVzZXJOYW1lKHRoaXMuZm9ydW1zLnVzZXJJZCksCiAgICAgICAgICB9OwogICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgICAgICB0aGlzLiRhcGkuYWRkRnJpZW5kKGRhdGEpLnRoZW4oKHJlcykgPT4gewogICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBvbkNhbmNlbCgpIHt9LAogICAgICB9KTsKICAgIH0sCgogICAgUHVibGlzaENvbW1lbnRzKCkgewogICAgICAvLyDlj5HluIPor4TorroKICAgICAgbGV0IGZvcm1kYXRhID0gewogICAgICAgIGFydGljbGVJZDogdGhpcy5BcnRpY2xlSWQsCiAgICAgICAgY29tbWVudENvbnRlbnQ6IHRoaXMudGV4dCwKICAgICAgICB1c2VySWQ6IHRoaXMudXNlcklkLAogICAgICB9OwogICAgICAvLyBjb25zb2xlLmxvZyhmb3JtZGF0YSk7CiAgICAgIFB1Ymxpc2hDb21tZW50cyhmb3JtZGF0YSkKICAgICAgICAudGhlbigocmVzKSA9PiB7CiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygi5Y+R5biD5oiQ5YqfIik7CgogICAgICAgICAgICAvLyDlj5HluIPmiJDlip/lkI7ph43mlrDojrflj5bor4TorroKICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEoKTsKICAgICAgICAgIH0KICAgICAgICB9KQogICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHsKICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IubXNnIHx8ICLlj5HluIPlpLHotKUiKTsKICAgICAgICB9KTsKICAgIH0sCgogICAgZmV0Y2hEYXRhKCkgewogICAgICAvLyDojrflj5bmlofnq6AKICAgICAgbGV0IGRhdGFzID0geyBpZDogdGhpcy5BcnRpY2xlSWQgfTsKICAgICAgQXJ0aWNsZUJ5SWQoZGF0YXMpCiAgICAgICAgLnRoZW4oKHJlcykgPT4gewogICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAyMDApIHsKICAgICAgICAgICAgdGhpcy5mb3J1bXMgPSByZXMuZGF0YTsKICAgICAgICAgICAgLy8g6I635Y+W5paH56ug5oiQ5Yqf5ZCO5YaN6I635Y+W6K+E6K66CiAgICAgICAgICAgIHRoaXMuZ2V0dXNlcigpOwogICAgICAgICAgICB0aGlzLmZldGNoQ29tbWVudHMoKTsKICAgICAgICAgIH0KICAgICAgICB9KQogICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHsKICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgICB9KTsKICAgIH0sCiAgICAvLyDliKDpmaTor4TorroKICAgIERlbGV0ZUNvbW1lbnRzKGl0ZW0pIHsKICAgICAgRGVsZXRlQ29tbWVudHMoaXRlbS5jb21tZW50SWQpCiAgICAgICAgLnRoZW4oKHJlcykgPT4gewogICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkgewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoIuWIoOmZpOaIkOWKnyIpOwogICAgICAgICAgICAvLyDojrflj5bmlofnq6DmiJDlip/lkI7lho3ojrflj5bor4TorroKICAgICAgICAgICAgdGhpcy5mZXRjaENvbW1lbnRzKCk7CiAgICAgICAgICB9CiAgICAgICAgfSkKICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVycm9yIHx8ICLliKDpmaTlpLHotKUiKTsKICAgICAgICB9KTsKICAgIH0sCiAgICBmZXRjaENvbW1lbnRzKCkgewogICAgICAvLyDojrflj5bor4TorroKICAgICAgbGV0IGRhdGEgPSB7IGlkOiB0aGlzLkFydGljbGVJZCB9OwogICAgICBDb21tZW50c0J5SWQoZGF0YSkKICAgICAgICAudGhlbigocmVzKSA9PiB7CiAgICAgICAgICB0aGlzLm1zZyA9IHJlcy5kYXRhLmxlbmd0aCB8fCAwOwogICAgICAgICAgdGhpcy5jb21tZW50cyA9IHJlcy5kYXRhOwogICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jb21tZW50cyk7CiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbW1lbnRzKTsKICAgICAgICB9KQogICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHsKICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgICB9KTsKICAgIH0sCiAgICBnZXR1c2VyKCkgewogICAgICBBbGxVc2VyKCkKICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgIHRoaXMudXNlcnMgPSByZXNwb25zZS5kYXRhOwogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gewogICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGxvYWQgdXNlcnM6IiwgZXJyb3IpOwogICAgICAgIH0pOwogICAgfSwKICAgIGdldFVzZXJOYW1lKHVzZXJJZCkgewogICAgICBjb25zdCB1c2VyID0gdGhpcy51c2Vycy5maW5kKCh1KSA9PiB1LnVzZXJJZCA9PT0gdXNlcklkKTsKICAgICAgcmV0dXJuIHVzZXIgPyB1c2VyLnVzZXJOYW1lIDogIuacquefpeeUqOaItyI7CiAgICB9LAogIH0sCn07Cg=="},{"version":3,"sources":["pages.vue"],"names":[],"mappings":";AAiMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"pages.vue","sourceRoot":"src/views/communtiy","sourcesContent":["<template>\n <div>\n <div class=\"user-coin-card mb-4\">\n <div class=\"row\" style=\"width: 100%\">\n <!-- 内容 -->\n <div class=\"container\">\n <div class=\"content-wrap\" style=\"float: none\">\n <div class=\"content-layout\">\n <div class=\"fixed-wrap bbs-home-tab\">\n <div class=\"fixed-wrap-content\">\n <div class=\"tab-content bbs-main-tab-content\">\n <!-- 文章列表 -->\n <div class=\"ajaxpager active\" id=\"home-tab-2\">\n <div class=\"forum-posts detail alone ajax-item\">\n <div class=\"user-info flex ac mb10\">\n <!-- <a href=\"/\"> -->\n <div @click=\"showConfirm\">\n <span class=\"avatar-img\"\n ><img\n src=\"https://onlinephoto.oss-cn-chengdu.aliyuncs.com/hangtian/touxiang.jpg\"\n data-src=\"//www.cmstui.com/wp-content/themes/zibll/img/avatar-default.png\"\n class=\"lazyload avatar avatar-id-1\"\n />\n </span>\n </div>\n <!-- </a> -->\n <div class=\"user-right flex flex1 ac jsb ml10\">\n <div class=\"flex1\">\n <div class=\"flex ac flex1\">\n <a\n class=\"display-name text-ellipsis\"\n href=\"/\"\n >{{ getUserName(forums.userId) }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div>\n <div class=\"content mt6\">\n <a\n target=\"_blank\"\n href=\"#\"\n class=\"excerpt\"\n v-html=\"forums.articleContent\"\n ></a>\n </div>\n </div>\n <div class=\"flex ac jsb mt10\">\n <div class=\"action-meta flex0 flex jsb\">\n <div class=\"score-btns\">\n <a\n href=\"javascript:;\"\n ajax-action=\"score_extra\"\n class=\"btn-score extra\"\n ><svg class=\"icon\" aria-hidden=\"true\">\n <use\n xlink:href=\"#icon-extra-points\"\n ></use></svg></a\n ><text>评分</text>\n <a\n href=\"javascript:;\"\n ajax-action=\"score_deduct\"\n class=\"btn-score deduct\"\n ><svg class=\"icon\" aria-hidden=\"true\">\n <use\n xlink:href=\"#icon-deduct-points\"\n ></use></svg\n ></a>\n </div>\n <a href=\"#\" class=\"item\"\n ><svg class=\"icon\" aria-hidden=\"true\">\n <use xlink:href=\"#icon-comment\"></use></svg\n ><text>回复</text></a\n >\n <a\n mobile-bottom=\"true\"\n data-height=\"243\"\n class=\"btn-share item\"\n href=\"javascript:;\"\n data-toggle=\"RefreshModal\"\n ><svg class=\"icon\" aria-hidden=\"true\">\n <use xlink:href=\"#icon-share\"></use></svg\n ><text>分享</text></a\n >\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <section id=\"comments\" class=\"box-show wow fadeInDown\">\n <div id=\"comt-respond\" class=\"commentpost\">\n <h4>\n 发表评论<span\n ><a\n rel=\"nofollow\"\n id=\"cancel-reply\"\n href=\"#comment\"\n class=\"page_speeder_1817808094\"\n ></a\n ></span>\n </h4>\n <form id=\"frmSumbit\">\n <input type=\"hidden\" id=\"inpId\" value=\"413\" />\n <input type=\"hidden\" id=\"inpRevID\" value=\"0\" />\n\n <div id=\"comment-tools\">\n <div class=\"tools_text\">\n <textarea\n placeholder=\"请输入您的评论\"\n name=\"txaArticle\"\n id=\"txaArticle\"\n class=\"text input-block-level comt-area\"\n cols=\"50\"\n rows=\"4\"\n tabindex=\"5\"\n v-model=\"text\"\n ></textarea>\n </div>\n </div>\n </form>\n <div class=\"psumbit\">\n <a-button type=\"primary\" @click=\"PublishComments\">\n 提交\n </a-button>\n </div>\n </div>\n <div id=\"commentlist\" class=\"commentlist\">\n <div class=\"comment-tab\">\n <div class=\"come-comt\">\n 评论列表 <span id=\"comment_div\"></span>\n </div>\n </div>\n </div>\n <h2 class=\"comment-text-center\" v-if=\"!this.msg\">\n <i class=\"icon font-meiyou\"></i> 还没有评论,来说两句吧...\n </h2>\n <label id=\"AjaxCommentBegin\"></label>\n <div v-for=\"(item, index) in comments\" :key=\"index\">\n <div\n class=\"shadow-box msg noimg wow fadeInRight\"\n data-wow-delay=\"0.25s\"\n id=\"cmt225\"\n >\n <div\n style=\"\n display: flex;\n flex-direction: row;\n align-items: end;\n justify-content: flex-end;\n \"\n @click=\"DeleteComments(item)\"\n >\n 删除\n </div>\n <div class=\"msgimg\">\n <img\n class=\"avatar\"\n src=\"https://q2.qlogo.cn/headimg_dl?dst_uin=36926842&spec=100\"\n alt=\"网友昵称:访客\"\n title=\"网友昵称:访客\"\n />\n </div>\n\n <div class=\"msgtxt\">\n <div class=\"msgname\">\n <span class=\"autlv aut-6 vs\">V</span\n ><span class=\"autlv autlvname aut-6\">游客</span>\n <span class=\"dot shafa\">沙发</span>\n </div>\n <div class=\"interact-bar\">\n <span class=\"interact-time\" title=\"评论时间\">{{\n item.publishTime | formatTime\n }}</span>\n </div>\n <div class=\"msgarticle\">\n {{ item.commentContent }}<label id=\"AjaxComment225\"></label>\n </div>\n </div>\n </div>\n </div>\n </section>\n </div>\n <!-- 评论列表 -->\n </div>\n </div>\n </div>\n</template>\n<script>\nimport {\n ArticleById,\n CommentsById,\n PublishComments,\n DeleteComments,\n AllUser,\n} from \"@/api\";\nimport ColumnSetting from \"@/components/common/ColumnSetting.vue\";\nexport default {\n name: \"UserCenter\",\n data() {\n return {\n userId: this.$store.state.user.userId,\n userName: this.$store.state.user.userName,\n likes: \"\",\n dianzan: \"\",\n forums: {},\n ArticleId: this.$route.query.id,\n text: \"\",\n msg: \"\",\n comments: [],\n users: [],\n };\n },\n\n mounted() {\n this.fetchData();\n this.getuser();\n },\n filters: {\n formatTime(time) {\n // 将 ISO 8601 格式的时间转换为 Date 对象\n const date = new Date(time);\n // 获取年月日时分秒\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const seconds = String(date.getSeconds()).padStart(2, \"0\");\n // 返回格式化后的时间字符串\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n },\n methods: {\n showConfirm() {\n this.$confirm({\n title: \"添加好友?\",\n content: \"是否现在与该用户进行聊天\",\n onOk: () => {\n // 使用箭头函数定义回调函数\n let data = {\n friendId: this.forums.userId,\n friendName: this.getUserName(this.forums.userId),\n };\n console.log(data);\n this.$api.addFriend(data).then((res) => {\n console.log(res);\n });\n },\n onCancel() {},\n });\n },\n\n PublishComments() {\n // 发布评论\n let formdata = {\n articleId: this.ArticleId,\n commentContent: this.text,\n userId: this.userId,\n };\n // console.log(formdata);\n PublishComments(formdata)\n .then((res) => {\n if (res.code == 200) {\n this.$message.success(\"发布成功\");\n\n // 发布成功后重新获取评论\n this.fetchData();\n }\n })\n .catch((error) => {\n console.log(error);\n this.$message.error(error.msg || \"发布失败\");\n });\n },\n\n fetchData() {\n // 获取文章\n let datas = { id: this.ArticleId };\n ArticleById(datas)\n .then((res) => {\n if (res.code === 200) {\n this.forums = res.data;\n // 获取文章成功后再获取评论\n this.getuser();\n this.fetchComments();\n }\n })\n .catch((error) => {\n console.log(error);\n });\n },\n // 删除评论\n DeleteComments(item) {\n DeleteComments(item.commentId)\n .then((res) => {\n if (res.code == 200) {\n this.$message.success(\"删除成功\");\n // 获取文章成功后再获取评论\n this.fetchComments();\n }\n })\n .catch((error) => {\n this.$message.error(error || \"删除失败\");\n });\n },\n fetchComments() {\n // 获取评论\n let data = { id: this.ArticleId };\n CommentsById(data)\n .then((res) => {\n this.msg = res.data.length || 0;\n this.comments = res.data;\n // console.log(this.comments);\n console.log(this.comments);\n })\n .catch((error) => {\n console.log(error);\n });\n },\n getuser() {\n AllUser()\n .then((response) => {\n this.users = response.data;\n })\n .catch((error) => {\n console.error(\"Failed to load users:\", error);\n });\n },\n getUserName(userId) {\n const user = this.users.find((u) => u.userId === userId);\n return user ? user.userName : \"未知用户\";\n },\n },\n};\n</script>\n<style src=\"@/assets/pages.css\"></style>\n<style scoped>\nbutton {\n color: #ffffff;\n background-color: #3690cf;\n height: 30px;\n width: 88px;\n border-top-width: 0;\n border-right-width: 0;\n border-bottom-width: 0;\n border-left-width: 0;\n border-radius: 4px;\n float: right;\n margin: 2px 10px 0 10px;\n}\n\n.router-link-exact-active {\n color: none;\n}\n</style>\n"]}]} |