1 line
37 KiB
JSON
1 line
37 KiB
JSON
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js??ref--1-0!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/communtiy/Article.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/communtiy/Article.vue","mtime":1743941101859},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/babel.config.js","mtime":1742646402652},{"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:aW1wb3J0IFRhZ1NlbGVjdCBmcm9tICIuLi8uLi9jb21wb25lbnRzL1RhZ1NlbGVjdCI7CmltcG9ydCBTdGFuZGFyZEZvcm1Sb3cgZnJvbSAiLi4vLi4vY29tcG9uZW50cy9TdGFuZGFyZEZvcm1Sb3ciOwppbXBvcnQgQXJ0aWNsZUxpc3RDb250ZW50IGZyb20gIi4uLy4uL2NvbXBvbmVudHMvQXJ0aWNsZUxpc3RDb250ZW50IjsKaW1wb3J0IEljb25UZXh0IGZyb20gIi4vY29tcG9uZW50cy9JY29uVGV4dCI7CmNvbnN0IFRhZ1NlbGVjdE9wdGlvbiA9IFRhZ1NlbGVjdC5PcHRpb247CmV4cG9ydCBkZWZhdWx0IHsKICBjb21wb25lbnRzOiB7CiAgICBUYWdTZWxlY3QsCiAgICBUYWdTZWxlY3RPcHRpb24sCiAgICBTdGFuZGFyZEZvcm1Sb3csCiAgICBBcnRpY2xlTGlzdENvbnRlbnQsCiAgICBJY29uVGV4dAogIH0sCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHVzZXJEYXRhOiBbXSwKICAgICAgaW1hZ2VVcmxSZWdleDogLyhodHRwW3NdPzpcL1wvW14oXHN8IildK1wuKHBuZ3xqcGd8anBlZ3xnaWZ8d2VicCkpL2dpLAogICAgICBjdXJyZW50OiAxLAogICAgICBwYWdlU2l6ZTogOCwKICAgICAgbG9hZGluZzogdHJ1ZSwKICAgICAgbG9hZGluZ01vcmU6IGZhbHNlLAogICAgICBkYXRhOiBbXSwKICAgICAgb3JpZ2luYWxVc2VyczogW10sCiAgICAgIHRvdGFsOiAwLAogICAgICBmb3JtOiB0aGlzLiRmb3JtLmNyZWF0ZUZvcm0odGhpcykKICAgIH07CiAgfSwKICBtb3VudGVkKCkgewogICAgdGhpcy5nZXRVc2VyKCk7CiAgICB0aGlzLiR3YXRjaCgoKSA9PiBbdGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50XSwgdGhpcy5nZXRMaXN0LCB7CiAgICAgIGltbWVkaWF0ZTogdHJ1ZQogICAgfSk7CiAgfSwKICBmaWx0ZXJzOiB7CiAgICBmb3JtYXRUaW1lOiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgLy8g5Zyo6L+Z6YeM57yW5YaZ5pe26Ze05qC85byP5YyW6YC76L6R77yM5L6L5aaC77yaCiAgICAgIGNvbnN0IHBhcnNlZFRpbWUgPSBuZXcgRGF0ZSh2YWx1ZSk7CiAgICAgIGNvbnN0IHllYXIgPSBwYXJzZWRUaW1lLmdldEZ1bGxZZWFyKCk7CiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKHBhcnNlZFRpbWUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICIwIik7CiAgICAgIGNvbnN0IGRheSA9IFN0cmluZyhwYXJzZWRUaW1lLmdldERhdGUoKSkucGFkU3RhcnQoMiwgIjAiKTsKICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7CiAgICB9CiAgfSwKICBjb21wdXRlZDogewogICAgc2VhcmNoT3B0aW9ucygpIHsKICAgICAgcmV0dXJuIGNyZWF0ZVNlYXJjaE9wdGlvbnMuY2FsbCh0aGlzKTsKICAgIH0sCiAgICBwYWdpbmF0aW9uKCkgewogICAgICByZXR1cm4gewogICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudCwKICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwKICAgICAgICB0b3RhbDogdGhpcy50b3RhbCwKICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsCiAgICAgICAgcGFnZVNpemVPcHRpb25zOiBbIjgiLCAiOSIsICIxMCIsICIyMCJdLAogICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSwKICAgICAgICBzaG93VG90YWw6IHRvdGFsID0+IGBUb3RhbCAke3RvdGFsfSBpdGVtc2AsCiAgICAgICAgb25DaGFuZ2U6IHRoaXMuY2hhbmdlUGFnZSwKICAgICAgICBvblNob3dTaXplQ2hhbmdlOiB0aGlzLmNoYW5nZVBhZ2UKICAgICAgfTsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIGV4dHJhY3RJbWFnZVVybChjb250ZW50KSB7CiAgICAgIC8vIOWumuS5ieWMuemFjeWbvueJh1VSTOeahOato+WImeihqOi+vuW8jwogICAgICBjb25zdCBpbWFnZVVybFJlZ2V4ID0gLyhodHRwW3NdPzpcL1wvW14oXHN8IildK1wuKHBuZ3xqcGd8anBlZ3xnaWZ8d2VicCkpL2dpOwogICAgICAvLyDkvb/nlKjmraPliJnooajovr7lvI/ljLnphY3lhoXlrrnkuK3nmoTlm77niYdVUkwKICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2goaW1hZ2VVcmxSZWdleCk7CiAgICAgIC8vIOWmguaenOaJvuWIsOWMuemFjemhue+8jOi/lOWbnuesrOS4gOW8oOWbvueJh+eahFVSTAogICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDApIHsKICAgICAgICByZXR1cm4gbWF0Y2hlc1swXTsKICAgICAgfQogICAgICAvLyDpgb/lhY3mtY/op4jlmajnvJPlrZgKICAgICAgY29uc3QgcmFuZG9tU2VlZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKTsgLy8g55Sf5oiQ5LiA5LiqMOWIsDk5OTnkuYvpl7TnmoTpmo/mnLrmlbAKICAgICAgLy8g5aaC5p6c5rKh5pyJ5om+5Yiw5Yy56YWN55qE5Zu+54mH77yM5Y+v5Lul5L2/55So6ZqP5py65Zu+54mHCiAgICAgIHJldHVybiAiaHR0cHM6Ly9hcGkuNzU4NS5uZXQuY24vYmluZy9hcGkucGhwP3JhbmQ9MT8iICsgcmFuZG9tU2VlZDsKICAgIH0sCiAgICBhc3luYyBnZXRJbWFnZShhcnRpY2xlSWQpIHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRhcGkuQWxsQXJ0aWNsZSgpOwogICAgICAgIGxldCBjb250ZW50ID0gcmVzLmRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5hcnRpY2xlSWQgPT09IGFydGljbGVJZCk7CiAgICAgICAgaWYgKGNvbnRlbnQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygi5pyq5om+5Yiw5a+55bqU5paH56ug5YaF5a65Iik7CiAgICAgICAgICByZXR1cm4gbnVsbDsgLy8g6L+U5Zue56m65YC877yM6KGo56S65pyq5om+5Yiw5bCB6Z2i5Zu+54mHCiAgICAgICAgfQogICAgICAgIGNvbnN0IGltYWdlVXJsUmVnZXggPSAvKGh0dHBbc10/OlwvXC9bXihcc3wiKV0rXC4ocG5nfGpwZ3xqcGVnfGdpZnx3ZWJwKSkvZ2k7CiAgICAgICAgY29uc3QgaW1hZ2VzID0gY29udGVudFswXS5hcnRpY2xlQ29udGVudC5tYXRjaChpbWFnZVVybFJlZ2V4KTsKICAgICAgICBpZiAoaW1hZ2VzICYmIGltYWdlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygi5om+5Yiw5bCB6Z2i5Zu+54mH6ZO+5o6lOiIsIGltYWdlc1swXSk7CiAgICAgICAgICByZXR1cm4gaW1hZ2VzWzBdOyAvLyDov5Tlm57nrKzkuIDlvKDljLnphY3liLDnmoTlm77niYfpk77mjqUKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc29sZS5sb2coIuacquaJvuWIsOWbvueJh+mTvuaOpSIpOwogICAgICAgICAgcmV0dXJuIG51bGw7IC8vIOi/lOWbnuepuuWAvO+8jOihqOekuuacquaJvuWIsOWwgemdouWbvueJhwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCLojrflj5bmlofnq6DlhoXlrrnlpLHotKU6IiwgZXJyb3IpOwogICAgICAgIHJldHVybiBudWxsOyAvLyDov5Tlm57nqbrlgLzvvIzooajnpLrmnKrmib7liLDlsIHpnaLlm77niYcKICAgICAgfQogICAgfSwKICAgIC8vIOaQnOe0ogogICAgc2VhcmNoKCkgewogICAgICB0aGlzLmN1cnJlbnQgPSAxOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvLyDliIbpobXliIfmjaIKICAgIGNoYW5nZVBhZ2UoY3VycmVudCwgcGFnZVNpemUpIHsKICAgICAgdGhpcy5jdXJyZW50ID0gY3VycmVudDsKICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICBoYW5kbGVDaGFuZ2UodmFsdWUpIHsKICAgICAgY29uc29sZS5sb2coYHNlbGVjdGVkICR7dmFsdWV9YCk7CiAgICB9LAogICAgZ2V0VXNlcigpIHsKICAgICAgdGhpcy4kYXBpLkFsbFVzZXIoKS50aGVuKHJlcyA9PiB7CiAgICAgICAgY29uc3QgdXNlcnMgPSByZXMuZGF0YTsKICAgICAgICBjb25zdCB1c2VyTWFwID0ge307CiAgICAgICAgdXNlcnMuZm9yRWFjaCh1c2VyID0+IHsKICAgICAgICAgIHVzZXJNYXBbdXNlci51c2VySWRdID0gdXNlci51c2VyTmFtZTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLnVzZXJEYXRhID0gdXNlck1hcDsKICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVzZXJEYXRhKTsKICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICB9KTsKICAgIH0sCiAgICBhc3luYyBnZXRMaXN0KCkgewogICAgICB0cnkgewogICAgICAgIC8vIOW8gOWni+WKoOi9ve+8jOaYvuekuuWKoOi9veaMh+ekuuWZqAogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuJHJlZnMuc2VhcmNoRm9ybS5nZXRSZXN1bHQoKTsKICAgICAgICAvLyDkvb/nlKggYXdhaXQg55u05o6l562J5b6F5byC5q2l5pON5L2c55qE57uT5p6cCiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy4kYXBpLkFsbEFydGljbGUoKTsKICAgICAgICAvLyDmiZPljbDlk43lupTnu5PmnpwKICAgICAgICB0aGlzLm9yaWdpbmFsVXNlcnMgPSByZXMuZGF0YTsKICAgICAgICB0aGlzLmZpbHRlclVzZXJzKCk7IC8vIOiwg+eUqOi/h+a7pOeUqOaIt+aWueazlQogICAgICAgIGNvbnNvbGUubG9nKCJyZXMiLCByZXMuZGF0YSk7CiAgICAgICAgLy8g5L2/55So5ZON5bqU57uT5p6c5pu05paw5pWw5o2uCiAgICAgICAgdGhpcy50b3RhbCA9IHJlcy5kYXRhLmxlbmd0aDsKICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAvLyDlpITnkIblj6/og73lh7rnjrDnmoTplJnor68KICAgICAgICBjb25zb2xlLmVycm9yKCLojrflj5bmlofnq6DliJfooajlpLHotKU6IiwgZXJyb3IpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIC8vIOaXoOiuuuaIkOWKn+i/mOaYr+Wksei0pe+8jOacgOWQjumDveS8muaJp+ihjO+8jOmakOiXj+WKoOi9veaMh+ekuuWZqAogICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9LAogICAgLy8g5pCc57SiCiAgICBmaWx0ZXJVc2VycygpIHsKICAgICAgbGV0IGZpbHRlcmVkVXNlcnMgPSB0aGlzLm9yaWdpbmFsVXNlcnMuc2xpY2UoKTsgLy8g5aSN5Yi25Y6f5aeL55So5oi35pWw5o2uCiAgICAgIGNvbnNvbGUubG9nKHRoaXMucXVlcnkpOwogICAgICBpZiAodGhpcy5xdWVyeS5hcnRpY2xlVGl0bGUpIHsKICAgICAgICBmaWx0ZXJlZFVzZXJzID0gZmlsdGVyZWRVc2Vycy5maWx0ZXIodXNlciA9PiB1c2VyLmFydGljbGVUaXRsZS5pbmNsdWRlcyh0aGlzLnF1ZXJ5LmFydGljbGVUaXRsZSkpOwogICAgICB9CiAgICAgIGlmICh0aGlzLnF1ZXJ5LnVzZXJOYW1lKSB7CiAgICAgICAgZmlsdGVyZWRVc2VycyA9IGZpbHRlcmVkVXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VySWQuaW5jbHVkZXModGhpcy5xdWVyeS51c2VyTmFtZSkpOwogICAgICB9CiAgICAgIGlmICh0aGlzLnF1ZXJ5LmFydGljbGVDb250ZW50KSB7CiAgICAgICAgZmlsdGVyZWRVc2VycyA9IGZpbHRlcmVkVXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci5hcnRpY2xlQ29udGVudC5pbmNsdWRlcyh0aGlzLnF1ZXJ5LmFydGljbGVDb250ZW50KSk7CiAgICAgIH0KICAgICAgY29uc3Qgc3RhcnQgPSAodGhpcy5jdXJyZW50IC0gMSkgKiB0aGlzLnBhZ2VTaXplOwogICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7CiAgICAgIHRoaXMuZGF0YSA9IGZpbHRlcmVkVXNlcnMuc2xpY2Uoc3RhcnQsIGVuZCk7CiAgICB9CiAgfQp9OwovLyDliJvlu7rmkJzntKLpgInpobkKZnVuY3Rpb24gY3JlYXRlU2VhcmNoT3B0aW9ucygpIHsKICByZXR1cm4gW3sKICAgIGxhYmVsOiAi5qCH6aKYIiwKICAgIGtleTogImFydGljbGVUaXRsZSIsCiAgICBkZWZhdWx0OiAiIiwKICAgIGNvbXBvbmVudDogImlucHV0IgogIH0sIHsKICAgIGxhYmVsOiAi5L2c6ICFIiwKICAgIGtleTogInVzZXJOYW1lIiwKICAgIGRlZmF1bHQ6ICIiLAogICAgY29tcG9uZW50OiAiaW5wdXQiCiAgfSwgewogICAgbGFiZWw6ICLlhoXlrrkiLAogICAga2V5OiAiYXJ0aWNsZUNvbnRlbnQiLAogICAgZGVmYXVsdDogIiIsCiAgICBjb21wb25lbnQ6ICJpbnB1dCIKICB9LCB7CiAgICBsYWJlbDogIuaXtumXtCIsCiAgICBrZXk6ICJwdWJsaXNoVGltZSIsCiAgICBkZWZhdWx0OiAoKSA9PiBbXSwKICAgIG1hcHBlcjogKHsKICAgICAgcHVibGlzaFRpbWUKICAgIH0pID0+IHB1Ymxpc2hUaW1lLmpvaW4oIn4iKSwKICAgIGNvbXBvbmVudDogInJhbmdlLXBpY2tlciIKICB9XTsKfQ=="},{"version":3,"names":["TagSelect","StandardFormRow","ArticleListContent","IconText","TagSelectOption","Option","components","data","userData","imageUrlRegex","current","pageSize","loading","loadingMore","originalUsers","total","form","$form","createForm","mounted","getUser","$watch","getList","immediate","filters","formatTime","value","parsedTime","Date","year","getFullYear","month","String","getMonth","padStart","day","getDate","computed","searchOptions","createSearchOptions","call","pagination","showSizeChanger","pageSizeOptions","showQuickJumper","showTotal","onChange","changePage","onShowSizeChange","methods","extractImageUrl","content","matches","match","length","randomSeed","Math","floor","random","getImage","articleId","res","$api","AllArticle","filter","item","console","log","images","articleContent","error","search","handleChange","AllUser","then","users","userMap","forEach","user","userId","userName","catch","query","$refs","searchForm","getResult","filterUsers","filteredUsers","slice","articleTitle","includes","start","end","label","key","default","component","mapper","publishTime","join"],"sources":["src/views/communtiy/Article.vue"],"sourcesContent":["<template>\n <!-- 主容器 -->\n <div>\n <!-- 搜索表单 -->\n <SearchForm\n ref=\"searchForm\"\n :loading=\"loading\"\n :options=\"searchOptions\"\n @search=\"search\"\n @reset=\"search\"\n />\n <!-- 标签选择器 -->\n <a-card\n :bordered=\"false\"\n class=\"ant-pro-components-tag-select\"\n style=\"margin-bottom: -82px\"\n >\n <a-form :form=\"form\" layout=\"inline\">\n <!-- 类目选择 -->\n <standard-form-row title=\"所属类目\" block style=\"padding-bottom: 11px\">\n <a-form-item>\n <!-- 标签选择器组件 -->\n <tag-select>\n <!-- 类目选项 -->\n <!-- 全部选项 -->\n <tag-select-option value=\"全部\" @click.native=\"getList\"\n ><h3><a-icon type=\"audit\" />全部</h3></tag-select-option\n >\n <tag-select-option value=\"公告\" @click.native=\"search('公告')\"\n ><h3><a-icon type=\"audit\" />公告</h3></tag-select-option\n >\n <tag-select-option value=\"交流\" @click.native=\"search('交流')\"\n ><h3><a-icon type=\"audit\" />交流</h3></tag-select-option\n >\n <tag-select-option value=\"讨论\" @click.native=\"search('讨论')\"\n ><h3><a-icon type=\"audit\" />讨论</h3></tag-select-option\n >\n </tag-select>\n </a-form-item>\n </standard-form-row>\n </a-form>\n </a-card>\n <!-- 文章列表 -->\n <a-card style=\"margin-top: 24px\" :bordered=\"false\">\n <a-list\n size=\"large\"\n rowKey=\"id\"\n :loading=\"loading\"\n itemLayout=\"vertical\"\n :dataSource=\"data\"\n :pagination=\"pagination\"\n @change=\"changePage\"\n >\n <div class=\"side-brick\">\n <ul class=\"brick-box\">\n <li class=\"brick-list\" v-for=\"item in data\" key=\"item.id\">\n <router-link :to=\"'/community/pages?id=' + item.articleId\">\n <a class=\"item-box-retina\">\n <figure class=\"item-box-img\">\n <!-- 文章图片 -->\n <!-- 调用extractImageUrl方法并传递文章内容 -->\n <img\n class=\"lazy\"\n :src=\"extractImageUrl(item.articleContent)\"\n alt=\"Article Cover\"\n />\n <!-- <img class=\"lazy\" :src=\"item.articleContent.match(imageUrlRegex)\" > -->\n <!-- 文章标题 -->\n <h3>{{ item.articleTitle }}</h3>\n </figure>\n <!-- 文章内容 -->\n <p class=\"item-user-info\" v-html=\"item.articleContent\"></p>\n <p class=\"item-user-author\">\n <img src=\"/logo.png\" :alt=\"userData[item.userId]\" />\n <!-- 文章作者 -->\n <span class=\"comment-username\"\n >{{ userData[item.userId]\n }}<span class=\"autlv aut-5 vs-level\">V</span></span\n >\n <span class=\"comment-tip\"\n ><i class=\"icon font-time\"></i\n >{{ item.publishTime | formatTime }}</span\n >\n </p>\n </a>\n </router-link>\n </li>\n </ul>\n </div>\n </a-list>\n </a-card>\n </div>\n</template>\n\n<script>\nimport TagSelect from \"../../components/TagSelect\";\nimport StandardFormRow from \"../../components/StandardFormRow\";\nimport ArticleListContent from \"../../components/ArticleListContent\";\nimport IconText from \"./components/IconText\";\nconst TagSelectOption = TagSelect.Option;\nexport default {\n components: {\n TagSelect,\n TagSelectOption,\n StandardFormRow,\n ArticleListContent,\n IconText,\n },\n data() {\n return {\n userData: [],\n imageUrlRegex: /(http[s]?:\\/\\/[^(\\s|\")]+\\.(png|jpg|jpeg|gif|webp))/gi,\n current: 1,\n pageSize: 8,\n loading: true,\n loadingMore: false,\n data: [],\n originalUsers: [],\n total: 0,\n form: this.$form.createForm(this),\n };\n },\n mounted() {\n this.getUser();\n this.$watch(() => [this.pageSize, this.current], this.getList, {\n immediate: true,\n });\n },\n filters: {\n formatTime: function (value) {\n // 在这里编写时间格式化逻辑,例如:\n const parsedTime = new Date(value);\n const year = parsedTime.getFullYear();\n const month = String(parsedTime.getMonth() + 1).padStart(2, \"0\");\n const day = String(parsedTime.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n },\n },\n computed: {\n searchOptions() {\n return createSearchOptions.call(this);\n },\n pagination() {\n return {\n current: this.current,\n pageSize: this.pageSize,\n total: this.total,\n showSizeChanger: true,\n pageSizeOptions: [\"8\", \"9\", \"10\", \"20\"],\n showQuickJumper: true,\n showTotal: (total) => `Total ${total} items`,\n onChange: this.changePage,\n onShowSizeChange: this.changePage,\n };\n },\n },\n methods: {\n extractImageUrl(content) {\n // 定义匹配图片URL的正则表达式\n const imageUrlRegex =\n /(http[s]?:\\/\\/[^(\\s|\")]+\\.(png|jpg|jpeg|gif|webp))/gi;\n // 使用正则表达式匹配内容中的图片URL\n const matches = content.match(imageUrlRegex);\n // 如果找到匹配项,返回第一张图片的URL\n if (matches && matches.length > 0) {\n return matches[0];\n }\n // 避免浏览器缓存\n const randomSeed = Math.floor(Math.random() * 10000); // 生成一个0到9999之间的随机数\n // 如果没有找到匹配的图片,可以使用随机图片\n return \"https://api.7585.net.cn/bing/api.php?rand=1?\" + randomSeed;\n },\n async getImage(articleId) {\n try {\n const res = await this.$api.AllArticle();\n let content = res.data.filter((item) => item.articleId === articleId);\n\n if (content.length === 0) {\n console.log(\"未找到对应文章内容\");\n return null; // 返回空值,表示未找到封面图片\n }\n\n const imageUrlRegex =\n /(http[s]?:\\/\\/[^(\\s|\")]+\\.(png|jpg|jpeg|gif|webp))/gi;\n const images = content[0].articleContent.match(imageUrlRegex);\n\n if (images && images.length > 0) {\n console.log(\"找到封面图片链接:\", images[0]);\n return images[0]; // 返回第一张匹配到的图片链接\n } else {\n console.log(\"未找到图片链接\");\n return null; // 返回空值,表示未找到封面图片\n }\n } catch (error) {\n console.error(\"获取文章内容失败:\", error);\n return null; // 返回空值,表示未找到封面图片\n }\n },\n // 搜索\n search() {\n this.current = 1;\n this.getList();\n },\n // 分页切换\n changePage(current, pageSize) {\n this.current = current;\n this.pageSize = pageSize;\n this.getList();\n },\n handleChange(value) {\n console.log(`selected ${value}`);\n },\n getUser() {\n this.$api\n .AllUser()\n .then((res) => {\n const users = res.data;\n const userMap = {};\n users.forEach((user) => {\n userMap[user.userId] = user.userName;\n });\n this.userData = userMap;\n console.log(this.userData);\n })\n .catch((error) => {\n console.error(error);\n });\n },\n async getList() {\n try {\n // 开始加载,显示加载指示器\n this.loading = true;\n this.query = this.$refs.searchForm.getResult();\n // 使用 await 直接等待异步操作的结果\n const res = await this.$api.AllArticle();\n // 打印响应结果\n this.originalUsers = res.data;\n this.filterUsers(); // 调用过滤用户方法\n console.log(\"res\", res.data);\n // 使用响应结果更新数据\n this.total = res.data.length;\n } catch (error) {\n // 处理可能出现的错误\n console.error(\"获取文章列表失败:\", error);\n } finally {\n // 无论成功还是失败,最后都会执行,隐藏加载指示器\n this.loading = false;\n }\n },\n // 搜索\n filterUsers() {\n let filteredUsers = this.originalUsers.slice(); // 复制原始用户数据\n console.log(this.query);\n if (this.query.articleTitle) {\n filteredUsers = filteredUsers.filter((user) =>\n user.articleTitle.includes(this.query.articleTitle)\n );\n }\n\n if (this.query.userName) {\n filteredUsers = filteredUsers.filter((user) =>\n user.userId.includes(this.query.userName)\n );\n }\n if (this.query.articleContent) {\n filteredUsers = filteredUsers.filter((user) =>\n user.articleContent.includes(this.query.articleContent)\n );\n }\n const start = (this.current - 1) * this.pageSize;\n const end = start + this.pageSize;\n this.data = filteredUsers.slice(start, end);\n },\n },\n};\n// 创建搜索选项\nfunction createSearchOptions() {\n return [\n {\n label: \"标题\",\n key: \"articleTitle\",\n default: \"\",\n component: \"input\",\n },\n {\n label: \"作者\",\n key: \"userName\",\n default: \"\",\n component: \"input\",\n },\n {\n label: \"内容\",\n key: \"articleContent\",\n default: \"\",\n component: \"input\",\n },\n {\n label: \"时间\",\n key: \"publishTime\",\n default: () => [],\n mapper: ({ publishTime }) => publishTime.join(\"~\"),\n component: \"range-picker\",\n },\n ];\n}\n</script>\n\n<style lang=\"less\" scoped>\n/* 帖子详情页美化样式 */\n\n/* 页面背景与整体布局 */\n.post-detail-container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 24px;\n background-color: transparent;\n}\n\n.post-detail-wrapper {\n background: rgba(255, 255, 255, 0.95);\n border-radius: 16px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n transition: all 0.4s ease;\n position: relative;\n}\n\n/* 炫酷背景渐变 */\n.page-background {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(120deg, #f6f8fa 0%, #e8f4fc 50%, #edf7ff 100%);\n background-size: 400% 400%;\n animation: gradientBG 15s ease infinite;\n z-index: -1;\n}\n\n@keyframes gradientBG {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n}\n\n/* 帖子标题区域 */\n.post-header {\n position: relative;\n padding: 40px 32px 24px;\n background: linear-gradient(135deg, #3690cf, #2a78b8);\n color: white;\n overflow: hidden;\n}\n\n.post-header:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgogIDxkZWZzPgogICAgPHBhdHRlcm4gaWQ9InBhdHRlcm4iIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1KSI+CiAgICAgIDxjaXJjbGUgY3g9IjIwIiBjeT0iMjAiIHI9IjEuNSIgZmlsbD0iI2ZmZiIgZmlsbC1vcGFjaXR5PSIwLjEiIC8+CiAgICA8L3BhdHRlcm4+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjcGF0dGVybikiIC8+Cjwvc3ZnPg==');\n opacity: 0.4;\n}\n\n.post-title {\n font-size: 28px;\n font-weight: 600;\n margin-bottom: 16px;\n position: relative;\n text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.post-meta {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 20px;\n position: relative;\n font-size: 14px;\n color: rgba(255, 255, 255, 0.9);\n}\n\n.post-meta-item {\n display: flex;\n align-items: center;\n}\n\n.post-meta-item .anticon {\n margin-right: 6px;\n font-size: 16px;\n}\n\n.post-category {\n display: inline-block;\n padding: 4px 12px;\n border-radius: 20px;\n background: rgba(255, 255, 255, 0.2);\n backdrop-filter: blur(5px);\n margin-right: 8px;\n font-size: 13px;\n font-weight: 500;\n}\n\n/* 作者信息卡片 */\n.author-card {\n display: flex;\n align-items: center;\n margin-top: -40px;\n margin-left: 32px;\n margin-bottom: 16px;\n z-index: 10;\n position: relative;\n}\n\n.author-avatar {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n border: 4px solid white;\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);\n object-fit: cover;\n background-color: #f0f0f0;\n}\n\n.author-info {\n margin-left: 16px;\n}\n\n.author-name {\n font-size: 18px;\n font-weight: 600;\n color: #333;\n display: flex;\n align-items: center;\n}\n\n.author-level {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border-radius: 6px;\n background: linear-gradient(135deg, #ff9800, #ff5722);\n color: white;\n font-size: 12px;\n font-weight: bold;\n margin-left: 8px;\n box-shadow: 0 2px 4px rgba(255, 152, 0, 0.3);\n}\n\n.author-status {\n font-size: 13px;\n color: #666;\n margin-top: 4px;\n}\n\n/* 帖子内容区域 */\n.post-content {\n padding: 60px 32px 40px;\n font-size: 16px;\n line-height: 1.8;\n color: #333;\n}\n\n.post-content img {\n max-width: 100%;\n height: auto;\n border-radius: 8px;\n margin: 24px 0;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n}\n\n.post-content img:hover {\n transform: scale(1.01);\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);\n}\n\n.post-content p {\n margin-bottom: 20px;\n}\n\n.post-content h1, \n.post-content h2, \n.post-content h3 {\n margin-top: 32px;\n margin-bottom: 16px;\n font-weight: 600;\n color: #222;\n}\n\n.post-content h1 {\n font-size: 26px;\n border-bottom: 1px solid #eee;\n padding-bottom: 12px;\n}\n\n.post-content h2 {\n font-size: 22px;\n}\n\n.post-content h3 {\n font-size: 18px;\n}\n\n.post-content blockquote {\n border-left: 4px solid #3690cf;\n padding: 12px 20px;\n margin: 20px 0;\n background-color: #f8f9fb;\n border-radius: 0 8px 8px 0;\n color: #555;\n font-style: italic;\n}\n\n.post-content a {\n color: #3690cf;\n text-decoration: none;\n border-bottom: 1px dashed rgba(54, 144, 207, 0.5);\n transition: all 0.2s;\n}\n\n.post-content a:hover {\n color: #2a78b8;\n border-bottom: 1px solid #2a78b8;\n}\n\n.post-content pre {\n background-color: #282c34;\n border-radius: 8px;\n padding: 16px;\n overflow-x: auto;\n margin: 20px 0;\n position: relative;\n}\n\n.post-content pre code {\n color: #abb2bf;\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.post-content code {\n background-color: #f6f8fa;\n padding: 2px 6px;\n border-radius: 4px;\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 0.9em;\n color: #e83e8c;\n}\n\n.post-content pre code {\n background-color: transparent;\n padding: 0;\n color: inherit;\n}\n\n/* 高亮代码块标题 */\n.code-block-header {\n position: absolute;\n top: 0;\n right: 0;\n background: rgba(255, 255, 255, 0.1);\n padding: 4px 12px;\n border-radius: 0 8px 0 8px;\n font-size: 12px;\n color: #aaa;\n}\n\n/* 帖子操作区域 */\n.post-actions {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 32px;\n border-top: 1px solid #f0f0f0;\n background-color: #f9fafc;\n}\n\n.post-action-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n border-radius: 20px;\n font-size: 14px;\n color: #666;\n background-color: white;\n border: 1px solid #e8e8e8;\n transition: all 0.25s;\n cursor: pointer;\n}\n\n.post-action-btn:hover {\n color: #3690cf;\n border-color: #3690cf;\n background-color: rgba(54, 144, 207, 0.05);\n}\n\n.post-action-btn .anticon {\n margin-right: 6px;\n font-size: 16px;\n}\n\n.post-action-btn.liked {\n color: #ff4d4f;\n border-color: #ff4d4f;\n background-color: rgba(255, 77, 79, 0.05);\n}\n\n.post-action-btn.saved {\n color: #faad14;\n border-color: #faad14;\n background-color: rgba(250, 173, 20, 0.05);\n}\n\n.post-action-group {\n display: flex;\n gap: 12px;\n}\n\n/* 评论区域 */\n.comments-section {\n padding: 32px;\n background-color: #f9fafc;\n border-top: 1px solid #f0f0f0;\n}\n\n.comments-header {\n font-size: 20px;\n font-weight: 600;\n margin-bottom: 24px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.comments-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: #3690cf;\n color: white;\n height: 24px;\n padding: 0 10px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.comment-form {\n margin-bottom: 32px;\n}\n\n.comment-textarea {\n width: 100%;\n border: 1px solid #e8e8e8;\n border-radius: 12px;\n padding: 16px;\n min-height: 120px;\n resize: none;\n font-size: 14px;\n transition: all 0.3s;\n background-color: white;\n}\n\n.comment-textarea:focus {\n outline: none;\n border-color: #3690cf;\n box-shadow: 0 0 0 2px rgba(54, 144, 207, 0.2);\n}\n\n.comment-form-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 16px;\n}\n\n.comment-submit {\n padding: 8px 24px;\n border-radius: 20px;\n background: linear-gradient(135deg, #3690cf, #2a78b8);\n color: white;\n font-size: 14px;\n font-weight: 500;\n border: none;\n cursor: pointer;\n transition: all 0.3s;\n}\n\n.comment-submit:hover {\n background: linear-gradient(135deg, #2a78b8, #1e5c8e);\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(42, 120, 184, 0.3);\n}\n\n/* 单个评论样式 */\n.comment-item {\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.comment-item:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n}\n\n.comment-header {\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.comment-avatar {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n object-fit: cover;\n background-color: #f0f0f0;\n margin-right: 12px;\n}\n\n.comment-info {\n flex: 1;\n}\n\n.comment-author {\n font-weight: 500;\n margin-right: 8px;\n color: #333;\n}\n\n.comment-meta {\n font-size: 12px;\n color: #999;\n}\n\n.comment-body {\n font-size: 14px;\n line-height: 1.6;\n color: #444;\n margin-left: 52px;\n}\n\n.comment-actions {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n margin-left: 52px;\n}\n\n.comment-action {\n font-size: 12px;\n color: #999;\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n\n.comment-action .anticon {\n margin-right: 4px;\n font-size: 14px;\n}\n\n.comment-action:hover {\n color: #3690cf;\n}\n\n/* 相关帖子 */\n.related-posts {\n padding: 32px;\n background-color: white;\n border-top: 1px solid #f0f0f0;\n}\n\n.related-posts-header {\n font-size: 20px;\n font-weight: 600;\n margin-bottom: 24px;\n color: #333;\n}\n\n.related-posts-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 24px;\n}\n\n.related-post-card {\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);\n transition: all 0.3s ease;\n background-color: white;\n}\n\n.related-post-card:hover {\n transform: translateY(-5px);\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);\n}\n\n.related-post-image {\n height: 160px;\n overflow: hidden;\n position: relative;\n}\n\n.related-post-image img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.5s ease;\n}\n\n.related-post-card:hover .related-post-image img {\n transform: scale(1.05);\n}\n\n.related-post-content {\n padding: 16px;\n}\n\n.related-post-title {\n font-size: 16px;\n font-weight: 500;\n margin-bottom: 8px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.4;\n height: 44.8px;\n}\n\n.related-post-meta {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: #999;\n}\n\n/* 回到顶部按钮 */\n.back-to-top {\n position: fixed;\n bottom: 40px;\n right: 40px;\n width: 50px;\n height: 50px;\n border-radius: 50%;\n background: white;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n display: flex;\n align-items: center;\n justify-content: center;\n color: #555;\n font-size: 20px;\n cursor: pointer;\n transition: all 0.3s;\n z-index: 100;\n opacity: 0;\n visibility: hidden;\n}\n\n.back-to-top.visible {\n opacity: 1;\n visibility: visible;\n}\n\n.back-to-top:hover {\n background: #3690cf;\n color: white;\n box-shadow: 0 6px 16px rgba(54, 144, 207, 0.4);\n transform: translateY(-5px);\n}\n\n/* 炫酷粒子效果 */\n.particles {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n z-index: 0;\n}\n\n.particle {\n position: absolute;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.3);\n animation: float 3s infinite;\n}\n\n@keyframes float {\n 0%, 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-20px);\n }\n}\n\n/* 内容区域美化 */\n.content-area {\n position: relative;\n z-index: 1;\n}\n\n/* 响应式布局 */\n@media (max-width: 768px) {\n .post-header {\n padding: 30px 20px 20px;\n }\n \n .post-title {\n font-size: 22px;\n }\n \n .author-card {\n margin-left: 20px;\n }\n \n .author-avatar {\n width: 60px;\n height: 60px;\n }\n \n .post-content,\n .post-actions,\n .comments-section,\n .related-posts {\n padding: 20px;\n }\n \n .related-posts-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n \n .back-to-top {\n bottom: 20px;\n right: 20px;\n width: 40px;\n height: 40px;\n }\n}\n\n/* 动画效果 */\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fade-in {\n animation: fadeIn 0.6s ease forwards;\n}\n\n.fade-in-delay-1 {\n animation: fadeIn 0.6s ease 0.1s forwards;\n opacity: 0;\n}\n\n.fade-in-delay-2 {\n animation: fadeIn 0.6s ease 0.2s forwards;\n opacity: 0;\n}\n\n.fade-in-delay-3 {\n animation: fadeIn 0.6s ease 0.3s forwards;\n opacity: 0;\n}\n\n/* 阅读进度条 */\n.reading-progress {\n position: fixed;\n top: 0;\n left: 0;\n width: 0;\n height: 4px;\n background: linear-gradient(90deg, #3690cf, #6dc6ff);\n z-index: 1000;\n transition: width 0.1s;\n}\n\n/* 自定义滚动条 */\n::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 10px;\n}\n\n::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 10px;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: #3690cf;\n}\n</style>\n"],"mappings":"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","ignoreList":[]}]} |