diff --git a/dist/css/181.3599b6db.css b/dist/css/181.3599b6db.css deleted file mode 100644 index 89afb68..0000000 --- a/dist/css/181.3599b6db.css +++ /dev/null @@ -1 +0,0 @@ -.card-list-container[data-v-12ce9c3f]{width:100%;padding:20px 0}.card-grid[data-v-12ce9c3f]{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card[data-v-12ce9c3f]{background-color:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.08);transition:transform .3s,box-shadow .3s;cursor:pointer;height:100%}.card[data-v-12ce9c3f]:hover{transform:translateY(-5px);box-shadow:0 5px 15px rgba(0,0,0,.1)}.card-content[data-v-12ce9c3f]{padding:16px;display:flex;flex-direction:column;height:100%}.card-title[data-v-12ce9c3f]{margin:0 0 12px 0;font-size:1.2rem;line-height:1.4;font-weight:600;color:#333;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.card-tags[data-v-12ce9c3f]{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.article-tag[data-v-12ce9c3f]{padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.08)}.official[data-v-12ce9c3f]{background-color:#e6f7ff;color:#1890ff}.highlight[data-v-12ce9c3f]{background-color:#f6ffed;color:#52c41a}.top[data-v-12ce9c3f]{background-color:#fff7e6;color:#fa8c16}.card-meta[data-v-12ce9c3f]{display:flex;justify-content:space-between;margin-bottom:12px;font-size:.85rem;color:#666}.card-tags-list[data-v-12ce9c3f]{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.card-tag[data-v-12ce9c3f]{background-color:#f5f5f5;padding:2px 8px;border-radius:4px;font-size:.7rem;color:#666}.table-container[data-v-12ce9c3f]{width:100%;overflow-x:auto}.articles-table[data-v-12ce9c3f]{width:100%;border-collapse:collapse;box-shadow:0 2px 8px rgba(0,0,0,.06);background-color:#fff;border-radius:8px;overflow:hidden}.articles-table td[data-v-12ce9c3f],.articles-table th[data-v-12ce9c3f]{padding:12px 16px;text-align:left}.articles-table th[data-v-12ce9c3f]{background-color:#f5f5f5;font-weight:600;color:#333}.articles-table tr[data-v-12ce9c3f]{border-bottom:1px solid #f0f0f0;cursor:pointer;transition:background-color .2s}.articles-table tr[data-v-12ce9c3f]:last-child{border-bottom:none}.articles-table tr[data-v-12ce9c3f]:hover{background-color:#f9f9f9}.pagination[data-v-12ce9c3f]{display:flex;justify-content:center;align-items:center;margin-top:30px}.pagination-btn[data-v-12ce9c3f]{padding:6px 14px;background-color:#fff;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .3s}.pagination-btn[data-v-12ce9c3f]:hover:not(:disabled){color:#1890ff;border-color:#1890ff}.pagination-btn[data-v-12ce9c3f]:disabled{color:#d9d9d9;cursor:not-allowed;background-color:#f5f5f5}.page-info[data-v-12ce9c3f]{margin:0 15px;color:#666}.loading[data-v-12ce9c3f]{display:flex;justify-content:center;align-items:center;padding:30px 0;flex-direction:column}.loading .loading-spinner[data-v-12ce9c3f]{width:40px;height:40px;border:3px solid rgba(0,0,0,.1);border-radius:50%;border-top-color:#1890ff;animation:spin-12ce9c3f 1s ease-in-out infinite;margin-bottom:10px}@keyframes spin-12ce9c3f{to{transform:rotate(1turn)}}.no-data[data-v-12ce9c3f]{grid-column:1/-1;text-align:center;padding:30px 0;color:#999;font-size:1rem}@media(max-width:1024px){.card-grid[data-v-12ce9c3f]{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.card-grid[data-v-12ce9c3f]{grid-template-columns:1fr}.card-title[data-v-12ce9c3f]{font-size:1.1rem}.pagination-btn[data-v-12ce9c3f]{padding:5px 12px}}.strategy-view[data-v-37b9a322]{background-color:#f5f5f7;min-height:100vh;padding-top:60px}.container[data-v-37b9a322]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.page-title[data-v-37b9a322]{font-size:2rem;font-weight:700;margin-bottom:1.5rem;color:#333;text-align:center}.intro-card[data-v-37b9a322]{background-color:#fff;border-radius:8px;padding:1.5rem 2rem;margin-bottom:2rem;box-shadow:0 2px 10px rgba(0,0,0,.05);border-left:4px solid #3273dc;position:relative;overflow:hidden}.intro-card[data-v-37b9a322]:before{content:"";position:absolute;top:0;right:0;width:150px;height:150px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.intro-text[data-v-37b9a322]{color:#555;line-height:1.6;margin-bottom:1rem;position:relative;z-index:1}.intro-text[data-v-37b9a322]:last-child{margin-bottom:0}.tag-selection[data-v-37b9a322]{background-color:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 10px rgba(0,0,0,.05)}.tag-header[data-v-37b9a322]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.tag-title[data-v-37b9a322]{font-size:1.2rem;font-weight:600;color:#333;margin:0}.tag-controls[data-v-37b9a322]{display:flex;gap:.8rem}.tag-control-btn[data-v-37b9a322]{padding:.6rem 1.2rem;border:none;background:linear-gradient(90deg,#3273dc,#4286f4);color:#fff;border-radius:30px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .3s ease;box-shadow:0 3px 6px rgba(50,115,220,.2)}.tag-control-btn[data-v-37b9a322]:hover{transform:translateY(-2px);box-shadow:0 5px 10px rgba(50,115,220,.3);background:linear-gradient(90deg,#2e69cc,#3b7ce3)}.tag-control-btn[data-v-37b9a322]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(50,115,220,.2);background:linear-gradient(90deg,#2960bd,#356ccc)}.tags-container[data-v-37b9a322]{display:flex;flex-wrap:wrap;gap:.8rem}.tag-chip[data-v-37b9a322]{display:flex;align-items:center;gap:.4rem;padding:.5rem 1rem;background-color:#f1f1f1;border-radius:20px;font-size:.9rem;cursor:pointer;transition:all .2s}.tag-chip[data-v-37b9a322]:hover{background-color:#e0e0e0}.tag-chip.active[data-v-37b9a322]{background-color:#3273dc;color:#fff}.tag-chip .check-icon[data-v-37b9a322]{font-size:.8rem}@media(max-width:768px){.tag-header[data-v-37b9a322]{flex-direction:column;align-items:flex-start;gap:1rem}.page-title[data-v-37b9a322]{font-size:1.6rem;text-align:left}.tag-selection[data-v-37b9a322]{padding:1rem}.intro-card[data-v-37b9a322]{padding:1.2rem 1rem}.intro-text[data-v-37b9a322]{font-size:.95rem}}.tag-loading-error[data-v-37b9a322]{color:#c62828;font-size:.9rem;margin-top:.5rem;padding-left:1.5rem} \ No newline at end of file diff --git a/dist/css/181.762db45b.css b/dist/css/181.762db45b.css new file mode 100644 index 0000000..b02ab9b --- /dev/null +++ b/dist/css/181.762db45b.css @@ -0,0 +1 @@ +.card-list-container[data-v-34572a42]{width:100%;padding:0}.card-grid[data-v-34572a42]{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:10px 0}.card[data-v-34572a42]{background-color:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.08);transition:transform .3s,box-shadow .3s;cursor:pointer;height:100%}.card[data-v-34572a42]:hover{transform:translateY(-5px);box-shadow:0 5px 15px rgba(0,0,0,.1)}.card-content[data-v-34572a42]{padding:16px;display:flex;flex-direction:column;height:100%}.card-title[data-v-34572a42]{margin:0 0 12px 0;font-size:1.2rem;line-height:1.4;font-weight:600;color:#333;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.card-tags[data-v-34572a42]{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.article-tag[data-v-34572a42]{padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.08)}.official[data-v-34572a42]{background-color:#e6f7ff;color:#1890ff}.highlight[data-v-34572a42]{background-color:#f6ffed;color:#52c41a}.top[data-v-34572a42]{background-color:#fff7e6;color:#fa8c16}.card-meta[data-v-34572a42]{display:flex;justify-content:space-between;margin-bottom:12px;font-size:.85rem;color:#666}.card-tags-list[data-v-34572a42]{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.card-tag[data-v-34572a42]{background-color:#f5f5f5;padding:2px 8px;border-radius:4px;font-size:.7rem;color:#666}.table-container[data-v-34572a42]{width:100%;overflow-x:hidden}.articles-table[data-v-34572a42]{width:100%;border-collapse:separate;border-spacing:0 8px;table-layout:fixed}.articles-table tr[data-v-34572a42]{background-color:#fff;cursor:pointer;transition:all .2s ease;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.05);position:relative}.articles-table tr[data-v-34572a42]:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.1);background-color:#fff;z-index:1}.articles-table tr:hover .title-cell[data-v-34572a42]{color:#3273dc}.articles-table tr:hover .arrow-icon[data-v-34572a42]{opacity:1;transform:translateX(4px)}.articles-table tr td[data-v-34572a42]{padding:12px 16px;vertical-align:middle}.articles-table tr td[data-v-34572a42]:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.articles-table tr td[data-v-34572a42]:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.rank-cell[data-v-34572a42]{width:60px;text-align:center;padding-right:0!important}.rank-num[data-v-34572a42]{display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;border-radius:4px;background-color:#f0f0f0;color:#999;font-size:.9rem;font-weight:700;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.rank-num.rank-1[data-v-34572a42]{background:linear-gradient(135deg,gold,#fdb931);color:#fff;box-shadow:0 2px 4px rgba(253,185,49,.3)}.rank-num.rank-2[data-v-34572a42]{background:linear-gradient(135deg,#e0e0e0,#bdbdbd);color:#fff;box-shadow:0 2px 4px hsla(0,0%,74%,.3)}.rank-num.rank-3[data-v-34572a42]{background:linear-gradient(135deg,#cd7f32,sienna);color:#fff;box-shadow:0 2px 4px rgba(160,82,45,.3)}.title-cell[data-v-34572a42]{font-size:1rem;color:#333;transition:color .2s;overflow:hidden}.title-content[data-v-34572a42]{display:flex;align-items:center;gap:8px;overflow:hidden}.article-title[data-v-34572a42]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.mini-tags[data-v-34572a42]{display:flex;gap:4px;flex-shrink:0}.mini-tag[data-v-34572a42]{font-size:.7rem;padding:1px 4px;border-radius:2px;border:1px solid transparent}.mini-tag.official[data-v-34572a42]{color:#1890ff;border-color:rgba(24,144,255,.3);background-color:rgba(24,144,255,.05)}.mini-tag.highlight[data-v-34572a42]{color:#52c41a;border-color:rgba(82,196,26,.3);background-color:rgba(82,196,26,.05)}.mini-tag.top[data-v-34572a42]{color:#fa8c16;border-color:rgba(250,140,22,.3);background-color:rgba(250,140,22,.05)}.meta-cell[data-v-34572a42]{text-align:right;white-space:nowrap;color:#999;font-size:.85rem;width:180px;padding-left:20px}.article-section[data-v-34572a42]{display:inline-block;margin-right:12px;padding:2px 8px;background-color:#f5f5f5;border-radius:10px;font-size:.75rem;color:#666}.article-date[data-v-34572a42]{display:inline-block;min-width:80px}.arrow-icon[data-v-34572a42]{display:inline-block;margin-left:8px;font-size:1.2rem;line-height:1;color:#ccc;opacity:0;transition:all .2s ease;transform:translateX(0)}@media(max-width:768px){.meta-cell[data-v-34572a42]{width:auto}.meta-cell .article-date[data-v-34572a42],.meta-cell .article-section[data-v-34572a42]{display:none}.meta-cell .arrow-icon[data-v-34572a42]{opacity:1}.rank-cell[data-v-34572a42]{width:40px}}.pagination[data-v-34572a42]{display:flex;justify-content:center;align-items:center;margin-top:30px}.pagination-btn[data-v-34572a42]{padding:6px 14px;background-color:#fff;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .3s}.pagination-btn[data-v-34572a42]:hover:not(:disabled){color:#1890ff;border-color:#1890ff}.pagination-btn[data-v-34572a42]:disabled{color:#d9d9d9;cursor:not-allowed;background-color:#f5f5f5}.page-info[data-v-34572a42]{margin:0 15px;color:#666}.loading[data-v-34572a42]{display:flex;justify-content:center;align-items:center;padding:30px 0;flex-direction:column}.loading .loading-spinner[data-v-34572a42]{width:40px;height:40px;border:3px solid rgba(0,0,0,.1);border-radius:50%;border-top-color:#1890ff;animation:spin-34572a42 1s ease-in-out infinite;margin-bottom:10px}@keyframes spin-34572a42{to{transform:rotate(1turn)}}.no-data[data-v-34572a42]{grid-column:1/-1;text-align:center;padding:30px 0;color:#999;font-size:1rem}@media(max-width:1024px){.card-grid[data-v-34572a42]{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.card-grid[data-v-34572a42]{grid-template-columns:1fr}.card-title[data-v-34572a42]{font-size:1.1rem}.pagination-btn[data-v-34572a42]{padding:5px 12px}}.strategy-view[data-v-37b9a322]{background-color:#f5f5f7;min-height:100vh;padding-top:60px}.container[data-v-37b9a322]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.page-title[data-v-37b9a322]{font-size:2rem;font-weight:700;margin-bottom:1.5rem;color:#333;text-align:center}.intro-card[data-v-37b9a322]{background-color:#fff;border-radius:8px;padding:1.5rem 2rem;margin-bottom:2rem;box-shadow:0 2px 10px rgba(0,0,0,.05);border-left:4px solid #3273dc;position:relative;overflow:hidden}.intro-card[data-v-37b9a322]:before{content:"";position:absolute;top:0;right:0;width:150px;height:150px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.intro-text[data-v-37b9a322]{color:#555;line-height:1.6;margin-bottom:1rem;position:relative;z-index:1}.intro-text[data-v-37b9a322]:last-child{margin-bottom:0}.tag-selection[data-v-37b9a322]{background-color:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 10px rgba(0,0,0,.05)}.tag-header[data-v-37b9a322]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.tag-title[data-v-37b9a322]{font-size:1.2rem;font-weight:600;color:#333;margin:0}.tag-controls[data-v-37b9a322]{display:flex;gap:.8rem}.tag-control-btn[data-v-37b9a322]{padding:.6rem 1.2rem;border:none;background:linear-gradient(90deg,#3273dc,#4286f4);color:#fff;border-radius:30px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .3s ease;box-shadow:0 3px 6px rgba(50,115,220,.2)}.tag-control-btn[data-v-37b9a322]:hover{transform:translateY(-2px);box-shadow:0 5px 10px rgba(50,115,220,.3);background:linear-gradient(90deg,#2e69cc,#3b7ce3)}.tag-control-btn[data-v-37b9a322]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(50,115,220,.2);background:linear-gradient(90deg,#2960bd,#356ccc)}.tags-container[data-v-37b9a322]{display:flex;flex-wrap:wrap;gap:.8rem}.tag-chip[data-v-37b9a322]{display:flex;align-items:center;gap:.4rem;padding:.5rem 1rem;background-color:#f1f1f1;border-radius:20px;font-size:.9rem;cursor:pointer;transition:all .2s}.tag-chip[data-v-37b9a322]:hover{background-color:#e0e0e0}.tag-chip.active[data-v-37b9a322]{background-color:#3273dc;color:#fff}.tag-chip .check-icon[data-v-37b9a322]{font-size:.8rem}@media(max-width:768px){.tag-header[data-v-37b9a322]{flex-direction:column;align-items:flex-start;gap:1rem}.page-title[data-v-37b9a322]{font-size:1.6rem;text-align:left}.tag-selection[data-v-37b9a322]{padding:1rem}.intro-card[data-v-37b9a322]{padding:1.2rem 1rem}.intro-text[data-v-37b9a322]{font-size:.95rem}}.tag-loading-error[data-v-37b9a322]{color:#c62828;font-size:.9rem;margin-top:.5rem;padding-left:1.5rem} \ No newline at end of file diff --git a/dist/css/556.6a7a8c4a.css b/dist/css/556.6a7a8c4a.css new file mode 100644 index 0000000..e6209c6 --- /dev/null +++ b/dist/css/556.6a7a8c4a.css @@ -0,0 +1 @@ +.card-list-container[data-v-34572a42]{width:100%;padding:0}.card-grid[data-v-34572a42]{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:10px 0}.card[data-v-34572a42]{background-color:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.08);transition:transform .3s,box-shadow .3s;cursor:pointer;height:100%}.card[data-v-34572a42]:hover{transform:translateY(-5px);box-shadow:0 5px 15px rgba(0,0,0,.1)}.card-content[data-v-34572a42]{padding:16px;display:flex;flex-direction:column;height:100%}.card-title[data-v-34572a42]{margin:0 0 12px 0;font-size:1.2rem;line-height:1.4;font-weight:600;color:#333;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.card-tags[data-v-34572a42]{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.article-tag[data-v-34572a42]{padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.08)}.official[data-v-34572a42]{background-color:#e6f7ff;color:#1890ff}.highlight[data-v-34572a42]{background-color:#f6ffed;color:#52c41a}.top[data-v-34572a42]{background-color:#fff7e6;color:#fa8c16}.card-meta[data-v-34572a42]{display:flex;justify-content:space-between;margin-bottom:12px;font-size:.85rem;color:#666}.card-tags-list[data-v-34572a42]{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.card-tag[data-v-34572a42]{background-color:#f5f5f5;padding:2px 8px;border-radius:4px;font-size:.7rem;color:#666}.table-container[data-v-34572a42]{width:100%;overflow-x:hidden}.articles-table[data-v-34572a42]{width:100%;border-collapse:separate;border-spacing:0 8px;table-layout:fixed}.articles-table tr[data-v-34572a42]{background-color:#fff;cursor:pointer;transition:all .2s ease;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.05);position:relative}.articles-table tr[data-v-34572a42]:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.1);background-color:#fff;z-index:1}.articles-table tr:hover .title-cell[data-v-34572a42]{color:#3273dc}.articles-table tr:hover .arrow-icon[data-v-34572a42]{opacity:1;transform:translateX(4px)}.articles-table tr td[data-v-34572a42]{padding:12px 16px;vertical-align:middle}.articles-table tr td[data-v-34572a42]:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.articles-table tr td[data-v-34572a42]:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.rank-cell[data-v-34572a42]{width:60px;text-align:center;padding-right:0!important}.rank-num[data-v-34572a42]{display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;border-radius:4px;background-color:#f0f0f0;color:#999;font-size:.9rem;font-weight:700;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.rank-num.rank-1[data-v-34572a42]{background:linear-gradient(135deg,gold,#fdb931);color:#fff;box-shadow:0 2px 4px rgba(253,185,49,.3)}.rank-num.rank-2[data-v-34572a42]{background:linear-gradient(135deg,#e0e0e0,#bdbdbd);color:#fff;box-shadow:0 2px 4px hsla(0,0%,74%,.3)}.rank-num.rank-3[data-v-34572a42]{background:linear-gradient(135deg,#cd7f32,sienna);color:#fff;box-shadow:0 2px 4px rgba(160,82,45,.3)}.title-cell[data-v-34572a42]{font-size:1rem;color:#333;transition:color .2s;overflow:hidden}.title-content[data-v-34572a42]{display:flex;align-items:center;gap:8px;overflow:hidden}.article-title[data-v-34572a42]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.mini-tags[data-v-34572a42]{display:flex;gap:4px;flex-shrink:0}.mini-tag[data-v-34572a42]{font-size:.7rem;padding:1px 4px;border-radius:2px;border:1px solid transparent}.mini-tag.official[data-v-34572a42]{color:#1890ff;border-color:rgba(24,144,255,.3);background-color:rgba(24,144,255,.05)}.mini-tag.highlight[data-v-34572a42]{color:#52c41a;border-color:rgba(82,196,26,.3);background-color:rgba(82,196,26,.05)}.mini-tag.top[data-v-34572a42]{color:#fa8c16;border-color:rgba(250,140,22,.3);background-color:rgba(250,140,22,.05)}.meta-cell[data-v-34572a42]{text-align:right;white-space:nowrap;color:#999;font-size:.85rem;width:180px;padding-left:20px}.article-section[data-v-34572a42]{display:inline-block;margin-right:12px;padding:2px 8px;background-color:#f5f5f5;border-radius:10px;font-size:.75rem;color:#666}.article-date[data-v-34572a42]{display:inline-block;min-width:80px}.arrow-icon[data-v-34572a42]{display:inline-block;margin-left:8px;font-size:1.2rem;line-height:1;color:#ccc;opacity:0;transition:all .2s ease;transform:translateX(0)}@media(max-width:768px){.meta-cell[data-v-34572a42]{width:auto}.meta-cell .article-date[data-v-34572a42],.meta-cell .article-section[data-v-34572a42]{display:none}.meta-cell .arrow-icon[data-v-34572a42]{opacity:1}.rank-cell[data-v-34572a42]{width:40px}}.pagination[data-v-34572a42]{display:flex;justify-content:center;align-items:center;margin-top:30px}.pagination-btn[data-v-34572a42]{padding:6px 14px;background-color:#fff;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .3s}.pagination-btn[data-v-34572a42]:hover:not(:disabled){color:#1890ff;border-color:#1890ff}.pagination-btn[data-v-34572a42]:disabled{color:#d9d9d9;cursor:not-allowed;background-color:#f5f5f5}.page-info[data-v-34572a42]{margin:0 15px;color:#666}.loading[data-v-34572a42]{display:flex;justify-content:center;align-items:center;padding:30px 0;flex-direction:column}.loading .loading-spinner[data-v-34572a42]{width:40px;height:40px;border:3px solid rgba(0,0,0,.1);border-radius:50%;border-top-color:#1890ff;animation:spin-34572a42 1s ease-in-out infinite;margin-bottom:10px}@keyframes spin-34572a42{to{transform:rotate(1turn)}}.no-data[data-v-34572a42]{grid-column:1/-1;text-align:center;padding:30px 0;color:#999;font-size:1rem}@media(max-width:1024px){.card-grid[data-v-34572a42]{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.card-grid[data-v-34572a42]{grid-template-columns:1fr}.card-title[data-v-34572a42]{font-size:1.1rem}.pagination-btn[data-v-34572a42]{padding:5px 12px}}.resource-view[data-v-7a312f48]{background-color:#f5f5f7;min-height:100vh;padding-top:60px}.container[data-v-7a312f48]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.page-title[data-v-7a312f48]{font-size:2rem;font-weight:700;margin-bottom:1.5rem;color:#333;text-align:center}.view-tabs[data-v-7a312f48]{display:flex;justify-content:center;gap:1rem;margin-bottom:1.5rem}.tab-item[data-v-7a312f48]{padding:.6rem 1.5rem;cursor:pointer;font-size:1.1rem;font-weight:600;color:#666;border-radius:8px;transition:all .3s ease;background-color:#fff;box-shadow:0 2px 6px rgba(0,0,0,.05)}.tab-item[data-v-7a312f48]:hover{color:#3273dc;transform:translateY(-2px);box-shadow:0 4px 10px rgba(50,115,220,.15)}.tab-item.active[data-v-7a312f48]{color:#fff;background:linear-gradient(135deg,#3273dc,#4286f4);box-shadow:0 4px 12px rgba(50,115,220,.3)}.intro-card[data-v-7a312f48]{background-color:#fff;border-radius:8px;padding:1.5rem 2rem;margin-bottom:2rem;box-shadow:0 2px 10px rgba(0,0,0,.05);border-left:4px solid #3273dc;position:relative;overflow:hidden}.intro-card[data-v-7a312f48]:before{content:"";position:absolute;top:0;right:0;width:150px;height:150px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.intro-text[data-v-7a312f48]{color:#555;line-height:1.6;margin-bottom:1rem;position:relative;z-index:1}.intro-text[data-v-7a312f48]:last-child{margin-bottom:0}.section-title[data-v-7a312f48]{font-size:1.4rem;font-weight:600;color:#333;margin-bottom:.8rem;display:flex;align-items:center;gap:.5rem}.recent-resources[data-v-7a312f48]{margin-bottom:2.5rem}.filter-control[data-v-7a312f48]{background-color:#fff;border-radius:8px;padding:1rem 1.5rem;margin-bottom:1rem;box-shadow:0 2px 10px rgba(0,0,0,.05);display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease;border-left:4px solid #722ed1}.filter-control[data-v-7a312f48]:hover{box-shadow:0 4px 12px rgba(0,0,0,.1)}.filter-title[data-v-7a312f48]{margin:0;font-size:1.2rem;font-weight:600;color:#333}.filters-container[data-v-7a312f48]{margin-bottom:2rem;animation:slideDown-7a312f48 .3s ease}@keyframes slideDown-7a312f48{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.tag-selection[data-v-7a312f48]{background-color:#fff;border-radius:8px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 10px rgba(0,0,0,.05)}.college-category[data-v-7a312f48]{border-left:4px solid #3273dc}.resource-category[data-v-7a312f48]{border-left:4px solid #52c41a}.resource-category .tag-control-btn[data-v-7a312f48]{background:linear-gradient(90deg,#52c41a,#73d13d);box-shadow:0 3px 6px rgba(82,196,26,.2)}.resource-category .tag-control-btn[data-v-7a312f48]:hover{background:linear-gradient(90deg,#49ad18,#67bc35);box-shadow:0 5px 10px rgba(82,196,26,.3)}.resource-category .tag-control-btn[data-v-7a312f48]:active{background:linear-gradient(90deg,#3f9714,#579b2d);box-shadow:0 2px 4px rgba(82,196,26,.2)}.resource-category .tag-chip.active[data-v-7a312f48]{background-color:#52c41a}.tag-header[data-v-7a312f48]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.tag-title[data-v-7a312f48]{font-size:1.2rem;font-weight:600;color:#333;margin:0}.tag-controls[data-v-7a312f48]{display:flex;gap:.8rem;align-items:center}.toggle-icon[data-v-7a312f48]{font-size:1rem;color:#722ed1;transition:transform .3s ease}.toggle-icon.is-active[data-v-7a312f48]{transform:rotate(180deg)}.tag-control-btn[data-v-7a312f48]{padding:.6rem 1.2rem;border:none;background:linear-gradient(90deg,#3273dc,#4286f4);color:#fff;border-radius:30px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .3s ease;box-shadow:0 3px 6px rgba(50,115,220,.2)}.tag-control-btn[data-v-7a312f48]:hover{transform:translateY(-2px);box-shadow:0 5px 10px rgba(50,115,220,.3);background:linear-gradient(90deg,#2e69cc,#3b7ce3)}.tag-control-btn[data-v-7a312f48]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(50,115,220,.2);background:linear-gradient(90deg,#2960bd,#356ccc)}.tags-container[data-v-7a312f48]{display:flex;flex-wrap:wrap;gap:.8rem}.tag-chip[data-v-7a312f48]{display:flex;align-items:center;gap:.4rem;padding:.5rem 1rem;background-color:#f1f1f1;border-radius:20px;font-size:.9rem;cursor:pointer;transition:all .2s}.tag-chip[data-v-7a312f48]:hover{background-color:#e0e0e0}.tag-chip.active[data-v-7a312f48]{background-color:#3273dc;color:#fff}.tag-chip .check-icon[data-v-7a312f48]{font-size:.8rem}@media(max-width:768px){.tag-header[data-v-7a312f48]{flex-direction:column;align-items:flex-start;gap:1rem}.page-title[data-v-7a312f48]{font-size:1.6rem;text-align:left}.tag-selection[data-v-7a312f48]{padding:1rem}.intro-card[data-v-7a312f48]{padding:1.2rem 1rem}.intro-text[data-v-7a312f48]{font-size:.95rem}.tag-controls[data-v-7a312f48]{width:100%;justify-content:space-between}.filter-control[data-v-7a312f48]{padding:.8rem 1rem}}.tag-loading-error[data-v-7a312f48]{color:#c62828;font-size:.9rem;margin-top:.5rem;padding-left:1.5rem} \ No newline at end of file diff --git a/dist/css/690.885607c9.css b/dist/css/690.885607c9.css deleted file mode 100644 index 246447f..0000000 --- a/dist/css/690.885607c9.css +++ /dev/null @@ -1 +0,0 @@ -.card-list-container[data-v-12ce9c3f]{width:100%;padding:20px 0}.card-grid[data-v-12ce9c3f]{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card[data-v-12ce9c3f]{background-color:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.08);transition:transform .3s,box-shadow .3s;cursor:pointer;height:100%}.card[data-v-12ce9c3f]:hover{transform:translateY(-5px);box-shadow:0 5px 15px rgba(0,0,0,.1)}.card-content[data-v-12ce9c3f]{padding:16px;display:flex;flex-direction:column;height:100%}.card-title[data-v-12ce9c3f]{margin:0 0 12px 0;font-size:1.2rem;line-height:1.4;font-weight:600;color:#333;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.card-tags[data-v-12ce9c3f]{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.article-tag[data-v-12ce9c3f]{padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.08)}.official[data-v-12ce9c3f]{background-color:#e6f7ff;color:#1890ff}.highlight[data-v-12ce9c3f]{background-color:#f6ffed;color:#52c41a}.top[data-v-12ce9c3f]{background-color:#fff7e6;color:#fa8c16}.card-meta[data-v-12ce9c3f]{display:flex;justify-content:space-between;margin-bottom:12px;font-size:.85rem;color:#666}.card-tags-list[data-v-12ce9c3f]{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.card-tag[data-v-12ce9c3f]{background-color:#f5f5f5;padding:2px 8px;border-radius:4px;font-size:.7rem;color:#666}.table-container[data-v-12ce9c3f]{width:100%;overflow-x:auto}.articles-table[data-v-12ce9c3f]{width:100%;border-collapse:collapse;box-shadow:0 2px 8px rgba(0,0,0,.06);background-color:#fff;border-radius:8px;overflow:hidden}.articles-table td[data-v-12ce9c3f],.articles-table th[data-v-12ce9c3f]{padding:12px 16px;text-align:left}.articles-table th[data-v-12ce9c3f]{background-color:#f5f5f5;font-weight:600;color:#333}.articles-table tr[data-v-12ce9c3f]{border-bottom:1px solid #f0f0f0;cursor:pointer;transition:background-color .2s}.articles-table tr[data-v-12ce9c3f]:last-child{border-bottom:none}.articles-table tr[data-v-12ce9c3f]:hover{background-color:#f9f9f9}.pagination[data-v-12ce9c3f]{display:flex;justify-content:center;align-items:center;margin-top:30px}.pagination-btn[data-v-12ce9c3f]{padding:6px 14px;background-color:#fff;border:1px solid #d9d9d9;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .3s}.pagination-btn[data-v-12ce9c3f]:hover:not(:disabled){color:#1890ff;border-color:#1890ff}.pagination-btn[data-v-12ce9c3f]:disabled{color:#d9d9d9;cursor:not-allowed;background-color:#f5f5f5}.page-info[data-v-12ce9c3f]{margin:0 15px;color:#666}.loading[data-v-12ce9c3f]{display:flex;justify-content:center;align-items:center;padding:30px 0;flex-direction:column}.loading .loading-spinner[data-v-12ce9c3f]{width:40px;height:40px;border:3px solid rgba(0,0,0,.1);border-radius:50%;border-top-color:#1890ff;animation:spin-12ce9c3f 1s ease-in-out infinite;margin-bottom:10px}@keyframes spin-12ce9c3f{to{transform:rotate(1turn)}}.no-data[data-v-12ce9c3f]{grid-column:1/-1;text-align:center;padding:30px 0;color:#999;font-size:1rem}@media(max-width:1024px){.card-grid[data-v-12ce9c3f]{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.card-grid[data-v-12ce9c3f]{grid-template-columns:1fr}.card-title[data-v-12ce9c3f]{font-size:1.1rem}.pagination-btn[data-v-12ce9c3f]{padding:5px 12px}}.resource-view[data-v-6271fb15]{background-color:#f5f5f7;min-height:100vh;padding-top:60px}.container[data-v-6271fb15]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.page-title[data-v-6271fb15]{font-size:2rem;font-weight:700;margin-bottom:1.5rem;color:#333;text-align:center}.intro-card[data-v-6271fb15]{background-color:#fff;border-radius:8px;padding:1.5rem 2rem;margin-bottom:2rem;box-shadow:0 2px 10px rgba(0,0,0,.05);border-left:4px solid #3273dc;position:relative;overflow:hidden}.intro-card[data-v-6271fb15]:before{content:"";position:absolute;top:0;right:0;width:150px;height:150px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.intro-text[data-v-6271fb15]{color:#555;line-height:1.6;margin-bottom:1rem;position:relative;z-index:1}.intro-text[data-v-6271fb15]:last-child{margin-bottom:0}.filter-control[data-v-6271fb15]{background-color:#fff;border-radius:8px;padding:1rem 1.5rem;margin-bottom:1rem;box-shadow:0 2px 10px rgba(0,0,0,.05);display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease;border-left:4px solid #722ed1}.filter-control[data-v-6271fb15]:hover{box-shadow:0 4px 12px rgba(0,0,0,.1)}.filter-title[data-v-6271fb15]{margin:0;font-size:1.2rem;font-weight:600;color:#333}.filters-container[data-v-6271fb15]{margin-bottom:2rem;animation:slideDown-6271fb15 .3s ease}@keyframes slideDown-6271fb15{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.tag-selection[data-v-6271fb15]{background-color:#fff;border-radius:8px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 10px rgba(0,0,0,.05)}.college-category[data-v-6271fb15]{border-left:4px solid #3273dc}.resource-category[data-v-6271fb15]{border-left:4px solid #52c41a}.resource-category .tag-control-btn[data-v-6271fb15]{background:linear-gradient(90deg,#52c41a,#73d13d);box-shadow:0 3px 6px rgba(82,196,26,.2)}.resource-category .tag-control-btn[data-v-6271fb15]:hover{background:linear-gradient(90deg,#49ad18,#67bc35);box-shadow:0 5px 10px rgba(82,196,26,.3)}.resource-category .tag-control-btn[data-v-6271fb15]:active{background:linear-gradient(90deg,#3f9714,#579b2d);box-shadow:0 2px 4px rgba(82,196,26,.2)}.resource-category .tag-chip.active[data-v-6271fb15]{background-color:#52c41a}.tag-header[data-v-6271fb15]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.tag-title[data-v-6271fb15]{font-size:1.2rem;font-weight:600;color:#333;margin:0}.tag-controls[data-v-6271fb15]{display:flex;gap:.8rem;align-items:center}.toggle-icon[data-v-6271fb15]{font-size:1rem;color:#722ed1;transition:transform .3s ease}.toggle-icon.is-active[data-v-6271fb15]{transform:rotate(180deg)}.tag-control-btn[data-v-6271fb15]{padding:.6rem 1.2rem;border:none;background:linear-gradient(90deg,#3273dc,#4286f4);color:#fff;border-radius:30px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .3s ease;box-shadow:0 3px 6px rgba(50,115,220,.2)}.tag-control-btn[data-v-6271fb15]:hover{transform:translateY(-2px);box-shadow:0 5px 10px rgba(50,115,220,.3);background:linear-gradient(90deg,#2e69cc,#3b7ce3)}.tag-control-btn[data-v-6271fb15]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(50,115,220,.2);background:linear-gradient(90deg,#2960bd,#356ccc)}.tags-container[data-v-6271fb15]{display:flex;flex-wrap:wrap;gap:.8rem}.tag-chip[data-v-6271fb15]{display:flex;align-items:center;gap:.4rem;padding:.5rem 1rem;background-color:#f1f1f1;border-radius:20px;font-size:.9rem;cursor:pointer;transition:all .2s}.tag-chip[data-v-6271fb15]:hover{background-color:#e0e0e0}.tag-chip.active[data-v-6271fb15]{background-color:#3273dc;color:#fff}.tag-chip .check-icon[data-v-6271fb15]{font-size:.8rem}@media(max-width:768px){.tag-header[data-v-6271fb15]{flex-direction:column;align-items:flex-start;gap:1rem}.page-title[data-v-6271fb15]{font-size:1.6rem;text-align:left}.tag-selection[data-v-6271fb15]{padding:1rem}.intro-card[data-v-6271fb15]{padding:1.2rem 1rem}.intro-text[data-v-6271fb15]{font-size:.95rem}.tag-controls[data-v-6271fb15]{width:100%;justify-content:space-between}.filter-control[data-v-6271fb15]{padding:.8rem 1rem}}.tag-loading-error[data-v-6271fb15]{color:#c62828;font-size:.9rem;margin-top:.5rem;padding-left:1.5rem} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index f268c0d..2a034a5 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -NEU小站
\ No newline at end of file +NEU小站
\ No newline at end of file diff --git a/dist/js/181.131039eb.js b/dist/js/181.131039eb.js deleted file mode 100644 index 0cbd0ed..0000000 --- a/dist/js/181.131039eb.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[181],{1538:function(t,a,e){e.d(a,{A:function(){return $}});var s=e(6768),i=e(4232);const r={class:"card-list-container"},c={key:0,class:"card-grid"},n=["onClick"],l={class:"card-content"},o={class:"card-title"},d={class:"card-tags"},g={key:0,class:"article-tag official"},h={key:1,class:"article-tag highlight"},u={key:2,class:"article-tag top"},p={class:"card-meta"},k={class:"card-section"},v={class:"card-date"},y={class:"card-tags-list"},f={key:0,class:"no-data"},C={key:1,class:"table-container"},m={class:"articles-table"},L=["onClick"],P={key:0,class:"no-data"},T={key:2,class:"loading"},b={key:3,class:"pagination"},E=["disabled"],w={class:"page-info"},X=["disabled"];function A(t,a,e,A,_,S){return(0,s.uX)(),(0,s.CE)("div",r,[1===e.mode?((0,s.uX)(),(0,s.CE)("div",c,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(_.articles,(t=>((0,s.uX)(),(0,s.CE)("div",{key:t.id,class:"card",onClick:a=>S.viewArticle(t.id)},[(0,s.Lk)("div",l,[(0,s.Lk)("h3",o,(0,i.v_)(t.title),1),(0,s.Lk)("div",d,[t.official?((0,s.uX)(),(0,s.CE)("span",g,"官方")):(0,s.Q3)("",!0),t.highlight?((0,s.uX)(),(0,s.CE)("span",h,"优质")):(0,s.Q3)("",!0),t.top?((0,s.uX)(),(0,s.CE)("span",u,"置顶")):(0,s.Q3)("",!0)]),(0,s.Lk)("div",p,[(0,s.Lk)("span",k,(0,i.v_)(t.section||"资源共享"),1),(0,s.Lk)("span",v,"更新于 "+(0,i.v_)(S.formatDate(t.updated_at)),1)]),(0,s.Lk)("div",y,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(t.tags,(t=>((0,s.uX)(),(0,s.CE)("span",{key:t.id,class:"card-tag"},(0,i.v_)(t.name),1)))),128))])])],8,n)))),128)),0!==_.articles.length||_.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",f," 暂无符合条件的文章 "))])):((0,s.uX)(),(0,s.CE)("div",C,[(0,s.Lk)("table",m,[a[2]||(a[2]=(0,s.Lk)("thead",null,[(0,s.Lk)("tr",null,[(0,s.Lk)("th",null,"文章标题")])],-1)),(0,s.Lk)("tbody",null,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(_.articles,(t=>((0,s.uX)(),(0,s.CE)("tr",{key:t.id,onClick:a=>S.viewArticle(t.id)},[(0,s.Lk)("td",null,(0,i.v_)(t.title),1)],8,L)))),128))])]),0!==_.articles.length||_.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",P," 暂无符合条件的文章 "))])),_.loading?((0,s.uX)(),(0,s.CE)("div",T,a[3]||(a[3]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("span",null,"正在加载...",-1)]))):(0,s.Q3)("",!0),_.totalPages>1&&!_.loading?((0,s.uX)(),(0,s.CE)("div",b,[(0,s.Lk)("button",{disabled:1===_.currentPage,onClick:a[0]||(a[0]=t=>S.changePage(_.currentPage-1)),class:"pagination-btn"}," 上一页 ",8,E),(0,s.Lk)("span",w,(0,i.v_)(_.currentPage)+" / "+(0,i.v_)(_.totalPages),1),(0,s.Lk)("button",{disabled:_.currentPage===_.totalPages,onClick:a[1]||(a[1]=t=>S.changePage(_.currentPage+1)),class:"pagination-btn"}," 下一页 ",8,X)])):(0,s.Q3)("",!0)])}e(4114);var _={name:"CardList",props:{searchParams:{type:Object,default:()=>({})},mode:{type:Number,default:1},pageSize:{type:Number,default:12}},data(){return{articles:[],currentPage:1,totalPages:0,total:0,loading:!1}},watch:{searchParams:{handler(){const t=parseInt(this.$route.query.articlePage)||1;1!==t?this.$router.push({query:{...this.$route.query,articlePage:1}}):(this.currentPage=1,this.fetchArticles())},deep:!0},"$route.query.articlePage"(t){const a=parseInt(t)||1;a!==this.currentPage&&(this.currentPage=a,this.fetchArticles())}},created(){const t=parseInt(this.$route.query.articlePage)||1;this.currentPage=t},mounted(){this.fetchArticles()},methods:{async fetchArticles(){this.loading=!0;try{const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/search/general",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.searchParams,mode:this.mode,page:this.currentPage,pageSize:this.pageSize})});if(!t.ok)throw new Error("获取文章失败");const a=await t.json();this.articles=a.articles,this.totalPages=a.totalPages,this.total=a.total}catch(t){console.error("获取文章数据失败:",t),this.articles=[]}finally{this.loading=!1}},getSectionName(t){return 0===t?"攻略指南":"资源共享"},formatDate(t){if(!t)return"";const a=new Date(t);return a.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})},changePage(t){t>=1&&t<=this.totalPages&&(this.$router.push({query:{...this.$route.query,articlePage:t}}),window.scrollTo({top:0,behavior:"smooth"}))},viewArticle(t){this.$router.push(`/article/${t}`)}}},S=e(1241);const N=(0,S.A)(_,[["render",A],["__scopeId","data-v-12ce9c3f"]]);var $=N},8181:function(t,a,e){e.r(a),e.d(a,{default:function(){return C}});var s=e(6768),i=e(4232);const r={class:"strategy-view"},c={class:"container"},n={class:"tag-selection"},l={class:"tag-header"},o={class:"tag-controls"},d={class:"tags-container"},g=["onClick"],h={key:0,class:"check-icon"};function u(t,a,e,u,p,k){const v=(0,s.g2)("NavBar"),y=(0,s.g2)("CardList");return(0,s.uX)(),(0,s.CE)("div",r,[(0,s.bF)(v),(0,s.Lk)("div",c,[a[2]||(a[2]=(0,s.Lk)("h1",{class:"page-title"},"攻略指南",-1)),a[3]||(a[3]=(0,s.Lk)("div",{class:"intro-card"},[(0,s.Lk)("p",{class:"intro-text"}," 攻略指南板块有NEUer们可能想知道的各种问题,每个内容下面都设置评论区,供大家自由交流和解惑~ "),(0,s.Lk)("p",{class:"intro-text"}," 为鼓励大家积极投稿,本站投稿者可获得东币奖励,以及专属访问密码以访问本站加密资源,感谢您的支持~ ")],-1)),(0,s.Lk)("div",n,[(0,s.Lk)("div",l,[a[1]||(a[1]=(0,s.Lk)("h2",{class:"tag-title"},"热门标签",-1)),(0,s.Lk)("div",o,[(0,s.Lk)("button",{class:"tag-control-btn",onClick:a[0]||(a[0]=(...t)=>k.clearAllTags&&k.clearAllTags(...t))},"清除")])]),(0,s.Lk)("div",d,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(p.strategyTags,(t=>((0,s.uX)(),(0,s.CE)("div",{key:t.id,class:(0,i.C4)(["tag-chip",{active:p.selectedTags.includes(t.id)}]),onClick:a=>k.toggleTag(t.id)},[(0,s.eW)((0,i.v_)(t.name)+" ",1),p.selectedTags.includes(t.id)?((0,s.uX)(),(0,s.CE)("span",h,"✓")):(0,s.Q3)("",!0)],10,g)))),128))])]),(0,s.bF)(y,{searchParams:k.searchParams,mode:1,pageSize:12},null,8,["searchParams"])])])}e(4114),e(8111),e(2489);var p=e(5390),k=e(1538),v={name:"StrategyView",components:{NavBar:p.A,CardList:k.A},data(){return{selectedTags:[],strategyTags:[],loadingTags:!1,tagLoadingError:null}},created(){document.title="攻略指南 - NEU小站",this.fetchSelectionTags()},computed:{searchParams(){const t={section:0};return this.selectedTags.length>0&&(t.tags=this.selectedTags),t}},methods:{async fetchSelectionTags(){this.loadingTags=!0,this.tagLoadingError=null;try{const t="https://newfront.xn--xhq44jb2fzpc.com/search/selection-tag",a=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({area_ids:[0]})});if(!a.ok){const t=await a.json();throw new Error(t.message||`HTTP error! status: ${a.status}`)}const e=await a.json();this.strategyTags=e["0"]||[]}catch(t){console.error("获取攻略指南标签失败:",t),this.tagLoadingError="无法加载热门标签,请稍后重试。",this.strategyTags=[]}finally{this.loadingTags=!1}},toggleTag(t){this.selectedTags.includes(t)?this.selectedTags=this.selectedTags.filter((a=>a!==t)):this.selectedTags.push(t)},clearAllTags(){this.selectedTags=[]}}},y=e(1241);const f=(0,y.A)(v,[["render",u],["__scopeId","data-v-37b9a322"]]);var C=f}}]); -//# sourceMappingURL=181.131039eb.js.map \ No newline at end of file diff --git a/dist/js/181.3ac69d86.js b/dist/js/181.3ac69d86.js new file mode 100644 index 0000000..9ae7d68 --- /dev/null +++ b/dist/js/181.3ac69d86.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[181],{7650:function(t,a,e){e.d(a,{A:function(){return j}});var s=e(6768),i=e(4232);const n={class:"card-list-container"},r={key:0,class:"card-grid"},c=["onClick"],l={class:"card-content"},o={class:"card-title"},g={class:"card-tags"},d={key:0,class:"article-tag official"},h={key:1,class:"article-tag highlight"},u={key:2,class:"article-tag top"},p={class:"card-meta"},k={class:"card-section"},v={class:"card-date"},f={class:"card-tags-list"},y={key:0,class:"no-data"},P={key:1,class:"table-container"},C={class:"articles-table"},m=["onClick"],L={class:"rank-cell"},E={class:"title-cell"},T={class:"title-content"},w={class:"article-title"},b={key:0,class:"no-data"},X={key:2,class:"loading"},A={key:3,class:"pagination"},S=["disabled"],_={class:"page-info"},$=["disabled"];function N(t,a,e,N,q,z){return(0,s.uX)(),(0,s.CE)("div",n,[1===e.mode?((0,s.uX)(),(0,s.CE)("div",r,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(q.articles,(t=>((0,s.uX)(),(0,s.CE)("div",{key:t.id,class:"card",onClick:a=>z.viewArticle(t.id)},[(0,s.Lk)("div",l,[(0,s.Lk)("h3",o,(0,i.v_)(t.title),1),(0,s.Lk)("div",g,[t.official?((0,s.uX)(),(0,s.CE)("span",d,"官方")):(0,s.Q3)("",!0),t.highlight?((0,s.uX)(),(0,s.CE)("span",h,"优质")):(0,s.Q3)("",!0),t.top?((0,s.uX)(),(0,s.CE)("span",u,"置顶")):(0,s.Q3)("",!0)]),(0,s.Lk)("div",p,[(0,s.Lk)("span",k,(0,i.v_)(t.section||"资源共享"),1),(0,s.Lk)("span",v,"更新于 "+(0,i.v_)(z.formatDate(t.updated_at)),1)]),(0,s.Lk)("div",f,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(t.tags,(t=>((0,s.uX)(),(0,s.CE)("span",{key:t.id,class:"card-tag"},(0,i.v_)(t.name),1)))),128))])])],8,c)))),128)),0!==q.articles.length||q.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",y," 暂无符合条件的文章 "))])):((0,s.uX)(),(0,s.CE)("div",P,[(0,s.Lk)("table",C,[(0,s.Lk)("tbody",null,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(q.articles,((t,a)=>((0,s.uX)(),(0,s.CE)("tr",{key:t.id,onClick:a=>z.viewArticle(t.id)},[(0,s.Lk)("td",L,[(0,s.Lk)("span",{class:(0,i.C4)(["rank-num",z.getRankClass(a)])},(0,i.v_)((q.currentPage-1)*e.pageSize+a+1),3)]),(0,s.Lk)("td",E,[(0,s.Lk)("div",T,[(0,s.Lk)("span",w,(0,i.v_)(t.title),1)])])],8,m)))),128))])]),0!==q.articles.length||q.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",b," 暂无符合条件的文章 "))])),q.loading?((0,s.uX)(),(0,s.CE)("div",X,a[2]||(a[2]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("span",null,"正在加载...",-1)]))):(0,s.Q3)("",!0),e.showPagination&&q.totalPages>1&&!q.loading?((0,s.uX)(),(0,s.CE)("div",A,[(0,s.Lk)("button",{disabled:1===q.currentPage,onClick:a[0]||(a[0]=t=>z.changePage(q.currentPage-1)),class:"pagination-btn"}," 上一页 ",8,S),(0,s.Lk)("span",_,(0,i.v_)(q.currentPage)+" / "+(0,i.v_)(q.totalPages),1),(0,s.Lk)("button",{disabled:q.currentPage===q.totalPages,onClick:a[1]||(a[1]=t=>z.changePage(q.currentPage+1)),class:"pagination-btn"}," 下一页 ",8,$)])):(0,s.Q3)("",!0)])}e(4114);var q={name:"CardList",props:{searchParams:{type:Object,default:()=>({})},mode:{type:Number,default:1},pageSize:{type:Number,default:12},apiEndpoint:{type:String,default:"/search/general"},showPagination:{type:Boolean,default:!0}},data(){return{articles:[],currentPage:1,totalPages:0,total:0,loading:!1}},watch:{searchParams:{handler(){if(!this.showPagination)return this.currentPage=1,void this.fetchArticles();const t=parseInt(this.$route.query.articlePage)||1;1!==t?this.$router.push({query:{...this.$route.query,articlePage:1}}):(this.currentPage=1,this.fetchArticles())},deep:!0},"$route.query.articlePage"(t){if(!this.showPagination)return;const a=parseInt(t)||1;a!==this.currentPage&&(this.currentPage=a,this.fetchArticles())}},created(){if(this.showPagination){const t=parseInt(this.$route.query.articlePage)||1;this.currentPage=t}else this.currentPage=1},mounted(){this.fetchArticles()},methods:{async fetchArticles(){this.loading=!0;try{const t="https://newfront.xn--xhq44jb2fzpc.com",a=this.apiEndpoint.startsWith("/")?this.apiEndpoint:`/${this.apiEndpoint}`,e=`${t}${a}`,s=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.searchParams,mode:this.mode,page:this.currentPage,pageSize:this.pageSize})});if(!s.ok)throw new Error("获取文章失败");const i=await s.json();this.articles=i.articles,this.totalPages=i.totalPages,this.total=i.total}catch(t){console.error("获取文章数据失败:",t),this.articles=[]}finally{this.loading=!1}},getSectionName(t){return 0===t?"攻略指南":"资源共享"},formatDate(t){if(!t)return"";const a=new Date(t);return a.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})},changePage(t){t>=1&&t<=this.totalPages&&(this.$router.push({query:{...this.$route.query,articlePage:t}}),window.scrollTo({top:0,behavior:"smooth"}))},viewArticle(t){this.$router.push(`/article/${t}`)},getRankClass(t){const a=(this.currentPage-1)*this.pageSize+t+1;return 1===a?"rank-1":2===a?"rank-2":3===a?"rank-3":""}}},z=e(1241);const I=(0,z.A)(q,[["render",N],["__scopeId","data-v-34572a42"]]);var j=I},8181:function(t,a,e){e.r(a),e.d(a,{default:function(){return P}});var s=e(6768),i=e(4232);const n={class:"strategy-view"},r={class:"container"},c={class:"tag-selection"},l={class:"tag-header"},o={class:"tag-controls"},g={class:"tags-container"},d=["onClick"],h={key:0,class:"check-icon"};function u(t,a,e,u,p,k){const v=(0,s.g2)("NavBar"),f=(0,s.g2)("CardList");return(0,s.uX)(),(0,s.CE)("div",n,[(0,s.bF)(v),(0,s.Lk)("div",r,[a[2]||(a[2]=(0,s.Lk)("h1",{class:"page-title"},"攻略指南",-1)),a[3]||(a[3]=(0,s.Lk)("div",{class:"intro-card"},[(0,s.Lk)("p",{class:"intro-text"}," 攻略指南板块有NEUer们可能想知道的各种问题,每个内容下面都设置评论区,供大家自由交流和解惑~ "),(0,s.Lk)("p",{class:"intro-text"}," 为鼓励大家积极投稿,本站投稿者可获得东币奖励,以及专属访问密码以访问本站加密资源,感谢您的支持~ ")],-1)),(0,s.Lk)("div",c,[(0,s.Lk)("div",l,[a[1]||(a[1]=(0,s.Lk)("h2",{class:"tag-title"},"热门标签",-1)),(0,s.Lk)("div",o,[(0,s.Lk)("button",{class:"tag-control-btn",onClick:a[0]||(a[0]=(...t)=>k.clearAllTags&&k.clearAllTags(...t))},"清除")])]),(0,s.Lk)("div",g,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(p.strategyTags,(t=>((0,s.uX)(),(0,s.CE)("div",{key:t.id,class:(0,i.C4)(["tag-chip",{active:p.selectedTags.includes(t.id)}]),onClick:a=>k.toggleTag(t.id)},[(0,s.eW)((0,i.v_)(t.name)+" ",1),p.selectedTags.includes(t.id)?((0,s.uX)(),(0,s.CE)("span",h,"✓")):(0,s.Q3)("",!0)],10,d)))),128))])]),(0,s.bF)(f,{searchParams:k.searchParams,mode:1,pageSize:12},null,8,["searchParams"])])])}e(4114),e(8111),e(2489);var p=e(5390),k=e(7650),v={name:"StrategyView",components:{NavBar:p.A,CardList:k.A},data(){return{selectedTags:[],strategyTags:[],loadingTags:!1,tagLoadingError:null}},created(){document.title="攻略指南 - NEU小站",this.fetchSelectionTags()},computed:{searchParams(){const t={section:0};return this.selectedTags.length>0&&(t.tags=this.selectedTags),t}},methods:{async fetchSelectionTags(){this.loadingTags=!0,this.tagLoadingError=null;try{const t="https://newfront.xn--xhq44jb2fzpc.com/search/selection-tag",a=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({area_ids:[0]})});if(!a.ok){const t=await a.json();throw new Error(t.message||`HTTP error! status: ${a.status}`)}const e=await a.json();this.strategyTags=e["0"]||[]}catch(t){console.error("获取攻略指南标签失败:",t),this.tagLoadingError="无法加载热门标签,请稍后重试。",this.strategyTags=[]}finally{this.loadingTags=!1}},toggleTag(t){this.selectedTags.includes(t)?this.selectedTags=this.selectedTags.filter((a=>a!==t)):this.selectedTags.push(t)},clearAllTags(){this.selectedTags=[]}}},f=e(1241);const y=(0,f.A)(v,[["render",u],["__scopeId","data-v-37b9a322"]]);var P=y}}]); +//# sourceMappingURL=181.3ac69d86.js.map \ No newline at end of file diff --git a/dist/js/556.bc1dec00.js b/dist/js/556.bc1dec00.js new file mode 100644 index 0000000..1813701 --- /dev/null +++ b/dist/js/556.bc1dec00.js @@ -0,0 +1,2 @@ +"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[556],{556:function(e,t,a){a.r(t),a.d(t,{default:function(){return $}});var s=a(6768),i=a(4232),l=a(5130);const c={class:"resource-view"},r={class:"container"},n={class:"view-tabs"},o={key:0,class:"recent-resources"},g={key:1,class:"all-resources"},d={class:"filters-container"},h={class:"tag-selection college-category"},u={class:"tag-header"},k={class:"tag-controls"},C={class:"tags-container"},p=["onClick"],v={key:0,class:"check-icon"},y={class:"tag-selection resource-category"},T={class:"tag-header"},f={class:"tag-controls"},P={class:"tags-container"},L=["onClick"],b={key:0,class:"check-icon"};function m(e,t,a,m,E,w){const X=(0,s.g2)("NavBar"),S=(0,s.g2)("CardList");return(0,s.uX)(),(0,s.CE)("div",c,[(0,s.bF)(X),(0,s.Lk)("div",r,[t[8]||(t[8]=(0,s.Lk)("h1",{class:"page-title"},"资源共享",-1)),t[9]||(t[9]=(0,s.Lk)("div",{class:"intro-card"},[(0,s.Lk)("p",{class:"intro-text"}," 为鼓励大家积极投稿,本站投稿者可获得东币奖励,以及专属访问密码以访问本站加密资源,感谢支持~ ")],-1)),(0,s.Lk)("div",n,[(0,s.Lk)("div",{class:(0,i.C4)(["tab-item",{active:"recent"===E.activeTab}]),onClick:t[0]||(t[0]=e=>w.switchTab("recent"))}," 🔥 近期热门 ",2),(0,s.Lk)("div",{class:(0,i.C4)(["tab-item",{active:"all"===E.activeTab}]),onClick:t[1]||(t[1]=e=>w.switchTab("all"))}," 📚 所有资源 ",2)]),"recent"===E.activeTab?((0,s.uX)(),(0,s.CE)("div",o,[(0,s.bF)(S,{apiEndpoint:"/search/recent",mode:0,pageSize:30,showPagination:!1})])):(0,s.Q3)("",!0),"all"===E.activeTab?((0,s.uX)(),(0,s.CE)("div",g,[(0,s.Lk)("div",{class:"filter-control",onClick:t[2]||(t[2]=(...e)=>w.toggleFilterPanel&&w.toggleFilterPanel(...e))},[t[5]||(t[5]=(0,s.Lk)("h2",{class:"filter-title"},"筛选",-1)),(0,s.Lk)("span",{class:(0,i.C4)(["toggle-icon",{"is-active":!E.filtersCollapsed}])},"▼",2)]),(0,s.bo)((0,s.Lk)("div",d,[(0,s.Lk)("div",h,[(0,s.Lk)("div",u,[t[6]||(t[6]=(0,s.Lk)("h2",{class:"tag-title"},"按学院筛选",-1)),(0,s.Lk)("div",k,[(0,s.Lk)("button",{class:"tag-control-btn",onClick:t[3]||(t[3]=(...e)=>w.clearCollegeTags&&w.clearCollegeTags(...e))},"清除")])]),(0,s.Lk)("div",C,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(E.collegeTags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:(0,i.C4)(["tag-chip",{active:E.selectedCollegeTags.includes(e.id)}]),onClick:t=>w.toggleCollegeTag(e.id)},[(0,s.eW)((0,i.v_)(e.name)+" ",1),E.selectedCollegeTags.includes(e.id)?((0,s.uX)(),(0,s.CE)("span",v,"✓")):(0,s.Q3)("",!0)],10,p)))),128))])]),(0,s.Lk)("div",y,[(0,s.Lk)("div",T,[t[7]||(t[7]=(0,s.Lk)("h2",{class:"tag-title"},"按资源类别",-1)),(0,s.Lk)("div",f,[(0,s.Lk)("button",{class:"tag-control-btn",onClick:t[4]||(t[4]=(...e)=>w.clearCategoryTags&&w.clearCategoryTags(...e))},"清除")])]),(0,s.Lk)("div",P,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(E.categoryTags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:(0,i.C4)(["tag-chip",{active:E.selectedCategoryTags.includes(e.id)}]),onClick:t=>w.toggleCategoryTag(e.id)},[(0,s.eW)((0,i.v_)(e.name)+" ",1),E.selectedCategoryTags.includes(e.id)?((0,s.uX)(),(0,s.CE)("span",b,"✓")):(0,s.Q3)("",!0)],10,L)))),128))])])],512),[[l.aG,!E.filtersCollapsed]]),(0,s.bF)(S,{searchParams:w.searchParams,mode:1,pageSize:12},null,8,["searchParams"])])):(0,s.Q3)("",!0)])])}a(4114),a(8111),a(2489);var E=a(5390),w=a(7650),X={name:"ResourceView",components:{NavBar:E.A,CardList:w.A},data(){return{activeTab:"recent",filtersCollapsed:!0,selectedCollegeTags:[],selectedCategoryTags:[],collegeTags:[],categoryTags:[],loadingTags:!1,tagLoadingError:null}},created(){document.title="资源共享 - NEU小站",this.fetchSelectionTags(),this.$route.query.articlePage&&(this.activeTab="all")},computed:{searchParams(){const e={section:1},t=[...this.selectedCollegeTags,...this.selectedCategoryTags];return t.length>0&&(e.tags=t),e}},methods:{switchTab(e){this.activeTab=e},async fetchSelectionTags(){this.loadingTags=!0,this.tagLoadingError=null;try{const e="https://newfront.xn--xhq44jb2fzpc.com/search/selection-tag",t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({area_ids:[1,2]})});if(!t.ok){const e=await t.json();throw new Error(e.message||`HTTP error! status: ${t.status}`)}const a=await t.json();this.collegeTags=a["1"]||[],this.categoryTags=a["2"]||[]}catch(e){console.error("获取筛选标签失败:",e),this.tagLoadingError="无法加载筛选标签,请稍后重试。",this.collegeTags=[],this.categoryTags=[]}finally{this.loadingTags=!1}},toggleFilterPanel(){this.filtersCollapsed=!this.filtersCollapsed},toggleCollegeTag(e){this.selectedCollegeTags.includes(e)?this.selectedCollegeTags=this.selectedCollegeTags.filter((t=>t!==e)):this.selectedCollegeTags.push(e)},toggleCategoryTag(e){this.selectedCategoryTags.includes(e)?this.selectedCategoryTags=this.selectedCategoryTags.filter((t=>t!==e)):this.selectedCategoryTags.push(e)},clearCollegeTags(){this.selectedCollegeTags=[]},clearCategoryTags(){this.selectedCategoryTags=[]}}},S=a(1241);const _=(0,S.A)(X,[["render",m],["__scopeId","data-v-7a312f48"]]);var $=_},7650:function(e,t,a){a.d(t,{A:function(){return I}});var s=a(6768),i=a(4232);const l={class:"card-list-container"},c={key:0,class:"card-grid"},r=["onClick"],n={class:"card-content"},o={class:"card-title"},g={class:"card-tags"},d={key:0,class:"article-tag official"},h={key:1,class:"article-tag highlight"},u={key:2,class:"article-tag top"},k={class:"card-meta"},C={class:"card-section"},p={class:"card-date"},v={class:"card-tags-list"},y={key:0,class:"no-data"},T={key:1,class:"table-container"},f={class:"articles-table"},P=["onClick"],L={class:"rank-cell"},b={class:"title-cell"},m={class:"title-content"},E={class:"article-title"},w={key:0,class:"no-data"},X={key:2,class:"loading"},S={key:3,class:"pagination"},_=["disabled"],$={class:"page-info"},A=["disabled"];function F(e,t,a,F,Q,q){return(0,s.uX)(),(0,s.CE)("div",l,[1===a.mode?((0,s.uX)(),(0,s.CE)("div",c,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(Q.articles,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"card",onClick:t=>q.viewArticle(e.id)},[(0,s.Lk)("div",n,[(0,s.Lk)("h3",o,(0,i.v_)(e.title),1),(0,s.Lk)("div",g,[e.official?((0,s.uX)(),(0,s.CE)("span",d,"官方")):(0,s.Q3)("",!0),e.highlight?((0,s.uX)(),(0,s.CE)("span",h,"优质")):(0,s.Q3)("",!0),e.top?((0,s.uX)(),(0,s.CE)("span",u,"置顶")):(0,s.Q3)("",!0)]),(0,s.Lk)("div",k,[(0,s.Lk)("span",C,(0,i.v_)(e.section||"资源共享"),1),(0,s.Lk)("span",p,"更新于 "+(0,i.v_)(q.formatDate(e.updated_at)),1)]),(0,s.Lk)("div",v,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.tags,(e=>((0,s.uX)(),(0,s.CE)("span",{key:e.id,class:"card-tag"},(0,i.v_)(e.name),1)))),128))])])],8,r)))),128)),0!==Q.articles.length||Q.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",y," 暂无符合条件的文章 "))])):((0,s.uX)(),(0,s.CE)("div",T,[(0,s.Lk)("table",f,[(0,s.Lk)("tbody",null,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(Q.articles,((e,t)=>((0,s.uX)(),(0,s.CE)("tr",{key:e.id,onClick:t=>q.viewArticle(e.id)},[(0,s.Lk)("td",L,[(0,s.Lk)("span",{class:(0,i.C4)(["rank-num",q.getRankClass(t)])},(0,i.v_)((Q.currentPage-1)*a.pageSize+t+1),3)]),(0,s.Lk)("td",b,[(0,s.Lk)("div",m,[(0,s.Lk)("span",E,(0,i.v_)(e.title),1)])])],8,P)))),128))])]),0!==Q.articles.length||Q.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",w," 暂无符合条件的文章 "))])),Q.loading?((0,s.uX)(),(0,s.CE)("div",X,t[2]||(t[2]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("span",null,"正在加载...",-1)]))):(0,s.Q3)("",!0),a.showPagination&&Q.totalPages>1&&!Q.loading?((0,s.uX)(),(0,s.CE)("div",S,[(0,s.Lk)("button",{disabled:1===Q.currentPage,onClick:t[0]||(t[0]=e=>q.changePage(Q.currentPage-1)),class:"pagination-btn"}," 上一页 ",8,_),(0,s.Lk)("span",$,(0,i.v_)(Q.currentPage)+" / "+(0,i.v_)(Q.totalPages),1),(0,s.Lk)("button",{disabled:Q.currentPage===Q.totalPages,onClick:t[1]||(t[1]=e=>q.changePage(Q.currentPage+1)),class:"pagination-btn"}," 下一页 ",8,A)])):(0,s.Q3)("",!0)])}a(4114);var Q={name:"CardList",props:{searchParams:{type:Object,default:()=>({})},mode:{type:Number,default:1},pageSize:{type:Number,default:12},apiEndpoint:{type:String,default:"/search/general"},showPagination:{type:Boolean,default:!0}},data(){return{articles:[],currentPage:1,totalPages:0,total:0,loading:!1}},watch:{searchParams:{handler(){if(!this.showPagination)return this.currentPage=1,void this.fetchArticles();const e=parseInt(this.$route.query.articlePage)||1;1!==e?this.$router.push({query:{...this.$route.query,articlePage:1}}):(this.currentPage=1,this.fetchArticles())},deep:!0},"$route.query.articlePage"(e){if(!this.showPagination)return;const t=parseInt(e)||1;t!==this.currentPage&&(this.currentPage=t,this.fetchArticles())}},created(){if(this.showPagination){const e=parseInt(this.$route.query.articlePage)||1;this.currentPage=e}else this.currentPage=1},mounted(){this.fetchArticles()},methods:{async fetchArticles(){this.loading=!0;try{const e="https://newfront.xn--xhq44jb2fzpc.com",t=this.apiEndpoint.startsWith("/")?this.apiEndpoint:`/${this.apiEndpoint}`,a=`${e}${t}`,s=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.searchParams,mode:this.mode,page:this.currentPage,pageSize:this.pageSize})});if(!s.ok)throw new Error("获取文章失败");const i=await s.json();this.articles=i.articles,this.totalPages=i.totalPages,this.total=i.total}catch(e){console.error("获取文章数据失败:",e),this.articles=[]}finally{this.loading=!1}},getSectionName(e){return 0===e?"攻略指南":"资源共享"},formatDate(e){if(!e)return"";const t=new Date(e);return t.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})},changePage(e){e>=1&&e<=this.totalPages&&(this.$router.push({query:{...this.$route.query,articlePage:e}}),window.scrollTo({top:0,behavior:"smooth"}))},viewArticle(e){this.$router.push(`/article/${e}`)},getRankClass(e){const t=(this.currentPage-1)*this.pageSize+e+1;return 1===t?"rank-1":2===t?"rank-2":3===t?"rank-3":""}}},q=a(1241);const z=(0,q.A)(Q,[["render",F],["__scopeId","data-v-34572a42"]]);var I=z}}]); +//# sourceMappingURL=556.bc1dec00.js.map \ No newline at end of file diff --git a/dist/js/690.4f695e90.js b/dist/js/690.4f695e90.js deleted file mode 100644 index 9e4a0d0..0000000 --- a/dist/js/690.4f695e90.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[690],{1538:function(e,t,a){a.d(t,{A:function(){return I}});var s=a(6768),l=a(4232);const i={class:"card-list-container"},c={key:0,class:"card-grid"},r=["onClick"],o={class:"card-content"},n={class:"card-title"},g={class:"card-tags"},d={key:0,class:"article-tag official"},h={key:1,class:"article-tag highlight"},u={key:2,class:"article-tag top"},C={class:"card-meta"},k={class:"card-section"},p={class:"card-date"},y={class:"card-tags-list"},v={key:0,class:"no-data"},f={key:1,class:"table-container"},T={class:"articles-table"},L=["onClick"],P={key:0,class:"no-data"},m={key:2,class:"loading"},b={key:3,class:"pagination"},E=["disabled"],w={class:"page-info"},X=["disabled"];function _(e,t,a,_,A,S){return(0,s.uX)(),(0,s.CE)("div",i,[1===a.mode?((0,s.uX)(),(0,s.CE)("div",c,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(A.articles,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"card",onClick:t=>S.viewArticle(e.id)},[(0,s.Lk)("div",o,[(0,s.Lk)("h3",n,(0,l.v_)(e.title),1),(0,s.Lk)("div",g,[e.official?((0,s.uX)(),(0,s.CE)("span",d,"官方")):(0,s.Q3)("",!0),e.highlight?((0,s.uX)(),(0,s.CE)("span",h,"优质")):(0,s.Q3)("",!0),e.top?((0,s.uX)(),(0,s.CE)("span",u,"置顶")):(0,s.Q3)("",!0)]),(0,s.Lk)("div",C,[(0,s.Lk)("span",k,(0,l.v_)(e.section||"资源共享"),1),(0,s.Lk)("span",p,"更新于 "+(0,l.v_)(S.formatDate(e.updated_at)),1)]),(0,s.Lk)("div",y,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.tags,(e=>((0,s.uX)(),(0,s.CE)("span",{key:e.id,class:"card-tag"},(0,l.v_)(e.name),1)))),128))])])],8,r)))),128)),0!==A.articles.length||A.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",v," 暂无符合条件的文章 "))])):((0,s.uX)(),(0,s.CE)("div",f,[(0,s.Lk)("table",T,[t[2]||(t[2]=(0,s.Lk)("thead",null,[(0,s.Lk)("tr",null,[(0,s.Lk)("th",null,"文章标题")])],-1)),(0,s.Lk)("tbody",null,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(A.articles,(e=>((0,s.uX)(),(0,s.CE)("tr",{key:e.id,onClick:t=>S.viewArticle(e.id)},[(0,s.Lk)("td",null,(0,l.v_)(e.title),1)],8,L)))),128))])]),0!==A.articles.length||A.loading?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",P," 暂无符合条件的文章 "))])),A.loading?((0,s.uX)(),(0,s.CE)("div",m,t[3]||(t[3]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("span",null,"正在加载...",-1)]))):(0,s.Q3)("",!0),A.totalPages>1&&!A.loading?((0,s.uX)(),(0,s.CE)("div",b,[(0,s.Lk)("button",{disabled:1===A.currentPage,onClick:t[0]||(t[0]=e=>S.changePage(A.currentPage-1)),class:"pagination-btn"}," 上一页 ",8,E),(0,s.Lk)("span",w,(0,l.v_)(A.currentPage)+" / "+(0,l.v_)(A.totalPages),1),(0,s.Lk)("button",{disabled:A.currentPage===A.totalPages,onClick:t[1]||(t[1]=e=>S.changePage(A.currentPage+1)),class:"pagination-btn"}," 下一页 ",8,X)])):(0,s.Q3)("",!0)])}a(4114);var A={name:"CardList",props:{searchParams:{type:Object,default:()=>({})},mode:{type:Number,default:1},pageSize:{type:Number,default:12}},data(){return{articles:[],currentPage:1,totalPages:0,total:0,loading:!1}},watch:{searchParams:{handler(){const e=parseInt(this.$route.query.articlePage)||1;1!==e?this.$router.push({query:{...this.$route.query,articlePage:1}}):(this.currentPage=1,this.fetchArticles())},deep:!0},"$route.query.articlePage"(e){const t=parseInt(e)||1;t!==this.currentPage&&(this.currentPage=t,this.fetchArticles())}},created(){const e=parseInt(this.$route.query.articlePage)||1;this.currentPage=e},mounted(){this.fetchArticles()},methods:{async fetchArticles(){this.loading=!0;try{const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/search/general",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.searchParams,mode:this.mode,page:this.currentPage,pageSize:this.pageSize})});if(!e.ok)throw new Error("获取文章失败");const t=await e.json();this.articles=t.articles,this.totalPages=t.totalPages,this.total=t.total}catch(e){console.error("获取文章数据失败:",e),this.articles=[]}finally{this.loading=!1}},getSectionName(e){return 0===e?"攻略指南":"资源共享"},formatDate(e){if(!e)return"";const t=new Date(e);return t.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})},changePage(e){e>=1&&e<=this.totalPages&&(this.$router.push({query:{...this.$route.query,articlePage:e}}),window.scrollTo({top:0,behavior:"smooth"}))},viewArticle(e){this.$router.push(`/article/${e}`)}}},S=a(1241);const F=(0,S.A)(A,[["render",_],["__scopeId","data-v-12ce9c3f"]]);var I=F},9690:function(e,t,a){a.r(t),a.d(t,{default:function(){return X}});var s=a(6768),l=a(4232),i=a(5130);const c={class:"resource-view"},r={class:"container"},o={class:"filters-container"},n={class:"tag-selection college-category"},g={class:"tag-header"},d={class:"tag-controls"},h={class:"tags-container"},u=["onClick"],C={key:0,class:"check-icon"},k={class:"tag-selection resource-category"},p={class:"tag-header"},y={class:"tag-controls"},v={class:"tags-container"},f=["onClick"],T={key:0,class:"check-icon"};function L(e,t,a,L,P,m){const b=(0,s.g2)("NavBar"),E=(0,s.g2)("CardList");return(0,s.uX)(),(0,s.CE)("div",c,[(0,s.bF)(b),(0,s.Lk)("div",r,[t[6]||(t[6]=(0,s.Lk)("h1",{class:"page-title"},"资源共享",-1)),t[7]||(t[7]=(0,s.Lk)("div",{class:"intro-card"},[(0,s.Lk)("p",{class:"intro-text"}," 为鼓励大家积极投稿,本站投稿者可获得东币奖励,以及专属访问密码以访问本站加密资源,感谢支持~ ")],-1)),(0,s.Lk)("div",{class:"filter-control",onClick:t[0]||(t[0]=(...e)=>m.toggleFilterPanel&&m.toggleFilterPanel(...e))},[t[3]||(t[3]=(0,s.Lk)("h2",{class:"filter-title"},"筛选",-1)),(0,s.Lk)("span",{class:(0,l.C4)(["toggle-icon",{"is-active":!P.filtersCollapsed}])},"▼",2)]),(0,s.bo)((0,s.Lk)("div",o,[(0,s.Lk)("div",n,[(0,s.Lk)("div",g,[t[4]||(t[4]=(0,s.Lk)("h2",{class:"tag-title"},"按学院筛选",-1)),(0,s.Lk)("div",d,[(0,s.Lk)("button",{class:"tag-control-btn",onClick:t[1]||(t[1]=(...e)=>m.clearCollegeTags&&m.clearCollegeTags(...e))},"清除")])]),(0,s.Lk)("div",h,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(P.collegeTags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:(0,l.C4)(["tag-chip",{active:P.selectedCollegeTags.includes(e.id)}]),onClick:t=>m.toggleCollegeTag(e.id)},[(0,s.eW)((0,l.v_)(e.name)+" ",1),P.selectedCollegeTags.includes(e.id)?((0,s.uX)(),(0,s.CE)("span",C,"✓")):(0,s.Q3)("",!0)],10,u)))),128))])]),(0,s.Lk)("div",k,[(0,s.Lk)("div",p,[t[5]||(t[5]=(0,s.Lk)("h2",{class:"tag-title"},"按资源类别",-1)),(0,s.Lk)("div",y,[(0,s.Lk)("button",{class:"tag-control-btn",onClick:t[2]||(t[2]=(...e)=>m.clearCategoryTags&&m.clearCategoryTags(...e))},"清除")])]),(0,s.Lk)("div",v,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(P.categoryTags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:(0,l.C4)(["tag-chip",{active:P.selectedCategoryTags.includes(e.id)}]),onClick:t=>m.toggleCategoryTag(e.id)},[(0,s.eW)((0,l.v_)(e.name)+" ",1),P.selectedCategoryTags.includes(e.id)?((0,s.uX)(),(0,s.CE)("span",T,"✓")):(0,s.Q3)("",!0)],10,f)))),128))])])],512),[[i.aG,!P.filtersCollapsed]]),(0,s.bF)(E,{searchParams:m.searchParams,mode:1,pageSize:12},null,8,["searchParams"])])])}a(4114),a(8111),a(2489);var P=a(5390),m=a(1538),b={name:"ResourceView",components:{NavBar:P.A,CardList:m.A},data(){return{filtersCollapsed:!0,selectedCollegeTags:[],selectedCategoryTags:[],collegeTags:[],categoryTags:[],loadingTags:!1,tagLoadingError:null}},created(){document.title="资源共享 - NEU小站",this.fetchSelectionTags()},computed:{searchParams(){const e={section:1},t=[...this.selectedCollegeTags,...this.selectedCategoryTags];return t.length>0&&(e.tags=t),e}},methods:{async fetchSelectionTags(){this.loadingTags=!0,this.tagLoadingError=null;try{const e="https://newfront.xn--xhq44jb2fzpc.com/search/selection-tag",t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({area_ids:[1,2]})});if(!t.ok){const e=await t.json();throw new Error(e.message||`HTTP error! status: ${t.status}`)}const a=await t.json();this.collegeTags=a["1"]||[],this.categoryTags=a["2"]||[]}catch(e){console.error("获取筛选标签失败:",e),this.tagLoadingError="无法加载筛选标签,请稍后重试。",this.collegeTags=[],this.categoryTags=[]}finally{this.loadingTags=!1}},toggleFilterPanel(){this.filtersCollapsed=!this.filtersCollapsed},toggleCollegeTag(e){this.selectedCollegeTags.includes(e)?this.selectedCollegeTags=this.selectedCollegeTags.filter((t=>t!==e)):this.selectedCollegeTags.push(e)},toggleCategoryTag(e){this.selectedCategoryTags.includes(e)?this.selectedCategoryTags=this.selectedCategoryTags.filter((t=>t!==e)):this.selectedCategoryTags.push(e)},clearCollegeTags(){this.selectedCollegeTags=[]},clearCategoryTags(){this.selectedCategoryTags=[]}}},E=a(1241);const w=(0,E.A)(b,[["render",L],["__scopeId","data-v-6271fb15"]]);var X=w}}]); -//# sourceMappingURL=690.4f695e90.js.map \ No newline at end of file diff --git a/dist/js/app.2c5164ee.js b/dist/js/app.8c8e298e.js similarity index 69% rename from dist/js/app.2c5164ee.js rename to dist/js/app.8c8e298e.js index 55a475d..5c4bcb9 100644 --- a/dist/js/app.2c5164ee.js +++ b/dist/js/app.8c8e298e.js @@ -1,2 +1,2 @@ -(function(){"use strict";var e={2090:function(e,t,s){s.d(t,{A:function(){return f}});s(4114);var a=s(6768),n=s(5130),o=s(4232);const i={class:"bar-message-text"};function l(e,t,s,l,r,c){return(0,a.uX)(),(0,a.Wv)(n.eB,{name:"bar-message-fade"},{default:(0,a.k6)((()=>[r.visible?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"bar-message",style:(0,o.Tr)(c.positionStyle)},[(0,a.Lk)("div",{class:(0,o.C4)(["bar-message-content",r.customColor?"":r.type]),style:(0,o.Tr)({backgroundColor:r.customColor})},[r.showIcon?((0,a.uX)(),(0,a.CE)("i",{key:0,class:(0,o.C4)(["bar-message-icon",c.iconClass])},null,2)):(0,a.Q3)("",!0),(0,a.Lk)("span",i,(0,o.v_)(r.message),1),r.showClose?((0,a.uX)(),(0,a.CE)("i",{key:1,class:"bar-message-close fas fa-times",onClick:t[0]||(t[0]=(...e)=>c.close&&c.close(...e))})):(0,a.Q3)("",!0)],6)],4)):(0,a.Q3)("",!0)])),_:1})}var r={name:"BarMessage",data(){return{visible:!1,message:"",type:"success",customColor:"",timer:null,duration:3e3,position:"top",showIcon:!0,showClose:!1}},computed:{positionStyle(){return"bottom"===this.position?{top:"auto",bottom:"16px"}:"center"===this.position?{top:"50%",transform:"translate(-50%, -50%)"}:{top:"16px",bottom:"auto"}},iconClass(){switch(this.type){case"success":return"fas fa-check-circle";case"error":return"fas fa-times-circle";case"warning":return"fas fa-exclamation-circle";case"info":return"fas fa-info-circle";default:return"fas fa-bell"}}},methods:{show(e){this.timer&&clearTimeout(this.timer),this.message=e.message||"",this.type=e.type||"success",this.customColor=e.color||"",this.duration=void 0!==e.duration?e.duration:3e3,this.position=e.position||"top",this.showIcon=void 0===e.showIcon||e.showIcon,this.showClose=void 0!==e.showClose&&e.showClose,this.visible=!0,this.duration>0&&(this.timer=setTimeout((()=>{this.close()}),this.duration))},close(){this.visible=!1,this.timer&&(clearTimeout(this.timer),this.timer=null),this.onClose&&this.onClose()}}},c=s(1241);const d=(0,c.A)(r,[["render",l],["__scopeId","data-v-18bdfd8a"]]);var u=d;const h=[];let g=1;const p=function(e){"string"===typeof e&&(e={message:e}),e=e||{};const t="bar_message_"+g++,s=document.createElement("div"),o=e.onClose;e.onClose=()=>{m(t,o)};const i=(0,a.bF)(u,e);(0,n.XX)(i,s),document.body.appendChild(s);const l=i.component.proxy;l.show(e);const r={id:t,vnode:i,vm:l,container:s};return h.push(r),{close:()=>{l.close()}}};function m(e,t){const s=h.findIndex((t=>t.id===e));if(-1===s)return;const{vm:a,container:o}=h[s];a&&("function"===typeof t&&t(),(0,n.XX)(null,o),document.body.removeChild(o),h.splice(s,1))}["success","error","warning","info"].forEach((e=>{p[e]=t=>("string"===typeof t?t={message:t,type:e}:(t=t||{},t.type=e),p(t))})),p.permanent=e=>("string"===typeof e&&(e={message:e}),e=e||{},e.duration=0,e.showClose=!1!==e.showClose,p(e)),p.closeAll=function(){for(let e=h.length-1;e>=0;e--)h[e].vm.close()};var f=p},3108:function(e,t,s){s.d(t,{A:function(){return H}});var a=s(6768),n=s(4232),o=s(5130);const i={class:"user-meta"},l={class:"avatar-wrapper"},r=["src"],c={key:0,class:"avatar-loading"},d={class:"user-badges"},u=["title"],h=["title"],g={key:2,class:"badge medal"},p={class:"card-container"},m={class:"detail-header"},f=["src"],v={class:"detail-right"},k={class:"user-badges"},b=["title"],y=["title"],w={key:2,class:"badge medal"},C={key:0,class:"user-sign"},L={class:"sign-text"},E={class:"user-stats"},_={class:"stat-item"},A={class:"stat-value"},I={class:"stat-item"},x={class:"stat-value"},M={key:1,class:"user-submissions"},X={class:"submission-header"},S={key:0,class:"pagination-controls"},P=["disabled"],F={class:"page-info"},j=["disabled"],z={class:"submission-list"},U=["onClick"],T={class:"submission-title"},D={class:"submission-tags"},W={key:0,class:"tag official"},$={key:1,class:"tag highlight"},O={key:2,class:"tag top"},q={class:"card-footer"};function Q(e,t,s,Q,N,B){return(0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("div",{class:"user-basic",ref:"userBasic",onMouseenter:t[0]||(t[0]=(...e)=>B.handleMouseEnter&&B.handleMouseEnter(...e))},[(0,a.Lk)("div",l,[(0,a.Lk)("img",{src:N.userInfo.avatarUrl,alt:"用户头像",class:"avatar"},null,8,r),N.loading?((0,a.uX)(),(0,a.CE)("div",c,t[6]||(t[6]=[(0,a.Lk)("div",{class:"loading-spinner"},null,-1)]))):(0,a.Q3)("",!0)]),(0,a.Lk)("div",{class:(0,n.C4)(["user-name",{"colorful-name":N.userInfo.color_name}])},(0,n.v_)(N.userInfo.nickname),3),(0,a.Lk)("div",d,[N.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:N.userInfo.verified},"认证",8,u)):(0,a.Q3)("",!0),N.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:N.userInfo.invited},"特邀",8,h)):(0,a.Q3)("",!0),1===N.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",g,"小站奖章")):(0,a.Q3)("",!0)])],544),((0,a.uX)(),(0,a.Wv)(a.Im,{to:"body"},[(0,a.bF)(o.eB,{name:"detail-fade"},{default:(0,a.k6)((()=>[N.showDetail?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"user-detail",ref:"userDetail",style:(0,n.Tr)(N.popupStyle),onMouseenter:t[4]||(t[4]=e=>N.showDetail=!0),onMouseleave:t[5]||(t[5]=e=>N.showDetail=!1)},[(0,a.Lk)("div",p,[(0,a.Lk)("div",m,[t[7]||(t[7]=(0,a.Lk)("div",{class:"header-bg"},null,-1)),(0,a.Lk)("img",{src:N.userInfo.avatarUrl,alt:"用户头像",class:"detail-avatar"},null,8,f),(0,a.Lk)("div",v,[(0,a.Lk)("div",{class:(0,n.C4)(["detail-name",{"colorful-name":N.userInfo.color_name}])},(0,n.v_)(N.userInfo.nickname),3),(0,a.Lk)("div",k,[N.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:N.userInfo.verified},"认证",8,b)):(0,a.Q3)("",!0),N.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:N.userInfo.invited},"特邀",8,y)):(0,a.Q3)("",!0),1===N.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",w,"小站奖章")):(0,a.Q3)("",!0)])])]),N.userInfo.sign?((0,a.uX)(),(0,a.CE)("div",C,[t[8]||(t[8]=(0,a.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,a.Lk)("div",L,(0,n.v_)(N.userInfo.sign),1)])):(0,a.Q3)("",!0),(0,a.Lk)("div",E,[(0,a.Lk)("div",_,[(0,a.Lk)("div",A,(0,n.v_)(N.userInfo.follower),1),t[9]||(t[9]=(0,a.Lk)("div",{class:"stat-label"},"粉丝",-1))]),t[11]||(t[11]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",I,[(0,a.Lk)("div",x,(0,n.v_)(N.userInfo.following),1),t[10]||(t[10]=(0,a.Lk)("div",{class:"stat-label"},"关注",-1))])]),N.submissions.length>0?((0,a.uX)(),(0,a.CE)("div",M,[(0,a.Lk)("div",X,[t[12]||(t[12]=(0,a.Lk)("span",null,"TA的投稿",-1)),N.totalPages>1?((0,a.uX)(),(0,a.CE)("div",S,[(0,a.Lk)("button",{class:"page-btn",disabled:1===N.currentPage,onClick:t[1]||(t[1]=(0,o.D$)((e=>B.changePage(N.currentPage-1)),["stop"]))}," < ",8,P),(0,a.Lk)("span",F,(0,n.v_)(N.currentPage)+"/"+(0,n.v_)(N.totalPages),1),(0,a.Lk)("button",{class:"page-btn",disabled:N.currentPage===N.totalPages,onClick:t[2]||(t[2]=(0,o.D$)((e=>B.changePage(N.currentPage+1)),["stop"]))}," > ",8,j)])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",z,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(N.submissions,(e=>((0,a.uX)(),(0,a.CE)("div",{key:e.id,class:"submission-item",onClick:t=>B.handleArticleClick(e.id)},[(0,a.Lk)("div",T,(0,n.v_)(e.title),1),(0,a.Lk)("div",D,[e.official?((0,a.uX)(),(0,a.CE)("span",W,"官方")):(0,a.Q3)("",!0),e.highlight?((0,a.uX)(),(0,a.CE)("span",$,"优质")):(0,a.Q3)("",!0),e.top?((0,a.uX)(),(0,a.CE)("span",O,"置顶")):(0,a.Q3)("",!0)])],8,U)))),128))])])):(0,a.Q3)("",!0),(0,a.Lk)("div",q,[s.showFollow?((0,a.uX)(),(0,a.CE)("button",{key:0,class:(0,n.C4)(["follow-btn",{followed:N.isFollowing,"disabled-look":!N.isLoggedIn}]),onClick:t[3]||(t[3]=(...e)=>B.handleFollow&&B.handleFollow(...e))},(0,n.v_)(N.isFollowing?"取消关注":"+ 关注"),3)):(0,a.Q3)("",!0)])])],36)):(0,a.Q3)("",!0)])),_:1})]))])}var N=s(4373),B=s(4993),V=s(8704);let R=null;var J={name:"UserMeta",props:{id:{type:[String,Number],required:!0},showFollow:{type:Boolean,default:!0}},data(){return{userInfo:{nickname:"默认昵称",verified:null,invited:null,medal:0,avatarUrl:"https://download.东北大学.com/avatar/default.png",follower:0,following:0,sign:"这个人很懒,还没有写个性签名~",color_name:!1},submissions:[],currentPage:1,totalPages:1,total:0,showDetail:!1,loading:!1,error:null,isFollowing:!1,isLoggedIn:!1,popupStyle:{}}},created(){this.showFollow&&this.checkLoginStatus(),this.fetchUserInfo(),this.fetchUserSubmissions(),this.showFollow&&this.isLoggedIn&&this.checkFollowStatus()},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside),R===this&&(R=null)},watch:{id(){this.fetchUserInfo(),this.fetchUserSubmissions(),this.showFollow&&this.isLoggedIn&&this.checkFollowStatus()},showDetail(e){e?(R&&R!==this&&(R.showDetail=!1),R=this,this.showFollow&&this.isLoggedIn&&this.checkFollowStatus()):R===this&&(R=null)}},methods:{handleMouseEnter(){this.updatePopupPosition(),this.showDetail=!0},updatePopupPosition(){const e=this.$refs.userBasic;if(!e)return;const t=e.getBoundingClientRect();this.popupStyle={top:t.bottom+window.scrollY+8+"px",left:t.left+window.scrollX+"px",position:"absolute",zIndex:9999}},checkLoginStatus(){const e=V.A.get("token");this.isLoggedIn=!!e},async checkFollowStatus(){if(!this.isLoggedIn)return;const e=V.A.get("token");try{const t=await N.A.post("https://newfront.xn--xhq44jb2fzpc.com/user/follow/status",{user_id:this.id},{headers:{Authorization:e}});this.isFollowing=t.data.is_following}catch(t){console.error("检查关注状态失败:",t)}},async fetchUserInfo(){this.loading=!0;try{const e=await N.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-info?id=${this.id}`);this.userInfo={...e.data,follower:e.data.follower||0,following:e.data.following||0,sign:e.data.sign||"这个人很懒,还没有写个性签名~",color_name:e.data.color_name||!1}}catch(e){this.error="获取用户信息失败",console.error("获取用户信息失败:",e)}finally{this.loading=!1}},async fetchUserSubmissions(e=1){try{const t=await N.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-submissions?id=${this.id}&page=${e}`);t.data?(this.submissions=t.data.list||[],this.total=t.data.total||0,this.currentPage=t.data.page||1,this.totalPages=Math.ceil(this.total/5)):(this.submissions=[],this.total=0,this.totalPages=0)}catch(t){console.error("获取用户投稿失败:",t),this.submissions=[],this.total=0,this.totalPages=0}},changePage(e){e<1||e>this.totalPages||this.fetchUserSubmissions(e)},handleClickOutside(e){const t=this.$el,s=this.$refs.userDetail;if(this.showDetail){const a=t.contains(e.target),n=s&&s.contains(e.target);a||n||(this.showDetail=!1)}},handleFollow(){if(!this.isLoggedIn)return void B.A.alert("请先登录后再关注用户!","提示");const e=V.A.get("token");if(!e)return this.isLoggedIn=!1,void B.A.alert("登录已过期,请重新登录!","提示");const t=this.isFollowing?"取消关注":"关注",s=async()=>{try{const s=await N.A.post("https://newfront.xn--xhq44jb2fzpc.com/user/follow/do",{user_id:this.id},{headers:{Authorization:e}});this.isFollowing=s.data.is_following,this.fetchUserInfo(),this.$barMessage.success(`${t}成功`)}catch(s){console.error(`${t}失败:`,s),s.response&&s.response.data&&s.response.data.message?this.$barMessage.error(s.response.data.message):B.A.alert("操作失败,请稍后重试","错误")}};this.isFollowing?B.A.confirm("确定取消关注该用户吗?","确认操作").then(s).catch((()=>{})):s()},handleArticleClick(e){window.location.href=`/article/${e}`}}},Z=s(1241);const G=(0,Z.A)(J,[["render",Q],["__scopeId","data-v-497d7bc4"]]);var H=G},4993:function(e,t,s){s.d(t,{A:function(){return k}});var a=s(5130),n=s(6768),o=s(4232);const i={class:"message-box"},l={key:0,class:"message-header"},r={class:"message-content"},c={key:0,class:"input-wrapper"},d=["type","placeholder"],u={class:"message-footer"};function h(e,t,s,h,g,p){return(0,n.uX)(),(0,n.Wv)(a.eB,{name:"message-fade"},{default:(0,n.k6)((()=>[s.visible?((0,n.uX)(),(0,n.CE)("div",{key:0,class:"message-overlay",onClick:t[4]||(t[4]=(0,a.D$)(((...e)=>p.handleOverlayClick&&p.handleOverlayClick(...e)),["self"]))},[(0,n.Lk)("div",i,[s.title?((0,n.uX)(),(0,n.CE)("div",l,[(0,n.Lk)("h3",null,(0,o.v_)(s.title),1)])):(0,n.Q3)("",!0),(0,n.Lk)("div",r,[(0,n.Lk)("p",null,(0,o.v_)(s.message),1),s.showInput?((0,n.uX)(),(0,n.CE)("div",c,[(0,n.bo)((0,n.Lk)("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>g.localInputValue=e),type:s.inputType,placeholder:s.inputPlaceholder,class:"message-input",onKeyup:t[1]||(t[1]=(0,a.jR)(((...e)=>p.handleConfirm&&p.handleConfirm(...e)),["enter"]))},null,40,d),[[a.hp,g.localInputValue]])])):(0,n.Q3)("",!0)]),(0,n.Lk)("div",u,[p.cancelVisible?((0,n.uX)(),(0,n.CE)("button",{key:0,class:"btn btn-cancel",onClick:t[2]||(t[2]=(...e)=>p.handleCancel&&p.handleCancel(...e))},(0,o.v_)(s.cancelText),1)):(0,n.Q3)("",!0),p.confirmVisible?((0,n.uX)(),(0,n.CE)("button",{key:1,class:"btn btn-confirm",onClick:t[3]||(t[3]=(...e)=>p.handleConfirm&&p.handleConfirm(...e))},(0,o.v_)(s.confirmText),1)):(0,n.Q3)("",!0)])])])):(0,n.Q3)("",!0)])),_:1})}var g={name:"MessageBox",props:{visible:{type:Boolean,default:!1},title:{type:String,default:""},message:{type:String,required:!0},confirm:{type:Boolean,default:!0},cancel:{type:Boolean,default:!1},confirmText:{type:String,default:"确定"},cancelText:{type:String,default:"取消"},closeOnClickOverlay:{type:Boolean,default:!1},showInput:{type:Boolean,default:!1},inputType:{type:String,default:"text"},inputValue:{type:String,default:""},inputPlaceholder:{type:String,default:"请输入"}},data(){return{localInputValue:""}},watch:{inputValue:{immediate:!0,handler(e){this.localInputValue=e}}},computed:{confirmVisible(){return this.confirm},cancelVisible(){return this.cancel}},methods:{handleConfirm(){this.$emit("confirm",this.localInputValue)},handleCancel(){this.$emit("cancel")},handleOverlayClick(){this.closeOnClickOverlay&&this.$emit("cancel")}}},p=s(1241);const m=(0,p.A)(g,[["render",h],["__scopeId","data-v-076938bc"]]);var f=m;const v=(e={})=>new Promise(((t,s)=>{const n=document.createElement("div");document.body.appendChild(n);const o=(0,a.Ef)(f,{...e,visible:!0,confirm:!1!==e.confirm,cancel:!0===e.cancel,onConfirm:e=>{o.unmount(),document.body.removeChild(n),t({value:e,action:"confirm"})},onCancel:()=>{o.unmount(),document.body.removeChild(n),s({action:"cancel"})}});o.mount(n)}));v.alert=(e,t="",s={})=>v({title:t,message:e,confirm:!0,cancel:!1,...s}),v.confirm=(e,t="",s={})=>v({title:t,message:e,confirm:!0,cancel:!0,...s}),v.prompt=(e,t="",s={})=>v({title:t,message:e,showInput:!0,confirm:!0,cancel:!0,...s});var k=v},5390:function(e,t,s){s.d(t,{A:function(){return Ce}});var a=s(6768),n=s(4232),o=s(5130);const i={class:"container"},l={class:"navbar-brand"},r=["src"],c={class:"burger-container"},d={key:0,class:"unread-dot burger-badge"},u={class:"navbar-end"},h={key:0,class:"navbar-item user-dropdown",style:{padding:"0"}},g={class:"avatar-wrapper"},p=["src","alt"],m={key:0,class:"unread-dot avatar-badge"},f={class:"user-nickname"},v={class:"dropdown-menu"},k={key:0,class:"unread-dot"},b={key:1,class:"navbar-item"},y={key:0,class:"activation-dialog"},w={class:"activation-dialog-content"},C={class:"activation-methods"},L={class:"activation-method"},E={class:"activation-method"},_={class:"activation-method"},A=["disabled"],I={key:1,class:"message-modal"},x={class:"message-modal-content"},M={class:"message-modal-header"},X={class:"message-modal-body",ref:"messageContainer"},S={key:0,class:"no-messages"},P={key:1,class:"message-list"},F={class:"message-header"},j={class:"message-time"},z={key:0,class:"unread-tag"},U=["innerHTML"],T={key:1,class:"message-content"},D=["href"],W={key:1},$={key:2,class:"message-content"},O=["href"],q={key:1},Q={key:3,class:"message-content"},N=["href"],B={key:1},V={key:4,class:"message-content"},R={key:5,class:"message-content"},J=["href"],Z={key:1},G={key:6,class:"message-content"},H=["href"],K={key:1},Y={key:7,class:"message-content"},ee=["href"],te={key:1},se={key:8,class:"message-content"},ae={style:{"margin-top":"8px"}},ne={key:9,class:"message-content"},oe={style:{display:"inline-block","vertical-align":"middle",margin:"0 4px"}},ie={style:{"margin-top":"8px"}},le=["href"],re={key:10,class:"message-content"},ce={key:2,class:"pagination"},de=["disabled"],ue={class:"page-info"},he=["disabled"];function ge(e,t,s,ge,pe,me){const fe=(0,a.g2)("router-link"),ve=(0,a.g2)("UserMeta");return(0,a.uX)(),(0,a.CE)("nav",{class:(0,n.C4)(["navbar",{"navbar-kaoyan":pe.kaoyan}])},[(0,a.Lk)("div",i,[(0,a.Lk)("div",l,[(0,a.bF)(fe,{to:"/",class:"navbar-logo"},{default:(0,a.k6)((()=>[(0,a.Lk)("img",{src:pe.kaoyan?"https://download.xn--xhq44jb2fzpc.com/images/logo-ky.png":"https://download.xn--xhq44jb2fzpc.com/images/logo-hd.png",alt:"NEU小站",class:"navbar-logo-img"},null,8,r),(0,a.Lk)("span",null,(0,n.v_)(pe.kaoyan?"一战成硕":"NEU小站"),1),me.currentTagConfig?((0,a.uX)(),(0,a.CE)("span",{key:0,style:(0,n.Tr)({backgroundColor:me.currentTagConfig.backgroundColor}),class:"route-tag"},(0,n.v_)(me.currentTagConfig.text),5)):(0,a.Q3)("",!0)])),_:1}),(0,a.Lk)("div",c,[(0,a.Lk)("div",{class:(0,n.C4)(["navbar-burger",{"is-active":pe.isMenuActive}]),onClick:t[0]||(t[0]=(...e)=>me.toggleMenu&&me.toggleMenu(...e))},t[14]||(t[14]=[(0,a.Lk)("span",null,null,-1),(0,a.Lk)("span",null,null,-1),(0,a.Lk)("span",null,null,-1)]),2),pe.userInfo&&pe.userInfo.messageUnread?((0,a.uX)(),(0,a.CE)("span",d)):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",{class:(0,n.C4)(["navbar-menu",{"is-active":pe.isMenuActive}])},[(0,a.Lk)("div",u,[(0,a.bF)(fe,{to:"/strategy",class:"navbar-item"},{default:(0,a.k6)((()=>t[15]||(t[15]=[(0,a.eW)("攻略指南")]))),_:1}),(0,a.bF)(fe,{to:"/resources",class:"navbar-item"},{default:(0,a.k6)((()=>t[16]||(t[16]=[(0,a.eW)("资源共享")]))),_:1}),(0,a.bF)(fe,{to:"/ranking",class:"navbar-item"},{default:(0,a.k6)((()=>t[17]||(t[17]=[(0,a.eW)("排行榜")]))),_:1}),(0,a.bF)(fe,{to:"/app",class:"navbar-item"},{default:(0,a.k6)((()=>t[18]||(t[18]=[(0,a.eW)(" 应用中心 "),(0,a.Lk)("span",{class:"new-badge"},"NEW",-1)]))),_:1}),(0,a.bF)(fe,{to:"/about",class:"navbar-item"},{default:(0,a.k6)((()=>t[19]||(t[19]=[(0,a.eW)("关于")]))),_:1}),(0,a.bF)(fe,{to:"/search",class:"navbar-item"},{default:(0,a.k6)((()=>t[20]||(t[20]=[(0,a.eW)("搜索")]))),_:1}),(0,a.bF)(fe,{to:"/advice",class:"navbar-item"},{default:(0,a.k6)((()=>t[21]||(t[21]=[(0,a.eW)(" 建议反馈 "),(0,a.Lk)("span",{class:"new-badge"},"NEW",-1)]))),_:1}),pe.userInfo?((0,a.uX)(),(0,a.CE)("div",h,[(0,a.Lk)("div",{class:"user-info",onClick:t[1]||(t[1]=(...e)=>me.toggleDropdown&&me.toggleDropdown(...e))},[(0,a.Lk)("div",g,[(0,a.Lk)("img",{src:pe.userInfo.avatar_path,class:"user-avatar",alt:pe.userInfo.nickname},null,8,p),pe.userInfo.messageUnread?((0,a.uX)(),(0,a.CE)("span",m)):(0,a.Q3)("",!0)]),(0,a.Lk)("span",f,(0,n.v_)(pe.userInfo.nickname),1),(0,a.Lk)("span",{class:(0,n.C4)(["dropdown-arrow",{"is-active":pe.isDropdownActive}])},"▼",2)]),(0,a.bo)((0,a.Lk)("div",v,[(0,a.Lk)("div",{class:"dropdown-item",onClick:t[2]||(t[2]=(...e)=>me.handleUserCenter&&me.handleUserCenter(...e))},"个人中心"),(0,a.Lk)("div",{class:"dropdown-item",onClick:t[3]||(t[3]=(...e)=>me.handleMessages&&me.handleMessages(...e))},[t[22]||(t[22]=(0,a.eW)(" 我的消息 ")),pe.userInfo.messageUnread?((0,a.uX)(),(0,a.CE)("span",k)):(0,a.Q3)("",!0)]),(0,a.Lk)("div",{class:"dropdown-item",onClick:t[4]||(t[4]=(...e)=>me.handleLogout&&me.handleLogout(...e))},"退出登录")],512),[[o.aG,pe.isDropdownActive]])])):((0,a.uX)(),(0,a.CE)("div",b,[(0,a.Lk)("a",{class:"login-btn",onClick:t[5]||(t[5]=(...e)=>me.handleLogin&&me.handleLogin(...e))},"登录")]))])],2)]),pe.showActivationDialog?((0,a.uX)(),(0,a.CE)("div",y,[(0,a.Lk)("div",w,[t[29]||(t[29]=(0,a.Lk)("h3",null,"账户激活",-1)),t[30]||(t[30]=(0,a.Lk)("p",null,"您的账户尚未激活,请选择以下一种方式进行激活。如果无法激活,请退出登录后在“关于”页面联系网站管理员。",-1)),(0,a.Lk)("div",C,[(0,a.Lk)("div",L,[t[23]||(t[23]=(0,a.Lk)("h4",null,"方式 1:NEU 校园网验证",-1)),t[24]||(t[24]=(0,a.Lk)("p",null,"请连接 NEU 校园网后点击下面的验证按钮(暂不支持秦皇岛分校)",-1)),(0,a.Lk)("button",{onClick:t[6]||(t[6]=(...e)=>me.handleNetworkVerify&&me.handleNetworkVerify(...e)),class:"verify-btn"},"校园网验证")]),(0,a.Lk)("div",E,[t[25]||(t[25]=(0,a.Lk)("h4",null,"方式 2:校园邮箱验证",-1)),t[26]||(t[26]=(0,a.Lk)("p",null,"使用 @stu.neu.edu.cn、@stu.neuq.edu.cn 或 @mails.neu.edu.cn 后缀的校园邮箱验证",-1)),(0,a.Lk)("button",{onClick:t[7]||(t[7]=(...e)=>me.handleEmailVerify&&me.handleEmailVerify(...e)),class:"verify-btn"},"邮箱验证")]),(0,a.Lk)("div",_,[t[27]||(t[27]=(0,a.Lk)("h4",null,"方式 3:学生证照片认证",-1)),t[28]||(t[28]=(0,a.Lk)("p",null,[(0,a.eW)("请上传清晰、无遮挡的学生证(校园卡,"),(0,a.Lk)("strong",null,"非火车票学生证"),(0,a.eW)(")个人信息面照片,并清晰露出公章(支持JPG/PNG/WEBP格式,不超过5M)")],-1)),(0,a.Lk)("input",{type:"file",onChange:t[8]||(t[8]=(...e)=>me.handleFileSelect&&me.handleFileSelect(...e)),accept:"image/jpeg,image/png,image/webp",ref:"fileInput",style:{display:"none"}},null,544),(0,a.Lk)("button",{onClick:t[9]||(t[9]=(...e)=>me.triggerFileInput&&me.triggerFileInput(...e)),class:"verify-btn",disabled:pe.isUploading},(0,n.v_)(pe.isUploading?"上传认证中...":"上传学生证"),9,A)])]),(0,a.Lk)("button",{onClick:t[10]||(t[10]=(...e)=>me.handleLogout&&me.handleLogout(...e)),class:"close-btn"},"退出登录")])])):(0,a.Q3)("",!0),pe.showMessageModal?((0,a.uX)(),(0,a.CE)("div",I,[(0,a.Lk)("div",x,[(0,a.Lk)("div",M,[t[31]||(t[31]=(0,a.Lk)("h3",null,"我的消息",-1)),(0,a.Lk)("span",{class:"close-icon",onClick:t[11]||(t[11]=(...e)=>me.closeMessageModal&&me.closeMessageModal(...e))},"×")]),(0,a.Lk)("div",X,[0===pe.messages.length?((0,a.uX)(),(0,a.CE)("div",S," 暂无消息 ")):((0,a.uX)(),(0,a.CE)("div",P,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(pe.messages,(e=>((0,a.uX)(),(0,a.CE)("div",{key:e.id,class:"message-item"},[(0,a.Lk)("div",F,[(0,a.Lk)("span",j,(0,n.v_)(me.formatDate(e.created_at)),1),e.status?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("span",z,"未读"))]),0===e.type?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"message-content",innerHTML:e.content},null,8,U)):1===e.type?((0,a.uX)(),(0,a.CE)("div",T,[t[32]||(t[32]=(0,a.eW)(" 您在《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,D)):((0,a.uX)(),(0,a.CE)("span",W,(0,n.v_)(e.article_title),1)),(0,a.eW)("》内容下的「"+(0,n.v_)(e.original_content)+"」评论被回复:「"+(0,n.v_)(e.reply_content)+"」 ",1)])):2===e.type?((0,a.uX)(),(0,a.CE)("div",$,[t[33]||(t[33]=(0,a.eW)(" 您的投稿《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.title),9,O)):((0,a.uX)(),(0,a.CE)("span",q,(0,n.v_)(e.title),1)),(0,a.eW)("》审核"+(0,n.v_)(e.pass?"已通过":"未通过")+(0,n.v_)(e.note?",审核备注:"+e.note:""),1)])):3===e.type?((0,a.uX)(),(0,a.CE)("div",Q,[t[34]||(t[34]=(0,a.eW)(' 您添加的课程"')),e.course_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://course.xn--xhq44jb2fzpc.com/courses?c="+me.encodeBase64(e.course_id),target:"_blank"},(0,n.v_)(e.course_name),9,N)):((0,a.uX)(),(0,a.CE)("span",B,(0,n.v_)(e.course_name),1)),(0,a.eW)('"审核'+(0,n.v_)(e.course_status),1)])):4===e.type?((0,a.uX)(),(0,a.CE)("div",V," 您的密钥「"+(0,n.v_)(e.key_plaintext)+"」使用次数已用尽,继续投稿可获得新的密钥。 ",1)):5===e.type?((0,a.uX)(),(0,a.CE)("div",R,[t[35]||(t[35]=(0,a.eW)(" 您在《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,J)):((0,a.uX)(),(0,a.CE)("span",Z,(0,n.v_)(e.article_title),1)),(0,a.eW)("》内容下的「"+(0,n.v_)(e.content)+"」评论被点赞。 ",1)])):6===e.type?((0,a.uX)(),(0,a.CE)("div",G,[t[36]||(t[36]=(0,a.eW)(" 您的内容《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,H)):((0,a.uX)(),(0,a.CE)("span",K,(0,n.v_)(e.article_title),1)),(0,a.eW)("》收到新评论:「"+(0,n.v_)(e.comment_content)+"」 ",1)])):7===e.type?((0,a.uX)(),(0,a.CE)("div",Y,[t[37]||(t[37]=(0,a.eW)(" 恭喜您的内容《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,ee)):((0,a.uX)(),(0,a.CE)("span",te,(0,n.v_)(e.article_title),1)),(0,a.eW)("》浏览量达到"+(0,n.v_)(e.view_count)+",感谢您为NEU小站贡献优质内容,小站因为有你而更加精彩~ ",1)])):8===e.type?((0,a.uX)(),(0,a.CE)("div",se,[t[38]||(t[38]=(0,a.Lk)("div",null,"您有一个新粉丝:",-1)),(0,a.Lk)("div",ae,[(0,a.bF)(ve,{id:e.follower_id},null,8,["id"])])])):9===e.type?((0,a.uX)(),(0,a.CE)("div",ne,[(0,a.Lk)("div",null,[t[39]||(t[39]=(0,a.eW)("您关注的用户")),(0,a.Lk)("span",oe,[(0,a.bF)(ve,{id:e.author_id},null,8,["id"])]),t[40]||(t[40]=(0,a.eW)("有新的投稿内容:"))]),(0,a.Lk)("div",ie,[t[41]||(t[41]=(0,a.eW)(" 《")),(0,a.Lk)("a",{href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,le),t[42]||(t[42]=(0,a.eW)("》 "))])])):((0,a.uX)(),(0,a.CE)("div",re,(0,n.v_)(e.error||"未知消息类型"),1))])))),128))])),pe.totalPages>1?((0,a.uX)(),(0,a.CE)("div",ce,[(0,a.Lk)("button",{disabled:1===pe.currentPage,onClick:t[12]||(t[12]=e=>me.loadMessages(pe.currentPage-1)),class:"page-btn"},"上一页",8,de),(0,a.Lk)("span",ue,(0,n.v_)(pe.currentPage)+" / "+(0,n.v_)(pe.totalPages),1),(0,a.Lk)("button",{disabled:pe.currentPage===pe.totalPages,onClick:t[13]||(t[13]=e=>me.loadMessages(pe.currentPage+1)),class:"page-btn"},"下一页",8,he)])):(0,a.Q3)("",!0)],512)])])):(0,a.Q3)("",!0)],2)}s(4114),s(8111),s(116),s(3579),s(4979);var pe=s(8704),me=s(4373),fe=s(4993),ve=s(8630),ke=s(3108),be={name:"NavBar",components:{UserMeta:ke.A},data(){return{kaoyan:!0,isMenuActive:!1,isDropdownActive:!1,userInfo:null,showActivationDialog:!1,isActivated:!1,isUploading:!1,showMessageModal:!1,messages:[],loading:!1,currentPage:1,totalPages:1,pageSize:10,tagConfigurations:[{text:"应用",backgroundColor:"#ff8c00",routes:["/app","/app/"],wildcard:!1},{text:"工具",backgroundColor:"#3273dc",routes:["/widgets"],wildcard:!0}]}},computed:{currentTagConfig(){const e=this.$route.path;return this.tagConfigurations.find((t=>!!t.routes.includes(e)||!!t.wildcard&&t.routes.some((t=>e===t||e.startsWith(t+"/")))))||null}},mounted(){this.checkLoginStatus()},methods:{handleLogin(){(0,ve.A)().then((e=>{console.log(e),this.checkLoginStatus()})).catch((e=>{console.log(e)}))},toggleMenu(){this.isMenuActive=!this.isMenuActive},toggleDropdown(){this.isDropdownActive=!this.isDropdownActive},handleUserCenter(){this.isDropdownActive=!1,this.$router.push("/user-center")},handleLogout(){const e=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");pe.A.remove("token",{domain:e,path:"/"}),this.userInfo=null,window.location.reload()},checkLoginStatus(){const e=pe.A.get("token");e&&me.A.get("https://newfront.xn--xhq44jb2fzpc.com/user/info",{headers:{Authorization:e}}).then((e=>{this.userInfo=e.data,e.data.banned?(this.$barMessage({message:"您的账户已被封禁,请联系网站管理员",type:"error"}),fe.A.alert('您的账户已被封禁,如有疑问请在"关于"页面联系网站管理员。',"账户状态异常",{confirmText:"退出登录",cancel:!1}).then((()=>{this.handleLogout()})).catch((()=>{this.handleLogout()}))):(this.isActivated=e.data.activated,this.isActivated||(this.showActivationDialog=!0))})).catch((e=>{console.log(e),this.userInfo=null}))},closeActivationDialog(){this.showActivationDialog=!1},handleNetworkVerify(){const e=pe.A.get("token");e?me.A.get("https://userlogin.xn--xhq44jb2fzpc.com/qv",{headers:{Authorization:e}}).then((e=>{fe.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((e=>{e.response&&e.response.data?fe.A.alert(`${e.response.data.message} 当前IP: ${e.response.data.ip||"未知"}`,"提示"):fe.A.alert("验证失败,请稍后重试","提示")})):fe.A.alert("您未登录,请先登录后操作!","提示")},handleEmailVerify(){const e=pe.A.get("token");e?me.A.get("https://userlogin.xn--xhq44jb2fzpc.com/check-email",{headers:{Authorization:e}}).then((e=>{fe.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((t=>{t.response&&403===t.response.status?this.promptForCampusEmail(e):t.response&&t.response.data?fe.A.alert(t.response.data.message||"发生未知错误,请稍后重试","提示"):fe.A.alert("验证失败,请稍后重试","提示")})):fe.A.alert("您未登录,请先登录后操作!","提示")},promptForCampusEmail(e){(0,fe.A)({title:"校园邮箱验证",message:"请输入您的校园邮箱:",showInput:!0,inputPlaceholder:"请输入校园邮箱",confirmText:"确认",cancelText:"取消",cancel:!0}).then((({value:t})=>{t?t.endsWith("@stu.neu.edu.cn")||t.endsWith("@stu.neuq.edu.cn")||t.endsWith("@mails.neu.edu.cn")?this.sendCampusVerificationEmail(t,e):fe.A.alert("请输入有效的 @stu.neu.edu.cn、@stu.neuq.edu.cn 或 @mails.neu.edu.cn 校园邮箱!","提示"):fe.A.alert("邮箱不能为空","提示")})).catch((()=>{}))},sendCampusVerificationEmail(e,t){me.A.post("https://userlogin.xn--xhq44jb2fzpc.com/send-campus-verify",{campus_email:e},{headers:{Authorization:t,"Content-Type":"application/json"}}).then((t=>{fe.A.alert(`验证邮件已发送至 ${e},请检查您的邮箱完成验证。`,"提示")})).catch((e=>{e.response&&e.response.data?fe.A.alert(`发送验证邮件失败:${e.response.data.message}`,"提示"):fe.A.alert("发送验证邮件失败,请稍后重试","提示")}))},handleMessages(){this.isDropdownActive=!1,this.showMessageModal=!0,this.loadMessages(1)},closeMessageModal(){this.showMessageModal=!1,this.checkLoginStatus()},loadMessages(e){this.currentPage=e,me.A.get("https://newfront.xn--xhq44jb2fzpc.com/message/get",{headers:{Authorization:pe.A.get("token")},params:{page:e}}).then((e=>{this.messages=e.data.messages,this.totalPages=e.data.totalPages,this.pageSize=e.data.pageSize})).catch((e=>{console.error("获取消息失败:",e),fe.A.alert("获取消息失败,请稍后再试。","错误")}))},formatDate(e){const t=new Date(e);return t.toLocaleDateString()+" "+t.toLocaleTimeString()},encodeBase64(e){return window.btoa(e)},triggerFileInput(){this.$refs.fileInput.click()},async handleFileSelect(e){const t=e.target.files[0];if(!t)return;const s=["image/jpeg","image/png","image/webp"];if(!s.includes(t.type))return void fe.A.alert("不支持的文件格式,请上传 JPG, PNG, 或 WEBP 图片。","格式错误");const a=5242880;if(t.size>a)fe.A.alert("文件大小不能超过 5MB。","文件过大");else{this.isUploading=!0;try{const e=pe.A.get("token");if(!e)return fe.A.alert("您未登录,请先登录后操作!","提示"),void(this.isUploading=!1);const s=await me.A.post("https://newfront.xn--xhq44jb2fzpc.com/freshman/validate_card/get-upload-url",{filename:t.name},{headers:{Authorization:e}}),{uploadUrl:a,objectPath:n}=s.data;await me.A.put(a,t,{headers:{"Content-Type":t.type}});await me.A.post("https://newfront.xn--xhq44jb2fzpc.com/freshman/validate_card/verify",{objectPath:n},{headers:{Authorization:e}});fe.A.alert("学生证认证成功!","激活成功"),this.isActivated=!0,this.showActivationDialog=!1,this.checkLoginStatus()}catch(n){let e="操作失败,请稍后重试。";n.response&&n.response.data&&n.response.data.message&&(e=n.response.data.message),fe.A.alert(e,"错误")}finally{this.isUploading=!1,this.$refs.fileInput.value=""}}}}},ye=s(1241);const we=(0,ye.A)(be,[["render",ge],["__scopeId","data-v-32653be9"]]);var Ce=we},5973:function(e,t,s){var a=s(5130),n=s(6768),o=s(4232),i=s(144);const l={id:"app"},r={class:"beian-footer"},c={class:"container"},d={class:"copyright"};var u={__name:"App",setup(e){const t=(new Date).getFullYear();return(e,s)=>{const a=(0,n.g2)("router-view"),u=(0,n.g2)("router-link");return(0,n.uX)(),(0,n.CE)("div",l,[(0,n.bF)(a),(0,n.Lk)("footer",r,[(0,n.Lk)("div",c,[s[1]||(s[1]=(0,n.Lk)("span",{style:{"white-space":"nowrap"}},[(0,n.Lk)("img",{src:"https://beian.mps.gov.cn/web/assets/logo01.6189a29f.png",alt:"公安标识",style:{"vertical-align":"middle",height:"16px",display:"inline-block"}}),(0,n.Lk)("a",{href:"https://beian.mps.gov.cn/",target:"_blank"}," 赣公网安备36090202000259号"),(0,n.eW)("  |  "),(0,n.Lk)("a",{href:"https://beian.miit.gov.cn/",target:"_blank"},"赣ICP备2024039267号-1")],-1)),(0,n.Lk)("div",d,[(0,n.eW)(" © 2024-"+(0,o.v_)((0,i.R1)(t))+" ",1),(0,n.bF)(u,{to:"/about"},{default:(0,n.k6)((()=>s[0]||(s[0]=[(0,n.eW)("NEU小站")]))),_:1})])])])])}}};const h=u;var g=h,p=s(1387);const m={class:"home"},f={class:"container"},v={class:"welcome-section"},k={class:"quick-links"},b={style:{"text-align":"right","font-weight":"normal"}};function y(e,t,s,a,i,l){const r=(0,n.g2)("Navbar");return(0,n.uX)(),(0,n.CE)("div",m,[(0,n.bF)(r),(0,n.Lk)("div",f,[(0,n.Lk)("div",v,[t[3]||(t[3]=(0,n.Lk)("img",{alt:"Vue logo",src:"https://download.东北大学.com/images/logo-ky.png"},null,-1)),t[4]||(t[4]=(0,n.Lk)("h1",null,"欢迎访问NEU小站",-1)),(0,n.Lk)("div",k,[t[1]||(t[1]=(0,n.Lk)("span",{class:"colorful-text"},"课程评分V2版本已上线,移动端可用!",-1)),t[2]||(t[2]=(0,n.Lk)("span",null,"入口:",-1)),(0,n.Lk)("a",{onClick:t[0]||(t[0]=e=>l.goTo("course",!1)),target:"_blank"},"课程评分系统")]),(0,n.Lk)("div",{class:(0,o.C4)(["intro-text",{"intro-kaoyan":i.kaoyan}])},[(0,n.Lk)("p",null,(0,o.v_)(i.kaoyan?"这一程霜雪披肩,终淬出笔锋里的晨曦。愿你合卷时,有剑归鞘的从容~":"“让我在接下来的日子里陪你一起成长吧”"),1),(0,n.Lk)("p",b,(0,o.v_)(i.kaoyan?"——致考研NEUers":"——NEU小站"),1)],2)])])])}var w=s(5390),C=s(4993),L={name:"HomeView",components:{Navbar:w.A},created(){document.title="NEU小站"},data(){return{kaoyan:!0}},methods:{goTo(e,t=!1){const s={course:"https://course.xn--xhq44jb2fzpc.com",oj:"https://oj.xn--xhq44jb2fzpc.com"},a=s[e];if(a)if(t){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?C.A.confirm("推荐在电脑端访问,以获得最佳体验。仍要继续吗?","提示").then((()=>{window.open(a,"_blank")})).catch((()=>{})):window.open(a,"_blank")}else window.open(a,"_blank");else console.error(`No URL found for name: ${e}`)}}},E=s(1241);const _=(0,E.A)(L,[["render",y],["__scopeId","data-v-4d92c852"]]);var A=_,I=s(4130),x=s.n(I);x().configure({showSpinner:!1});const M=[{path:"/",name:"home",component:A},{path:"/login",name:"login",component:()=>s.e(630).then(s.bind(s,4630))},{path:"/article/:id",name:"article-detail",component:()=>s.e(839).then(s.bind(s,1839))},{path:"/about",name:"about",component:()=>s.e(831).then(s.bind(s,6212))},{path:"/strategy",name:"strategy",component:()=>s.e(181).then(s.bind(s,8181))},{path:"/resources",name:"resources",component:()=>s.e(690).then(s.bind(s,9690))},{path:"/ranking",name:"ranking",component:()=>s.e(550).then(s.bind(s,1550))},{path:"/:pathMatch(.*)*",name:"404",component:()=>s.e(899).then(s.bind(s,3899))},{path:"/search",name:"search",component:()=>s.e(368).then(s.bind(s,7368))},{path:"/user-center",name:"user-center",component:()=>s.e(630).then(s.bind(s,4630))},{path:"/app",name:"app",component:()=>s.e(159).then(s.bind(s,5540))},{path:"/submit",name:"submit",component:()=>Promise.all([s.e(625),s.e(954)]).then(s.bind(s,4954))},{path:"/preview",name:"preview",component:()=>s.e(839).then(s.bind(s,1839))},{path:"/edit",name:"edit-article",component:()=>Promise.all([s.e(625),s.e(954)]).then(s.bind(s,4954))},{path:"/widgets",name:"widgets",component:()=>s.e(155).then(s.bind(s,5155))},{path:"/widgets/webvpn",name:"webvpn",component:()=>s.e(898).then(s.bind(s,898))},{path:"/subscribe",name:"subscribe",component:()=>s.e(349).then(s.bind(s,1349))},{path:"/advice",name:"advice",component:()=>Promise.all([s.e(625),s.e(405)]).then(s.bind(s,405))}],X=(0,p.aE)({history:(0,p.LA)("/"),routes:M});X.beforeEach(((e,t,s)=>{x().start(),s()})),X.afterEach((()=>{x().done()}));var S=X,P=s(2090);const F=(0,a.Ef)(g);F.config.globalProperties.$barMessage=P.A,F.use(S).mount("#app"),window.$barMessage=P.A},8630:function(e,t,s){s.d(t,{A:function(){return x}});var a=s(5130),n=s(6768),o=s(4232);const i={key:0,class:"login-container"},l={class:"login-box"},r={class:"login-header"},c={class:"form-group"},d={class:"form-group"},u={class:"button-group"},h={class:"modal-content"},g={class:"modal-header"},p={class:"modal-body"},m={class:"captcha-instruction"},f={class:"form-group"},v={class:"modal-footer"},k={key:0,class:"loading-overlay"};function b(e,t,s,b,y,w){return s.visible?((0,n.uX)(),(0,n.CE)("div",i,[t[13]||(t[13]=(0,n.Lk)("div",{class:"login-overlay"},null,-1)),(0,n.Lk)("div",l,[(0,n.Lk)("div",r,[t[8]||(t[8]=(0,n.Lk)("h2",{class:"login-title"},"登录/注册",-1)),s.showClose?((0,n.uX)(),(0,n.CE)("button",{key:0,onClick:t[0]||(t[0]=(...e)=>w.handleClose&&w.handleClose(...e)),class:"close-btn"},"×")):(0,n.Q3)("",!0)]),(0,n.Lk)("form",{onSubmit:t[4]||(t[4]=(0,a.D$)(((...e)=>w.handleSubmit&&w.handleSubmit(...e)),["prevent"])),class:"login-form"},[(0,n.Lk)("div",c,[t[9]||(t[9]=(0,n.Lk)("label",{for:"email"},"邮箱",-1)),(0,n.bo)((0,n.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":t[1]||(t[1]=e=>y.email=e),placeholder:"请输入邮箱地址",required:"",class:"form-input",pattern:"[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$",title:"请输入有效的邮箱地址"},null,512),[[a.Jo,y.email]])]),(0,n.Lk)("div",d,[t[10]||(t[10]=(0,n.Lk)("label",{for:"password"},"密码",-1)),(0,n.bo)((0,n.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":t[2]||(t[2]=e=>y.password=e),placeholder:"请输入密码",required:"",class:"form-input"},null,512),[[a.Jo,y.password]])]),y.message?((0,n.uX)(),(0,n.CE)("div",{key:0,class:(0,o.C4)(["message",{error:y.messageIsError,success:!y.messageIsError}])},(0,o.v_)(y.message),3)):(0,n.Q3)("",!0),(0,n.Lk)("div",u,[(0,n.Lk)("button",{type:"button",onClick:t[3]||(t[3]=(...e)=>w.login&&w.login(...e)),class:"btn btn-primary"},"登录/注册")])],32)]),(0,n.Lk)("div",{class:(0,o.C4)(["modal",{show:y.showCaptchaModal}])},[(0,n.Lk)("div",h,[(0,n.Lk)("div",g,[t[11]||(t[11]=(0,n.Lk)("h3",null,"邮箱验证",-1)),(0,n.Lk)("button",{onClick:t[5]||(t[5]=(...e)=>w.closeCaptchaModal&&w.closeCaptchaModal(...e)),class:"close-btn"},"×")]),(0,n.Lk)("div",p,[(0,n.Lk)("p",m,(0,o.v_)(y.captchaInstruction),1),(0,n.Lk)("div",f,[(0,n.bo)((0,n.Lk)("input",{type:"text","onUpdate:modelValue":t[6]||(t[6]=e=>y.captchaCode=e),placeholder:"请输入验证码",class:"form-input"},null,512),[[a.Jo,y.captchaCode]])]),y.captchaMessage?((0,n.uX)(),(0,n.CE)("div",{key:0,class:(0,o.C4)(["captcha-message",{error:y.captchaMessageIsError,success:!y.captchaMessageIsError}])},(0,o.v_)(y.captchaMessage),3)):(0,n.Q3)("",!0)]),(0,n.Lk)("div",v,[(0,n.Lk)("button",{onClick:t[7]||(t[7]=(...e)=>w.verifyCaptcha&&w.verifyCaptcha(...e)),class:"btn btn-primary"},"验证")])])],2),y.loading?((0,n.uX)(),(0,n.CE)("div",k,[t[12]||(t[12]=(0,n.Lk)("div",{class:"spinner"},null,-1)),(0,n.Lk)("p",null,(0,o.v_)(y.loadingMessage),1)])):(0,n.Q3)("",!0)])):(0,n.Q3)("",!0)}var y=s(4993),w=s(235),C=s.n(w),L={name:"Login",props:{visible:{type:Boolean,default:!0},showClose:{type:Boolean,default:!1},onSuccess:{type:Function,default:null},onClose:{type:Function,default:null}},data(){return{email:"",password:"",message:"",messageIsError:!0,loading:!1,loadingMessage:"加载中...",showCaptchaModal:!1,captchaCode:"",captchaMessage:"",captchaMessageIsError:!0,captchaInstruction:"验证码已发送至您的邮箱,请在下方输入"}},methods:{detectDevice(){try{const e=C().getParser(window.navigator.userAgent),t=e.getOS(),s=e.getBrowser();let a=t.name||"Unknown";return t.version&&(a+=` ${t.version}`),s.name&&(a+=` / ${s.name}`,s.version&&(a+=` ${s.version}`)),a}catch(e){return console.error("Device detection failed:",e),"Unknown"}},async handleSubmit(){await this.login()},handleClose(){this.onClose?this.onClose():this.$emit("close")},async login(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);const e=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;if(!e.test(this.email))return this.message="请输入有效的邮箱地址",void(this.messageIsError=!0);this.loading=!0,this.loadingMessage="登录中...";try{const e=await this.loginOrRegister(this.email,this.password,"login");"Login successful."===e.message?this.handleLoginSuccess(e):"User not registered."===e.message?(this.loading=!1,(0,y.A)({title:"邮箱未注册",message:'此邮箱没有注册。点击"发送"按钮将向您的邮箱发送注册验证码。',confirmText:"发送",cancelText:"取消",cancel:!0,closeOnClickOverlay:!0}).then((async()=>{await this.sendRegisterCode()})).catch((()=>{}))):"Invalid email or password."===e.message?(this.message="密码错误。",this.messageIsError=!0,this.loading=!1):(this.message=e.message||"登录失败,请重试。",this.messageIsError=!0,this.loading=!1)}catch(t){console.error("Error:",t),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async register(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);const e=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;if(!e.test(this.email))return this.message="请输入有效的邮箱地址",void(this.messageIsError=!0);await this.sendRegisterCode()},async sendRegisterCode(){this.loading=!0,this.loadingMessage="发送验证码中...";try{const e=await this.loginOrRegister(this.email,this.password,"register");"Verification email sent."===e.message?(this.captchaInstruction="验证码已发送至您的邮箱,请在下方输入",this.captchaMessage="",this.captchaCode="",this.showCaptchaModal=!0):"A valid code has already been sent. Please try again later."===e.message?(this.captchaInstruction="您还有未验证的验证码,请查看邮箱并在下方输入",this.captchaMessage="",this.captchaCode="",this.showCaptchaModal=!0):"Email is already registered."===e.message?(this.message="此邮箱已注册。",this.messageIsError=!0):(this.message="发送验证码失败,请稍后重试。",this.messageIsError=!0),this.loading=!1}catch(e){console.error("Error:",e),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async verifyCaptcha(){if(!this.captchaCode)return this.captchaMessage="请输入验证码",void(this.captchaMessageIsError=!0);try{const e=await this.verifyRegisterCode(this.email,this.captchaCode);"User registered successfully."===e.message?(this.captchaMessage="验证成功!",this.captchaMessageIsError=!1,setTimeout((()=>{this.closeCaptchaModal(),this.handleSuccessfulRegistration()}),1500)):(this.captchaMessage="您的验证码不正确",this.captchaMessageIsError=!0)}catch(e){console.error("Error:",e),this.captchaMessage="验证过程中发生错误,请重试",this.captchaMessageIsError=!0}},closeCaptchaModal(){this.showCaptchaModal=!1,this.captchaCode="",this.captchaMessage=""},async handleSuccessfulRegistration(){this.message="注册成功!正在登录...",this.messageIsError=!1,this.loading=!0,this.loadingMessage="登录中...",await this.delay(1e3);try{const e=await this.loginOrRegister(this.email,this.password,"login");"Login successful."===e.message?this.handleLoginSuccess(e):(this.message="注册成功,但自动登录失败,请手动登录。",this.messageIsError=!0,this.loading=!1)}catch(e){console.error("Error during login after registration:",e),this.message="注册成功,但自动登录失败,请手动登录。",this.messageIsError=!0,this.loading=!1}},handleLoginSuccess(e){const t=e.token,s=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");document.cookie=`token=${t}; max-age=604740; path=/; domain=${s}; secure; SameSite=Strict`,this.loading=!1,this.message="登录成功!正在加载中...",this.messageIsError=!1;const a={email:this.email,userId:e.id,token:e.token};this.onSuccess&&(this.onSuccess(a),window.location.reload()),this.$emit("login-success",a),this.onClose&&setTimeout((()=>{this.handleClose()}),3e3)},async loginOrRegister(e,t,s){const a="login"===s?"https://userlogin.xn--xhq44jb2fzpc.com/login":"https://userlogin.xn--xhq44jb2fzpc.com/register",n={email:e,password:t};"login"===s&&(n.device=this.detectDevice());const o=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});return o.json()},async verifyRegisterCode(e,t){const s="https://userlogin.xn--xhq44jb2fzpc.com/verify-register-code",a=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,code:t})});return a.json()},delay(e){return new Promise((t=>setTimeout(t,e)))}}},E=s(1241);const _=(0,E.A)(L,[["render",b],["__scopeId","data-v-4002456e"]]);var A=_;const I=(e={})=>new Promise(((t,s)=>{const n=document.createElement("div");document.body.appendChild(n);const o=(0,a.Ef)(A,{...e,visible:!0,showClose:!0,onSuccess:e=>{t(e)},onClose:()=>{o.unmount(),document.body.removeChild(n)}});o.mount(n)}));I.withCallback=(e,t={})=>I({...t,onSuccess:t=>{e(t)}});var x=I}},t={};function s(a){var n=t[a];if(void 0!==n)return n.exports;var o=t[a]={exports:{}};return e[a].call(o.exports,o,o.exports,s),o.exports}s.m=e,function(){var e=[];s.O=function(t,a,n,o){if(!a){var i=1/0;for(d=0;d=o)&&Object.keys(s.O).every((function(e){return s.O[e](a[r])}))?a.splice(r--,1):(l=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[a,n,o]}}(),function(){s.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return s.d(t,{a:t}),t}}(),function(){s.d=function(e,t){for(var a in t)s.o(t,a)&&!s.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(t,a){return s.f[a](e,t),t}),[]))}}(),function(){s.u=function(e){return"js/"+e+"."+{12:"dc7bebdb",155:"76cd04ca",159:"2c37e637",181:"131039eb",349:"f1c1e6e6",368:"4f0fc957",405:"0630fdee",550:"b610fc8e",625:"4ff04b31",630:"c7b451f7",690:"4f695e90",831:"24a8bec1",839:"9d51dbcd",898:"5064f30d",899:"eabbeb84",940:"562973c0",954:"6192c1ac"}[e]+".js"}}(),function(){s.miniCssF=function(e){return"css/"+e+"."+{155:"e92d57c5",159:"8357e143",181:"3599b6db",349:"a7567497",368:"9ee9e7c3",405:"f1f73646",550:"7c932b4a",625:"b01fd648",630:"96c3928e",690:"885607c9",831:"61a06249",839:"6ef27684",898:"6cbcb5bc",899:"35501d47",954:"b8c67783"}[e]+".css"}}(),function(){s.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="newfront:";s.l=function(a,n,o,i){if(e[a])e[a].push(n);else{var l,r;if(void 0!==o)for(var c=document.getElementsByTagName("script"),d=0;d[r.visible?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"bar-message",style:(0,o.Tr)(c.positionStyle)},[(0,a.Lk)("div",{class:(0,o.C4)(["bar-message-content",r.customColor?"":r.type]),style:(0,o.Tr)({backgroundColor:r.customColor})},[r.showIcon?((0,a.uX)(),(0,a.CE)("i",{key:0,class:(0,o.C4)(["bar-message-icon",c.iconClass])},null,2)):(0,a.Q3)("",!0),(0,a.Lk)("span",i,(0,o.v_)(r.message),1),r.showClose?((0,a.uX)(),(0,a.CE)("i",{key:1,class:"bar-message-close fas fa-times",onClick:t[0]||(t[0]=(...e)=>c.close&&c.close(...e))})):(0,a.Q3)("",!0)],6)],4)):(0,a.Q3)("",!0)])),_:1})}var r={name:"BarMessage",data(){return{visible:!1,message:"",type:"success",customColor:"",timer:null,duration:3e3,position:"top",showIcon:!0,showClose:!1}},computed:{positionStyle(){return"bottom"===this.position?{top:"auto",bottom:"16px"}:"center"===this.position?{top:"50%",transform:"translate(-50%, -50%)"}:{top:"16px",bottom:"auto"}},iconClass(){switch(this.type){case"success":return"fas fa-check-circle";case"error":return"fas fa-times-circle";case"warning":return"fas fa-exclamation-circle";case"info":return"fas fa-info-circle";default:return"fas fa-bell"}}},methods:{show(e){this.timer&&clearTimeout(this.timer),this.message=e.message||"",this.type=e.type||"success",this.customColor=e.color||"",this.duration=void 0!==e.duration?e.duration:3e3,this.position=e.position||"top",this.showIcon=void 0===e.showIcon||e.showIcon,this.showClose=void 0!==e.showClose&&e.showClose,this.visible=!0,this.duration>0&&(this.timer=setTimeout((()=>{this.close()}),this.duration))},close(){this.visible=!1,this.timer&&(clearTimeout(this.timer),this.timer=null),this.onClose&&this.onClose()}}},c=s(1241);const d=(0,c.A)(r,[["render",l],["__scopeId","data-v-18bdfd8a"]]);var u=d;const h=[];let g=1;const p=function(e){"string"===typeof e&&(e={message:e}),e=e||{};const t="bar_message_"+g++,s=document.createElement("div"),o=e.onClose;e.onClose=()=>{m(t,o)};const i=(0,a.bF)(u,e);(0,n.XX)(i,s),document.body.appendChild(s);const l=i.component.proxy;l.show(e);const r={id:t,vnode:i,vm:l,container:s};return h.push(r),{close:()=>{l.close()}}};function m(e,t){const s=h.findIndex((t=>t.id===e));if(-1===s)return;const{vm:a,container:o}=h[s];a&&("function"===typeof t&&t(),(0,n.XX)(null,o),document.body.removeChild(o),h.splice(s,1))}["success","error","warning","info"].forEach((e=>{p[e]=t=>("string"===typeof t?t={message:t,type:e}:(t=t||{},t.type=e),p(t))})),p.permanent=e=>("string"===typeof e&&(e={message:e}),e=e||{},e.duration=0,e.showClose=!1!==e.showClose,p(e)),p.closeAll=function(){for(let e=h.length-1;e>=0;e--)h[e].vm.close()};var f=p},3108:function(e,t,s){s.d(t,{A:function(){return H}});var a=s(6768),n=s(4232),o=s(5130);const i={class:"user-meta"},l={class:"avatar-wrapper"},r=["src"],c={key:0,class:"avatar-loading"},d={class:"user-badges"},u=["title"],h=["title"],g={key:2,class:"badge medal"},p={class:"card-container"},m={class:"detail-header"},f=["src"],v={class:"detail-right"},k={class:"user-badges"},b=["title"],y=["title"],w={key:2,class:"badge medal"},C={key:0,class:"user-sign"},L={class:"sign-text"},E={class:"user-stats"},_={class:"stat-item"},A={class:"stat-value"},I={class:"stat-item"},x={class:"stat-value"},M={key:1,class:"user-submissions"},X={class:"submission-header"},S={key:0,class:"pagination-controls"},P=["disabled"],F={class:"page-info"},j=["disabled"],z={class:"submission-list"},U=["onClick"],T={class:"submission-title"},D={class:"submission-tags"},W={key:0,class:"tag official"},$={key:1,class:"tag highlight"},O={key:2,class:"tag top"},q={class:"card-footer"};function Q(e,t,s,Q,N,B){return(0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("div",{class:"user-basic",ref:"userBasic",onMouseenter:t[0]||(t[0]=(...e)=>B.handleMouseEnter&&B.handleMouseEnter(...e))},[(0,a.Lk)("div",l,[(0,a.Lk)("img",{src:N.userInfo.avatarUrl,alt:"用户头像",class:"avatar"},null,8,r),N.loading?((0,a.uX)(),(0,a.CE)("div",c,t[6]||(t[6]=[(0,a.Lk)("div",{class:"loading-spinner"},null,-1)]))):(0,a.Q3)("",!0)]),(0,a.Lk)("div",{class:(0,n.C4)(["user-name",{"colorful-name":N.userInfo.color_name}])},(0,n.v_)(N.userInfo.nickname),3),(0,a.Lk)("div",d,[N.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:N.userInfo.verified},"认证",8,u)):(0,a.Q3)("",!0),N.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:N.userInfo.invited},"特邀",8,h)):(0,a.Q3)("",!0),1===N.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",g,"小站奖章")):(0,a.Q3)("",!0)])],544),((0,a.uX)(),(0,a.Wv)(a.Im,{to:"body"},[(0,a.bF)(o.eB,{name:"detail-fade"},{default:(0,a.k6)((()=>[N.showDetail?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"user-detail",ref:"userDetail",style:(0,n.Tr)(N.popupStyle),onMouseenter:t[4]||(t[4]=e=>N.showDetail=!0),onMouseleave:t[5]||(t[5]=e=>N.showDetail=!1)},[(0,a.Lk)("div",p,[(0,a.Lk)("div",m,[t[7]||(t[7]=(0,a.Lk)("div",{class:"header-bg"},null,-1)),(0,a.Lk)("img",{src:N.userInfo.avatarUrl,alt:"用户头像",class:"detail-avatar"},null,8,f),(0,a.Lk)("div",v,[(0,a.Lk)("div",{class:(0,n.C4)(["detail-name",{"colorful-name":N.userInfo.color_name}])},(0,n.v_)(N.userInfo.nickname),3),(0,a.Lk)("div",k,[N.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:N.userInfo.verified},"认证",8,b)):(0,a.Q3)("",!0),N.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:N.userInfo.invited},"特邀",8,y)):(0,a.Q3)("",!0),1===N.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",w,"小站奖章")):(0,a.Q3)("",!0)])])]),N.userInfo.sign?((0,a.uX)(),(0,a.CE)("div",C,[t[8]||(t[8]=(0,a.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,a.Lk)("div",L,(0,n.v_)(N.userInfo.sign),1)])):(0,a.Q3)("",!0),(0,a.Lk)("div",E,[(0,a.Lk)("div",_,[(0,a.Lk)("div",A,(0,n.v_)(N.userInfo.follower),1),t[9]||(t[9]=(0,a.Lk)("div",{class:"stat-label"},"粉丝",-1))]),t[11]||(t[11]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",I,[(0,a.Lk)("div",x,(0,n.v_)(N.userInfo.following),1),t[10]||(t[10]=(0,a.Lk)("div",{class:"stat-label"},"关注",-1))])]),N.submissions.length>0?((0,a.uX)(),(0,a.CE)("div",M,[(0,a.Lk)("div",X,[t[12]||(t[12]=(0,a.Lk)("span",null,"TA的投稿",-1)),N.totalPages>1?((0,a.uX)(),(0,a.CE)("div",S,[(0,a.Lk)("button",{class:"page-btn",disabled:1===N.currentPage,onClick:t[1]||(t[1]=(0,o.D$)((e=>B.changePage(N.currentPage-1)),["stop"]))}," < ",8,P),(0,a.Lk)("span",F,(0,n.v_)(N.currentPage)+"/"+(0,n.v_)(N.totalPages),1),(0,a.Lk)("button",{class:"page-btn",disabled:N.currentPage===N.totalPages,onClick:t[2]||(t[2]=(0,o.D$)((e=>B.changePage(N.currentPage+1)),["stop"]))}," > ",8,j)])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",z,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(N.submissions,(e=>((0,a.uX)(),(0,a.CE)("div",{key:e.id,class:"submission-item",onClick:t=>B.handleArticleClick(e.id)},[(0,a.Lk)("div",T,(0,n.v_)(e.title),1),(0,a.Lk)("div",D,[e.official?((0,a.uX)(),(0,a.CE)("span",W,"官方")):(0,a.Q3)("",!0),e.highlight?((0,a.uX)(),(0,a.CE)("span",$,"优质")):(0,a.Q3)("",!0),e.top?((0,a.uX)(),(0,a.CE)("span",O,"置顶")):(0,a.Q3)("",!0)])],8,U)))),128))])])):(0,a.Q3)("",!0),(0,a.Lk)("div",q,[s.showFollow?((0,a.uX)(),(0,a.CE)("button",{key:0,class:(0,n.C4)(["follow-btn",{followed:N.isFollowing,"disabled-look":!N.isLoggedIn}]),onClick:t[3]||(t[3]=(...e)=>B.handleFollow&&B.handleFollow(...e))},(0,n.v_)(N.isFollowing?"取消关注":"+ 关注"),3)):(0,a.Q3)("",!0)])])],36)):(0,a.Q3)("",!0)])),_:1})]))])}var N=s(4373),B=s(4993),V=s(8704);let R=null;var J={name:"UserMeta",props:{id:{type:[String,Number],required:!0},showFollow:{type:Boolean,default:!0}},data(){return{userInfo:{nickname:"默认昵称",verified:null,invited:null,medal:0,avatarUrl:"https://download.东北大学.com/avatar/default.png",follower:0,following:0,sign:"这个人很懒,还没有写个性签名~",color_name:!1},submissions:[],currentPage:1,totalPages:1,total:0,showDetail:!1,loading:!1,error:null,isFollowing:!1,isLoggedIn:!1,popupStyle:{}}},created(){this.showFollow&&this.checkLoginStatus(),this.fetchUserInfo(),this.fetchUserSubmissions(),this.showFollow&&this.isLoggedIn&&this.checkFollowStatus()},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside),R===this&&(R=null)},watch:{id(){this.fetchUserInfo(),this.fetchUserSubmissions(),this.showFollow&&this.isLoggedIn&&this.checkFollowStatus()},showDetail(e){e?(R&&R!==this&&(R.showDetail=!1),R=this,this.showFollow&&this.isLoggedIn&&this.checkFollowStatus()):R===this&&(R=null)}},methods:{handleMouseEnter(){this.updatePopupPosition(),this.showDetail=!0},updatePopupPosition(){const e=this.$refs.userBasic;if(!e)return;const t=e.getBoundingClientRect();this.popupStyle={top:t.bottom+window.scrollY+8+"px",left:t.left+window.scrollX+"px",position:"absolute",zIndex:9999}},checkLoginStatus(){const e=V.A.get("token");this.isLoggedIn=!!e},async checkFollowStatus(){if(!this.isLoggedIn)return;const e=V.A.get("token");try{const t=await N.A.post("https://newfront.xn--xhq44jb2fzpc.com/user/follow/status",{user_id:this.id},{headers:{Authorization:e}});this.isFollowing=t.data.is_following}catch(t){console.error("检查关注状态失败:",t)}},async fetchUserInfo(){this.loading=!0;try{const e=await N.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-info?id=${this.id}`);this.userInfo={...e.data,follower:e.data.follower||0,following:e.data.following||0,sign:e.data.sign||"这个人很懒,还没有写个性签名~",color_name:e.data.color_name||!1}}catch(e){this.error="获取用户信息失败",console.error("获取用户信息失败:",e)}finally{this.loading=!1}},async fetchUserSubmissions(e=1){try{const t=await N.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-submissions?id=${this.id}&page=${e}`);t.data?(this.submissions=t.data.list||[],this.total=t.data.total||0,this.currentPage=t.data.page||1,this.totalPages=Math.ceil(this.total/5)):(this.submissions=[],this.total=0,this.totalPages=0)}catch(t){console.error("获取用户投稿失败:",t),this.submissions=[],this.total=0,this.totalPages=0}},changePage(e){e<1||e>this.totalPages||this.fetchUserSubmissions(e)},handleClickOutside(e){const t=this.$el,s=this.$refs.userDetail;if(this.showDetail){const a=t.contains(e.target),n=s&&s.contains(e.target);a||n||(this.showDetail=!1)}},handleFollow(){if(!this.isLoggedIn)return void B.A.alert("请先登录后再关注用户!","提示");const e=V.A.get("token");if(!e)return this.isLoggedIn=!1,void B.A.alert("登录已过期,请重新登录!","提示");const t=this.isFollowing?"取消关注":"关注",s=async()=>{try{const s=await N.A.post("https://newfront.xn--xhq44jb2fzpc.com/user/follow/do",{user_id:this.id},{headers:{Authorization:e}});this.isFollowing=s.data.is_following,this.fetchUserInfo(),this.$barMessage.success(`${t}成功`)}catch(s){console.error(`${t}失败:`,s),s.response&&s.response.data&&s.response.data.message?this.$barMessage.error(s.response.data.message):B.A.alert("操作失败,请稍后重试","错误")}};this.isFollowing?B.A.confirm("确定取消关注该用户吗?","确认操作").then(s).catch((()=>{})):s()},handleArticleClick(e){window.location.href=`/article/${e}`}}},Z=s(1241);const G=(0,Z.A)(J,[["render",Q],["__scopeId","data-v-497d7bc4"]]);var H=G},4993:function(e,t,s){s.d(t,{A:function(){return k}});var a=s(5130),n=s(6768),o=s(4232);const i={class:"message-box"},l={key:0,class:"message-header"},r={class:"message-content"},c={key:0,class:"input-wrapper"},d=["type","placeholder"],u={class:"message-footer"};function h(e,t,s,h,g,p){return(0,n.uX)(),(0,n.Wv)(a.eB,{name:"message-fade"},{default:(0,n.k6)((()=>[s.visible?((0,n.uX)(),(0,n.CE)("div",{key:0,class:"message-overlay",onClick:t[4]||(t[4]=(0,a.D$)(((...e)=>p.handleOverlayClick&&p.handleOverlayClick(...e)),["self"]))},[(0,n.Lk)("div",i,[s.title?((0,n.uX)(),(0,n.CE)("div",l,[(0,n.Lk)("h3",null,(0,o.v_)(s.title),1)])):(0,n.Q3)("",!0),(0,n.Lk)("div",r,[(0,n.Lk)("p",null,(0,o.v_)(s.message),1),s.showInput?((0,n.uX)(),(0,n.CE)("div",c,[(0,n.bo)((0,n.Lk)("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>g.localInputValue=e),type:s.inputType,placeholder:s.inputPlaceholder,class:"message-input",onKeyup:t[1]||(t[1]=(0,a.jR)(((...e)=>p.handleConfirm&&p.handleConfirm(...e)),["enter"]))},null,40,d),[[a.hp,g.localInputValue]])])):(0,n.Q3)("",!0)]),(0,n.Lk)("div",u,[p.cancelVisible?((0,n.uX)(),(0,n.CE)("button",{key:0,class:"btn btn-cancel",onClick:t[2]||(t[2]=(...e)=>p.handleCancel&&p.handleCancel(...e))},(0,o.v_)(s.cancelText),1)):(0,n.Q3)("",!0),p.confirmVisible?((0,n.uX)(),(0,n.CE)("button",{key:1,class:"btn btn-confirm",onClick:t[3]||(t[3]=(...e)=>p.handleConfirm&&p.handleConfirm(...e))},(0,o.v_)(s.confirmText),1)):(0,n.Q3)("",!0)])])])):(0,n.Q3)("",!0)])),_:1})}var g={name:"MessageBox",props:{visible:{type:Boolean,default:!1},title:{type:String,default:""},message:{type:String,required:!0},confirm:{type:Boolean,default:!0},cancel:{type:Boolean,default:!1},confirmText:{type:String,default:"确定"},cancelText:{type:String,default:"取消"},closeOnClickOverlay:{type:Boolean,default:!1},showInput:{type:Boolean,default:!1},inputType:{type:String,default:"text"},inputValue:{type:String,default:""},inputPlaceholder:{type:String,default:"请输入"}},data(){return{localInputValue:""}},watch:{inputValue:{immediate:!0,handler(e){this.localInputValue=e}}},computed:{confirmVisible(){return this.confirm},cancelVisible(){return this.cancel}},methods:{handleConfirm(){this.$emit("confirm",this.localInputValue)},handleCancel(){this.$emit("cancel")},handleOverlayClick(){this.closeOnClickOverlay&&this.$emit("cancel")}}},p=s(1241);const m=(0,p.A)(g,[["render",h],["__scopeId","data-v-076938bc"]]);var f=m;const v=(e={})=>new Promise(((t,s)=>{const n=document.createElement("div");document.body.appendChild(n);const o=(0,a.Ef)(f,{...e,visible:!0,confirm:!1!==e.confirm,cancel:!0===e.cancel,onConfirm:e=>{o.unmount(),document.body.removeChild(n),t({value:e,action:"confirm"})},onCancel:()=>{o.unmount(),document.body.removeChild(n),s({action:"cancel"})}});o.mount(n)}));v.alert=(e,t="",s={})=>v({title:t,message:e,confirm:!0,cancel:!1,...s}),v.confirm=(e,t="",s={})=>v({title:t,message:e,confirm:!0,cancel:!0,...s}),v.prompt=(e,t="",s={})=>v({title:t,message:e,showInput:!0,confirm:!0,cancel:!0,...s});var k=v},5390:function(e,t,s){s.d(t,{A:function(){return Ce}});var a=s(6768),n=s(4232),o=s(5130);const i={class:"container"},l={class:"navbar-brand"},r=["src"],c={class:"burger-container"},d={key:0,class:"unread-dot burger-badge"},u={class:"navbar-end"},h={key:0,class:"navbar-item user-dropdown",style:{padding:"0"}},g={class:"avatar-wrapper"},p=["src","alt"],m={key:0,class:"unread-dot avatar-badge"},f={class:"user-nickname"},v={class:"dropdown-menu"},k={key:0,class:"unread-dot"},b={key:1,class:"navbar-item"},y={key:0,class:"activation-dialog"},w={class:"activation-dialog-content"},C={class:"activation-methods"},L={class:"activation-method"},E={class:"activation-method"},_={class:"activation-method"},A=["disabled"],I={key:1,class:"message-modal"},x={class:"message-modal-content"},M={class:"message-modal-header"},X={class:"message-modal-body",ref:"messageContainer"},S={key:0,class:"no-messages"},P={key:1,class:"message-list"},F={class:"message-header"},j={class:"message-time"},z={key:0,class:"unread-tag"},U=["innerHTML"],T={key:1,class:"message-content"},D=["href"],W={key:1},$={key:2,class:"message-content"},O=["href"],q={key:1},Q={key:3,class:"message-content"},N=["href"],B={key:1},V={key:4,class:"message-content"},R={key:5,class:"message-content"},J=["href"],Z={key:1},G={key:6,class:"message-content"},H=["href"],K={key:1},Y={key:7,class:"message-content"},ee=["href"],te={key:1},se={key:8,class:"message-content"},ae={style:{"margin-top":"8px"}},ne={key:9,class:"message-content"},oe={style:{display:"inline-block","vertical-align":"middle",margin:"0 4px"}},ie={style:{"margin-top":"8px"}},le=["href"],re={key:10,class:"message-content"},ce={key:2,class:"pagination"},de=["disabled"],ue={class:"page-info"},he=["disabled"];function ge(e,t,s,ge,pe,me){const fe=(0,a.g2)("router-link"),ve=(0,a.g2)("UserMeta");return(0,a.uX)(),(0,a.CE)("nav",{class:(0,n.C4)(["navbar",{"navbar-kaoyan":pe.kaoyan}])},[(0,a.Lk)("div",i,[(0,a.Lk)("div",l,[(0,a.bF)(fe,{to:"/",class:"navbar-logo"},{default:(0,a.k6)((()=>[(0,a.Lk)("img",{src:pe.kaoyan?"https://download.xn--xhq44jb2fzpc.com/images/logo-ky.png":"https://download.xn--xhq44jb2fzpc.com/images/logo-hd.png",alt:"NEU小站",class:"navbar-logo-img"},null,8,r),(0,a.Lk)("span",null,(0,n.v_)(pe.kaoyan?"一战成硕":"NEU小站"),1),me.currentTagConfig?((0,a.uX)(),(0,a.CE)("span",{key:0,style:(0,n.Tr)({backgroundColor:me.currentTagConfig.backgroundColor}),class:"route-tag"},(0,n.v_)(me.currentTagConfig.text),5)):(0,a.Q3)("",!0)])),_:1}),(0,a.Lk)("div",c,[(0,a.Lk)("div",{class:(0,n.C4)(["navbar-burger",{"is-active":pe.isMenuActive}]),onClick:t[0]||(t[0]=(...e)=>me.toggleMenu&&me.toggleMenu(...e))},t[14]||(t[14]=[(0,a.Lk)("span",null,null,-1),(0,a.Lk)("span",null,null,-1),(0,a.Lk)("span",null,null,-1)]),2),pe.userInfo&&pe.userInfo.messageUnread?((0,a.uX)(),(0,a.CE)("span",d)):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",{class:(0,n.C4)(["navbar-menu",{"is-active":pe.isMenuActive}])},[(0,a.Lk)("div",u,[(0,a.bF)(fe,{to:"/strategy",class:"navbar-item"},{default:(0,a.k6)((()=>t[15]||(t[15]=[(0,a.eW)("攻略指南")]))),_:1}),(0,a.bF)(fe,{to:"/resources",class:"navbar-item"},{default:(0,a.k6)((()=>t[16]||(t[16]=[(0,a.eW)("资源共享")]))),_:1}),(0,a.bF)(fe,{to:"/ranking",class:"navbar-item"},{default:(0,a.k6)((()=>t[17]||(t[17]=[(0,a.eW)("排行榜")]))),_:1}),(0,a.bF)(fe,{to:"/app",class:"navbar-item"},{default:(0,a.k6)((()=>t[18]||(t[18]=[(0,a.eW)(" 应用中心 "),(0,a.Lk)("span",{class:"new-badge"},"NEW",-1)]))),_:1}),(0,a.bF)(fe,{to:"/about",class:"navbar-item"},{default:(0,a.k6)((()=>t[19]||(t[19]=[(0,a.eW)("关于")]))),_:1}),(0,a.bF)(fe,{to:"/search",class:"navbar-item"},{default:(0,a.k6)((()=>t[20]||(t[20]=[(0,a.eW)("搜索")]))),_:1}),(0,a.bF)(fe,{to:"/advice",class:"navbar-item"},{default:(0,a.k6)((()=>t[21]||(t[21]=[(0,a.eW)(" 建议反馈 "),(0,a.Lk)("span",{class:"new-badge"},"NEW",-1)]))),_:1}),pe.userInfo?((0,a.uX)(),(0,a.CE)("div",h,[(0,a.Lk)("div",{class:"user-info",onClick:t[1]||(t[1]=(...e)=>me.toggleDropdown&&me.toggleDropdown(...e))},[(0,a.Lk)("div",g,[(0,a.Lk)("img",{src:pe.userInfo.avatar_path,class:"user-avatar",alt:pe.userInfo.nickname},null,8,p),pe.userInfo.messageUnread?((0,a.uX)(),(0,a.CE)("span",m)):(0,a.Q3)("",!0)]),(0,a.Lk)("span",f,(0,n.v_)(pe.userInfo.nickname),1),(0,a.Lk)("span",{class:(0,n.C4)(["dropdown-arrow",{"is-active":pe.isDropdownActive}])},"▼",2)]),(0,a.bo)((0,a.Lk)("div",v,[(0,a.Lk)("div",{class:"dropdown-item",onClick:t[2]||(t[2]=(...e)=>me.handleUserCenter&&me.handleUserCenter(...e))},"个人中心"),(0,a.Lk)("div",{class:"dropdown-item",onClick:t[3]||(t[3]=(...e)=>me.handleMessages&&me.handleMessages(...e))},[t[22]||(t[22]=(0,a.eW)(" 我的消息 ")),pe.userInfo.messageUnread?((0,a.uX)(),(0,a.CE)("span",k)):(0,a.Q3)("",!0)]),(0,a.Lk)("div",{class:"dropdown-item",onClick:t[4]||(t[4]=(...e)=>me.handleLogout&&me.handleLogout(...e))},"退出登录")],512),[[o.aG,pe.isDropdownActive]])])):((0,a.uX)(),(0,a.CE)("div",b,[(0,a.Lk)("a",{class:"login-btn",onClick:t[5]||(t[5]=(...e)=>me.handleLogin&&me.handleLogin(...e))},"登录")]))])],2)]),pe.showActivationDialog?((0,a.uX)(),(0,a.CE)("div",y,[(0,a.Lk)("div",w,[t[29]||(t[29]=(0,a.Lk)("h3",null,"账户激活",-1)),t[30]||(t[30]=(0,a.Lk)("p",null,"您的账户尚未激活,请选择以下一种方式进行激活。如果无法激活,请退出登录后在“关于”页面联系网站管理员。",-1)),(0,a.Lk)("div",C,[(0,a.Lk)("div",L,[t[23]||(t[23]=(0,a.Lk)("h4",null,"方式 1:NEU 校园网验证",-1)),t[24]||(t[24]=(0,a.Lk)("p",null,"请连接 NEU 校园网后点击下面的验证按钮(暂不支持秦皇岛分校)",-1)),(0,a.Lk)("button",{onClick:t[6]||(t[6]=(...e)=>me.handleNetworkVerify&&me.handleNetworkVerify(...e)),class:"verify-btn"},"校园网验证")]),(0,a.Lk)("div",E,[t[25]||(t[25]=(0,a.Lk)("h4",null,"方式 2:校园邮箱验证",-1)),t[26]||(t[26]=(0,a.Lk)("p",null,"使用 @stu.neu.edu.cn、@stu.neuq.edu.cn 或 @mails.neu.edu.cn 后缀的校园邮箱验证",-1)),(0,a.Lk)("button",{onClick:t[7]||(t[7]=(...e)=>me.handleEmailVerify&&me.handleEmailVerify(...e)),class:"verify-btn"},"邮箱验证")]),(0,a.Lk)("div",_,[t[27]||(t[27]=(0,a.Lk)("h4",null,"方式 3:学生证照片认证",-1)),t[28]||(t[28]=(0,a.Lk)("p",null,[(0,a.eW)("请上传清晰、无遮挡的学生证(校园卡,"),(0,a.Lk)("strong",null,"非火车票学生证"),(0,a.eW)(")个人信息面照片,并清晰露出公章(支持JPG/PNG/WEBP格式,不超过5M)")],-1)),(0,a.Lk)("input",{type:"file",onChange:t[8]||(t[8]=(...e)=>me.handleFileSelect&&me.handleFileSelect(...e)),accept:"image/jpeg,image/png,image/webp",ref:"fileInput",style:{display:"none"}},null,544),(0,a.Lk)("button",{onClick:t[9]||(t[9]=(...e)=>me.triggerFileInput&&me.triggerFileInput(...e)),class:"verify-btn",disabled:pe.isUploading},(0,n.v_)(pe.isUploading?"上传认证中...":"上传学生证"),9,A)])]),(0,a.Lk)("button",{onClick:t[10]||(t[10]=(...e)=>me.handleLogout&&me.handleLogout(...e)),class:"close-btn"},"退出登录")])])):(0,a.Q3)("",!0),pe.showMessageModal?((0,a.uX)(),(0,a.CE)("div",I,[(0,a.Lk)("div",x,[(0,a.Lk)("div",M,[t[31]||(t[31]=(0,a.Lk)("h3",null,"我的消息",-1)),(0,a.Lk)("span",{class:"close-icon",onClick:t[11]||(t[11]=(...e)=>me.closeMessageModal&&me.closeMessageModal(...e))},"×")]),(0,a.Lk)("div",X,[0===pe.messages.length?((0,a.uX)(),(0,a.CE)("div",S," 暂无消息 ")):((0,a.uX)(),(0,a.CE)("div",P,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(pe.messages,(e=>((0,a.uX)(),(0,a.CE)("div",{key:e.id,class:"message-item"},[(0,a.Lk)("div",F,[(0,a.Lk)("span",j,(0,n.v_)(me.formatDate(e.created_at)),1),e.status?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("span",z,"未读"))]),0===e.type?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"message-content",innerHTML:e.content},null,8,U)):1===e.type?((0,a.uX)(),(0,a.CE)("div",T,[t[32]||(t[32]=(0,a.eW)(" 您在《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,D)):((0,a.uX)(),(0,a.CE)("span",W,(0,n.v_)(e.article_title),1)),(0,a.eW)("》内容下的「"+(0,n.v_)(e.original_content)+"」评论被回复:「"+(0,n.v_)(e.reply_content)+"」 ",1)])):2===e.type?((0,a.uX)(),(0,a.CE)("div",$,[t[33]||(t[33]=(0,a.eW)(" 您的投稿《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.title),9,O)):((0,a.uX)(),(0,a.CE)("span",q,(0,n.v_)(e.title),1)),(0,a.eW)("》审核"+(0,n.v_)(e.pass?"已通过":"未通过")+(0,n.v_)(e.note?",审核备注:"+e.note:""),1)])):3===e.type?((0,a.uX)(),(0,a.CE)("div",Q,[t[34]||(t[34]=(0,a.eW)(' 您添加的课程"')),e.course_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://course.xn--xhq44jb2fzpc.com/courses?c="+me.encodeBase64(e.course_id),target:"_blank"},(0,n.v_)(e.course_name),9,N)):((0,a.uX)(),(0,a.CE)("span",B,(0,n.v_)(e.course_name),1)),(0,a.eW)('"审核'+(0,n.v_)(e.course_status),1)])):4===e.type?((0,a.uX)(),(0,a.CE)("div",V," 您的密钥「"+(0,n.v_)(e.key_plaintext)+"」使用次数已用尽,继续投稿可获得新的密钥。 ",1)):5===e.type?((0,a.uX)(),(0,a.CE)("div",R,[t[35]||(t[35]=(0,a.eW)(" 您在《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,J)):((0,a.uX)(),(0,a.CE)("span",Z,(0,n.v_)(e.article_title),1)),(0,a.eW)("》内容下的「"+(0,n.v_)(e.content)+"」评论被点赞。 ",1)])):6===e.type?((0,a.uX)(),(0,a.CE)("div",G,[t[36]||(t[36]=(0,a.eW)(" 您的内容《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,H)):((0,a.uX)(),(0,a.CE)("span",K,(0,n.v_)(e.article_title),1)),(0,a.eW)("》收到新评论:「"+(0,n.v_)(e.comment_content)+"」 ",1)])):7===e.type?((0,a.uX)(),(0,a.CE)("div",Y,[t[37]||(t[37]=(0,a.eW)(" 恭喜您的内容《")),e.article_id?((0,a.uX)(),(0,a.CE)("a",{key:0,href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,ee)):((0,a.uX)(),(0,a.CE)("span",te,(0,n.v_)(e.article_title),1)),(0,a.eW)("》浏览量达到"+(0,n.v_)(e.view_count)+",感谢您为NEU小站贡献优质内容,小站因为有你而更加精彩~ ",1)])):8===e.type?((0,a.uX)(),(0,a.CE)("div",se,[t[38]||(t[38]=(0,a.Lk)("div",null,"您有一个新粉丝:",-1)),(0,a.Lk)("div",ae,[(0,a.bF)(ve,{id:e.follower_id},null,8,["id"])])])):9===e.type?((0,a.uX)(),(0,a.CE)("div",ne,[(0,a.Lk)("div",null,[t[39]||(t[39]=(0,a.eW)("您关注的用户")),(0,a.Lk)("span",oe,[(0,a.bF)(ve,{id:e.author_id},null,8,["id"])]),t[40]||(t[40]=(0,a.eW)("有新的投稿内容:"))]),(0,a.Lk)("div",ie,[t[41]||(t[41]=(0,a.eW)(" 《")),(0,a.Lk)("a",{href:"https://www.xn--xhq44jb2fzpc.com/article/"+e.article_id,target:"_blank"},(0,n.v_)(e.article_title),9,le),t[42]||(t[42]=(0,a.eW)("》 "))])])):((0,a.uX)(),(0,a.CE)("div",re,(0,n.v_)(e.error||"未知消息类型"),1))])))),128))])),pe.totalPages>1?((0,a.uX)(),(0,a.CE)("div",ce,[(0,a.Lk)("button",{disabled:1===pe.currentPage,onClick:t[12]||(t[12]=e=>me.loadMessages(pe.currentPage-1)),class:"page-btn"},"上一页",8,de),(0,a.Lk)("span",ue,(0,n.v_)(pe.currentPage)+" / "+(0,n.v_)(pe.totalPages),1),(0,a.Lk)("button",{disabled:pe.currentPage===pe.totalPages,onClick:t[13]||(t[13]=e=>me.loadMessages(pe.currentPage+1)),class:"page-btn"},"下一页",8,he)])):(0,a.Q3)("",!0)],512)])])):(0,a.Q3)("",!0)],2)}s(4114),s(8111),s(116),s(3579),s(4979);var pe=s(8704),me=s(4373),fe=s(4993),ve=s(8630),ke=s(3108),be={name:"NavBar",components:{UserMeta:ke.A},data(){return{kaoyan:!0,isMenuActive:!1,isDropdownActive:!1,userInfo:null,showActivationDialog:!1,isActivated:!1,isUploading:!1,showMessageModal:!1,messages:[],loading:!1,currentPage:1,totalPages:1,pageSize:10,tagConfigurations:[{text:"应用",backgroundColor:"#ff8c00",routes:["/app","/app/"],wildcard:!1},{text:"工具",backgroundColor:"#3273dc",routes:["/widgets"],wildcard:!0}]}},computed:{currentTagConfig(){const e=this.$route.path;return this.tagConfigurations.find((t=>!!t.routes.includes(e)||!!t.wildcard&&t.routes.some((t=>e===t||e.startsWith(t+"/")))))||null}},mounted(){this.checkLoginStatus()},methods:{handleLogin(){(0,ve.A)().then((e=>{console.log(e),this.checkLoginStatus()})).catch((e=>{console.log(e)}))},toggleMenu(){this.isMenuActive=!this.isMenuActive},toggleDropdown(){this.isDropdownActive=!this.isDropdownActive},handleUserCenter(){this.isDropdownActive=!1,this.$router.push("/user-center")},handleLogout(){const e=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");pe.A.remove("token",{domain:e,path:"/"}),this.userInfo=null,window.location.reload()},checkLoginStatus(){const e=pe.A.get("token");e&&me.A.get("https://newfront.xn--xhq44jb2fzpc.com/user/info",{headers:{Authorization:e}}).then((e=>{this.userInfo=e.data,e.data.banned?(this.$barMessage({message:"您的账户已被封禁,请联系网站管理员",type:"error"}),fe.A.alert('您的账户已被封禁,如有疑问请在"关于"页面联系网站管理员。',"账户状态异常",{confirmText:"退出登录",cancel:!1}).then((()=>{this.handleLogout()})).catch((()=>{this.handleLogout()}))):(this.isActivated=e.data.activated,this.isActivated||(this.showActivationDialog=!0))})).catch((e=>{console.log(e),this.userInfo=null}))},closeActivationDialog(){this.showActivationDialog=!1},handleNetworkVerify(){const e=pe.A.get("token");e?me.A.get("https://userlogin.xn--xhq44jb2fzpc.com/qv",{headers:{Authorization:e}}).then((e=>{fe.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((e=>{e.response&&e.response.data?fe.A.alert(`${e.response.data.message} 当前IP: ${e.response.data.ip||"未知"}`,"提示"):fe.A.alert("验证失败,请稍后重试","提示")})):fe.A.alert("您未登录,请先登录后操作!","提示")},handleEmailVerify(){const e=pe.A.get("token");e?me.A.get("https://userlogin.xn--xhq44jb2fzpc.com/check-email",{headers:{Authorization:e}}).then((e=>{fe.A.alert(e.data.message,"提示"),this.isActivated=!0,this.showActivationDialog=!1})).catch((t=>{t.response&&403===t.response.status?this.promptForCampusEmail(e):t.response&&t.response.data?fe.A.alert(t.response.data.message||"发生未知错误,请稍后重试","提示"):fe.A.alert("验证失败,请稍后重试","提示")})):fe.A.alert("您未登录,请先登录后操作!","提示")},promptForCampusEmail(e){(0,fe.A)({title:"校园邮箱验证",message:"请输入您的校园邮箱:",showInput:!0,inputPlaceholder:"请输入校园邮箱",confirmText:"确认",cancelText:"取消",cancel:!0}).then((({value:t})=>{t?t.endsWith("@stu.neu.edu.cn")||t.endsWith("@stu.neuq.edu.cn")||t.endsWith("@mails.neu.edu.cn")?this.sendCampusVerificationEmail(t,e):fe.A.alert("请输入有效的 @stu.neu.edu.cn、@stu.neuq.edu.cn 或 @mails.neu.edu.cn 校园邮箱!","提示"):fe.A.alert("邮箱不能为空","提示")})).catch((()=>{}))},sendCampusVerificationEmail(e,t){me.A.post("https://userlogin.xn--xhq44jb2fzpc.com/send-campus-verify",{campus_email:e},{headers:{Authorization:t,"Content-Type":"application/json"}}).then((t=>{fe.A.alert(`验证邮件已发送至 ${e},请检查您的邮箱完成验证。`,"提示")})).catch((e=>{e.response&&e.response.data?fe.A.alert(`发送验证邮件失败:${e.response.data.message}`,"提示"):fe.A.alert("发送验证邮件失败,请稍后重试","提示")}))},handleMessages(){this.isDropdownActive=!1,this.showMessageModal=!0,this.loadMessages(1)},closeMessageModal(){this.showMessageModal=!1,this.checkLoginStatus()},loadMessages(e){this.currentPage=e,me.A.get("https://newfront.xn--xhq44jb2fzpc.com/message/get",{headers:{Authorization:pe.A.get("token")},params:{page:e}}).then((e=>{this.messages=e.data.messages,this.totalPages=e.data.totalPages,this.pageSize=e.data.pageSize})).catch((e=>{console.error("获取消息失败:",e),fe.A.alert("获取消息失败,请稍后再试。","错误")}))},formatDate(e){const t=new Date(e);return t.toLocaleDateString()+" "+t.toLocaleTimeString()},encodeBase64(e){return window.btoa(e)},triggerFileInput(){this.$refs.fileInput.click()},async handleFileSelect(e){const t=e.target.files[0];if(!t)return;const s=["image/jpeg","image/png","image/webp"];if(!s.includes(t.type))return void fe.A.alert("不支持的文件格式,请上传 JPG, PNG, 或 WEBP 图片。","格式错误");const a=5242880;if(t.size>a)fe.A.alert("文件大小不能超过 5MB。","文件过大");else{this.isUploading=!0;try{const e=pe.A.get("token");if(!e)return fe.A.alert("您未登录,请先登录后操作!","提示"),void(this.isUploading=!1);const s=await me.A.post("https://newfront.xn--xhq44jb2fzpc.com/freshman/validate_card/get-upload-url",{filename:t.name},{headers:{Authorization:e}}),{uploadUrl:a,objectPath:n}=s.data;await me.A.put(a,t,{headers:{"Content-Type":t.type}});await me.A.post("https://newfront.xn--xhq44jb2fzpc.com/freshman/validate_card/verify",{objectPath:n},{headers:{Authorization:e}});fe.A.alert("学生证认证成功!","激活成功"),this.isActivated=!0,this.showActivationDialog=!1,this.checkLoginStatus()}catch(n){let e="操作失败,请稍后重试。";n.response&&n.response.data&&n.response.data.message&&(e=n.response.data.message),fe.A.alert(e,"错误")}finally{this.isUploading=!1,this.$refs.fileInput.value=""}}}}},ye=s(1241);const we=(0,ye.A)(be,[["render",ge],["__scopeId","data-v-32653be9"]]);var Ce=we},5973:function(e,t,s){var a=s(5130),n=s(6768),o=s(4232),i=s(144);const l={id:"app"},r={class:"beian-footer"},c={class:"container"},d={class:"copyright"};var u={__name:"App",setup(e){const t=(new Date).getFullYear();return(e,s)=>{const a=(0,n.g2)("router-view"),u=(0,n.g2)("router-link");return(0,n.uX)(),(0,n.CE)("div",l,[(0,n.bF)(a),(0,n.Lk)("footer",r,[(0,n.Lk)("div",c,[s[1]||(s[1]=(0,n.Lk)("span",{style:{"white-space":"nowrap"}},[(0,n.Lk)("img",{src:"https://beian.mps.gov.cn/web/assets/logo01.6189a29f.png",alt:"公安标识",style:{"vertical-align":"middle",height:"16px",display:"inline-block"}}),(0,n.Lk)("a",{href:"https://beian.mps.gov.cn/",target:"_blank"}," 赣公网安备36090202000259号"),(0,n.eW)("  |  "),(0,n.Lk)("a",{href:"https://beian.miit.gov.cn/",target:"_blank"},"赣ICP备2024039267号-1")],-1)),(0,n.Lk)("div",d,[(0,n.eW)(" © 2024-"+(0,o.v_)((0,i.R1)(t))+" ",1),(0,n.bF)(u,{to:"/about"},{default:(0,n.k6)((()=>s[0]||(s[0]=[(0,n.eW)("NEU小站")]))),_:1})])])])])}}};const h=u;var g=h,p=s(1387);const m={class:"home"},f={class:"container"},v={class:"welcome-section"},k={class:"quick-links"},b={style:{"text-align":"right","font-weight":"normal"}};function y(e,t,s,a,i,l){const r=(0,n.g2)("Navbar");return(0,n.uX)(),(0,n.CE)("div",m,[(0,n.bF)(r),(0,n.Lk)("div",f,[(0,n.Lk)("div",v,[t[3]||(t[3]=(0,n.Lk)("img",{alt:"Vue logo",src:"https://download.东北大学.com/images/logo-ky.png"},null,-1)),t[4]||(t[4]=(0,n.Lk)("h1",null,"欢迎访问NEU小站",-1)),(0,n.Lk)("div",k,[t[1]||(t[1]=(0,n.Lk)("span",{class:"colorful-text"},"课程评分V2版本已上线,移动端可用!",-1)),t[2]||(t[2]=(0,n.Lk)("span",null,"入口:",-1)),(0,n.Lk)("a",{onClick:t[0]||(t[0]=e=>l.goTo("course",!1)),target:"_blank"},"课程评分系统")]),(0,n.Lk)("div",{class:(0,o.C4)(["intro-text",{"intro-kaoyan":i.kaoyan}])},[(0,n.Lk)("p",null,(0,o.v_)(i.kaoyan?"这一程霜雪披肩,终淬出笔锋里的晨曦。愿你合卷时,有剑归鞘的从容~":"“让我在接下来的日子里陪你一起成长吧”"),1),(0,n.Lk)("p",b,(0,o.v_)(i.kaoyan?"——致考研NEUers":"——NEU小站"),1)],2)])])])}var w=s(5390),C=s(4993),L={name:"HomeView",components:{Navbar:w.A},created(){document.title="NEU小站"},data(){return{kaoyan:!0}},methods:{goTo(e,t=!1){const s={course:"https://course.xn--xhq44jb2fzpc.com",oj:"https://oj.xn--xhq44jb2fzpc.com"},a=s[e];if(a)if(t){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?C.A.confirm("推荐在电脑端访问,以获得最佳体验。仍要继续吗?","提示").then((()=>{window.open(a,"_blank")})).catch((()=>{})):window.open(a,"_blank")}else window.open(a,"_blank");else console.error(`No URL found for name: ${e}`)}}},E=s(1241);const _=(0,E.A)(L,[["render",y],["__scopeId","data-v-4d92c852"]]);var A=_,I=s(4130),x=s.n(I);x().configure({showSpinner:!1});const M=[{path:"/",name:"home",component:A},{path:"/login",name:"login",component:()=>s.e(630).then(s.bind(s,4630))},{path:"/article/:id",name:"article-detail",component:()=>s.e(839).then(s.bind(s,1839))},{path:"/about",name:"about",component:()=>s.e(831).then(s.bind(s,6212))},{path:"/strategy",name:"strategy",component:()=>s.e(181).then(s.bind(s,8181))},{path:"/resources",name:"resources",component:()=>s.e(556).then(s.bind(s,556))},{path:"/ranking",name:"ranking",component:()=>s.e(550).then(s.bind(s,1550))},{path:"/:pathMatch(.*)*",name:"404",component:()=>s.e(899).then(s.bind(s,3899))},{path:"/search",name:"search",component:()=>s.e(368).then(s.bind(s,7368))},{path:"/user-center",name:"user-center",component:()=>s.e(630).then(s.bind(s,4630))},{path:"/app",name:"app",component:()=>s.e(159).then(s.bind(s,5540))},{path:"/submit",name:"submit",component:()=>Promise.all([s.e(625),s.e(954)]).then(s.bind(s,4954))},{path:"/preview",name:"preview",component:()=>s.e(839).then(s.bind(s,1839))},{path:"/edit",name:"edit-article",component:()=>Promise.all([s.e(625),s.e(954)]).then(s.bind(s,4954))},{path:"/widgets",name:"widgets",component:()=>s.e(155).then(s.bind(s,5155))},{path:"/widgets/webvpn",name:"webvpn",component:()=>s.e(898).then(s.bind(s,898))},{path:"/subscribe",name:"subscribe",component:()=>s.e(349).then(s.bind(s,1349))},{path:"/advice",name:"advice",component:()=>Promise.all([s.e(625),s.e(405)]).then(s.bind(s,405))}],X=(0,p.aE)({history:(0,p.LA)("/"),routes:M});X.beforeEach(((e,t,s)=>{x().start(),s()})),X.afterEach((()=>{x().done()}));var S=X,P=s(2090);const F=(0,a.Ef)(g);F.config.globalProperties.$barMessage=P.A,F.use(S).mount("#app"),window.$barMessage=P.A},8630:function(e,t,s){s.d(t,{A:function(){return x}});var a=s(5130),n=s(6768),o=s(4232);const i={key:0,class:"login-container"},l={class:"login-box"},r={class:"login-header"},c={class:"form-group"},d={class:"form-group"},u={class:"button-group"},h={class:"modal-content"},g={class:"modal-header"},p={class:"modal-body"},m={class:"captcha-instruction"},f={class:"form-group"},v={class:"modal-footer"},k={key:0,class:"loading-overlay"};function b(e,t,s,b,y,w){return s.visible?((0,n.uX)(),(0,n.CE)("div",i,[t[13]||(t[13]=(0,n.Lk)("div",{class:"login-overlay"},null,-1)),(0,n.Lk)("div",l,[(0,n.Lk)("div",r,[t[8]||(t[8]=(0,n.Lk)("h2",{class:"login-title"},"登录/注册",-1)),s.showClose?((0,n.uX)(),(0,n.CE)("button",{key:0,onClick:t[0]||(t[0]=(...e)=>w.handleClose&&w.handleClose(...e)),class:"close-btn"},"×")):(0,n.Q3)("",!0)]),(0,n.Lk)("form",{onSubmit:t[4]||(t[4]=(0,a.D$)(((...e)=>w.handleSubmit&&w.handleSubmit(...e)),["prevent"])),class:"login-form"},[(0,n.Lk)("div",c,[t[9]||(t[9]=(0,n.Lk)("label",{for:"email"},"邮箱",-1)),(0,n.bo)((0,n.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":t[1]||(t[1]=e=>y.email=e),placeholder:"请输入邮箱地址",required:"",class:"form-input",pattern:"[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$",title:"请输入有效的邮箱地址"},null,512),[[a.Jo,y.email]])]),(0,n.Lk)("div",d,[t[10]||(t[10]=(0,n.Lk)("label",{for:"password"},"密码",-1)),(0,n.bo)((0,n.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":t[2]||(t[2]=e=>y.password=e),placeholder:"请输入密码",required:"",class:"form-input"},null,512),[[a.Jo,y.password]])]),y.message?((0,n.uX)(),(0,n.CE)("div",{key:0,class:(0,o.C4)(["message",{error:y.messageIsError,success:!y.messageIsError}])},(0,o.v_)(y.message),3)):(0,n.Q3)("",!0),(0,n.Lk)("div",u,[(0,n.Lk)("button",{type:"button",onClick:t[3]||(t[3]=(...e)=>w.login&&w.login(...e)),class:"btn btn-primary"},"登录/注册")])],32)]),(0,n.Lk)("div",{class:(0,o.C4)(["modal",{show:y.showCaptchaModal}])},[(0,n.Lk)("div",h,[(0,n.Lk)("div",g,[t[11]||(t[11]=(0,n.Lk)("h3",null,"邮箱验证",-1)),(0,n.Lk)("button",{onClick:t[5]||(t[5]=(...e)=>w.closeCaptchaModal&&w.closeCaptchaModal(...e)),class:"close-btn"},"×")]),(0,n.Lk)("div",p,[(0,n.Lk)("p",m,(0,o.v_)(y.captchaInstruction),1),(0,n.Lk)("div",f,[(0,n.bo)((0,n.Lk)("input",{type:"text","onUpdate:modelValue":t[6]||(t[6]=e=>y.captchaCode=e),placeholder:"请输入验证码",class:"form-input"},null,512),[[a.Jo,y.captchaCode]])]),y.captchaMessage?((0,n.uX)(),(0,n.CE)("div",{key:0,class:(0,o.C4)(["captcha-message",{error:y.captchaMessageIsError,success:!y.captchaMessageIsError}])},(0,o.v_)(y.captchaMessage),3)):(0,n.Q3)("",!0)]),(0,n.Lk)("div",v,[(0,n.Lk)("button",{onClick:t[7]||(t[7]=(...e)=>w.verifyCaptcha&&w.verifyCaptcha(...e)),class:"btn btn-primary"},"验证")])])],2),y.loading?((0,n.uX)(),(0,n.CE)("div",k,[t[12]||(t[12]=(0,n.Lk)("div",{class:"spinner"},null,-1)),(0,n.Lk)("p",null,(0,o.v_)(y.loadingMessage),1)])):(0,n.Q3)("",!0)])):(0,n.Q3)("",!0)}var y=s(4993),w=s(235),C=s.n(w),L={name:"Login",props:{visible:{type:Boolean,default:!0},showClose:{type:Boolean,default:!1},onSuccess:{type:Function,default:null},onClose:{type:Function,default:null}},data(){return{email:"",password:"",message:"",messageIsError:!0,loading:!1,loadingMessage:"加载中...",showCaptchaModal:!1,captchaCode:"",captchaMessage:"",captchaMessageIsError:!0,captchaInstruction:"验证码已发送至您的邮箱,请在下方输入"}},methods:{detectDevice(){try{const e=C().getParser(window.navigator.userAgent),t=e.getOS(),s=e.getBrowser();let a=t.name||"Unknown";return t.version&&(a+=` ${t.version}`),s.name&&(a+=` / ${s.name}`,s.version&&(a+=` ${s.version}`)),a}catch(e){return console.error("Device detection failed:",e),"Unknown"}},async handleSubmit(){await this.login()},handleClose(){this.onClose?this.onClose():this.$emit("close")},async login(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);const e=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;if(!e.test(this.email))return this.message="请输入有效的邮箱地址",void(this.messageIsError=!0);this.loading=!0,this.loadingMessage="登录中...";try{const e=await this.loginOrRegister(this.email,this.password,"login");"Login successful."===e.message?this.handleLoginSuccess(e):"User not registered."===e.message?(this.loading=!1,(0,y.A)({title:"邮箱未注册",message:'此邮箱没有注册。点击"发送"按钮将向您的邮箱发送注册验证码。',confirmText:"发送",cancelText:"取消",cancel:!0,closeOnClickOverlay:!0}).then((async()=>{await this.sendRegisterCode()})).catch((()=>{}))):"Invalid email or password."===e.message?(this.message="密码错误。",this.messageIsError=!0,this.loading=!1):(this.message=e.message||"登录失败,请重试。",this.messageIsError=!0,this.loading=!1)}catch(t){console.error("Error:",t),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async register(){if(!this.email||!this.password)return this.message="请输入邮箱和密码",void(this.messageIsError=!0);const e=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;if(!e.test(this.email))return this.message="请输入有效的邮箱地址",void(this.messageIsError=!0);await this.sendRegisterCode()},async sendRegisterCode(){this.loading=!0,this.loadingMessage="发送验证码中...";try{const e=await this.loginOrRegister(this.email,this.password,"register");"Verification email sent."===e.message?(this.captchaInstruction="验证码已发送至您的邮箱,请在下方输入",this.captchaMessage="",this.captchaCode="",this.showCaptchaModal=!0):"A valid code has already been sent. Please try again later."===e.message?(this.captchaInstruction="您还有未验证的验证码,请查看邮箱并在下方输入",this.captchaMessage="",this.captchaCode="",this.showCaptchaModal=!0):"Email is already registered."===e.message?(this.message="此邮箱已注册。",this.messageIsError=!0):(this.message="发送验证码失败,请稍后重试。",this.messageIsError=!0),this.loading=!1}catch(e){console.error("Error:",e),this.message="发生错误,请稍后重试。",this.messageIsError=!0,this.loading=!1}},async verifyCaptcha(){if(!this.captchaCode)return this.captchaMessage="请输入验证码",void(this.captchaMessageIsError=!0);try{const e=await this.verifyRegisterCode(this.email,this.captchaCode);"User registered successfully."===e.message?(this.captchaMessage="验证成功!",this.captchaMessageIsError=!1,setTimeout((()=>{this.closeCaptchaModal(),this.handleSuccessfulRegistration()}),1500)):(this.captchaMessage="您的验证码不正确",this.captchaMessageIsError=!0)}catch(e){console.error("Error:",e),this.captchaMessage="验证过程中发生错误,请重试",this.captchaMessageIsError=!0}},closeCaptchaModal(){this.showCaptchaModal=!1,this.captchaCode="",this.captchaMessage=""},async handleSuccessfulRegistration(){this.message="注册成功!正在登录...",this.messageIsError=!1,this.loading=!0,this.loadingMessage="登录中...",await this.delay(1e3);try{const e=await this.loginOrRegister(this.email,this.password,"login");"Login successful."===e.message?this.handleLoginSuccess(e):(this.message="注册成功,但自动登录失败,请手动登录。",this.messageIsError=!0,this.loading=!1)}catch(e){console.error("Error during login after registration:",e),this.message="注册成功,但自动登录失败,请手动登录。",this.messageIsError=!0,this.loading=!1}},handleLoginSuccess(e){const t=e.token,s=window.location.hostname.includes("localhost")?"localhost":window.location.hostname.split(".").slice(-2).join(".");document.cookie=`token=${t}; max-age=604740; path=/; domain=${s}; secure; SameSite=Strict`,this.loading=!1,this.message="登录成功!正在加载中...",this.messageIsError=!1;const a={email:this.email,userId:e.id,token:e.token};this.onSuccess&&(this.onSuccess(a),window.location.reload()),this.$emit("login-success",a),this.onClose&&setTimeout((()=>{this.handleClose()}),3e3)},async loginOrRegister(e,t,s){const a="login"===s?"https://userlogin.xn--xhq44jb2fzpc.com/login":"https://userlogin.xn--xhq44jb2fzpc.com/register",n={email:e,password:t};"login"===s&&(n.device=this.detectDevice());const o=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});return o.json()},async verifyRegisterCode(e,t){const s="https://userlogin.xn--xhq44jb2fzpc.com/verify-register-code",a=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,code:t})});return a.json()},delay(e){return new Promise((t=>setTimeout(t,e)))}}},E=s(1241);const _=(0,E.A)(L,[["render",b],["__scopeId","data-v-4002456e"]]);var A=_;const I=(e={})=>new Promise(((t,s)=>{const n=document.createElement("div");document.body.appendChild(n);const o=(0,a.Ef)(A,{...e,visible:!0,showClose:!0,onSuccess:e=>{t(e)},onClose:()=>{o.unmount(),document.body.removeChild(n)}});o.mount(n)}));I.withCallback=(e,t={})=>I({...t,onSuccess:t=>{e(t)}});var x=I}},t={};function s(a){var n=t[a];if(void 0!==n)return n.exports;var o=t[a]={exports:{}};return e[a].call(o.exports,o,o.exports,s),o.exports}s.m=e,function(){var e=[];s.O=function(t,a,n,o){if(!a){var i=1/0;for(d=0;d=o)&&Object.keys(s.O).every((function(e){return s.O[e](a[r])}))?a.splice(r--,1):(l=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[a,n,o]}}(),function(){s.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return s.d(t,{a:t}),t}}(),function(){s.d=function(e,t){for(var a in t)s.o(t,a)&&!s.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(t,a){return s.f[a](e,t),t}),[]))}}(),function(){s.u=function(e){return"js/"+e+"."+{12:"dc7bebdb",155:"76cd04ca",159:"2c37e637",181:"3ac69d86",349:"f1c1e6e6",368:"4f0fc957",405:"0630fdee",550:"b610fc8e",556:"bc1dec00",625:"4ff04b31",630:"c7b451f7",831:"24a8bec1",839:"9d51dbcd",898:"5064f30d",899:"eabbeb84",940:"562973c0",954:"6192c1ac"}[e]+".js"}}(),function(){s.miniCssF=function(e){return"css/"+e+"."+{155:"e92d57c5",159:"8357e143",181:"762db45b",349:"a7567497",368:"9ee9e7c3",405:"f1f73646",550:"7c932b4a",556:"6a7a8c4a",625:"b01fd648",630:"96c3928e",831:"61a06249",839:"6ef27684",898:"6cbcb5bc",899:"35501d47",954:"b8c67783"}[e]+".css"}}(),function(){s.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="newfront:";s.l=function(a,n,o,i){if(e[a])e[a].push(n);else{var l,r;if(void 0!==o)for(var c=document.getElementsByTagName("script"),d=0;d
- - - - - - - + + + +
文章标题
{{ article.title }}
+ + {{ (currentPage - 1) * pageSize + index + 1 }} + + +
+ {{ article.title }} + +
+
@@ -52,7 +66,7 @@
-