diff --git a/dist/css/app.b060804c.css b/dist/css/app.01759f36.css similarity index 76% rename from dist/css/app.b060804c.css rename to dist/css/app.01759f36.css index 6d52b13..6cc88a8 100644 --- a/dist/css/app.b060804c.css +++ b/dist/css/app.01759f36.css @@ -1 +1 @@ -*{margin:0;padding:0;box-sizing:border-box}body,html{font-family:Helvetica Neue,Helvetica,Arial,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.5;color:#333;background-color:#f8f9fa}#app{min-height:100vh;display:flex;flex-direction:column}a{text-decoration:none;color:inherit}img{max-width:100%;height:auto}.beian-footer{background-color:#f8f9fa;padding:15px 0;text-align:center;font-size:12px;color:#777;border-top:1px solid #e9ecef;margin-top:auto}.beian-footer a{color:#666}.beian-footer a:hover{color:#3273dc}.copyright{margin-top:8px}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 15px}.message-overlay[data-v-076938bc]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.message-box[data-v-076938bc]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);width:400px;max-width:90%;overflow:hidden;animation:message-in-076938bc .3s ease}.message-header[data-v-076938bc]{padding:16px 20px;border-bottom:1px solid #f0f0f0}.message-header h3[data-v-076938bc]{margin:0;font-size:16px;font-weight:600;color:#333}.message-content[data-v-076938bc]{padding:20px;font-size:14px;color:#555;line-height:1.6}.message-content p[data-v-076938bc]{margin:0;margin-bottom:1rem}.message-content .input-wrapper[data-v-076938bc]{margin-top:1rem}.message-content .input-wrapper .message-input[data-v-076938bc]{width:100%;padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;line-height:1.5;color:#606266;transition:border-color .2s}.message-content .input-wrapper .message-input[data-v-076938bc]:focus{outline:none;border-color:#3273dc}.message-content .input-wrapper .message-input[data-v-076938bc]::-moz-placeholder{color:#c0c4cc}.message-content .input-wrapper .message-input[data-v-076938bc]::placeholder{color:#c0c4cc}.message-footer[data-v-076938bc]{padding:12px 20px;display:flex;justify-content:flex-end;gap:12px;border-top:1px solid #f0f0f0}.btn[data-v-076938bc]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s;border:none;outline:none}.btn-cancel[data-v-076938bc]{background-color:#f5f5f5;color:#666}.btn-cancel[data-v-076938bc]:hover{background-color:#e8e8e8}.btn-confirm[data-v-076938bc]{background-color:#3273dc;color:#fff}.btn-confirm[data-v-076938bc]:hover{background-color:#2366d1}.message-fade-enter-active[data-v-076938bc],.message-fade-leave-active[data-v-076938bc]{transition:opacity .3s}.message-fade-enter-from[data-v-076938bc],.message-fade-leave-to[data-v-076938bc]{opacity:0}@keyframes message-in-076938bc{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:768px){.message-box[data-v-076938bc]{width:320px}.message-content[data-v-076938bc]{padding:16px}.message-footer[data-v-076938bc]{padding:10px 16px}}.login-container[data-v-4002456e]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:9999}.login-overlay[data-v-4002456e]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.login-box[data-v-4002456e]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:2rem;width:100%;max-width:400px;position:relative;z-index:1}.login-header[data-v-4002456e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.login-title[data-v-4002456e]{text-align:center;color:#333;font-size:1.5rem;margin:0;flex:1}.login-form[data-v-4002456e]{display:flex;flex-direction:column}.form-group[data-v-4002456e]{margin-bottom:1rem}label[data-v-4002456e]{display:block;margin-bottom:.5rem;font-weight:500}.form-input[data-v-4002456e]{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.form-input[data-v-4002456e]:focus{outline:none;border-color:#3273dc;box-shadow:0 0 0 2px rgba(50,115,220,.2)}.message[data-v-4002456e]{margin:1rem 0;padding:.75rem;border-radius:4px;text-align:center}.message.error[data-v-4002456e]{background-color:rgba(255,56,96,.1);color:#ff3860}.message.success[data-v-4002456e]{background-color:rgba(35,209,96,.1);color:#23d160}.button-group[data-v-4002456e]{display:flex;gap:1rem;margin-top:1rem}.btn[data-v-4002456e]{flex:1;padding:.75rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .3s,transform .2s}.btn[data-v-4002456e]:hover{transform:translateY(-2px)}.btn[data-v-4002456e]:active{transform:translateY(0)}.btn-primary[data-v-4002456e]{background-color:#3273dc;color:#fff}.btn-primary[data-v-4002456e]:hover{background-color:#2366d1}.btn-secondary[data-v-4002456e]{background-color:#f5f5f5;color:#333}.btn-secondary[data-v-4002456e]:hover{background-color:#e8e8e8}.modal[data-v-4002456e]{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center}.modal.show[data-v-4002456e]{display:flex}.modal-content[data-v-4002456e]{background-color:#fff;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.2);width:90%;max-width:400px;overflow:hidden}.modal-header[data-v-4002456e]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #eee}.modal-header h3[data-v-4002456e]{margin:0;font-size:1.25rem}.modal-body[data-v-4002456e]{padding:1.5rem}.modal-footer[data-v-4002456e]{padding:1rem;border-top:1px solid #eee;text-align:right}.close-btn[data-v-4002456e]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666}.close-btn[data-v-4002456e]:hover{color:#333}.captcha-instruction[data-v-4002456e]{margin-bottom:1rem}.captcha-message[data-v-4002456e]{margin-top:.5rem;font-size:.9rem}.captcha-message.error[data-v-4002456e]{color:#ff3860}.captcha-message.success[data-v-4002456e]{color:#23d160}.loading-overlay[data-v-4002456e]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.8);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:2000}.spinner[data-v-4002456e]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3273dc;border-radius:50%;animation:spin-4002456e 1s linear infinite;margin-bottom:1rem}@keyframes spin-4002456e{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media(max-width:480px){.login-box[data-v-4002456e]{padding:1.5rem}.button-group[data-v-4002456e]{flex-direction:column}.btn[data-v-4002456e]{margin-bottom:.5rem}}.vip-badge[data-v-243b974f]{height:25px;vertical-align:middle}.user-meta[data-v-243b974f]{position:relative;display:inline-block}.user-basic[data-v-243b974f]{display:flex;align-items:center;gap:8px;cursor:pointer}.avatar-wrapper[data-v-243b974f]{position:relative;width:36px;height:36px}.avatar[data-v-243b974f]{width:36px;height:36px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:2px solid #eee}.avatar-loading[data-v-243b974f]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.7);border-radius:50%;display:flex;justify-content:center;align-items:center}.loading-spinner[data-v-243b974f]{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #3273dc;border-radius:50%;animation:spin-243b974f 1s linear infinite}@keyframes spin-243b974f{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.user-name[data-v-243b974f]{font-weight:500;font-size:14px;color:#333}.user-badges[data-v-243b974f]{display:flex;gap:4px}.badge[data-v-243b974f]{display:inline-block;padding:1px 6px;border-radius:4px;font-size:12px;color:#fff}.verified[data-v-243b974f]{background-color:#3273dc}.invited[data-v-243b974f]{background-color:coral}.medal[data-v-243b974f]{background-color:gold;color:#333}.user-detail[data-v-243b974f]{position:absolute;top:calc(100% + 8px);left:0;width:280px;z-index:9999}.detail-fade-enter-active[data-v-243b974f],.detail-fade-leave-active[data-v-243b974f]{transition:all .3s cubic-bezier(.4,0,.2,1);transform-origin:top}.detail-fade-enter-from[data-v-243b974f],.detail-fade-leave-to[data-v-243b974f]{opacity:0;transform:scale(.95) translateY(-10px)}.detail-fade-enter-to[data-v-243b974f],.detail-fade-leave-from[data-v-243b974f]{opacity:1;transform:scale(1) translateY(0)}.card-container[data-v-243b974f]{background-color:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15),0 2px 8px rgba(0,0,0,.1);overflow:hidden}.detail-header[data-v-243b974f]{position:relative;padding:16px 16px 4px}.header-bg[data-v-243b974f]{position:absolute;top:0;left:0;right:0;height:60px;background:linear-gradient(135deg,#3273dc,#6cb6ff);opacity:.3}.detail-avatar[data-v-243b974f]{width:64px;height:64px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:4px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.1);position:relative;z-index:1;background-color:#fff}.detail-right[data-v-243b974f]{margin-top:8px;position:relative}.detail-name[data-v-243b974f]{font-weight:600;font-size:18px;margin-bottom:4px;color:#333;display:inline-block}.user-sign[data-v-243b974f]{margin:8px 16px;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background-color:#f8f9fa;border-radius:8px}.sign-icon[data-v-243b974f]{font-size:16px;color:#666}.sign-text[data-v-243b974f]{font-size:13px;color:#555;line-height:1.9;flex:1}.user-stats[data-v-243b974f]{display:flex;justify-content:center;align-items:center;padding:6px 8px;background-color:#f8f9fa;margin:0 16px;border-radius:8px}.stat-item[data-v-243b974f]{text-align:center;flex:1}.stat-separator[data-v-243b974f]{width:1px;height:24px;background-color:#ddd;margin:0 16px}.stat-value[data-v-243b974f]{font-weight:600;font-size:16px;color:#333}.stat-label[data-v-243b974f]{font-size:12px;color:#666}.card-footer[data-v-243b974f]{padding:12px 16px 16px;text-align:center}.follow-btn[data-v-243b974f]{background:linear-gradient(135deg,#3273dc,#4a89ff);color:#fff;border:none;border-radius:20px;padding:6px 18px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 5px rgba(50,115,220,.3)}.follow-btn[data-v-243b974f]:hover{background:linear-gradient(135deg,#2366d1,#3273dc);transform:translateY(-1px);box-shadow:0 4px 8px rgba(50,115,220,.4)}.follow-btn.followed[data-v-243b974f]{background:#f0f0f0;color:#666;box-shadow:none;border:1px solid #ddd}.follow-btn.followed[data-v-243b974f]:hover{background:#e0e0e0;color:#333;transform:translateY(0);box-shadow:none}.follow-btn.disabled-look[data-v-243b974f]{background:#e6e6e6;color:#999;cursor:pointer;box-shadow:none}.follow-btn.disabled-look[data-v-243b974f]:hover{background:#dcdcdc;transform:none;box-shadow:none}.user-submissions[data-v-243b974f]{padding:16px 16px 0 16px}.submission-header[data-v-243b974f]{font-size:13px;font-weight:600;color:#333;margin-bottom:8px;padding-left:4px;border-left:3px solid #3273dc;line-height:1;display:flex;justify-content:space-between;align-items:center}.pagination-controls[data-v-243b974f]{display:flex;align-items:center;gap:4px}.page-btn[data-v-243b974f]{border:none;background:#f0f0f0;color:#666;width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:12px;cursor:pointer;transition:all .2s;padding:0}.page-btn[data-v-243b974f]:hover:not(:disabled){background:#e0e0e0;color:#3273dc}.page-btn[data-v-243b974f]:disabled{opacity:.5;cursor:not-allowed}.page-info[data-v-243b974f]{font-weight:400;font-size:11px;color:#888;min-width:30px;text-align:center}.submission-list[data-v-243b974f]{display:flex;flex-direction:column;gap:8px;max-height:150px;overflow-y:auto;padding-right:2px}.submission-list[data-v-243b974f]::-webkit-scrollbar{width:4px}.submission-list[data-v-243b974f]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:2px}.submission-list[data-v-243b974f]::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.submission-list[data-v-243b974f]::-webkit-scrollbar-thumb:hover{background:#ccc}.submission-item[data-v-243b974f]{padding:8px 10px;background-color:#f8f9fa;border-radius:6px;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.submission-item[data-v-243b974f]:hover{background-color:#fff;border-color:#e0e0e0;box-shadow:0 2px 8px rgba(0,0,0,.05);transform:translateX(2px)}.submission-title[data-v-243b974f]{font-size:13px;color:#444;margin-bottom:6px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.submission-tags[data-v-243b974f]{display:flex;gap:4px;flex-wrap:wrap}.tag[data-v-243b974f]{padding:2px 6px;border-radius:3px;font-size:11px;font-weight:500}.tag.official[data-v-243b974f]{background-color:#e6f7ff;color:#1890ff}.tag.highlight[data-v-243b974f]{background-color:#f6ffed;color:#52c41a}.tag.top[data-v-243b974f]{background-color:#fff7e6;color:#fa8c16}.colorful-name[data-v-243b974f]{background:linear-gradient(90deg,#0562ef,#722ed1,#eb2f96,#0562ef,#722ed1,#eb2f96,#0562ef);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:rainbow-243b974f 2s linear infinite;font-weight:700}@keyframes rainbow-243b974f{0%{background-position:0 50%}to{background-position:100% 50%}}.navbar[data-v-106dc6e1]{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1);position:fixed;top:0;left:0;right:0;padding:.5rem 1rem;z-index:1000}.navbar .container[data-v-106dc6e1]{display:flex;align-items:center;max-width:1200px;margin:0 auto;position:relative;width:100%}.navbar .navbar-brand[data-v-106dc6e1]{display:flex;align-items:center;justify-content:space-between;flex:1}.navbar .navbar-logo[data-v-106dc6e1]{font-size:1.5rem;font-weight:700;color:#333;text-decoration:none;display:flex;align-items:center}.navbar .navbar-logo-img[data-v-106dc6e1]{width:30px;margin-right:8px}.navbar .navbar-logo-img[data-v-106dc6e1],.navbar .navbar-title-img[data-v-106dc6e1]{height:30px;-o-object-fit:contain;object-fit:contain}.navbar .burger-container[data-v-106dc6e1]{position:relative;display:inline-block}.navbar .navbar-burger[data-v-106dc6e1]{display:none;width:2rem;height:1.2rem;cursor:pointer;margin-left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-106dc6e1]{display:block;height:2px;width:74%;background-color:#333;transition:all .3s ease-in-out;position:absolute;left:0}.navbar .navbar-burger span[data-v-106dc6e1]:first-child{top:0}.navbar .navbar-burger span[data-v-106dc6e1]:nth-child(2){top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-106dc6e1]:nth-child(3){bottom:0}.navbar .navbar-burger.is-active span[data-v-106dc6e1]:nth-child(2){opacity:0}.navbar .navbar-burger.is-active span[data-v-106dc6e1]:first-child{top:50%;transform:translateY(-50%) rotate(45deg)}.navbar .navbar-burger.is-active span[data-v-106dc6e1]:nth-child(3){bottom:50%;transform:translateY(50%) rotate(-45deg)}.navbar .navbar-menu[data-v-106dc6e1]{display:flex;align-items:center;transition:transform .3s ease,opacity .3s ease}.navbar .navbar-end[data-v-106dc6e1]{display:flex;align-items:center}.navbar .navbar-item[data-v-106dc6e1]{padding:.5rem 1rem;color:#333;text-decoration:none;transition:color .3s;white-space:nowrap}.navbar .navbar-item[data-v-106dc6e1]:hover{color:#3273dc}.navbar .user-dropdown[data-v-106dc6e1]{position:relative}.navbar .user-dropdown .user-info[data-v-106dc6e1]{display:flex;align-items:center;cursor:pointer;padding:.5rem}.navbar .user-dropdown .user-info[data-v-106dc6e1]:hover{background-color:#f5f5f5;border-radius:4px}.navbar .user-dropdown .user-avatar[data-v-106dc6e1]{width:30px;height:30px;border-radius:50%;margin-right:8px;-o-object-fit:cover;object-fit:cover}.navbar .user-dropdown .user-nickname[data-v-106dc6e1]{margin-right:4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar .user-dropdown .dropdown-arrow[data-v-106dc6e1]{font-size:12px;transition:transform .3s}.navbar .user-dropdown .dropdown-arrow.is-active[data-v-106dc6e1]{transform:rotate(180deg)}.navbar .user-dropdown .dropdown-menu[data-v-106dc6e1]{position:absolute;top:100%;right:0;background-color:#fff;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-width:120px;z-index:1001}.navbar .user-dropdown .dropdown-item[data-v-106dc6e1]{padding:.75rem 1rem;cursor:pointer}.navbar .user-dropdown .dropdown-item[data-v-106dc6e1]:hover{background-color:#f5f5f5}@media(max-width:768px){.navbar[data-v-106dc6e1]{padding:0}.navbar .navbar-brand[data-v-106dc6e1]{width:auto;padding:.5rem 1rem}.navbar .navbar-burger[data-v-106dc6e1]{display:flex;margin-left:1rem}.navbar .navbar-menu[data-v-106dc6e1]{display:block;position:absolute;top:100%;left:0;right:0;background-color:#fff;box-shadow:0 4px 6px rgba(0,0,0,.1);padding:.5rem 0;z-index:1000;opacity:0;transform:translateY(-20px);pointer-events:none}.navbar .navbar-menu.is-active[data-v-106dc6e1]{opacity:1;transform:translateY(0);pointer-events:auto}.navbar .navbar-end[data-v-106dc6e1]{flex-direction:column;align-items:stretch}.navbar .navbar-item[data-v-106dc6e1]{padding:.75rem 1.5rem;text-align:left;border-bottom:1px solid #f5f5f5}.navbar .navbar-item[data-v-106dc6e1]:last-child{border-bottom:none}.navbar .user-dropdown .dropdown-menu[data-v-106dc6e1]{position:static;box-shadow:none;border-top:1px solid #f5f5f5}.navbar .user-dropdown .dropdown-item[data-v-106dc6e1],.navbar .user-dropdown .user-info[data-v-106dc6e1]{padding:.75rem 1.5rem}}.login-btn[data-v-106dc6e1]{color:#333;cursor:pointer;text-decoration:none;transition:color .3s}.login-btn[data-v-106dc6e1]:hover{color:#3273dc}.activation-dialog[data-v-106dc6e1]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.activation-dialog .activation-dialog-content[data-v-106dc6e1]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15);max-height:90vh;overflow-y:auto}.activation-dialog .activation-dialog-content h3[data-v-106dc6e1]{font-size:1.5rem;margin-bottom:1rem;color:#333;text-align:center}.activation-dialog .activation-dialog-content p[data-v-106dc6e1]{margin-bottom:1.5rem;color:#666}.activation-dialog .activation-dialog-content .activation-methods[data-v-106dc6e1]{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.5rem}.activation-dialog .activation-dialog-content .activation-method[data-v-106dc6e1]{background-color:#f9f9f9;padding:1rem;border-radius:6px;border:1px solid #eee}.activation-dialog .activation-dialog-content .activation-method h4[data-v-106dc6e1]{font-size:1.1rem;margin-bottom:.5rem;color:#444}.activation-dialog .activation-dialog-content .activation-method p[data-v-106dc6e1]{margin-bottom:1rem;color:#666;font-size:.9rem}.activation-dialog .activation-dialog-content .verify-btn[data-v-106dc6e1]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:500;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .verify-btn[data-v-106dc6e1]:hover{background-color:#2366d1}.activation-dialog .activation-dialog-content .close-btn[data-v-106dc6e1]{width:100%;background-color:#f0f0f0;color:#333;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .close-btn[data-v-106dc6e1]:hover{background-color:#e0e0e0}.unread-dot[data-v-106dc6e1]{display:inline-block;width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin-left:5px}.message-modal[data-v-106dc6e1]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.message-modal .message-modal-content[data-v-106dc6e1]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15)}.message-modal .message-modal-content .message-modal-header[data-v-106dc6e1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-header h3[data-v-106dc6e1]{font-size:1.5rem;color:#333}.message-modal .message-modal-content .message-modal-header .close-icon[data-v-106dc6e1]{font-size:1.5rem;cursor:pointer}.message-modal .message-modal-content .message-modal-body .loading-spinner[data-v-106dc6e1],.message-modal .message-modal-content .message-modal-body .no-messages[data-v-106dc6e1]{text-align:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-body .message-list[data-v-106dc6e1]{max-height:60vh;overflow-y:auto;padding-right:5px;margin-right:-5px}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-106dc6e1]{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #f0f0f0}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-106dc6e1]:last-child{border-bottom:none}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header[data-v-106dc6e1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .message-time[data-v-106dc6e1]{font-size:.9rem;color:#666}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .unread-tag[data-v-106dc6e1]{background-color:#ff4d4f;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.8rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-106dc6e1]{font-size:1rem;color:#333}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-106dc6e1],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-106dc6e1],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-106dc6e1]:link,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-106dc6e1]:visited,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-106dc6e1] a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-106dc6e1]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-106dc6e1]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-106dc6e1]:link:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-106dc6e1]:visited:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-106dc6e1] a:hover{text-decoration:underline!important;color:#2366d1!important}.message-modal .message-modal-content .message-modal-body .pagination[data-v-106dc6e1]{display:flex;justify-content:center;align-items:center;margin-top:1rem}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-106dc6e1]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-106dc6e1]:hover{background-color:#2366d1}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-106dc6e1]:disabled{background-color:#f0f0f0;cursor:not-allowed}.message-modal .message-modal-content .message-modal-body .pagination .page-info[data-v-106dc6e1]{margin:0 1rem;font-size:.9rem;color:#666;display:flex;align-items:center}[data-v-106dc6e1] .message-modal-body a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}[data-v-106dc6e1] .message-modal-body a:hover{text-decoration:underline!important;color:#2366d1!important}.avatar-wrapper[data-v-106dc6e1]{position:relative;display:inline-block}.avatar-badge[data-v-106dc6e1]{position:absolute;top:0;right:0;width:8px;height:8px}.burger-badge[data-v-106dc6e1]{position:absolute;top:-13px;right:0;transform:translate(0);width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin:0;padding:0;display:none}@media(max-width:768px){.burger-badge[data-v-106dc6e1]{display:block}}.route-tag[data-v-106dc6e1]{display:inline-block;color:#fff;font-size:.9rem;padding:2px 6px;border-radius:4px;margin-left:7px;vertical-align:middle;font-weight:500}.new-badge[data-v-106dc6e1]{display:inline-block;background-color:#f44336;color:#fff;font-size:.7rem;padding:1px 4px;border-radius:4px;vertical-align:top;line-height:1.2;font-weight:700;position:relative;top:-2px}.navbar.navbar-kaoyan[data-v-106dc6e1]{background-color:#d40c1d}.navbar.navbar-kaoyan .login-btn[data-v-106dc6e1],.navbar.navbar-kaoyan .navbar-item[data-v-106dc6e1],.navbar.navbar-kaoyan .navbar-logo[data-v-106dc6e1]{color:#fff}.navbar.navbar-kaoyan .login-btn[data-v-106dc6e1]:hover,.navbar.navbar-kaoyan .navbar-item[data-v-106dc6e1]:hover,.navbar.navbar-kaoyan .navbar-logo[data-v-106dc6e1]:hover{color:hsla(0,0%,100%,.8)}.navbar.navbar-kaoyan .navbar-burger span[data-v-106dc6e1]{background-color:#fff}.navbar.navbar-kaoyan .dropdown-menu .dropdown-item[data-v-106dc6e1]{color:#333}.navbar.navbar-kaoyan .dropdown-menu .dropdown-item[data-v-106dc6e1]:hover{color:#3273dc;background-color:#f5f5f5}.navbar.navbar-kaoyan .user-dropdown .user-info[data-v-106dc6e1]:hover{color:#e60012}@media(max-width:768px){.navbar.navbar-kaoyan .navbar-menu[data-v-106dc6e1]{background-color:#e60012}.navbar.navbar-kaoyan .navbar-item[data-v-106dc6e1]{border-bottom:1px solid hsla(0,0%,100%,.1)}}.home[data-v-e5f87384]{min-height:100vh;background-color:#f8f9fa;padding-top:60px}.container[data-v-e5f87384]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.welcome-section[data-v-e5f87384]{text-align:center;padding:3rem 1rem}.welcome-section img[data-v-e5f87384]{width:150px;margin-bottom:2rem}.welcome-section h1[data-v-e5f87384]{font-size:2.5rem;margin-bottom:1rem;color:#333}.welcome-section p[data-v-e5f87384]{font-size:1.2rem;margin-bottom:2rem;color:#555}.welcome-section .intro-text[data-v-e5f87384]{background-color:#fff;border-radius:10px;padding:2rem;margin-top:2rem;box-shadow:0 4px 15px rgba(0,0,0,.08);text-align:left;border-left:4px solid #f6be05;position:relative;overflow:hidden;max-width:800px;margin-left:auto;margin-right:auto}.welcome-section .intro-text[data-v-e5f87384]:before{content:"";position:absolute;top:0;right:0;width:200px;height:200px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.welcome-section .intro-text.intro-kaoyan[data-v-e5f87384]{background-color:#e60012;border-left:none}.welcome-section .intro-text.intro-kaoyan p[data-v-e5f87384]{color:#fff;font-weight:700}.welcome-section .intro-text.intro-kaoyan[data-v-e5f87384]:before{background:radial-gradient(circle at top right,hsla(0,0%,100%,.2),transparent 70%)}.welcome-section .intro-text p[data-v-e5f87384]{position:relative;z-index:1;margin-bottom:1rem;font-size:1.1rem;line-height:1.6;color:#555}.welcome-section .intro-text p[data-v-e5f87384]:last-child{margin-bottom:0}.welcome-section .cta-buttons[data-v-e5f87384]{display:flex;justify-content:center;gap:1rem;margin-top:2rem}.welcome-section .cta-buttons .btn[data-v-e5f87384]{padding:.75rem 1.5rem;border-radius:4px;font-weight:600;transition:all .3s;text-decoration:none}.welcome-section .cta-buttons .btn.btn-primary[data-v-e5f87384]{background-color:#3273dc;color:#fff}.welcome-section .cta-buttons .btn.btn-primary[data-v-e5f87384]:hover{background-color:#2366c9}.welcome-section .cta-buttons .btn.btn-secondary[data-v-e5f87384]{background-color:#f5f5f5;color:#333}.welcome-section .cta-buttons .btn.btn-secondary[data-v-e5f87384]:hover{background-color:#e8e8e8}.quick-links[data-v-e5f87384]{margin-top:1.5rem;font-size:1rem;color:#555}.quick-links a[data-v-e5f87384]{color:#3273dc;text-decoration:none;margin:0 .5rem;cursor:pointer}.quick-links a[data-v-e5f87384]:hover{text-decoration:underline}.colorful-text[data-v-e5f87384]{background:linear-gradient(90deg,#0562ef,#722ed1,#eb2f96,#0562ef,#722ed1,#eb2f96,#0562ef);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:rainbow-e5f87384 2s linear infinite;font-weight:700}@keyframes rainbow-e5f87384{0%{background-position:0 50%}to{background-position:100% 50%}}@media(max-width:768px){.welcome-section[data-v-e5f87384]{padding:2rem 1rem}.welcome-section h1[data-v-e5f87384]{font-size:2rem}.welcome-section p[data-v-e5f87384]{font-size:1rem}.welcome-section .intro-text[data-v-e5f87384]{padding:1.5rem}.welcome-section .intro-text p[data-v-e5f87384]{font-size:1rem}.welcome-section .cta-buttons[data-v-e5f87384]{flex-direction:column;align-items:center}.welcome-section .cta-buttons .btn[data-v-e5f87384]{width:100%;max-width:300px;margin-bottom:.5rem}}#nprogress .bar{background:#00f5ff!important;height:2px!important}.bar-message[data-v-18bdfd8a]{position:fixed;top:16px;left:50%;transform:translateX(-50%);width:80%;max-width:500px;z-index:9999;pointer-events:auto}.bar-message-content[data-v-18bdfd8a]{padding:12px 16px;border-radius:8px;text-align:left;font-size:14px;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15);word-break:break-word;display:flex;align-items:center}.bar-message-icon[data-v-18bdfd8a]{margin-right:10px;font-size:16px}.bar-message-text[data-v-18bdfd8a]{flex:1}.bar-message-close[data-v-18bdfd8a]{margin-left:10px;cursor:pointer;font-size:14px;opacity:.8;transition:opacity .2s}.bar-message-close[data-v-18bdfd8a]:hover{opacity:1}.success[data-v-18bdfd8a]{background-color:#4caf50}.error[data-v-18bdfd8a]{background-color:#f44336}.warning[data-v-18bdfd8a]{background-color:#ff9800}.info[data-v-18bdfd8a]{background-color:#2196f3}.bar-message-fade-enter-active[data-v-18bdfd8a],.bar-message-fade-leave-active[data-v-18bdfd8a]{transition:opacity .3s,transform .3s}.bar-message-fade-enter-from[data-v-18bdfd8a],.bar-message-fade-leave-to[data-v-18bdfd8a]{opacity:0;transform:translate(-50%,-15px)} \ No newline at end of file +*{margin:0;padding:0;box-sizing:border-box}body,html{font-family:Helvetica Neue,Helvetica,Arial,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.5;color:#333;background-color:#f8f9fa}#app{min-height:100vh;display:flex;flex-direction:column}a{text-decoration:none;color:inherit}img{max-width:100%;height:auto}.beian-footer{background-color:#f8f9fa;padding:15px 0;text-align:center;font-size:12px;color:#777;border-top:1px solid #e9ecef;margin-top:auto}.beian-footer a{color:#666}.beian-footer a:hover{color:#3273dc}.copyright{margin-top:8px}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 15px}.message-overlay[data-v-076938bc]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.message-box[data-v-076938bc]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);width:400px;max-width:90%;overflow:hidden;animation:message-in-076938bc .3s ease}.message-header[data-v-076938bc]{padding:16px 20px;border-bottom:1px solid #f0f0f0}.message-header h3[data-v-076938bc]{margin:0;font-size:16px;font-weight:600;color:#333}.message-content[data-v-076938bc]{padding:20px;font-size:14px;color:#555;line-height:1.6}.message-content p[data-v-076938bc]{margin:0;margin-bottom:1rem}.message-content .input-wrapper[data-v-076938bc]{margin-top:1rem}.message-content .input-wrapper .message-input[data-v-076938bc]{width:100%;padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;line-height:1.5;color:#606266;transition:border-color .2s}.message-content .input-wrapper .message-input[data-v-076938bc]:focus{outline:none;border-color:#3273dc}.message-content .input-wrapper .message-input[data-v-076938bc]::-moz-placeholder{color:#c0c4cc}.message-content .input-wrapper .message-input[data-v-076938bc]::placeholder{color:#c0c4cc}.message-footer[data-v-076938bc]{padding:12px 20px;display:flex;justify-content:flex-end;gap:12px;border-top:1px solid #f0f0f0}.btn[data-v-076938bc]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s;border:none;outline:none}.btn-cancel[data-v-076938bc]{background-color:#f5f5f5;color:#666}.btn-cancel[data-v-076938bc]:hover{background-color:#e8e8e8}.btn-confirm[data-v-076938bc]{background-color:#3273dc;color:#fff}.btn-confirm[data-v-076938bc]:hover{background-color:#2366d1}.message-fade-enter-active[data-v-076938bc],.message-fade-leave-active[data-v-076938bc]{transition:opacity .3s}.message-fade-enter-from[data-v-076938bc],.message-fade-leave-to[data-v-076938bc]{opacity:0}@keyframes message-in-076938bc{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:768px){.message-box[data-v-076938bc]{width:320px}.message-content[data-v-076938bc]{padding:16px}.message-footer[data-v-076938bc]{padding:10px 16px}}.login-container[data-v-4002456e]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:9999}.login-overlay[data-v-4002456e]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.login-box[data-v-4002456e]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:2rem;width:100%;max-width:400px;position:relative;z-index:1}.login-header[data-v-4002456e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.login-title[data-v-4002456e]{text-align:center;color:#333;font-size:1.5rem;margin:0;flex:1}.login-form[data-v-4002456e]{display:flex;flex-direction:column}.form-group[data-v-4002456e]{margin-bottom:1rem}label[data-v-4002456e]{display:block;margin-bottom:.5rem;font-weight:500}.form-input[data-v-4002456e]{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.form-input[data-v-4002456e]:focus{outline:none;border-color:#3273dc;box-shadow:0 0 0 2px rgba(50,115,220,.2)}.message[data-v-4002456e]{margin:1rem 0;padding:.75rem;border-radius:4px;text-align:center}.message.error[data-v-4002456e]{background-color:rgba(255,56,96,.1);color:#ff3860}.message.success[data-v-4002456e]{background-color:rgba(35,209,96,.1);color:#23d160}.button-group[data-v-4002456e]{display:flex;gap:1rem;margin-top:1rem}.btn[data-v-4002456e]{flex:1;padding:.75rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .3s,transform .2s}.btn[data-v-4002456e]:hover{transform:translateY(-2px)}.btn[data-v-4002456e]:active{transform:translateY(0)}.btn-primary[data-v-4002456e]{background-color:#3273dc;color:#fff}.btn-primary[data-v-4002456e]:hover{background-color:#2366d1}.btn-secondary[data-v-4002456e]{background-color:#f5f5f5;color:#333}.btn-secondary[data-v-4002456e]:hover{background-color:#e8e8e8}.modal[data-v-4002456e]{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center}.modal.show[data-v-4002456e]{display:flex}.modal-content[data-v-4002456e]{background-color:#fff;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.2);width:90%;max-width:400px;overflow:hidden}.modal-header[data-v-4002456e]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #eee}.modal-header h3[data-v-4002456e]{margin:0;font-size:1.25rem}.modal-body[data-v-4002456e]{padding:1.5rem}.modal-footer[data-v-4002456e]{padding:1rem;border-top:1px solid #eee;text-align:right}.close-btn[data-v-4002456e]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666}.close-btn[data-v-4002456e]:hover{color:#333}.captcha-instruction[data-v-4002456e]{margin-bottom:1rem}.captcha-message[data-v-4002456e]{margin-top:.5rem;font-size:.9rem}.captcha-message.error[data-v-4002456e]{color:#ff3860}.captcha-message.success[data-v-4002456e]{color:#23d160}.loading-overlay[data-v-4002456e]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.8);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:2000}.spinner[data-v-4002456e]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3273dc;border-radius:50%;animation:spin-4002456e 1s linear infinite;margin-bottom:1rem}@keyframes spin-4002456e{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media(max-width:480px){.login-box[data-v-4002456e]{padding:1.5rem}.button-group[data-v-4002456e]{flex-direction:column}.btn[data-v-4002456e]{margin-bottom:.5rem}}.vip-badge[data-v-243b974f]{height:25px;vertical-align:middle}.user-meta[data-v-243b974f]{position:relative;display:inline-block}.user-basic[data-v-243b974f]{display:flex;align-items:center;gap:8px;cursor:pointer}.avatar-wrapper[data-v-243b974f]{position:relative;width:36px;height:36px}.avatar[data-v-243b974f]{width:36px;height:36px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:2px solid #eee}.avatar-loading[data-v-243b974f]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.7);border-radius:50%;display:flex;justify-content:center;align-items:center}.loading-spinner[data-v-243b974f]{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #3273dc;border-radius:50%;animation:spin-243b974f 1s linear infinite}@keyframes spin-243b974f{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.user-name[data-v-243b974f]{font-weight:500;font-size:14px;color:#333}.user-badges[data-v-243b974f]{display:flex;gap:4px}.badge[data-v-243b974f]{display:inline-block;padding:1px 6px;border-radius:4px;font-size:12px;color:#fff}.verified[data-v-243b974f]{background-color:#3273dc}.invited[data-v-243b974f]{background-color:coral}.medal[data-v-243b974f]{background-color:gold;color:#333}.user-detail[data-v-243b974f]{position:absolute;top:calc(100% + 8px);left:0;width:280px;z-index:9999}.detail-fade-enter-active[data-v-243b974f],.detail-fade-leave-active[data-v-243b974f]{transition:all .3s cubic-bezier(.4,0,.2,1);transform-origin:top}.detail-fade-enter-from[data-v-243b974f],.detail-fade-leave-to[data-v-243b974f]{opacity:0;transform:scale(.95) translateY(-10px)}.detail-fade-enter-to[data-v-243b974f],.detail-fade-leave-from[data-v-243b974f]{opacity:1;transform:scale(1) translateY(0)}.card-container[data-v-243b974f]{background-color:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15),0 2px 8px rgba(0,0,0,.1);overflow:hidden}.detail-header[data-v-243b974f]{position:relative;padding:16px 16px 4px}.header-bg[data-v-243b974f]{position:absolute;top:0;left:0;right:0;height:60px;background:linear-gradient(135deg,#3273dc,#6cb6ff);opacity:.3}.detail-avatar[data-v-243b974f]{width:64px;height:64px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:4px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.1);position:relative;z-index:1;background-color:#fff}.detail-right[data-v-243b974f]{margin-top:8px;position:relative}.detail-name[data-v-243b974f]{font-weight:600;font-size:18px;margin-bottom:4px;color:#333;display:inline-block}.user-sign[data-v-243b974f]{margin:8px 16px;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background-color:#f8f9fa;border-radius:8px}.sign-icon[data-v-243b974f]{font-size:16px;color:#666}.sign-text[data-v-243b974f]{font-size:13px;color:#555;line-height:1.9;flex:1}.user-stats[data-v-243b974f]{display:flex;justify-content:center;align-items:center;padding:6px 8px;background-color:#f8f9fa;margin:0 16px;border-radius:8px}.stat-item[data-v-243b974f]{text-align:center;flex:1}.stat-separator[data-v-243b974f]{width:1px;height:24px;background-color:#ddd;margin:0 16px}.stat-value[data-v-243b974f]{font-weight:600;font-size:16px;color:#333}.stat-label[data-v-243b974f]{font-size:12px;color:#666}.card-footer[data-v-243b974f]{padding:12px 16px 16px;text-align:center}.follow-btn[data-v-243b974f]{background:linear-gradient(135deg,#3273dc,#4a89ff);color:#fff;border:none;border-radius:20px;padding:6px 18px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 5px rgba(50,115,220,.3)}.follow-btn[data-v-243b974f]:hover{background:linear-gradient(135deg,#2366d1,#3273dc);transform:translateY(-1px);box-shadow:0 4px 8px rgba(50,115,220,.4)}.follow-btn.followed[data-v-243b974f]{background:#f0f0f0;color:#666;box-shadow:none;border:1px solid #ddd}.follow-btn.followed[data-v-243b974f]:hover{background:#e0e0e0;color:#333;transform:translateY(0);box-shadow:none}.follow-btn.disabled-look[data-v-243b974f]{background:#e6e6e6;color:#999;cursor:pointer;box-shadow:none}.follow-btn.disabled-look[data-v-243b974f]:hover{background:#dcdcdc;transform:none;box-shadow:none}.user-submissions[data-v-243b974f]{padding:16px 16px 0 16px}.submission-header[data-v-243b974f]{font-size:13px;font-weight:600;color:#333;margin-bottom:8px;padding-left:4px;border-left:3px solid #3273dc;line-height:1;display:flex;justify-content:space-between;align-items:center}.pagination-controls[data-v-243b974f]{display:flex;align-items:center;gap:4px}.page-btn[data-v-243b974f]{border:none;background:#f0f0f0;color:#666;width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:12px;cursor:pointer;transition:all .2s;padding:0}.page-btn[data-v-243b974f]:hover:not(:disabled){background:#e0e0e0;color:#3273dc}.page-btn[data-v-243b974f]:disabled{opacity:.5;cursor:not-allowed}.page-info[data-v-243b974f]{font-weight:400;font-size:11px;color:#888;min-width:30px;text-align:center}.submission-list[data-v-243b974f]{display:flex;flex-direction:column;gap:8px;max-height:150px;overflow-y:auto;padding-right:2px}.submission-list[data-v-243b974f]::-webkit-scrollbar{width:4px}.submission-list[data-v-243b974f]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:2px}.submission-list[data-v-243b974f]::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.submission-list[data-v-243b974f]::-webkit-scrollbar-thumb:hover{background:#ccc}.submission-item[data-v-243b974f]{padding:8px 10px;background-color:#f8f9fa;border-radius:6px;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.submission-item[data-v-243b974f]:hover{background-color:#fff;border-color:#e0e0e0;box-shadow:0 2px 8px rgba(0,0,0,.05);transform:translateX(2px)}.submission-title[data-v-243b974f]{font-size:13px;color:#444;margin-bottom:6px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.submission-tags[data-v-243b974f]{display:flex;gap:4px;flex-wrap:wrap}.tag[data-v-243b974f]{padding:2px 6px;border-radius:3px;font-size:11px;font-weight:500}.tag.official[data-v-243b974f]{background-color:#e6f7ff;color:#1890ff}.tag.highlight[data-v-243b974f]{background-color:#f6ffed;color:#52c41a}.tag.top[data-v-243b974f]{background-color:#fff7e6;color:#fa8c16}.colorful-name[data-v-243b974f]{background:linear-gradient(90deg,#0562ef,#722ed1,#eb2f96,#0562ef,#722ed1,#eb2f96,#0562ef);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:rainbow-243b974f 2s linear infinite;font-weight:700}@keyframes rainbow-243b974f{0%{background-position:0 50%}to{background-position:100% 50%}}.navbar[data-v-7b2c9221]{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1);position:fixed;top:0;left:0;right:0;padding:.5rem 1rem;z-index:1000}.navbar .container[data-v-7b2c9221]{display:flex;align-items:center;max-width:1200px;margin:0 auto;position:relative;width:100%}.navbar .navbar-brand[data-v-7b2c9221]{display:flex;align-items:center;justify-content:space-between;flex:1}.navbar .navbar-logo[data-v-7b2c9221]{font-size:1.5rem;font-weight:700;color:#333;text-decoration:none;display:flex;align-items:center}.navbar .navbar-logo-img[data-v-7b2c9221]{width:30px;margin-right:8px}.navbar .navbar-logo-img[data-v-7b2c9221],.navbar .navbar-title-img[data-v-7b2c9221]{height:30px;-o-object-fit:contain;object-fit:contain}.navbar .burger-container[data-v-7b2c9221]{position:relative;display:inline-block}.navbar .navbar-burger[data-v-7b2c9221]{display:none;width:2rem;height:1.2rem;cursor:pointer;margin-left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-7b2c9221]{display:block;height:2px;width:74%;background-color:#333;transition:all .3s ease-in-out;position:absolute;left:0}.navbar .navbar-burger span[data-v-7b2c9221]:first-child{top:0}.navbar .navbar-burger span[data-v-7b2c9221]:nth-child(2){top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-7b2c9221]:nth-child(3){bottom:0}.navbar .navbar-burger.is-active span[data-v-7b2c9221]:nth-child(2){opacity:0}.navbar .navbar-burger.is-active span[data-v-7b2c9221]:first-child{top:50%;transform:translateY(-50%) rotate(45deg)}.navbar .navbar-burger.is-active span[data-v-7b2c9221]:nth-child(3){bottom:50%;transform:translateY(50%) rotate(-45deg)}.navbar .navbar-menu[data-v-7b2c9221]{display:flex;align-items:center;transition:transform .3s ease,opacity .3s ease}.navbar .navbar-end[data-v-7b2c9221]{display:flex;align-items:center}.navbar .navbar-item[data-v-7b2c9221]{padding:.5rem 1rem;color:#333;text-decoration:none;transition:color .3s;white-space:nowrap}.navbar .navbar-item[data-v-7b2c9221]:hover{color:#3273dc}.navbar .user-dropdown[data-v-7b2c9221]{position:relative}.navbar .user-dropdown .user-info[data-v-7b2c9221]{display:flex;align-items:center;cursor:pointer;padding:.5rem}.navbar .user-dropdown .user-info[data-v-7b2c9221]:hover{background-color:#f5f5f5;border-radius:4px}.navbar .user-dropdown .user-avatar[data-v-7b2c9221]{width:30px;height:30px;border-radius:50%;margin-right:8px;-o-object-fit:cover;object-fit:cover}.navbar .user-dropdown .user-nickname[data-v-7b2c9221]{margin-right:4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar .user-dropdown .dropdown-arrow[data-v-7b2c9221]{font-size:12px;transition:transform .3s}.navbar .user-dropdown .dropdown-arrow.is-active[data-v-7b2c9221]{transform:rotate(180deg)}.navbar .user-dropdown .dropdown-menu[data-v-7b2c9221]{position:absolute;top:100%;right:0;background-color:#fff;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-width:120px;z-index:1001}.navbar .user-dropdown .dropdown-item[data-v-7b2c9221]{padding:.75rem 1rem;cursor:pointer}.navbar .user-dropdown .dropdown-item[data-v-7b2c9221]:hover{background-color:#f5f5f5}@media(max-width:768px){.navbar[data-v-7b2c9221]{padding:0}.navbar .navbar-brand[data-v-7b2c9221]{width:auto;padding:.5rem 1rem}.navbar .navbar-burger[data-v-7b2c9221]{display:flex;margin-left:1rem}.navbar .navbar-menu[data-v-7b2c9221]{display:block;position:absolute;top:100%;left:0;right:0;background-color:#fff;box-shadow:0 4px 6px rgba(0,0,0,.1);padding:.5rem 0;z-index:1000;opacity:0;transform:translateY(-20px);pointer-events:none}.navbar .navbar-menu.is-active[data-v-7b2c9221]{opacity:1;transform:translateY(0);pointer-events:auto}.navbar .navbar-end[data-v-7b2c9221]{flex-direction:column;align-items:stretch}.navbar .navbar-item[data-v-7b2c9221]{padding:.75rem 1.5rem;text-align:left;border-bottom:1px solid #f5f5f5}.navbar .navbar-item[data-v-7b2c9221]:last-child{border-bottom:none}.navbar .user-dropdown .dropdown-menu[data-v-7b2c9221]{position:static;box-shadow:none;border-top:1px solid #f5f5f5}.navbar .user-dropdown .dropdown-item[data-v-7b2c9221],.navbar .user-dropdown .user-info[data-v-7b2c9221]{padding:.75rem 1.5rem}}.login-btn[data-v-7b2c9221]{color:#333;cursor:pointer;text-decoration:none;transition:color .3s}.login-btn[data-v-7b2c9221]:hover{color:#3273dc}.activation-dialog[data-v-7b2c9221]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.activation-dialog .activation-dialog-content[data-v-7b2c9221]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15);max-height:90vh;overflow-y:auto}.activation-dialog .activation-dialog-content h3[data-v-7b2c9221]{font-size:1.5rem;margin-bottom:1rem;color:#333;text-align:center}.activation-dialog .activation-dialog-content p[data-v-7b2c9221]{margin-bottom:1.5rem;color:#666}.activation-dialog .activation-dialog-content .activation-methods[data-v-7b2c9221]{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.5rem}.activation-dialog .activation-dialog-content .activation-method[data-v-7b2c9221]{background-color:#f9f9f9;padding:1rem;border-radius:6px;border:1px solid #eee}.activation-dialog .activation-dialog-content .activation-method h4[data-v-7b2c9221]{font-size:1.1rem;margin-bottom:.5rem;color:#444}.activation-dialog .activation-dialog-content .activation-method p[data-v-7b2c9221]{margin-bottom:1rem;color:#666;font-size:.9rem}.activation-dialog .activation-dialog-content .verify-btn[data-v-7b2c9221]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:500;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .verify-btn[data-v-7b2c9221]:hover{background-color:#2366d1}.activation-dialog .activation-dialog-content .close-btn[data-v-7b2c9221]{width:100%;background-color:#f0f0f0;color:#333;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .close-btn[data-v-7b2c9221]:hover{background-color:#e0e0e0}.unread-dot[data-v-7b2c9221]{display:inline-block;width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin-left:5px}.message-modal[data-v-7b2c9221]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.message-modal .message-modal-content[data-v-7b2c9221]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15)}.message-modal .message-modal-content .message-modal-header[data-v-7b2c9221]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-header h3[data-v-7b2c9221]{font-size:1.5rem;color:#333}.message-modal .message-modal-content .message-modal-header .close-icon[data-v-7b2c9221]{font-size:1.5rem;cursor:pointer}.message-modal .message-modal-content .message-modal-body .loading-spinner[data-v-7b2c9221],.message-modal .message-modal-content .message-modal-body .no-messages[data-v-7b2c9221]{text-align:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-body .message-list[data-v-7b2c9221]{max-height:60vh;overflow-y:auto;padding-right:5px;margin-right:-5px}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-7b2c9221]{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #f0f0f0}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-7b2c9221]:last-child{border-bottom:none}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header[data-v-7b2c9221]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .message-time[data-v-7b2c9221]{font-size:.9rem;color:#666}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .unread-tag[data-v-7b2c9221]{background-color:#ff4d4f;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.8rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-7b2c9221]{font-size:1rem;color:#333}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-7b2c9221],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-7b2c9221],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-7b2c9221]:link,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-7b2c9221]:visited,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-7b2c9221] a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-7b2c9221]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-7b2c9221]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-7b2c9221]:link:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-7b2c9221]:visited:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-7b2c9221] a:hover{text-decoration:underline!important;color:#2366d1!important}.message-modal .message-modal-content .message-modal-body .pagination[data-v-7b2c9221]{display:flex;justify-content:center;align-items:center;margin-top:1rem}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-7b2c9221]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-7b2c9221]:hover{background-color:#2366d1}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-7b2c9221]:disabled{background-color:#f0f0f0;cursor:not-allowed}.message-modal .message-modal-content .message-modal-body .pagination .page-info[data-v-7b2c9221]{margin:0 1rem;font-size:.9rem;color:#666;display:flex;align-items:center}[data-v-7b2c9221] .message-modal-body a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}[data-v-7b2c9221] .message-modal-body a:hover{text-decoration:underline!important;color:#2366d1!important}.avatar-wrapper[data-v-7b2c9221]{position:relative;display:inline-block}.avatar-badge[data-v-7b2c9221]{position:absolute;top:0;right:0;width:8px;height:8px}.burger-badge[data-v-7b2c9221]{position:absolute;top:-13px;right:0;transform:translate(0);width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin:0;padding:0;display:none}@media(max-width:768px){.burger-badge[data-v-7b2c9221]{display:block}}.route-tag[data-v-7b2c9221]{display:inline-block;color:#fff;font-size:.9rem;padding:2px 6px;border-radius:4px;margin-left:7px;vertical-align:middle;font-weight:500}.new-badge[data-v-7b2c9221]{display:inline-block;background-color:#f44336;color:#fff;font-size:.7rem;padding:1px 4px;border-radius:4px;vertical-align:top;line-height:1.2;font-weight:700;position:relative;top:-2px}.navbar.navbar-kaoyan[data-v-7b2c9221]{background-color:#d40c1d}.navbar.navbar-kaoyan .login-btn[data-v-7b2c9221],.navbar.navbar-kaoyan .navbar-item[data-v-7b2c9221],.navbar.navbar-kaoyan .navbar-logo[data-v-7b2c9221]{color:#fff}.navbar.navbar-kaoyan .login-btn[data-v-7b2c9221]:hover,.navbar.navbar-kaoyan .navbar-item[data-v-7b2c9221]:hover,.navbar.navbar-kaoyan .navbar-logo[data-v-7b2c9221]:hover{color:hsla(0,0%,100%,.8)}.navbar.navbar-kaoyan .navbar-burger span[data-v-7b2c9221]{background-color:#fff}.navbar.navbar-kaoyan .dropdown-menu .dropdown-item[data-v-7b2c9221]{color:#333}.navbar.navbar-kaoyan .dropdown-menu .dropdown-item[data-v-7b2c9221]:hover{color:#3273dc;background-color:#f5f5f5}.navbar.navbar-kaoyan .user-dropdown .user-info[data-v-7b2c9221]:hover{color:#e60012}@media(max-width:768px){.navbar.navbar-kaoyan .navbar-menu[data-v-7b2c9221]{background-color:#e60012}.navbar.navbar-kaoyan .navbar-item[data-v-7b2c9221]{border-bottom:1px solid hsla(0,0%,100%,.1)}}.home[data-v-e5f87384]{min-height:100vh;background-color:#f8f9fa;padding-top:60px}.container[data-v-e5f87384]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.welcome-section[data-v-e5f87384]{text-align:center;padding:3rem 1rem}.welcome-section img[data-v-e5f87384]{width:150px;margin-bottom:2rem}.welcome-section h1[data-v-e5f87384]{font-size:2.5rem;margin-bottom:1rem;color:#333}.welcome-section p[data-v-e5f87384]{font-size:1.2rem;margin-bottom:2rem;color:#555}.welcome-section .intro-text[data-v-e5f87384]{background-color:#fff;border-radius:10px;padding:2rem;margin-top:2rem;box-shadow:0 4px 15px rgba(0,0,0,.08);text-align:left;border-left:4px solid #f6be05;position:relative;overflow:hidden;max-width:800px;margin-left:auto;margin-right:auto}.welcome-section .intro-text[data-v-e5f87384]:before{content:"";position:absolute;top:0;right:0;width:200px;height:200px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.welcome-section .intro-text.intro-kaoyan[data-v-e5f87384]{background-color:#e60012;border-left:none}.welcome-section .intro-text.intro-kaoyan p[data-v-e5f87384]{color:#fff;font-weight:700}.welcome-section .intro-text.intro-kaoyan[data-v-e5f87384]:before{background:radial-gradient(circle at top right,hsla(0,0%,100%,.2),transparent 70%)}.welcome-section .intro-text p[data-v-e5f87384]{position:relative;z-index:1;margin-bottom:1rem;font-size:1.1rem;line-height:1.6;color:#555}.welcome-section .intro-text p[data-v-e5f87384]:last-child{margin-bottom:0}.welcome-section .cta-buttons[data-v-e5f87384]{display:flex;justify-content:center;gap:1rem;margin-top:2rem}.welcome-section .cta-buttons .btn[data-v-e5f87384]{padding:.75rem 1.5rem;border-radius:4px;font-weight:600;transition:all .3s;text-decoration:none}.welcome-section .cta-buttons .btn.btn-primary[data-v-e5f87384]{background-color:#3273dc;color:#fff}.welcome-section .cta-buttons .btn.btn-primary[data-v-e5f87384]:hover{background-color:#2366c9}.welcome-section .cta-buttons .btn.btn-secondary[data-v-e5f87384]{background-color:#f5f5f5;color:#333}.welcome-section .cta-buttons .btn.btn-secondary[data-v-e5f87384]:hover{background-color:#e8e8e8}.quick-links[data-v-e5f87384]{margin-top:1.5rem;font-size:1rem;color:#555}.quick-links a[data-v-e5f87384]{color:#3273dc;text-decoration:none;margin:0 .5rem;cursor:pointer}.quick-links a[data-v-e5f87384]:hover{text-decoration:underline}.colorful-text[data-v-e5f87384]{background:linear-gradient(90deg,#0562ef,#722ed1,#eb2f96,#0562ef,#722ed1,#eb2f96,#0562ef);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:rainbow-e5f87384 2s linear infinite;font-weight:700}@keyframes rainbow-e5f87384{0%{background-position:0 50%}to{background-position:100% 50%}}@media(max-width:768px){.welcome-section[data-v-e5f87384]{padding:2rem 1rem}.welcome-section h1[data-v-e5f87384]{font-size:2rem}.welcome-section p[data-v-e5f87384]{font-size:1rem}.welcome-section .intro-text[data-v-e5f87384]{padding:1.5rem}.welcome-section .intro-text p[data-v-e5f87384]{font-size:1rem}.welcome-section .cta-buttons[data-v-e5f87384]{flex-direction:column;align-items:center}.welcome-section .cta-buttons .btn[data-v-e5f87384]{width:100%;max-width:300px;margin-bottom:.5rem}}#nprogress .bar{background:#00f5ff!important;height:2px!important}.bar-message[data-v-18bdfd8a]{position:fixed;top:16px;left:50%;transform:translateX(-50%);width:80%;max-width:500px;z-index:9999;pointer-events:auto}.bar-message-content[data-v-18bdfd8a]{padding:12px 16px;border-radius:8px;text-align:left;font-size:14px;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15);word-break:break-word;display:flex;align-items:center}.bar-message-icon[data-v-18bdfd8a]{margin-right:10px;font-size:16px}.bar-message-text[data-v-18bdfd8a]{flex:1}.bar-message-close[data-v-18bdfd8a]{margin-left:10px;cursor:pointer;font-size:14px;opacity:.8;transition:opacity .2s}.bar-message-close[data-v-18bdfd8a]:hover{opacity:1}.success[data-v-18bdfd8a]{background-color:#4caf50}.error[data-v-18bdfd8a]{background-color:#f44336}.warning[data-v-18bdfd8a]{background-color:#ff9800}.info[data-v-18bdfd8a]{background-color:#2196f3}.bar-message-fade-enter-active[data-v-18bdfd8a],.bar-message-fade-leave-active[data-v-18bdfd8a]{transition:opacity .3s,transform .3s}.bar-message-fade-enter-from[data-v-18bdfd8a],.bar-message-fade-leave-to[data-v-18bdfd8a]{opacity:0;transform:translate(-50%,-15px)} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 30025fc..7403153 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -
给你喜欢的课程打个分!
',4)])),(0,i.Lk)("div",{class:"app-card",onClick:p[1]||(p[1]=a=>f.checkMobileOpen("https://oj.xn--xhq44jb2fzpc.com"))},p[8]||(p[8]=[(0,i.Lk)("div",{class:"app-icon"},"💻",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"OJ题库")],-1),(0,i.Lk)("p",{class:"app-description"},"收录了NEU OJ的所有真题,方便分类标记与进度复盘",-1)])),(0,i.Lk)("div",{class:"app-card",onClick:p[2]||(p[2]=a=>f.openUrl("/widgets"))},p[9]||(p[9]=[(0,i.Lk)("div",{class:"app-icon"},"🛠️",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"小工具中心")],-1),(0,i.Lk)("p",{class:"app-description"},"集成多种实用小工具,提升效率",-1)]))])]),(0,i.Lk)("div",l,[p[13]||(p[13]=(0,i.Lk)("h2",{class:"section-title"},"实用工具",-1)),(0,i.Lk)("div",d,[(0,i.Lk)("div",{class:"app-card",onClick:p[3]||(p[3]=a=>f.openUrl("http://www.momofish.top/"))},p[12]||(p[12]=[(0,i.Fv)('推荐马原、毛概等刷题与复习工具,含大量往年真题,助力考试备考
',4)]))])]),(0,i.Lk)("div",o,[p[17]||(p[17]=(0,i.Lk)("h2",{class:"section-title"},"学校官方工具",-1)),(0,i.Lk)("div",r,[(0,i.Lk)("div",{class:"app-card",onClick:p[4]||(p[4]=a=>f.openUrl("https://webvpn.neu.edu.cn/"))},p[14]||(p[14]=[(0,i.Lk)("div",{class:"app-icon"},"🌍",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"WebVPN")],-1),(0,i.Lk)("p",{class:"app-description"},"校外访问校园内网资源",-1)])),(0,i.Lk)("div",{class:"app-card",onClick:p[5]||(p[5]=a=>f.openUrl("https://ehall.neu.edu.cn/db_portal/guide?id=2325B038-9B8F-4F64-9D46-7B9C649C79FB"))},p[15]||(p[15]=[(0,i.Lk)("div",{class:"app-icon"},"📄",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"本科生电子成绩单申请")],-1),(0,i.Lk)("p",{class:"app-description"},"在线申请电子成绩单",-1)])),(0,i.Lk)("div",{class:"app-card",onClick:p[6]||(p[6]=a=>f.openUrl("http://www.lib.neu.edu.cn/index.html"))},p[16]||(p[16]=[(0,i.Lk)("div",{class:"app-icon"},"📘",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"东北大学图书馆资源平台")],-1),(0,i.Lk)("p",{class:"app-description"},"下载文献、图书、期刊等资源",-1)]))])])])])}var v=s(9586),f=s(4993),L={name:"AppCenter",components:{NavBar:v.A},created(){document.title="应用中心 - NEU小站"},methods:{checkMobileOpen(a){const p=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;p?f.A.confirm("推荐在电脑端使用此应用,以获得最佳体验。仍要继续吗?","提示").then((()=>{window.open(a,"_blank")})).catch((()=>{})):window.open(a,"_blank")},openUrl(a){window.open(a,"_blank")}}},h=s(1241);const b=(0,h.A)(L,[["render",k],["__scopeId","data-v-6ff721b0"]]);var w=b}}]); -//# sourceMappingURL=159.ba4ae944.js.map \ No newline at end of file +"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[159],{5540:function(a,p,s){s.r(p),s.d(p,{default:function(){return w}});var i=s(6768);const c={class:"app-center"},t={class:"container"},e={class:"app-section"},n={class:"app-grid"},l={class:"app-section"},d={class:"app-grid"},o={class:"app-section"},r={class:"app-grid"};function k(a,p,s,k,v,f){const L=(0,i.g2)("NavBar");return(0,i.uX)(),(0,i.CE)("div",c,[(0,i.bF)(L),(0,i.Lk)("div",t,[p[18]||(p[18]=(0,i.Lk)("h1",{class:"page-title"},"应用中心",-1)),(0,i.Lk)("div",e,[p[10]||(p[10]=(0,i.Lk)("h2",{class:"section-title official-apps-title"},"🏆官方应用",-1)),p[11]||(p[11]=(0,i.Lk)("p",{class:"section-description"},"NEU小站团队开发,安全可靠",-1)),(0,i.Lk)("div",n,[(0,i.Lk)("div",{class:"app-card",onClick:p[0]||(p[0]=a=>f.openUrl("https://course.xn--xhq44jb2fzpc.com"))},p[7]||(p[7]=[(0,i.Fv)('推荐给你喜欢的课程打个分!
',4)])),(0,i.Lk)("div",{class:"app-card",onClick:p[1]||(p[1]=a=>f.checkMobileOpen("https://oj.xn--xhq44jb2fzpc.com"))},p[8]||(p[8]=[(0,i.Lk)("div",{class:"app-icon"},"💻",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"OJ题库")],-1),(0,i.Lk)("p",{class:"app-description"},"收录了NEU OJ的所有真题,方便分类标记与进度复盘",-1)])),(0,i.Lk)("div",{class:"app-card",onClick:p[2]||(p[2]=a=>f.openUrl("/widgets"))},p[9]||(p[9]=[(0,i.Lk)("div",{class:"app-icon"},"🛠️",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"小工具中心")],-1),(0,i.Lk)("p",{class:"app-description"},"集成多种实用小工具,提升效率",-1)]))])]),(0,i.Lk)("div",l,[p[13]||(p[13]=(0,i.Lk)("h2",{class:"section-title"},"实用工具",-1)),(0,i.Lk)("div",d,[(0,i.Lk)("div",{class:"app-card",onClick:p[3]||(p[3]=a=>f.openUrl("http://www.momofish.top/"))},p[12]||(p[12]=[(0,i.Fv)('推荐马原、毛概等刷题与复习工具,含大量往年真题,助力考试备考
',4)]))])]),(0,i.Lk)("div",o,[p[17]||(p[17]=(0,i.Lk)("h2",{class:"section-title"},"学校官方工具",-1)),(0,i.Lk)("div",r,[(0,i.Lk)("div",{class:"app-card",onClick:p[4]||(p[4]=a=>f.openUrl("https://webvpn.neu.edu.cn/"))},p[14]||(p[14]=[(0,i.Lk)("div",{class:"app-icon"},"🌍",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"WebVPN")],-1),(0,i.Lk)("p",{class:"app-description"},"校外访问校园内网资源",-1)])),(0,i.Lk)("div",{class:"app-card",onClick:p[5]||(p[5]=a=>f.openUrl("https://ehall.neu.edu.cn/db_portal/guide?id=2325B038-9B8F-4F64-9D46-7B9C649C79FB"))},p[15]||(p[15]=[(0,i.Lk)("div",{class:"app-icon"},"📄",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"本科生电子成绩单申请")],-1),(0,i.Lk)("p",{class:"app-description"},"在线申请电子成绩单",-1)])),(0,i.Lk)("div",{class:"app-card",onClick:p[6]||(p[6]=a=>f.openUrl("http://www.lib.neu.edu.cn/index.html"))},p[16]||(p[16]=[(0,i.Lk)("div",{class:"app-icon"},"📘",-1),(0,i.Lk)("div",{class:"app-title-wrapper"},[(0,i.Lk)("h3",{class:"app-title"},"东北大学图书馆资源平台")],-1),(0,i.Lk)("p",{class:"app-description"},"下载文献、图书、期刊等资源",-1)]))])])])])}var v=s(3645),f=s(4993),L={name:"AppCenter",components:{NavBar:v.A},created(){document.title="应用中心 - NEU小站"},methods:{checkMobileOpen(a){const p=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;p?f.A.confirm("推荐在电脑端使用此应用,以获得最佳体验。仍要继续吗?","提示").then((()=>{window.open(a,"_blank")})).catch((()=>{})):window.open(a,"_blank")},openUrl(a){window.open(a,"_blank")}}},h=s(1241);const b=(0,h.A)(L,[["render",k],["__scopeId","data-v-6ff721b0"]]);var w=b}}]); +//# sourceMappingURL=159.30f36be8.js.map \ No newline at end of file diff --git a/dist/js/181.374fa885.js b/dist/js/181.91a5ee09.js similarity index 98% rename from dist/js/181.374fa885.js rename to dist/js/181.91a5ee09.js index bcc2798..4fa7159 100644 --- a/dist/js/181.374fa885.js +++ b/dist/js/181.91a5ee09.js @@ -1,2 +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(9586),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.374fa885.js.map \ No newline at end of file +"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(3645),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.91a5ee09.js.map \ No newline at end of file diff --git a/dist/js/368.9035a802.js b/dist/js/368.d92408a5.js similarity index 99% rename from dist/js/368.9035a802.js rename to dist/js/368.d92408a5.js index 2700425..dfe6fa1 100644 --- a/dist/js/368.9035a802.js +++ b/dist/js/368.d92408a5.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[368],{4853:function(e,a,t){t.d(a,{A:function(){return g}});var s=t(6768),l=t(4232);const i={key:0,class:"loading-container"},c={class:"loading-content"},o={class:"loading-text"};function n(e,a,t,n,r,h){return t.visible?((0,s.uX)(),(0,s.CE)("div",i,[a[1]||(a[1]=(0,s.Lk)("div",{class:"loading-overlay"},null,-1)),(0,s.Lk)("div",c,[a[0]||(a[0]=(0,s.Lk)("div",{class:"loading-spinner"},[(0,s.Lk)("div",{class:"spinner"})],-1)),(0,s.Lk)("div",o,(0,l.v_)(t.text),1)])])):(0,s.Q3)("",!0)}var r={name:"Loading",props:{visible:{type:Boolean,default:!1},text:{type:String,default:"加载中..."}}},h=t(1241);const d=(0,h.A)(r,[["render",n],["__scopeId","data-v-032dd7a4"]]);var g=d},7368:function(e,a,t){t.r(a),t.d(a,{default:function(){return ce}});var s=t(6768),l=t(5130),i=t(4232);const c={class:"search-view"},o={class:"container"},n={class:"search-panel"},r={class:"search-form"},h={class:"form-group"},d={class:"hot-search"},g={class:"hot-tags"},u=["onClick"],p={class:"advanced-search"},k={class:"advanced-options"},v={class:"form-group"},m={class:"radio-group"},f={class:"form-group"},L={class:"tags-selector"},b=["onClick"],P={key:0,class:"no-tags"},C={class:"form-group"},y={class:"checkbox-group"},S=["checked"],w=["checked"],T=["checked"],E={class:"form-actions"},X={key:0,class:"search-results"},A={class:"results-header"},_={key:0},x={key:1},z={key:0,class:"results-list simple-mode"},F=["onClick"],R={class:"article-title"},N={key:1,class:"results-list detailed-mode"},I=["onClick"],U={class:"article-header"},j={class:"article-title"},K={class:"article-badges"},Q={key:0,class:"badge top"},W={key:1,class:"badge highlight"},$={key:2,class:"badge official"},q={class:"article-meta"},D={class:"article-section"},V={class:"article-date"},B={class:"article-tags"},O=["onClick"],J={key:2,class:"pagination"},G=["disabled"],H={class:"page-info"},M=["disabled"],Y={key:1,class:"loading-container"};function Z(e,a,t,Z,ee,ae){const te=(0,s.g2)("Navbar"),se=(0,s.g2)("Loading");return(0,s.uX)(),(0,s.CE)("div",c,[(0,s.bF)(te),(0,s.Lk)("div",o,[(0,s.Lk)("div",n,[a[25]||(a[25]=(0,s.Lk)("h1",{class:"search-title"},"内容检索",-1)),(0,s.Lk)("div",r,[(0,s.Lk)("div",h,[a[13]||(a[13]=(0,s.Lk)("label",null,"标题或内容:",-1)),(0,s.bo)((0,s.Lk)("input",{type:"text","onUpdate:modelValue":a[0]||(a[0]=e=>ee.searchParams.content=e),placeholder:"搜索标题或内容",onKeyup:a[1]||(a[1]=(0,l.jR)((e=>ae.performSearch(1)),["enter"]))},null,544),[[l.Jo,ee.searchParams.content]])]),(0,s.Lk)("div",d,[a[14]||(a[14]=(0,s.Lk)("h3",null,"近期热搜",-1)),(0,s.Lk)("div",g,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.hotSearchTags,((e,a)=>((0,s.uX)(),(0,s.CE)("div",{key:a,class:"hot-tag",onClick:a=>ae.quickSearch(e)},(0,i.v_)(e),9,u)))),128))])]),(0,s.Lk)("div",p,[(0,s.Lk)("div",{class:"advanced-toggle",onClick:a[2]||(a[2]=(...e)=>ae.toggleAdvanced&&ae.toggleAdvanced(...e))},[a[15]||(a[15]=(0,s.Lk)("span",null,"高级筛选",-1)),(0,s.Lk)("i",{class:(0,i.C4)(["toggle-icon",{expanded:ee.showAdvanced}])},(0,i.v_)(ee.showAdvanced?"▲":"▼"),3)]),(0,s.bo)((0,s.Lk)("div",k,[(0,s.Lk)("div",v,[a[19]||(a[19]=(0,s.Lk)("label",null,"板块:",-1)),(0,s.Lk)("div",m,[(0,s.Lk)("label",null,[(0,s.bo)((0,s.Lk)("input",{type:"radio","onUpdate:modelValue":a[3]||(a[3]=e=>ee.searchParams.section=e),value:null},null,512),[[l.XL,ee.searchParams.section]]),a[16]||(a[16]=(0,s.eW)(" 全部 "))]),(0,s.Lk)("label",null,[(0,s.bo)((0,s.Lk)("input",{type:"radio","onUpdate:modelValue":a[4]||(a[4]=e=>ee.searchParams.section=e),value:0},null,512),[[l.XL,ee.searchParams.section]]),a[17]||(a[17]=(0,s.eW)(" 攻略指南 "))]),(0,s.Lk)("label",null,[(0,s.bo)((0,s.Lk)("input",{type:"radio","onUpdate:modelValue":a[5]||(a[5]=e=>ee.searchParams.section=e),value:1},null,512),[[l.XL,ee.searchParams.section]]),a[18]||(a[18]=(0,s.eW)(" 资源共享 "))])])]),(0,s.Lk)("div",f,[a[20]||(a[20]=(0,s.Lk)("label",null,"标签:",-1)),(0,s.Lk)("div",L,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.allTags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:(0,i.C4)(["tag-item",{selected:ee.selectedTags.includes(e.id)}]),onClick:a=>ae.toggleTag(e.id)},(0,i.v_)(e.name),11,b)))),128)),0===ee.allTags.length?((0,s.uX)(),(0,s.CE)("div",P,"加载标签中...")):(0,s.Q3)("",!0)])]),(0,s.Lk)("div",C,[a[24]||(a[24]=(0,s.Lk)("label",null,"附加筛选:",-1)),(0,s.Lk)("div",y,[(0,s.Lk)("label",null,[(0,s.Lk)("input",{type:"checkbox",checked:1===ee.searchParams.top,onChange:a[6]||(a[6]=e=>ae.toggleFilter("top",e.target.checked))},null,40,S),a[21]||(a[21]=(0,s.eW)(" 置顶 "))]),(0,s.Lk)("label",null,[(0,s.Lk)("input",{type:"checkbox",checked:1===ee.searchParams.highlight,onChange:a[7]||(a[7]=e=>ae.toggleFilter("highlight",e.target.checked))},null,40,w),a[22]||(a[22]=(0,s.eW)(" 优质 "))]),(0,s.Lk)("label",null,[(0,s.Lk)("input",{type:"checkbox",checked:1===ee.searchParams.official,onChange:a[8]||(a[8]=e=>ae.toggleFilter("official",e.target.checked))},null,40,T),a[23]||(a[23]=(0,s.eW)(" 官方内容 "))])])])],512),[[l.aG,ee.showAdvanced]])]),(0,s.Lk)("div",E,[(0,s.Lk)("button",{class:"search-btn",onClick:a[9]||(a[9]=e=>ae.performSearch(1))},"搜索"),(0,s.Lk)("button",{class:"reset-btn",onClick:a[10]||(a[10]=(...e)=>ae.resetSearch&&ae.resetSearch(...e))},"重置")])])]),ee.loading?((0,s.uX)(),(0,s.CE)("div",Y,[(0,s.bF)(se,{visible:!0,text:"搜索中,请稍候..."})])):((0,s.uX)(),(0,s.CE)("div",X,[(0,s.Lk)("div",A,[ee.totalResults>0?((0,s.uX)(),(0,s.CE)("h2",_,"找到 "+(0,i.v_)(ee.totalResults)+" 条结果",1)):((0,s.uX)(),(0,s.CE)("h2",x,"未找到符合条件的结果"))]),0===ee.searchParams.mode?((0,s.uX)(),(0,s.CE)("div",z,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.searchResults,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"result-item simple",onClick:a=>ae.viewArticle(e.id)},[(0,s.Lk)("div",R,(0,i.v_)(e.title),1)],8,F)))),128))])):((0,s.uX)(),(0,s.CE)("div",N,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.searchResults,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"result-item detailed",onClick:a=>ae.viewArticle(e.id)},[(0,s.Lk)("div",U,[(0,s.Lk)("h3",j,(0,i.v_)(e.title),1),(0,s.Lk)("div",K,[e.top?((0,s.uX)(),(0,s.CE)("span",Q,"置顶")):(0,s.Q3)("",!0),e.highlight?((0,s.uX)(),(0,s.CE)("span",W,"优质")):(0,s.Q3)("",!0),e.official?((0,s.uX)(),(0,s.CE)("span",$,"官方")):(0,s.Q3)("",!0)])]),(0,s.Lk)("div",q,[(0,s.Lk)("span",D,(0,i.v_)(e.section),1),(0,s.Lk)("span",V,"更新: "+(0,i.v_)(ae.formatDate(e.updated_at)),1)]),(0,s.Lk)("div",B,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.tags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"tag",onClick:(0,l.D$)((a=>ae.searchByTag(e.id)),["stop"])},(0,i.v_)(e.name),9,O)))),128))])],8,I)))),128))])),ee.totalPages>0?((0,s.uX)(),(0,s.CE)("div",J,[(0,s.Lk)("button",{class:"page-btn",disabled:ee.currentPage<=1,onClick:a[11]||(a[11]=e=>ae.performSearch(ee.currentPage-1))}," 上一页 ",8,G),(0,s.Lk)("div",H,(0,i.v_)(ee.currentPage)+" / "+(0,i.v_)(ee.totalPages),1),(0,s.Lk)("button",{class:"page-btn",disabled:ee.currentPage>=ee.totalPages,onClick:a[12]||(a[12]=e=>ae.performSearch(ee.currentPage+1))}," 下一页 ",8,M)])):(0,s.Q3)("",!0)]))])])}t(4114),t(8111),t(1701);var ee=t(9586),ae=t(4853),te=t(4993),se={name:"SearchView",components:{Navbar:ee.A,Loading:ae.A},data(){return{searchParams:{content:"",section:null,mode:1,pageSize:10,top:null,highlight:null,official:null},allTags:[],selectedTags:[],hotSearchTags:["数值分析","大学物理","高数","概率论","线性代数","毛概"],showAdvanced:!1,searchResults:[],totalResults:0,totalPages:0,currentPage:1,loading:!1,initialized:!1}},created(){document.title="内容检索 - NEU小站",this.loadTags();const e=this.$route.query;if(e.content&&(this.searchParams.content=e.content),void 0!==e.section&&(this.searchParams.section=Number(e.section)),void 0!==e.mode&&(this.searchParams.mode=Number(e.mode)),void 0!==e.top&&(this.searchParams.top="1"===e.top),void 0!==e.highlight&&(this.searchParams.highlight="1"===e.highlight),void 0!==e.official&&(this.searchParams.official="1"===e.official),e.page&&(this.currentPage=Number(e.page)),e.pageSize&&(this.searchParams.pageSize=Number(e.pageSize)),e.tags)try{const a=e.tags.split(",").map((e=>Number(e)));this.selectedTags=a}catch(a){console.error("解析标签参数失败",a)}(e.content||void 0!==e.section||e.tags)&&((void 0!==e.section||e.tags||void 0!==e.top||void 0!==e.highlight||void 0!==e.official)&&(this.showAdvanced=!0),setTimeout((()=>{this.performSearch(this.currentPage)}),300))},methods:{toggleAdvanced(){this.showAdvanced=!this.showAdvanced},quickSearch(e){this.resetSearch(),this.searchParams.content=e,this.performSearch(1)},async loadTags(){try{const e=await fetch("https://newfront.东北大学.com/search/tags?sort=name");if(!e.ok)throw new Error("加载标签失败");const a=await e.json();this.allTags=a.tags||[]}catch(e){console.error("获取标签失败:",e),te.A.alert("加载标签失败,请刷新页面重试","错误")}},toggleTag(e){const a=this.selectedTags.indexOf(e);-1===a?this.selectedTags.push(e):this.selectedTags.splice(a,1)},toggleFilter(e,a){this.searchParams[e]=a?1:null},async performSearch(e=1){const a=!!this.searchParams.content,t=null!==this.searchParams.section,s=this.selectedTags.length>0;if(a||t||s){this.loading=!0,this.currentPage=e;try{const e={...this.searchParams,page:this.currentPage};null!==e.top&&(e.top=e.top?1:0),null!==e.highlight&&(e.highlight=e.highlight?1:0),null!==e.official&&(e.official=e.official?1:0),this.selectedTags.length>0&&(e.tags=this.selectedTags),this.updateUrlParams(e);const a=await fetch("https://newfront.东北大学.com/search/general",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!a.ok){const e=await a.json().catch((()=>({})));throw new Error(e.message||"搜索请求失败")}const t=await a.json();this.searchResults=t.articles||[],this.totalResults=t.total||0,this.totalPages=t.totalPages||0,this.currentPage=t.page||1}catch(l){console.error("搜索失败:",l),te.A.alert(l.message||"搜索失败,请稍后重试","错误")}finally{this.loading=!1,this.initialized=!0}}else te.A.alert("请至少提供一个搜索条件(关键词、板块或标签)","提示")},resetSearch(){this.searchParams={content:"",section:null,mode:1,pageSize:10,top:null,highlight:null,official:null},this.selectedTags=[],this.searchResults=[],this.totalResults=0,this.totalPages=0,this.currentPage=1,this.$router.replace({query:{}})},searchByTag(e){this.resetSearch(),this.selectedTags=[e],this.showAdvanced=!0,this.performSearch(1)},viewArticle(e){this.$router.push(`/article/${e}`)},updateUrlParams(e){const a={};e.content&&(a.content=e.content),null!==e.section&&(a.section=e.section),1!==e.mode&&(a.mode=e.mode),10!==e.pageSize&&(a.pageSize=e.pageSize),e.page&&e.page>1&&(a.page=e.page),null!==e.top&&(a.top=e.top),null!==e.highlight&&(a.highlight=e.highlight),null!==e.official&&(a.official=e.official),this.selectedTags.length>0&&(a.tags=this.selectedTags.join(",")),this.$router.replace({query:a},(()=>{}),(()=>{}))},formatDate(e){if(!e)return"";const a=new Date(e);return a.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})}}},le=t(1241);const ie=(0,le.A)(se,[["render",Z],["__scopeId","data-v-336de950"]]);var ce=ie}}]); -//# sourceMappingURL=368.9035a802.js.map \ No newline at end of file +"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[368],{4853:function(e,a,t){t.d(a,{A:function(){return g}});var s=t(6768),l=t(4232);const i={key:0,class:"loading-container"},c={class:"loading-content"},o={class:"loading-text"};function n(e,a,t,n,r,h){return t.visible?((0,s.uX)(),(0,s.CE)("div",i,[a[1]||(a[1]=(0,s.Lk)("div",{class:"loading-overlay"},null,-1)),(0,s.Lk)("div",c,[a[0]||(a[0]=(0,s.Lk)("div",{class:"loading-spinner"},[(0,s.Lk)("div",{class:"spinner"})],-1)),(0,s.Lk)("div",o,(0,l.v_)(t.text),1)])])):(0,s.Q3)("",!0)}var r={name:"Loading",props:{visible:{type:Boolean,default:!1},text:{type:String,default:"加载中..."}}},h=t(1241);const d=(0,h.A)(r,[["render",n],["__scopeId","data-v-032dd7a4"]]);var g=d},7368:function(e,a,t){t.r(a),t.d(a,{default:function(){return ce}});var s=t(6768),l=t(5130),i=t(4232);const c={class:"search-view"},o={class:"container"},n={class:"search-panel"},r={class:"search-form"},h={class:"form-group"},d={class:"hot-search"},g={class:"hot-tags"},u=["onClick"],p={class:"advanced-search"},k={class:"advanced-options"},v={class:"form-group"},m={class:"radio-group"},f={class:"form-group"},L={class:"tags-selector"},b=["onClick"],P={key:0,class:"no-tags"},C={class:"form-group"},y={class:"checkbox-group"},S=["checked"],w=["checked"],T=["checked"],E={class:"form-actions"},X={key:0,class:"search-results"},A={class:"results-header"},_={key:0},x={key:1},z={key:0,class:"results-list simple-mode"},F=["onClick"],R={class:"article-title"},N={key:1,class:"results-list detailed-mode"},I=["onClick"],U={class:"article-header"},j={class:"article-title"},K={class:"article-badges"},Q={key:0,class:"badge top"},W={key:1,class:"badge highlight"},$={key:2,class:"badge official"},q={class:"article-meta"},D={class:"article-section"},V={class:"article-date"},B={class:"article-tags"},O=["onClick"],J={key:2,class:"pagination"},G=["disabled"],H={class:"page-info"},M=["disabled"],Y={key:1,class:"loading-container"};function Z(e,a,t,Z,ee,ae){const te=(0,s.g2)("Navbar"),se=(0,s.g2)("Loading");return(0,s.uX)(),(0,s.CE)("div",c,[(0,s.bF)(te),(0,s.Lk)("div",o,[(0,s.Lk)("div",n,[a[25]||(a[25]=(0,s.Lk)("h1",{class:"search-title"},"内容检索",-1)),(0,s.Lk)("div",r,[(0,s.Lk)("div",h,[a[13]||(a[13]=(0,s.Lk)("label",null,"标题或内容:",-1)),(0,s.bo)((0,s.Lk)("input",{type:"text","onUpdate:modelValue":a[0]||(a[0]=e=>ee.searchParams.content=e),placeholder:"搜索标题或内容",onKeyup:a[1]||(a[1]=(0,l.jR)((e=>ae.performSearch(1)),["enter"]))},null,544),[[l.Jo,ee.searchParams.content]])]),(0,s.Lk)("div",d,[a[14]||(a[14]=(0,s.Lk)("h3",null,"近期热搜",-1)),(0,s.Lk)("div",g,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.hotSearchTags,((e,a)=>((0,s.uX)(),(0,s.CE)("div",{key:a,class:"hot-tag",onClick:a=>ae.quickSearch(e)},(0,i.v_)(e),9,u)))),128))])]),(0,s.Lk)("div",p,[(0,s.Lk)("div",{class:"advanced-toggle",onClick:a[2]||(a[2]=(...e)=>ae.toggleAdvanced&&ae.toggleAdvanced(...e))},[a[15]||(a[15]=(0,s.Lk)("span",null,"高级筛选",-1)),(0,s.Lk)("i",{class:(0,i.C4)(["toggle-icon",{expanded:ee.showAdvanced}])},(0,i.v_)(ee.showAdvanced?"▲":"▼"),3)]),(0,s.bo)((0,s.Lk)("div",k,[(0,s.Lk)("div",v,[a[19]||(a[19]=(0,s.Lk)("label",null,"板块:",-1)),(0,s.Lk)("div",m,[(0,s.Lk)("label",null,[(0,s.bo)((0,s.Lk)("input",{type:"radio","onUpdate:modelValue":a[3]||(a[3]=e=>ee.searchParams.section=e),value:null},null,512),[[l.XL,ee.searchParams.section]]),a[16]||(a[16]=(0,s.eW)(" 全部 "))]),(0,s.Lk)("label",null,[(0,s.bo)((0,s.Lk)("input",{type:"radio","onUpdate:modelValue":a[4]||(a[4]=e=>ee.searchParams.section=e),value:0},null,512),[[l.XL,ee.searchParams.section]]),a[17]||(a[17]=(0,s.eW)(" 攻略指南 "))]),(0,s.Lk)("label",null,[(0,s.bo)((0,s.Lk)("input",{type:"radio","onUpdate:modelValue":a[5]||(a[5]=e=>ee.searchParams.section=e),value:1},null,512),[[l.XL,ee.searchParams.section]]),a[18]||(a[18]=(0,s.eW)(" 资源共享 "))])])]),(0,s.Lk)("div",f,[a[20]||(a[20]=(0,s.Lk)("label",null,"标签:",-1)),(0,s.Lk)("div",L,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.allTags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:(0,i.C4)(["tag-item",{selected:ee.selectedTags.includes(e.id)}]),onClick:a=>ae.toggleTag(e.id)},(0,i.v_)(e.name),11,b)))),128)),0===ee.allTags.length?((0,s.uX)(),(0,s.CE)("div",P,"加载标签中...")):(0,s.Q3)("",!0)])]),(0,s.Lk)("div",C,[a[24]||(a[24]=(0,s.Lk)("label",null,"附加筛选:",-1)),(0,s.Lk)("div",y,[(0,s.Lk)("label",null,[(0,s.Lk)("input",{type:"checkbox",checked:1===ee.searchParams.top,onChange:a[6]||(a[6]=e=>ae.toggleFilter("top",e.target.checked))},null,40,S),a[21]||(a[21]=(0,s.eW)(" 置顶 "))]),(0,s.Lk)("label",null,[(0,s.Lk)("input",{type:"checkbox",checked:1===ee.searchParams.highlight,onChange:a[7]||(a[7]=e=>ae.toggleFilter("highlight",e.target.checked))},null,40,w),a[22]||(a[22]=(0,s.eW)(" 优质 "))]),(0,s.Lk)("label",null,[(0,s.Lk)("input",{type:"checkbox",checked:1===ee.searchParams.official,onChange:a[8]||(a[8]=e=>ae.toggleFilter("official",e.target.checked))},null,40,T),a[23]||(a[23]=(0,s.eW)(" 官方内容 "))])])])],512),[[l.aG,ee.showAdvanced]])]),(0,s.Lk)("div",E,[(0,s.Lk)("button",{class:"search-btn",onClick:a[9]||(a[9]=e=>ae.performSearch(1))},"搜索"),(0,s.Lk)("button",{class:"reset-btn",onClick:a[10]||(a[10]=(...e)=>ae.resetSearch&&ae.resetSearch(...e))},"重置")])])]),ee.loading?((0,s.uX)(),(0,s.CE)("div",Y,[(0,s.bF)(se,{visible:!0,text:"搜索中,请稍候..."})])):((0,s.uX)(),(0,s.CE)("div",X,[(0,s.Lk)("div",A,[ee.totalResults>0?((0,s.uX)(),(0,s.CE)("h2",_,"找到 "+(0,i.v_)(ee.totalResults)+" 条结果",1)):((0,s.uX)(),(0,s.CE)("h2",x,"未找到符合条件的结果"))]),0===ee.searchParams.mode?((0,s.uX)(),(0,s.CE)("div",z,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.searchResults,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"result-item simple",onClick:a=>ae.viewArticle(e.id)},[(0,s.Lk)("div",R,(0,i.v_)(e.title),1)],8,F)))),128))])):((0,s.uX)(),(0,s.CE)("div",N,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(ee.searchResults,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"result-item detailed",onClick:a=>ae.viewArticle(e.id)},[(0,s.Lk)("div",U,[(0,s.Lk)("h3",j,(0,i.v_)(e.title),1),(0,s.Lk)("div",K,[e.top?((0,s.uX)(),(0,s.CE)("span",Q,"置顶")):(0,s.Q3)("",!0),e.highlight?((0,s.uX)(),(0,s.CE)("span",W,"优质")):(0,s.Q3)("",!0),e.official?((0,s.uX)(),(0,s.CE)("span",$,"官方")):(0,s.Q3)("",!0)])]),(0,s.Lk)("div",q,[(0,s.Lk)("span",D,(0,i.v_)(e.section),1),(0,s.Lk)("span",V,"更新: "+(0,i.v_)(ae.formatDate(e.updated_at)),1)]),(0,s.Lk)("div",B,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.tags,(e=>((0,s.uX)(),(0,s.CE)("div",{key:e.id,class:"tag",onClick:(0,l.D$)((a=>ae.searchByTag(e.id)),["stop"])},(0,i.v_)(e.name),9,O)))),128))])],8,I)))),128))])),ee.totalPages>0?((0,s.uX)(),(0,s.CE)("div",J,[(0,s.Lk)("button",{class:"page-btn",disabled:ee.currentPage<=1,onClick:a[11]||(a[11]=e=>ae.performSearch(ee.currentPage-1))}," 上一页 ",8,G),(0,s.Lk)("div",H,(0,i.v_)(ee.currentPage)+" / "+(0,i.v_)(ee.totalPages),1),(0,s.Lk)("button",{class:"page-btn",disabled:ee.currentPage>=ee.totalPages,onClick:a[12]||(a[12]=e=>ae.performSearch(ee.currentPage+1))}," 下一页 ",8,M)])):(0,s.Q3)("",!0)]))])])}t(4114),t(8111),t(1701);var ee=t(3645),ae=t(4853),te=t(4993),se={name:"SearchView",components:{Navbar:ee.A,Loading:ae.A},data(){return{searchParams:{content:"",section:null,mode:1,pageSize:10,top:null,highlight:null,official:null},allTags:[],selectedTags:[],hotSearchTags:["数值分析","大学物理","高数","概率论","线性代数","毛概"],showAdvanced:!1,searchResults:[],totalResults:0,totalPages:0,currentPage:1,loading:!1,initialized:!1}},created(){document.title="内容检索 - NEU小站",this.loadTags();const e=this.$route.query;if(e.content&&(this.searchParams.content=e.content),void 0!==e.section&&(this.searchParams.section=Number(e.section)),void 0!==e.mode&&(this.searchParams.mode=Number(e.mode)),void 0!==e.top&&(this.searchParams.top="1"===e.top),void 0!==e.highlight&&(this.searchParams.highlight="1"===e.highlight),void 0!==e.official&&(this.searchParams.official="1"===e.official),e.page&&(this.currentPage=Number(e.page)),e.pageSize&&(this.searchParams.pageSize=Number(e.pageSize)),e.tags)try{const a=e.tags.split(",").map((e=>Number(e)));this.selectedTags=a}catch(a){console.error("解析标签参数失败",a)}(e.content||void 0!==e.section||e.tags)&&((void 0!==e.section||e.tags||void 0!==e.top||void 0!==e.highlight||void 0!==e.official)&&(this.showAdvanced=!0),setTimeout((()=>{this.performSearch(this.currentPage)}),300))},methods:{toggleAdvanced(){this.showAdvanced=!this.showAdvanced},quickSearch(e){this.resetSearch(),this.searchParams.content=e,this.performSearch(1)},async loadTags(){try{const e=await fetch("https://newfront.东北大学.com/search/tags?sort=name");if(!e.ok)throw new Error("加载标签失败");const a=await e.json();this.allTags=a.tags||[]}catch(e){console.error("获取标签失败:",e),te.A.alert("加载标签失败,请刷新页面重试","错误")}},toggleTag(e){const a=this.selectedTags.indexOf(e);-1===a?this.selectedTags.push(e):this.selectedTags.splice(a,1)},toggleFilter(e,a){this.searchParams[e]=a?1:null},async performSearch(e=1){const a=!!this.searchParams.content,t=null!==this.searchParams.section,s=this.selectedTags.length>0;if(a||t||s){this.loading=!0,this.currentPage=e;try{const e={...this.searchParams,page:this.currentPage};null!==e.top&&(e.top=e.top?1:0),null!==e.highlight&&(e.highlight=e.highlight?1:0),null!==e.official&&(e.official=e.official?1:0),this.selectedTags.length>0&&(e.tags=this.selectedTags),this.updateUrlParams(e);const a=await fetch("https://newfront.东北大学.com/search/general",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!a.ok){const e=await a.json().catch((()=>({})));throw new Error(e.message||"搜索请求失败")}const t=await a.json();this.searchResults=t.articles||[],this.totalResults=t.total||0,this.totalPages=t.totalPages||0,this.currentPage=t.page||1}catch(l){console.error("搜索失败:",l),te.A.alert(l.message||"搜索失败,请稍后重试","错误")}finally{this.loading=!1,this.initialized=!0}}else te.A.alert("请至少提供一个搜索条件(关键词、板块或标签)","提示")},resetSearch(){this.searchParams={content:"",section:null,mode:1,pageSize:10,top:null,highlight:null,official:null},this.selectedTags=[],this.searchResults=[],this.totalResults=0,this.totalPages=0,this.currentPage=1,this.$router.replace({query:{}})},searchByTag(e){this.resetSearch(),this.selectedTags=[e],this.showAdvanced=!0,this.performSearch(1)},viewArticle(e){this.$router.push(`/article/${e}`)},updateUrlParams(e){const a={};e.content&&(a.content=e.content),null!==e.section&&(a.section=e.section),1!==e.mode&&(a.mode=e.mode),10!==e.pageSize&&(a.pageSize=e.pageSize),e.page&&e.page>1&&(a.page=e.page),null!==e.top&&(a.top=e.top),null!==e.highlight&&(a.highlight=e.highlight),null!==e.official&&(a.official=e.official),this.selectedTags.length>0&&(a.tags=this.selectedTags.join(",")),this.$router.replace({query:a},(()=>{}),(()=>{}))},formatDate(e){if(!e)return"";const a=new Date(e);return a.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})}}},le=t(1241);const ie=(0,le.A)(se,[["render",Z],["__scopeId","data-v-336de950"]]);var ce=ie}}]); +//# sourceMappingURL=368.d92408a5.js.map \ No newline at end of file diff --git a/dist/js/395.dfa3bbfe.js b/dist/js/395.e6073c92.js similarity index 99% rename from dist/js/395.dfa3bbfe.js rename to dist/js/395.e6073c92.js index bf1b2b8..c68792b 100644 --- a/dist/js/395.dfa3bbfe.js +++ b/dist/js/395.e6073c92.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[395],{9395:function(t,e,s){s.r(e),s.d(e,{default:function(){return pe}});var i=s(6768);const a={class:"user-center"},n={key:0,class:"loading-container"},o={key:1,class:"container"},l={class:"upper-section"},r={class:"user-info-container"},c={class:"coin-container"},d={class:"lower-section"},u={key:2,class:"login-required-container"};function h(t,e,s,h,g,k){const p=(0,i.g2)("Navbar"),v=(0,i.g2)("UserInfo"),m=(0,i.g2)("Coin"),f=(0,i.g2)("SubmissionList");return(0,i.uX)(),(0,i.CE)("div",a,[(0,i.bF)(p),g.isLoading?((0,i.uX)(),(0,i.CE)("div",n,e[0]||(e[0]=[(0,i.Lk)("div",{class:"loading-spinner"},"加载中...",-1)]))):g.isAuthenticated?((0,i.uX)(),(0,i.CE)("div",o,[(0,i.Lk)("div",l,[(0,i.Lk)("div",r,[(0,i.bF)(v,{ref:"userInfo"},null,512)]),(0,i.Lk)("div",c,[(0,i.bF)(m,{ref:"coin"},null,512)])]),(0,i.Lk)("div",d,[(0,i.bF)(f,{onManageWorks:k.handleManageWorks},null,8,["onManageWorks"])])])):((0,i.uX)(),(0,i.CE)("div",u,e[1]||(e[1]=[(0,i.Lk)("div",{class:"login-required-message"},[(0,i.Lk)("h2",null,"请先登录!"),(0,i.Lk)("p",null,"您需要登录后才能访问个人中心")],-1)])))])}s(4114);var g=s(9586),k=s(4232);const p={class:"user-info-card"},v={class:"card-container"},m={class:"detail-header"},f={class:"avatar-wrapper"},y=["src"],L={class:"detail-right"},b={class:"detail-name-container"},w={class:"detail-name"},C={key:0,src:"https://download.xn--xhq44jb2fzpc.com/images/vip_g3.svg",class:"vip-badge",alt:"VIP",title:"VIP用户"},_={class:"user-badges"},A=["title"],x=["title"],E={key:2,class:"badge medal"},P={class:"user-sign-container"},M={class:"user-sign"},I={class:"sign-text"},$={class:"user-email"},S={class:"email-text"},X={key:0,class:"badge campus-email"},j={class:"user-stats"},F={class:"stat-value"},T={class:"stat-value"},K={class:"stat-item"},z={class:"stat-value"},O={key:0,class:"modal-overlay"},D={class:"modal-content"},N={class:"modal-header"},q={class:"modal-body"},Q={key:0,class:"loading-state"},U={key:1,class:"empty-state"},R={key:2,class:"user-list"},J={class:"user-meta-wrapper"},W=["onClick"],V={key:0,class:"modal-footer"},B=["disabled"],H={class:"page-info"},G=["disabled"];function Y(t,e,s,a,n,o){const l=(0,i.g2)("UserMeta");return(0,i.uX)(),(0,i.CE)("div",p,[(0,i.Lk)("div",v,[(0,i.Lk)("div",m,[e[11]||(e[11]=(0,i.Lk)("div",{class:"header-bg"},null,-1)),(0,i.Lk)("div",f,[(0,i.Lk)("img",{src:n.userInfo.avatar_path,alt:"用户头像",class:"detail-avatar"},null,8,y),(0,i.Lk)("div",{class:"avatar-edit-overlay",onClick:e[0]||(e[0]=(...t)=>o.triggerFileInput&&o.triggerFileInput(...t))},e[9]||(e[9]=[(0,i.Lk)("i",{class:"edit-icon"},"📷",-1)])),(0,i.Lk)("input",{type:"file",ref:"fileInput",style:{display:"none"},accept:"image/*",onChange:e[1]||(e[1]=(...t)=>o.uploadAvatar&&o.uploadAvatar(...t))},null,544)]),(0,i.Lk)("div",L,[(0,i.Lk)("div",b,[(0,i.Lk)("div",w,[(0,i.eW)((0,k.v_)(n.userInfo.nickname)+" ",1),n.userInfo.is_vip?((0,i.uX)(),(0,i.CE)("img",C)):(0,i.Q3)("",!0)]),(0,i.Lk)("button",{class:"edit-btn",onClick:e[2]||(e[2]=(...t)=>o.editNickname&&o.editNickname(...t)),title:"修改昵称"},e[10]||(e[10]=[(0,i.Lk)("i",{class:"edit-icon"},"✏️",-1)]))]),(0,i.Lk)("div",_,[n.userInfo.verified?((0,i.uX)(),(0,i.CE)("span",{key:0,class:"badge verified",title:n.userInfo.verified},"认证",8,A)):(0,i.Q3)("",!0),n.userInfo.invited?((0,i.uX)(),(0,i.CE)("span",{key:1,class:"badge invited",title:n.userInfo.invited},"特邀",8,x)):(0,i.Q3)("",!0),n.userInfo.medal?((0,i.uX)(),(0,i.CE)("span",E,"小站奖章")):(0,i.Q3)("",!0)])])]),(0,i.Lk)("div",P,[(0,i.Lk)("div",M,[e[13]||(e[13]=(0,i.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,i.Lk)("div",I,(0,k.v_)(n.userInfo.sign||"这个人很懒,还没有写个性签名~"),1),(0,i.Lk)("button",{class:"edit-btn",onClick:e[3]||(e[3]=(...t)=>o.editSign&&o.editSign(...t)),title:"修改签名"},e[12]||(e[12]=[(0,i.Lk)("i",{class:"edit-icon"},"✏️",-1)]))])]),(0,i.Lk)("div",$,[e[14]||(e[14]=(0,i.Lk)("div",{class:"email-icon"},"📧",-1)),(0,i.Lk)("div",S,(0,k.v_)(n.userInfo.email),1),o.isCampusEmail?((0,i.uX)(),(0,i.CE)("span",X,"校园邮箱")):(0,i.Q3)("",!0)]),(0,i.Lk)("div",j,[(0,i.Lk)("div",{class:"stat-item clickable",onClick:e[4]||(e[4]=t=>o.openList(1))},[(0,i.Lk)("div",F,(0,k.v_)(n.userInfo.follower||0),1),e[15]||(e[15]=(0,i.Lk)("div",{class:"stat-label"},"粉丝",-1))]),e[18]||(e[18]=(0,i.Lk)("div",{class:"stat-separator"},null,-1)),(0,i.Lk)("div",{class:"stat-item clickable",onClick:e[5]||(e[5]=t=>o.openList(0))},[(0,i.Lk)("div",T,(0,k.v_)(n.userInfo.following||0),1),e[16]||(e[16]=(0,i.Lk)("div",{class:"stat-label"},"关注",-1))]),e[19]||(e[19]=(0,i.Lk)("div",{class:"stat-separator"},null,-1)),(0,i.Lk)("div",K,[(0,i.Lk)("div",z,(0,k.v_)(n.userInfo.coin||"未激活"),1),e[17]||(e[17]=(0,i.Lk)("div",{class:"stat-label"},"东币",-1))])])]),n.showListModal?((0,i.uX)(),(0,i.CE)("div",O,[(0,i.Lk)("div",D,[(0,i.Lk)("div",N,[(0,i.Lk)("h3",null,(0,k.v_)(0===n.listMode?"我的关注":"我的粉丝"),1),(0,i.Lk)("button",{class:"close-modal-btn",onClick:e[6]||(e[6]=(...t)=>o.closeList&&o.closeList(...t))},"×")]),(0,i.Lk)("div",q,[n.listLoading?((0,i.uX)(),(0,i.CE)("div",Q,"加载中...")):0===n.userList.length?((0,i.uX)(),(0,i.CE)("div",U,"暂无数据")):((0,i.uX)(),(0,i.CE)("div",R,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.userList,(t=>((0,i.uX)(),(0,i.CE)("div",{key:t.user_id,class:"user-list-item"},[(0,i.Lk)("div",J,[(0,i.bF)(l,{id:t.user_id,showFollow:!1},null,8,["id"])]),(0,i.Lk)("button",{class:(0,k.C4)(["list-action-btn",{"btn-cancel":t.is_following,"btn-follow":!t.is_following}]),onClick:e=>o.handleListFollowAction(t)},(0,k.v_)(t.is_following?"取消关注":"关注"),11,W)])))),128))]))]),n.listPagination.pages>1?((0,i.uX)(),(0,i.CE)("div",V,[(0,i.Lk)("button",{class:"page-btn",disabled:1===n.listPagination.current,onClick:e[7]||(e[7]=t=>o.changePage(n.listPagination.current-1))},"上一页",8,B),(0,i.Lk)("span",H,(0,k.v_)(n.listPagination.current)+" / "+(0,k.v_)(n.listPagination.pages),1),(0,i.Lk)("button",{class:"page-btn",disabled:n.listPagination.current===n.listPagination.pages,onClick:e[8]||(e[8]=t=>o.changePage(n.listPagination.current+1))},"下一页",8,G)])):(0,i.Q3)("",!0)])])):(0,i.Q3)("",!0)])}var Z=s(8704),tt=s(4993),et=s(4888),st={name:"UserInfo",components:{UserMeta:et.A},data(){return{userInfo:{id:"",nickname:"加载中...",verified:null,invited:null,medal:!1,avatar_path:"",email:"",sign:"",follower:0,following:0,coin:0},showListModal:!1,listMode:0,userList:[],listLoading:!1,listPagination:{current:1,total:0,pages:1}}},computed:{isCampusEmail(){if(!this.userInfo.email)return!1;const t=["@stu.neu.edu.cn","@stu.neuq.edu.cn","@mails.neu.edu.cn"];return t.some((t=>this.userInfo.email.endsWith(t)))}},created(){this.fetchUserInfo()},methods:{async fetchUserInfo(){try{const t=Z.A.get("token");if(!t)return void this.showMessage("未登录或登录已过期","error");const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/info",{method:"GET",headers:{Authorization:t}});if(!e.ok)throw new Error("获取用户信息失败");const s=await e.json();this.userInfo=s}catch(t){console.error("获取用户信息出错:",t),this.showMessage("获取用户信息失败","error")}},triggerFileInput(){this.$refs.fileInput.click()},async uploadAvatar(t){const e=t.target.files[0];if(!e)return void this.showMessage("请选择一个文件","error");if(e.size>1048576)return void this.showMessage("头像必须小于1MB","error");const s=Z.A.get("token");if(s)try{const t=new FormData;t.append("avatar",e);const i=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/upload",{method:"POST",headers:{Authorization:s},body:t});if(i.ok){const t=await i.json();this.userInfo.avatar_path=t.avatarUrl,this.showMessage("头像上传成功","success")}else 401===i.status||403===i.status?this.showMessage("权限错误,请重新登录后再试","error"):this.showMessage("上传失败,请稍后再试","error")}catch(i){console.error("头像上传错误:",i),this.showMessage("上传过程中发生错误","error")}else this.showMessage("请先登录,再上传头像","error")},async editNickname(){const t=Z.A.get("token");t?(0,tt.A)({title:"修改昵称",message:"请输入新的昵称:",showInput:!0,inputPlaceholder:"请输入新昵称",inputValue:this.userInfo.nickname,confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:e})=>{if(null!==e&&""!==e.trim())try{const s=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/edit-nickname",{method:"POST",headers:{"Content-Type":"application/json",Authorization:t},body:JSON.stringify({nickname:e.trim()})});if(s.ok){await s.json();this.userInfo.nickname=e.trim(),this.showMessage("昵称修改成功","success")}else{const t=await s.json();this.showMessage(`修改昵称失败:${t.message}`,"error")}}catch(s){console.error("修改昵称错误:",s),this.showMessage("发生错误,请稍后再试","error")}else this.showMessage("昵称不能为空","error")})).catch((()=>{})):this.showMessage("您尚未登录,请登录后再尝试修改昵称","error")},async editSign(){const t=Z.A.get("token");if(!t)return void this.showMessage("您尚未登录,请登录后再尝试修改签名","error");const e=this.userInfo.sign||"";(0,tt.A)({title:"修改个性签名",message:"请输入新的个性签名 (最多20个汉字,留空表示删除个性签名):",showInput:!0,inputValue:e,inputPlaceholder:"请输入个性签名",confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:e})=>{if(null!==e)try{const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/sign",{method:"POST",headers:{"Content-Type":"application/json",Authorization:t},body:JSON.stringify({sign:e.trim()})});if(s.ok)this.userInfo.sign=e.trim(),this.showMessage("个性签名修改成功","success");else{const t=await s.json();this.showMessage(`修改签名失败:${t.message}`,"error")}}catch(s){console.error("修改签名错误:",s),this.showMessage("发生错误,请稍后再试","error")}})).catch((()=>{}))},openList(t){this.listMode=t,this.showListModal=!0,this.fetchFollowList(1)},closeList(){this.showListModal=!1,this.userList=[]},async fetchFollowList(t=1){this.listLoading=!0;try{const e=Z.A.get("token");if(!e)return;const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/follow/get",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({mode:this.listMode,page_num:t})});if(s.ok){const t=await s.json();this.userList=t.list,this.listPagination.current=t.current_page,this.listPagination.total=t.total,this.listPagination.pages=t.total_pages}else this.showMessage("获取列表失败","error")}catch(e){console.error("获取列表错误:",e),this.showMessage("网络错误","error")}finally{this.listLoading=!1}},async handleListFollowAction(t){const e=t.is_following,s=t.user_id,i=Z.A.get("token");i?e?(0,tt.A)({title:"取消关注",message:"确定取消关注该用户吗?",confirmText:"确定",cancelText:"取消",cancel:!0}).then((async()=>{await this.executeFollowAction(s,!e)})).catch((()=>{})):await this.executeFollowAction(s,!e):this.showMessage("请先登录","error")},async executeFollowAction(t,e){const s=Z.A.get("token");try{const i=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/follow/do",{method:"POST",headers:{"Content-Type":"application/json",Authorization:s},body:JSON.stringify({user_id:t})});if(i.ok)this.showMessage(e?"关注成功":"取消关注成功","success"),this.fetchFollowList(this.listPagination.current),this.fetchUserInfo();else{const t=await i.json();this.showMessage(t.message||"操作失败","error")}}catch(i){console.error("操作错误:",i),this.showMessage("网络错误","error")}},changePage(t){t<1||t>this.listPagination.pages||this.fetchFollowList(t)},showMessage(t,e="success"){this.$barMessage({message:t,type:e})}}},it=s(1241);const at=(0,it.A)(st,[["render",Y],["__scopeId","data-v-a272fc5a"]]);var nt=at;const ot={class:"coin-container"},lt={key:0,class:"not-activated"},rt={class:"alert alert-warning policy-notification"},ct={key:1,class:"activated"},dt={class:"alert alert-warning policy-notification"},ut={class:"coin-info"},ht={class:"coin-amount"},gt={class:"transactions"},kt={key:0,class:"no-records"},pt={key:1,class:"transaction-table"},vt={key:2,class:"pagination"},mt=["disabled"],ft={class:"page-info"},yt=["disabled"];function Lt(t,e,s,a,n,o){return(0,i.uX)(),(0,i.CE)("div",ot,[n.isActivated?((0,i.uX)(),(0,i.CE)("div",ct,[(0,i.Lk)("div",dt,(0,k.v_)(n.policyNotification),1),(0,i.Lk)("div",ut,[(0,i.Lk)("h3",null,[e[3]||(e[3]=(0,i.eW)("您当前拥有 ")),(0,i.Lk)("span",ht,(0,k.v_)(n.coinAmount),1),e[4]||(e[4]=(0,i.eW)(" 枚东币"))])]),(0,i.Lk)("div",gt,[0===n.transactions.length?((0,i.uX)(),(0,i.CE)("div",kt," 暂无交易记录 ")):((0,i.uX)(),(0,i.CE)("table",pt,[e[5]||(e[5]=(0,i.Lk)("thead",null,[(0,i.Lk)("tr",null,[(0,i.Lk)("th",null,"时间"),(0,i.Lk)("th",null,"金额"),(0,i.Lk)("th",null,"备注")])],-1)),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.transactions,(t=>((0,i.uX)(),(0,i.CE)("tr",{key:t.id},[(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.created_at)),1),(0,i.Lk)("td",{class:(0,k.C4)({credit:"credit"===t.type,debit:"debit"===t.type})},(0,k.v_)("credit"===t.type?"+":"-")+(0,k.v_)(t.amount),3),(0,i.Lk)("td",null,(0,k.v_)(t.note),1)])))),128))])])),n.totalPages>1?((0,i.uX)(),(0,i.CE)("div",vt,[(0,i.Lk)("button",{disabled:1===n.currentPage,onClick:e[0]||(e[0]=t=>o.loadTransactions(n.currentPage-1)),class:"btn btn-sm btn-outline-primary"}," 上一页 ",8,mt),(0,i.Lk)("span",ft,(0,k.v_)(n.currentPage)+" / "+(0,k.v_)(n.totalPages),1),(0,i.Lk)("button",{disabled:n.currentPage===n.totalPages,onClick:e[1]||(e[1]=t=>o.loadTransactions(n.currentPage+1)),class:"btn btn-sm btn-outline-primary"}," 下一页 ",8,yt)])):(0,i.Q3)("",!0)])])):((0,i.uX)(),(0,i.CE)("div",lt,[(0,i.Lk)("div",rt,(0,k.v_)(n.policyNotification),1),e[2]||(e[2]=(0,i.Lk)("div",{class:"alert alert-info"},[(0,i.Lk)("p",null,"东币系统在账号完成校园验证后自动激活。")],-1))]))])}var bt={name:"CoinComponent",data(){return{isActivated:!1,coinAmount:0,transactions:[],currentPage:1,totalPages:1,policyNotification:"由于政策原因,短信验证码服务已于2025.4.13下线,后续东币系统将在校园验证通过后自动激活。之前已完成校园验证但未手动激活东币系统的用户,系统已为您自动激活东币系统。"}},created(){this.loadTransactions(1)},methods:{async loadTransactions(t){try{const e=Z.A.get("token");if(!e)return console.error("未找到登录token"),void(this.isActivated=!1);const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/coin/transactions",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({page_num:t})}),i=await s.json();if(s.ok)this.isActivated=!0,this.coinAmount=i.coinAmount,this.transactions=i.transactions,this.currentPage=i.current_page,this.totalPages=i.total_pages;else{if(403!==s.status||"用户未激活东币系统"!==i.message)throw new Error(i.message||"获取交易记录失败");this.isActivated=!1,this.coinAmount=0,this.transactions=[]}}catch(e){console.error("获取交易记录出错:",e),this.isActivated=!1}},formatDate(t){const e=new Date(t);return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${e.getHours()}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}}};const wt=(0,it.A)(bt,[["render",Lt],["__scopeId","data-v-2054fb20"]]);var Ct=wt,_t=s(5130);const At={class:"submission-container"},xt={class:"header"},Et={class:"header-buttons"},Pt={class:"modal-content key-management-modal"},Mt={class:"modal-header"},It={class:"modal-body"},$t={key:0,class:"key-table-wrapper"},St={class:"key-table"},Xt={class:"key-cell"},jt={class:"key-content"},Ft=["onClick"],Tt={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},Kt={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},zt={key:1,class:"loading-keys"},Ot={key:2,class:"empty-keys"},Dt={class:"modal-content exchange-key-modal"},Nt={class:"modal-header"},qt={class:"modal-body"},Qt={class:"form-group"},Ut={class:"form-group"},Rt={class:"form-actions"},Jt=["disabled"],Wt={class:"submission-table-wrapper"},Vt={key:0,class:"submission-table"},Bt={key:0},Ht=["onClick"],Gt={class:"title-cell"},Yt={key:0},Zt={key:1,class:"status-unknown"},te={class:"action-buttons"},ee=["onClick"],se=["onClick"],ie={key:1,class:"empty-state"},ae={key:2,class:"pagination"},ne=["disabled"],oe={class:"page-info"},le=["disabled"];function re(t,e,s,a,n,o){return(0,i.uX)(),(0,i.CE)("div",At,[(0,i.Lk)("div",xt,[e[12]||(e[12]=(0,i.Lk)("h3",{class:"title"},"我的投稿记录",-1)),(0,i.Lk)("div",Et,[(0,i.Lk)("button",{class:"key-manage-btn",onClick:e[0]||(e[0]=t=>n.showKeyManagement=!0)},"密钥管理"),(0,i.Lk)("button",{class:"manage-btn",onClick:e[1]||(e[1]=(...t)=>o.handleManage&&o.handleManage(...t))},"我要投稿")])]),n.showKeyManagement?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"modal-overlay",onClick:e[4]||(e[4]=(0,_t.D$)((t=>n.showKeyManagement=!1),["self"]))},[(0,i.Lk)("div",Pt,[(0,i.Lk)("div",Mt,[e[13]||(e[13]=(0,i.Lk)("h3",null,"密钥管理",-1)),(0,i.Lk)("button",{class:"close-btn",onClick:e[2]||(e[2]=t=>n.showKeyManagement=!1)},"×")]),(0,i.Lk)("div",It,[(0,i.Lk)("button",{class:"exchange-key-btn",onClick:e[3]||(e[3]=t=>n.showExchangeKey=!0)},"兑换密钥"),n.keyList.length>0?((0,i.uX)(),(0,i.CE)("div",$t,[(0,i.Lk)("table",St,[e[16]||(e[16]=(0,i.Lk)("thead",null,[(0,i.Lk)("tr",null,[(0,i.Lk)("th",null,"密钥"),(0,i.Lk)("th",null,"状态"),(0,i.Lk)("th",null,"创建时间"),(0,i.Lk)("th",null,"最后使用时间")])],-1)),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.keyList,((t,s)=>((0,i.uX)(),(0,i.CE)("tr",{key:s},[(0,i.Lk)("td",Xt,[(0,i.Lk)("div",jt,[(0,i.Lk)("span",null,(0,k.v_)(n.visibleKeyIndex===s?t.key_plaintext:"******"),1),(0,i.Lk)("button",{class:"toggle-visibility",onClick:t=>o.toggleKeyVisibility(s)},[n.visibleKeyIndex!==s?((0,i.uX)(),(0,i.CE)("svg",Tt,e[14]||(e[14]=[(0,i.Lk)("path",{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},null,-1),(0,i.Lk)("path",{d:"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"},null,-1)]))):((0,i.uX)(),(0,i.CE)("svg",Kt,e[15]||(e[15]=[(0,i.Lk)("path",{d:"M10.585 10.587a2 2 0 0 0 2.829 2.828"},null,-1),(0,i.Lk)("path",{d:"M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"},null,-1),(0,i.Lk)("path",{d:"M3 3l18 18"},null,-1)])))],8,Ft)])]),(0,i.Lk)("td",null,[(0,i.Lk)("span",{class:(0,k.C4)(t.is_valid?"status-valid":"status-invalid")},(0,k.v_)(t.is_valid?"有效":"无效"),3)]),(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.created_at)),1),(0,i.Lk)("td",null,(0,k.v_)(t.last_used_at?o.formatDate(t.last_used_at):"未使用"),1)])))),128))])])])):n.loadingKeyList?((0,i.uX)(),(0,i.CE)("div",zt," 加载中... ")):((0,i.uX)(),(0,i.CE)("div",Ot,e[17]||(e[17]=[(0,i.Lk)("p",null,"暂无密钥记录",-1)])))])])])):(0,i.Q3)("",!0),n.showExchangeKey?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"modal-overlay",onClick:e[9]||(e[9]=(0,_t.D$)((t=>n.showExchangeKey=!1),["self"]))},[(0,i.Lk)("div",Dt,[(0,i.Lk)("div",Nt,[e[18]||(e[18]=(0,i.Lk)("h3",null,"兑换密钥",-1)),(0,i.Lk)("button",{class:"close-btn",onClick:e[5]||(e[5]=t=>n.showExchangeKey=!1)},"×")]),(0,i.Lk)("div",qt,[(0,i.Lk)("div",Qt,[e[19]||(e[19]=(0,i.Lk)("label",{for:"invite-code"},"邀请码",-1)),(0,i.bo)((0,i.Lk)("input",{id:"invite-code","onUpdate:modelValue":e[6]||(e[6]=t=>n.exchangeForm.invite_code=t),type:"text",placeholder:"输入邀请码"},null,512),[[_t.Jo,n.exchangeForm.invite_code]])]),(0,i.Lk)("div",Ut,[e[20]||(e[20]=(0,i.Lk)("label",{for:"custom-key"},"自定义密钥",-1)),(0,i.bo)((0,i.Lk)("input",{id:"custom-key","onUpdate:modelValue":e[7]||(e[7]=t=>n.exchangeForm.key=t),type:"text",placeholder:"输入您的自定义密钥"},null,512),[[_t.Jo,n.exchangeForm.key]])]),(0,i.Lk)("div",Rt,[(0,i.Lk)("button",{class:"submit-btn",disabled:!n.exchangeForm.invite_code||!n.exchangeForm.key||n.submitting,onClick:e[8]||(e[8]=(...t)=>o.exchangeKey&&o.exchangeKey(...t))},(0,k.v_)(n.submitting?"处理中...":"确认兑换"),9,Jt)])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Wt,[n.submissions.length>0?((0,i.uX)(),(0,i.CE)("table",Vt,[(0,i.Lk)("thead",null,[(0,i.Lk)("tr",null,[e[21]||(e[21]=(0,i.Lk)("th",null,"标题",-1)),e[22]||(e[22]=(0,i.Lk)("th",null,"板块",-1)),e[23]||(e[23]=(0,i.Lk)("th",null,"审核状态",-1)),n.setPrivate?((0,i.uX)(),(0,i.CE)("th",Bt,"文章权限")):(0,i.Q3)("",!0),e[24]||(e[24]=(0,i.Lk)("th",null,"审核备注",-1)),e[25]||(e[25]=(0,i.Lk)("th",null,"投稿时间",-1)),e[26]||(e[26]=(0,i.Lk)("th",null,"状态更新时间",-1)),e[27]||(e[27]=(0,i.Lk)("th",null,"操作",-1))])]),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.submissions,(t=>((0,i.uX)(),(0,i.CE)("tr",{key:t.id,class:(0,k.C4)({clickable:t.article_id}),onClick:e=>t.article_id&&o.navigateToArticle(t.article_id)},[(0,i.Lk)("td",Gt,(0,k.v_)(t.title),1),(0,i.Lk)("td",null,(0,k.v_)(t.section),1),(0,i.Lk)("td",null,[(0,i.Lk)("span",{class:(0,k.C4)(o.getStatusClass(t.status))},(0,k.v_)(t.status),3)]),n.setPrivate?((0,i.uX)(),(0,i.CE)("td",Yt,["已通过"===t.status&&t.hasOwnProperty("is_public")?((0,i.uX)(),(0,i.CE)("span",{key:0,class:(0,k.C4)(t.is_public?"status-public":"status-private")},(0,k.v_)(t.is_public?"公开":"私密"),3)):((0,i.uX)(),(0,i.CE)("span",Zt,"-"))])):(0,i.Q3)("",!0),(0,i.Lk)("td",null,(0,k.v_)(t.note||"无"),1),(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.created_at)),1),(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.updated_at)),1),(0,i.Lk)("td",null,[(0,i.Lk)("div",te,["已通过"===t.status&&t.article_id&&t.owner?((0,i.uX)(),(0,i.CE)("button",{key:0,class:"edit-btn",onClick:(0,_t.D$)((e=>o.navigateToEdit(t.article_id)),["stop"])}," 编辑 ",8,ee)):(0,i.Q3)("",!0),n.setPrivate&&"已通过"===t.status&&t.article_id&&t.owner&&t.hasOwnProperty("is_public")?((0,i.uX)(),(0,i.CE)("button",{key:1,class:(0,k.C4)(t.is_public?"private-btn":"public-btn"),onClick:(0,_t.D$)((e=>o.toggleArticleAccess(t)),["stop"])},(0,k.v_)(t.is_public?"设为私密":"设为公开"),11,se)):(0,i.Q3)("",!0)])])],10,Ht)))),128))])])):((0,i.uX)(),(0,i.CE)("div",ie,e[28]||(e[28]=[(0,i.Lk)("p",null,"暂无投稿记录",-1)]))),n.totalPages>1?((0,i.uX)(),(0,i.CE)("div",ae,[(0,i.Lk)("button",{disabled:1===n.currentPage,onClick:e[10]||(e[10]=t=>o.loadSubmissions(n.currentPage-1)),class:"page-btn"}," 上一页 ",8,ne),(0,i.Lk)("span",oe,(0,k.v_)(n.currentPage)+" / "+(0,k.v_)(n.totalPages),1),(0,i.Lk)("button",{disabled:n.currentPage===n.totalPages,onClick:e[11]||(e[11]=t=>o.loadSubmissions(n.currentPage+1)),class:"page-btn"}," 下一页 ",8,le)])):(0,i.Q3)("",!0)])])}var ce={name:"SubmissionList",data(){return{submissions:[],currentPage:1,totalPages:1,totalSubmissions:0,loading:!1,setPrivate:!1,inRank:!0,updatingRank:!1,loadingKeyList:!1,showKeyManagement:!1,showExchangeKey:!1,keyList:[],visibleKeyIndex:-1,exchangeForm:{invite_code:"",key:""},submitting:!1}},created(){this.loadSubmissions(1)},methods:{async loadSubmissions(t){this.loading=!0;try{const e=Z.A.get("token");if(!e)return void console.error("未找到登录token");const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/submission",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({page_num:t})});if(!s.ok)throw new Error("获取投稿记录失败");const i=await s.json();this.submissions=i.submissions,this.currentPage=i.current_page,this.totalPages=i.total_pages,this.totalSubmissions=i.total_submissions,this.setPrivate=i.set_private||!1,i.hasOwnProperty("in_rank")&&(this.inRank=i.in_rank)}catch(e){console.error("获取投稿记录出错:",e)}finally{this.loading=!1}},async updateRankingStatus(){const t=new Date,e=new Date(t);e.setHours(t.getHours()+1);const s=`${e.getHours()}:00`,i=this.inRank,a=i?`您确认参与投稿排行榜吗?如确认,榜单将在下次更新时(${s})显示您。`:`您确认退出投稿排行榜吗?如确认,榜单将在下次更新时(${s})不再显示您。`;try{await tt.A.confirm(a,"提示"),this.updatingRank=!0;const t=Z.A.get("token");if(!t)return tt.A.alert("未找到登录token","错误"),void(this.inRank=!this.inRank);const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/ranking/in",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({in:this.inRank})});if(!e.ok)throw new Error("更新设置失败");await e.json();const s=i?"参与":"退出";this.$barMessage.success(`您已成功${s}投稿排行榜!`)}catch(n){if(this.inRank=!this.inRank,"cancel"===n||n&&"cancel"===n.action)return;console.error("更新排行榜设置失败:",n),tt.A.alert("更新设置失败,请稍后重试","错误")}finally{this.updatingRank=!1}},handleManage(){console.log("点击了作品管理按钮"),this.$emit("manage-works")},navigateToArticle(t){this.$router.push(`/article/${t}`)},navigateToEdit(t){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?tt.A.confirm("建议在电脑端进行编辑以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push(`/edit?article=${t}`)})).catch((()=>{console.log("用户取消了在移动端编辑")})):this.$router.push(`/edit?article=${t}`)},formatDate(t){if(!t)return"未知";const e=new Date(t);return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${e.getHours()}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`},getStatusClass(t){switch(t){case"已通过":return"status-approved";case"审核中":return"status-pending";case"未通过":return"status-rejected";default:return""}},async loadKeyList(){this.loadingKeyList=!0;try{const t=Z.A.get("token");if(!t)return void console.error("未找到登录token");const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/getcode",{method:"GET",headers:{Authorization:t,"Content-Type":"application/json"}});if(!e.ok)throw new Error("获取密钥列表失败");const s=await e.json();if(!s.success)throw new Error(s.message||"获取密钥列表失败");this.keyList=s.data||[]}catch(t){console.error("获取密钥列表出错:",t),tt.A.alert(t.message||"获取密钥列表失败,请稍后再试","错误")}finally{this.loadingKeyList=!1}},toggleKeyVisibility(t){this.visibleKeyIndex===t?this.visibleKeyIndex=-1:this.visibleKeyIndex=t},async exchangeKey(){if(this.exchangeForm.invite_code&&this.exchangeForm.key){this.submitting=!0;try{const t=Z.A.get("token");if(!t)return void console.error("未找到登录token");const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/setcode",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify(this.exchangeForm)}),s=await e.json();if(!s.success)throw new Error(s.message||"密钥兑换失败");tt.A.alert("密钥兑换成功","提示"),this.showExchangeKey=!1,this.exchangeForm.invite_code="",this.exchangeForm.key="",this.loadKeyList()}catch(t){console.error("密钥兑换出错:",t),tt.A.alert(t.message||"密钥兑换失败,请稍后再试","错误")}finally{this.submitting=!1}}else tt.A.alert("请输入邀请码和密钥","提示")},async toggleArticleAccess(t){if(!t.article_id)return void tt.A.alert("无效的文章ID","错误");const e=t.is_public?"设为私密":"设为公开";try{await tt.A.confirm(`确认要将文章《${t.title}》${e}吗?`,"确认操作");const s=Z.A.get("token");if(!s)return void tt.A.alert("请先登录","提示");const i=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/access",{method:"POST",headers:{Authorization:s,"Content-Type":"application/json"},body:JSON.stringify({article_id:t.article_id})});if(!i.ok){const t=await i.json().catch((()=>({})));throw new Error(t.message||"操作失败")}const a=await i.json();t.is_public=a.is_public,this.$barMessage.success(a.message||"操作成功")}catch(s){if("cancel"===s.action)return;console.error("切换文章访问权限失败:",s),this.$barMessage.error(s.message||"操作失败,请稍后再试")}}},watch:{showKeyManagement(t){t?this.loadKeyList():this.visibleKeyIndex=-1}}};const de=(0,it.A)(ce,[["render",re],["__scopeId","data-v-4721a9ca"]]);var ue=de,he=s(8630),ge={name:"UserCenter",components:{Navbar:g.A,UserInfo:nt,Coin:Ct,SubmissionList:ue},data(){return{isAuthenticated:!1,isLoading:!0}},created(){document.title="个人中心 - NEU小站"},mounted(){this.checkAuthAndFetchUserInfo()},methods:{async checkAuthAndFetchUserInfo(){const t=Z.A.get("token");if(!t)return this.isLoading=!1,"/user-center"===this.$route.path?void this.$router.replace("/login"):void("/login"===this.$route.path&&this.showLoginDialog());try{const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/islogin",{method:"GET",headers:{Authorization:t}});if(!e.ok)throw new Error("Token 验证失败");const s=await e.json();if(!s||!s.isLoggedIn)throw new Error("Token 验证成功但返回状态不正确");this.isAuthenticated=!0,this.isLoading=!1,"/login"===this.$route.path&&this.$router.replace("/user-center")}catch(e){if(console.error("获取用户信息出错:",e),this.isLoading=!1,Z.A.remove("token"),"/user-center"===this.$route.path)return void this.$router.replace("/login");"/login"===this.$route.path&&this.showLoginDialog()}},showLoginDialog(){(0,he.A)().then((t=>{console.log("登录成功:",t),this.isAuthenticated=!0,this.$router.replace("/user-center")})).catch((t=>{console.log("登录取消:",t)}))},handleManageWorks(){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;t?tt.A.confirm("建议在电脑端进行投稿以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push("/submit")})).catch((()=>{console.log("用户取消了在移动端投稿")})):this.$router.push("/submit")}}};const ke=(0,it.A)(ge,[["render",h],["__scopeId","data-v-c5320252"]]);var pe=ke}}]); -//# sourceMappingURL=395.dfa3bbfe.js.map \ No newline at end of file +"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[395],{9395:function(t,e,s){s.r(e),s.d(e,{default:function(){return pe}});var i=s(6768);const a={class:"user-center"},n={key:0,class:"loading-container"},o={key:1,class:"container"},l={class:"upper-section"},r={class:"user-info-container"},c={class:"coin-container"},d={class:"lower-section"},u={key:2,class:"login-required-container"};function h(t,e,s,h,g,k){const p=(0,i.g2)("Navbar"),v=(0,i.g2)("UserInfo"),m=(0,i.g2)("Coin"),f=(0,i.g2)("SubmissionList");return(0,i.uX)(),(0,i.CE)("div",a,[(0,i.bF)(p),g.isLoading?((0,i.uX)(),(0,i.CE)("div",n,e[0]||(e[0]=[(0,i.Lk)("div",{class:"loading-spinner"},"加载中...",-1)]))):g.isAuthenticated?((0,i.uX)(),(0,i.CE)("div",o,[(0,i.Lk)("div",l,[(0,i.Lk)("div",r,[(0,i.bF)(v,{ref:"userInfo"},null,512)]),(0,i.Lk)("div",c,[(0,i.bF)(m,{ref:"coin"},null,512)])]),(0,i.Lk)("div",d,[(0,i.bF)(f,{onManageWorks:k.handleManageWorks},null,8,["onManageWorks"])])])):((0,i.uX)(),(0,i.CE)("div",u,e[1]||(e[1]=[(0,i.Lk)("div",{class:"login-required-message"},[(0,i.Lk)("h2",null,"请先登录!"),(0,i.Lk)("p",null,"您需要登录后才能访问个人中心")],-1)])))])}s(4114);var g=s(3645),k=s(4232);const p={class:"user-info-card"},v={class:"card-container"},m={class:"detail-header"},f={class:"avatar-wrapper"},y=["src"],L={class:"detail-right"},b={class:"detail-name-container"},w={class:"detail-name"},C={key:0,src:"https://download.xn--xhq44jb2fzpc.com/images/vip_g3.svg",class:"vip-badge",alt:"VIP",title:"VIP用户"},_={class:"user-badges"},A=["title"],x=["title"],E={key:2,class:"badge medal"},P={class:"user-sign-container"},M={class:"user-sign"},I={class:"sign-text"},$={class:"user-email"},S={class:"email-text"},X={key:0,class:"badge campus-email"},j={class:"user-stats"},F={class:"stat-value"},T={class:"stat-value"},K={class:"stat-item"},z={class:"stat-value"},O={key:0,class:"modal-overlay"},D={class:"modal-content"},N={class:"modal-header"},q={class:"modal-body"},Q={key:0,class:"loading-state"},U={key:1,class:"empty-state"},R={key:2,class:"user-list"},J={class:"user-meta-wrapper"},W=["onClick"],V={key:0,class:"modal-footer"},B=["disabled"],H={class:"page-info"},G=["disabled"];function Y(t,e,s,a,n,o){const l=(0,i.g2)("UserMeta");return(0,i.uX)(),(0,i.CE)("div",p,[(0,i.Lk)("div",v,[(0,i.Lk)("div",m,[e[11]||(e[11]=(0,i.Lk)("div",{class:"header-bg"},null,-1)),(0,i.Lk)("div",f,[(0,i.Lk)("img",{src:n.userInfo.avatar_path,alt:"用户头像",class:"detail-avatar"},null,8,y),(0,i.Lk)("div",{class:"avatar-edit-overlay",onClick:e[0]||(e[0]=(...t)=>o.triggerFileInput&&o.triggerFileInput(...t))},e[9]||(e[9]=[(0,i.Lk)("i",{class:"edit-icon"},"📷",-1)])),(0,i.Lk)("input",{type:"file",ref:"fileInput",style:{display:"none"},accept:"image/*",onChange:e[1]||(e[1]=(...t)=>o.uploadAvatar&&o.uploadAvatar(...t))},null,544)]),(0,i.Lk)("div",L,[(0,i.Lk)("div",b,[(0,i.Lk)("div",w,[(0,i.eW)((0,k.v_)(n.userInfo.nickname)+" ",1),n.userInfo.is_vip?((0,i.uX)(),(0,i.CE)("img",C)):(0,i.Q3)("",!0)]),(0,i.Lk)("button",{class:"edit-btn",onClick:e[2]||(e[2]=(...t)=>o.editNickname&&o.editNickname(...t)),title:"修改昵称"},e[10]||(e[10]=[(0,i.Lk)("i",{class:"edit-icon"},"✏️",-1)]))]),(0,i.Lk)("div",_,[n.userInfo.verified?((0,i.uX)(),(0,i.CE)("span",{key:0,class:"badge verified",title:n.userInfo.verified},"认证",8,A)):(0,i.Q3)("",!0),n.userInfo.invited?((0,i.uX)(),(0,i.CE)("span",{key:1,class:"badge invited",title:n.userInfo.invited},"特邀",8,x)):(0,i.Q3)("",!0),n.userInfo.medal?((0,i.uX)(),(0,i.CE)("span",E,"小站奖章")):(0,i.Q3)("",!0)])])]),(0,i.Lk)("div",P,[(0,i.Lk)("div",M,[e[13]||(e[13]=(0,i.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,i.Lk)("div",I,(0,k.v_)(n.userInfo.sign||"这个人很懒,还没有写个性签名~"),1),(0,i.Lk)("button",{class:"edit-btn",onClick:e[3]||(e[3]=(...t)=>o.editSign&&o.editSign(...t)),title:"修改签名"},e[12]||(e[12]=[(0,i.Lk)("i",{class:"edit-icon"},"✏️",-1)]))])]),(0,i.Lk)("div",$,[e[14]||(e[14]=(0,i.Lk)("div",{class:"email-icon"},"📧",-1)),(0,i.Lk)("div",S,(0,k.v_)(n.userInfo.email),1),o.isCampusEmail?((0,i.uX)(),(0,i.CE)("span",X,"校园邮箱")):(0,i.Q3)("",!0)]),(0,i.Lk)("div",j,[(0,i.Lk)("div",{class:"stat-item clickable",onClick:e[4]||(e[4]=t=>o.openList(1))},[(0,i.Lk)("div",F,(0,k.v_)(n.userInfo.follower||0),1),e[15]||(e[15]=(0,i.Lk)("div",{class:"stat-label"},"粉丝",-1))]),e[18]||(e[18]=(0,i.Lk)("div",{class:"stat-separator"},null,-1)),(0,i.Lk)("div",{class:"stat-item clickable",onClick:e[5]||(e[5]=t=>o.openList(0))},[(0,i.Lk)("div",T,(0,k.v_)(n.userInfo.following||0),1),e[16]||(e[16]=(0,i.Lk)("div",{class:"stat-label"},"关注",-1))]),e[19]||(e[19]=(0,i.Lk)("div",{class:"stat-separator"},null,-1)),(0,i.Lk)("div",K,[(0,i.Lk)("div",z,(0,k.v_)(n.userInfo.coin||"未激活"),1),e[17]||(e[17]=(0,i.Lk)("div",{class:"stat-label"},"东币",-1))])])]),n.showListModal?((0,i.uX)(),(0,i.CE)("div",O,[(0,i.Lk)("div",D,[(0,i.Lk)("div",N,[(0,i.Lk)("h3",null,(0,k.v_)(0===n.listMode?"我的关注":"我的粉丝"),1),(0,i.Lk)("button",{class:"close-modal-btn",onClick:e[6]||(e[6]=(...t)=>o.closeList&&o.closeList(...t))},"×")]),(0,i.Lk)("div",q,[n.listLoading?((0,i.uX)(),(0,i.CE)("div",Q,"加载中...")):0===n.userList.length?((0,i.uX)(),(0,i.CE)("div",U,"暂无数据")):((0,i.uX)(),(0,i.CE)("div",R,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.userList,(t=>((0,i.uX)(),(0,i.CE)("div",{key:t.user_id,class:"user-list-item"},[(0,i.Lk)("div",J,[(0,i.bF)(l,{id:t.user_id,showFollow:!1},null,8,["id"])]),(0,i.Lk)("button",{class:(0,k.C4)(["list-action-btn",{"btn-cancel":t.is_following,"btn-follow":!t.is_following}]),onClick:e=>o.handleListFollowAction(t)},(0,k.v_)(t.is_following?"取消关注":"关注"),11,W)])))),128))]))]),n.listPagination.pages>1?((0,i.uX)(),(0,i.CE)("div",V,[(0,i.Lk)("button",{class:"page-btn",disabled:1===n.listPagination.current,onClick:e[7]||(e[7]=t=>o.changePage(n.listPagination.current-1))},"上一页",8,B),(0,i.Lk)("span",H,(0,k.v_)(n.listPagination.current)+" / "+(0,k.v_)(n.listPagination.pages),1),(0,i.Lk)("button",{class:"page-btn",disabled:n.listPagination.current===n.listPagination.pages,onClick:e[8]||(e[8]=t=>o.changePage(n.listPagination.current+1))},"下一页",8,G)])):(0,i.Q3)("",!0)])])):(0,i.Q3)("",!0)])}var Z=s(8704),tt=s(4993),et=s(4888),st={name:"UserInfo",components:{UserMeta:et.A},data(){return{userInfo:{id:"",nickname:"加载中...",verified:null,invited:null,medal:!1,avatar_path:"",email:"",sign:"",follower:0,following:0,coin:0},showListModal:!1,listMode:0,userList:[],listLoading:!1,listPagination:{current:1,total:0,pages:1}}},computed:{isCampusEmail(){if(!this.userInfo.email)return!1;const t=["@stu.neu.edu.cn","@stu.neuq.edu.cn","@mails.neu.edu.cn"];return t.some((t=>this.userInfo.email.endsWith(t)))}},created(){this.fetchUserInfo()},methods:{async fetchUserInfo(){try{const t=Z.A.get("token");if(!t)return void this.showMessage("未登录或登录已过期","error");const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/info",{method:"GET",headers:{Authorization:t}});if(!e.ok)throw new Error("获取用户信息失败");const s=await e.json();this.userInfo=s}catch(t){console.error("获取用户信息出错:",t),this.showMessage("获取用户信息失败","error")}},triggerFileInput(){this.$refs.fileInput.click()},async uploadAvatar(t){const e=t.target.files[0];if(!e)return void this.showMessage("请选择一个文件","error");if(e.size>1048576)return void this.showMessage("头像必须小于1MB","error");const s=Z.A.get("token");if(s)try{const t=new FormData;t.append("avatar",e);const i=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/upload",{method:"POST",headers:{Authorization:s},body:t});if(i.ok){const t=await i.json();this.userInfo.avatar_path=t.avatarUrl,this.showMessage("头像上传成功","success")}else 401===i.status||403===i.status?this.showMessage("权限错误,请重新登录后再试","error"):this.showMessage("上传失败,请稍后再试","error")}catch(i){console.error("头像上传错误:",i),this.showMessage("上传过程中发生错误","error")}else this.showMessage("请先登录,再上传头像","error")},async editNickname(){const t=Z.A.get("token");t?(0,tt.A)({title:"修改昵称",message:"请输入新的昵称:",showInput:!0,inputPlaceholder:"请输入新昵称",inputValue:this.userInfo.nickname,confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:e})=>{if(null!==e&&""!==e.trim())try{const s=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/edit-nickname",{method:"POST",headers:{"Content-Type":"application/json",Authorization:t},body:JSON.stringify({nickname:e.trim()})});if(s.ok){await s.json();this.userInfo.nickname=e.trim(),this.showMessage("昵称修改成功","success")}else{const t=await s.json();this.showMessage(`修改昵称失败:${t.message}`,"error")}}catch(s){console.error("修改昵称错误:",s),this.showMessage("发生错误,请稍后再试","error")}else this.showMessage("昵称不能为空","error")})).catch((()=>{})):this.showMessage("您尚未登录,请登录后再尝试修改昵称","error")},async editSign(){const t=Z.A.get("token");if(!t)return void this.showMessage("您尚未登录,请登录后再尝试修改签名","error");const e=this.userInfo.sign||"";(0,tt.A)({title:"修改个性签名",message:"请输入新的个性签名 (最多20个汉字,留空表示删除个性签名):",showInput:!0,inputValue:e,inputPlaceholder:"请输入个性签名",confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:e})=>{if(null!==e)try{const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/sign",{method:"POST",headers:{"Content-Type":"application/json",Authorization:t},body:JSON.stringify({sign:e.trim()})});if(s.ok)this.userInfo.sign=e.trim(),this.showMessage("个性签名修改成功","success");else{const t=await s.json();this.showMessage(`修改签名失败:${t.message}`,"error")}}catch(s){console.error("修改签名错误:",s),this.showMessage("发生错误,请稍后再试","error")}})).catch((()=>{}))},openList(t){this.listMode=t,this.showListModal=!0,this.fetchFollowList(1)},closeList(){this.showListModal=!1,this.userList=[]},async fetchFollowList(t=1){this.listLoading=!0;try{const e=Z.A.get("token");if(!e)return;const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/follow/get",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({mode:this.listMode,page_num:t})});if(s.ok){const t=await s.json();this.userList=t.list,this.listPagination.current=t.current_page,this.listPagination.total=t.total,this.listPagination.pages=t.total_pages}else this.showMessage("获取列表失败","error")}catch(e){console.error("获取列表错误:",e),this.showMessage("网络错误","error")}finally{this.listLoading=!1}},async handleListFollowAction(t){const e=t.is_following,s=t.user_id,i=Z.A.get("token");i?e?(0,tt.A)({title:"取消关注",message:"确定取消关注该用户吗?",confirmText:"确定",cancelText:"取消",cancel:!0}).then((async()=>{await this.executeFollowAction(s,!e)})).catch((()=>{})):await this.executeFollowAction(s,!e):this.showMessage("请先登录","error")},async executeFollowAction(t,e){const s=Z.A.get("token");try{const i=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/follow/do",{method:"POST",headers:{"Content-Type":"application/json",Authorization:s},body:JSON.stringify({user_id:t})});if(i.ok)this.showMessage(e?"关注成功":"取消关注成功","success"),this.fetchFollowList(this.listPagination.current),this.fetchUserInfo();else{const t=await i.json();this.showMessage(t.message||"操作失败","error")}}catch(i){console.error("操作错误:",i),this.showMessage("网络错误","error")}},changePage(t){t<1||t>this.listPagination.pages||this.fetchFollowList(t)},showMessage(t,e="success"){this.$barMessage({message:t,type:e})}}},it=s(1241);const at=(0,it.A)(st,[["render",Y],["__scopeId","data-v-a272fc5a"]]);var nt=at;const ot={class:"coin-container"},lt={key:0,class:"not-activated"},rt={class:"alert alert-warning policy-notification"},ct={key:1,class:"activated"},dt={class:"alert alert-warning policy-notification"},ut={class:"coin-info"},ht={class:"coin-amount"},gt={class:"transactions"},kt={key:0,class:"no-records"},pt={key:1,class:"transaction-table"},vt={key:2,class:"pagination"},mt=["disabled"],ft={class:"page-info"},yt=["disabled"];function Lt(t,e,s,a,n,o){return(0,i.uX)(),(0,i.CE)("div",ot,[n.isActivated?((0,i.uX)(),(0,i.CE)("div",ct,[(0,i.Lk)("div",dt,(0,k.v_)(n.policyNotification),1),(0,i.Lk)("div",ut,[(0,i.Lk)("h3",null,[e[3]||(e[3]=(0,i.eW)("您当前拥有 ")),(0,i.Lk)("span",ht,(0,k.v_)(n.coinAmount),1),e[4]||(e[4]=(0,i.eW)(" 枚东币"))])]),(0,i.Lk)("div",gt,[0===n.transactions.length?((0,i.uX)(),(0,i.CE)("div",kt," 暂无交易记录 ")):((0,i.uX)(),(0,i.CE)("table",pt,[e[5]||(e[5]=(0,i.Lk)("thead",null,[(0,i.Lk)("tr",null,[(0,i.Lk)("th",null,"时间"),(0,i.Lk)("th",null,"金额"),(0,i.Lk)("th",null,"备注")])],-1)),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.transactions,(t=>((0,i.uX)(),(0,i.CE)("tr",{key:t.id},[(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.created_at)),1),(0,i.Lk)("td",{class:(0,k.C4)({credit:"credit"===t.type,debit:"debit"===t.type})},(0,k.v_)("credit"===t.type?"+":"-")+(0,k.v_)(t.amount),3),(0,i.Lk)("td",null,(0,k.v_)(t.note),1)])))),128))])])),n.totalPages>1?((0,i.uX)(),(0,i.CE)("div",vt,[(0,i.Lk)("button",{disabled:1===n.currentPage,onClick:e[0]||(e[0]=t=>o.loadTransactions(n.currentPage-1)),class:"btn btn-sm btn-outline-primary"}," 上一页 ",8,mt),(0,i.Lk)("span",ft,(0,k.v_)(n.currentPage)+" / "+(0,k.v_)(n.totalPages),1),(0,i.Lk)("button",{disabled:n.currentPage===n.totalPages,onClick:e[1]||(e[1]=t=>o.loadTransactions(n.currentPage+1)),class:"btn btn-sm btn-outline-primary"}," 下一页 ",8,yt)])):(0,i.Q3)("",!0)])])):((0,i.uX)(),(0,i.CE)("div",lt,[(0,i.Lk)("div",rt,(0,k.v_)(n.policyNotification),1),e[2]||(e[2]=(0,i.Lk)("div",{class:"alert alert-info"},[(0,i.Lk)("p",null,"东币系统在账号完成校园验证后自动激活。")],-1))]))])}var bt={name:"CoinComponent",data(){return{isActivated:!1,coinAmount:0,transactions:[],currentPage:1,totalPages:1,policyNotification:"由于政策原因,短信验证码服务已于2025.4.13下线,后续东币系统将在校园验证通过后自动激活。之前已完成校园验证但未手动激活东币系统的用户,系统已为您自动激活东币系统。"}},created(){this.loadTransactions(1)},methods:{async loadTransactions(t){try{const e=Z.A.get("token");if(!e)return console.error("未找到登录token"),void(this.isActivated=!1);const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/coin/transactions",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({page_num:t})}),i=await s.json();if(s.ok)this.isActivated=!0,this.coinAmount=i.coinAmount,this.transactions=i.transactions,this.currentPage=i.current_page,this.totalPages=i.total_pages;else{if(403!==s.status||"用户未激活东币系统"!==i.message)throw new Error(i.message||"获取交易记录失败");this.isActivated=!1,this.coinAmount=0,this.transactions=[]}}catch(e){console.error("获取交易记录出错:",e),this.isActivated=!1}},formatDate(t){const e=new Date(t);return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${e.getHours()}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}}};const wt=(0,it.A)(bt,[["render",Lt],["__scopeId","data-v-2054fb20"]]);var Ct=wt,_t=s(5130);const At={class:"submission-container"},xt={class:"header"},Et={class:"header-buttons"},Pt={class:"modal-content key-management-modal"},Mt={class:"modal-header"},It={class:"modal-body"},$t={key:0,class:"key-table-wrapper"},St={class:"key-table"},Xt={class:"key-cell"},jt={class:"key-content"},Ft=["onClick"],Tt={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},Kt={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},zt={key:1,class:"loading-keys"},Ot={key:2,class:"empty-keys"},Dt={class:"modal-content exchange-key-modal"},Nt={class:"modal-header"},qt={class:"modal-body"},Qt={class:"form-group"},Ut={class:"form-group"},Rt={class:"form-actions"},Jt=["disabled"],Wt={class:"submission-table-wrapper"},Vt={key:0,class:"submission-table"},Bt={key:0},Ht=["onClick"],Gt={class:"title-cell"},Yt={key:0},Zt={key:1,class:"status-unknown"},te={class:"action-buttons"},ee=["onClick"],se=["onClick"],ie={key:1,class:"empty-state"},ae={key:2,class:"pagination"},ne=["disabled"],oe={class:"page-info"},le=["disabled"];function re(t,e,s,a,n,o){return(0,i.uX)(),(0,i.CE)("div",At,[(0,i.Lk)("div",xt,[e[12]||(e[12]=(0,i.Lk)("h3",{class:"title"},"我的投稿记录",-1)),(0,i.Lk)("div",Et,[(0,i.Lk)("button",{class:"key-manage-btn",onClick:e[0]||(e[0]=t=>n.showKeyManagement=!0)},"密钥管理"),(0,i.Lk)("button",{class:"manage-btn",onClick:e[1]||(e[1]=(...t)=>o.handleManage&&o.handleManage(...t))},"我要投稿")])]),n.showKeyManagement?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"modal-overlay",onClick:e[4]||(e[4]=(0,_t.D$)((t=>n.showKeyManagement=!1),["self"]))},[(0,i.Lk)("div",Pt,[(0,i.Lk)("div",Mt,[e[13]||(e[13]=(0,i.Lk)("h3",null,"密钥管理",-1)),(0,i.Lk)("button",{class:"close-btn",onClick:e[2]||(e[2]=t=>n.showKeyManagement=!1)},"×")]),(0,i.Lk)("div",It,[(0,i.Lk)("button",{class:"exchange-key-btn",onClick:e[3]||(e[3]=t=>n.showExchangeKey=!0)},"兑换密钥"),n.keyList.length>0?((0,i.uX)(),(0,i.CE)("div",$t,[(0,i.Lk)("table",St,[e[16]||(e[16]=(0,i.Lk)("thead",null,[(0,i.Lk)("tr",null,[(0,i.Lk)("th",null,"密钥"),(0,i.Lk)("th",null,"状态"),(0,i.Lk)("th",null,"创建时间"),(0,i.Lk)("th",null,"最后使用时间")])],-1)),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.keyList,((t,s)=>((0,i.uX)(),(0,i.CE)("tr",{key:s},[(0,i.Lk)("td",Xt,[(0,i.Lk)("div",jt,[(0,i.Lk)("span",null,(0,k.v_)(n.visibleKeyIndex===s?t.key_plaintext:"******"),1),(0,i.Lk)("button",{class:"toggle-visibility",onClick:t=>o.toggleKeyVisibility(s)},[n.visibleKeyIndex!==s?((0,i.uX)(),(0,i.CE)("svg",Tt,e[14]||(e[14]=[(0,i.Lk)("path",{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},null,-1),(0,i.Lk)("path",{d:"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"},null,-1)]))):((0,i.uX)(),(0,i.CE)("svg",Kt,e[15]||(e[15]=[(0,i.Lk)("path",{d:"M10.585 10.587a2 2 0 0 0 2.829 2.828"},null,-1),(0,i.Lk)("path",{d:"M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"},null,-1),(0,i.Lk)("path",{d:"M3 3l18 18"},null,-1)])))],8,Ft)])]),(0,i.Lk)("td",null,[(0,i.Lk)("span",{class:(0,k.C4)(t.is_valid?"status-valid":"status-invalid")},(0,k.v_)(t.is_valid?"有效":"无效"),3)]),(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.created_at)),1),(0,i.Lk)("td",null,(0,k.v_)(t.last_used_at?o.formatDate(t.last_used_at):"未使用"),1)])))),128))])])])):n.loadingKeyList?((0,i.uX)(),(0,i.CE)("div",zt," 加载中... ")):((0,i.uX)(),(0,i.CE)("div",Ot,e[17]||(e[17]=[(0,i.Lk)("p",null,"暂无密钥记录",-1)])))])])])):(0,i.Q3)("",!0),n.showExchangeKey?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"modal-overlay",onClick:e[9]||(e[9]=(0,_t.D$)((t=>n.showExchangeKey=!1),["self"]))},[(0,i.Lk)("div",Dt,[(0,i.Lk)("div",Nt,[e[18]||(e[18]=(0,i.Lk)("h3",null,"兑换密钥",-1)),(0,i.Lk)("button",{class:"close-btn",onClick:e[5]||(e[5]=t=>n.showExchangeKey=!1)},"×")]),(0,i.Lk)("div",qt,[(0,i.Lk)("div",Qt,[e[19]||(e[19]=(0,i.Lk)("label",{for:"invite-code"},"邀请码",-1)),(0,i.bo)((0,i.Lk)("input",{id:"invite-code","onUpdate:modelValue":e[6]||(e[6]=t=>n.exchangeForm.invite_code=t),type:"text",placeholder:"输入邀请码"},null,512),[[_t.Jo,n.exchangeForm.invite_code]])]),(0,i.Lk)("div",Ut,[e[20]||(e[20]=(0,i.Lk)("label",{for:"custom-key"},"自定义密钥",-1)),(0,i.bo)((0,i.Lk)("input",{id:"custom-key","onUpdate:modelValue":e[7]||(e[7]=t=>n.exchangeForm.key=t),type:"text",placeholder:"输入您的自定义密钥"},null,512),[[_t.Jo,n.exchangeForm.key]])]),(0,i.Lk)("div",Rt,[(0,i.Lk)("button",{class:"submit-btn",disabled:!n.exchangeForm.invite_code||!n.exchangeForm.key||n.submitting,onClick:e[8]||(e[8]=(...t)=>o.exchangeKey&&o.exchangeKey(...t))},(0,k.v_)(n.submitting?"处理中...":"确认兑换"),9,Jt)])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Wt,[n.submissions.length>0?((0,i.uX)(),(0,i.CE)("table",Vt,[(0,i.Lk)("thead",null,[(0,i.Lk)("tr",null,[e[21]||(e[21]=(0,i.Lk)("th",null,"标题",-1)),e[22]||(e[22]=(0,i.Lk)("th",null,"板块",-1)),e[23]||(e[23]=(0,i.Lk)("th",null,"审核状态",-1)),n.setPrivate?((0,i.uX)(),(0,i.CE)("th",Bt,"文章权限")):(0,i.Q3)("",!0),e[24]||(e[24]=(0,i.Lk)("th",null,"审核备注",-1)),e[25]||(e[25]=(0,i.Lk)("th",null,"投稿时间",-1)),e[26]||(e[26]=(0,i.Lk)("th",null,"状态更新时间",-1)),e[27]||(e[27]=(0,i.Lk)("th",null,"操作",-1))])]),(0,i.Lk)("tbody",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(n.submissions,(t=>((0,i.uX)(),(0,i.CE)("tr",{key:t.id,class:(0,k.C4)({clickable:t.article_id}),onClick:e=>t.article_id&&o.navigateToArticle(t.article_id)},[(0,i.Lk)("td",Gt,(0,k.v_)(t.title),1),(0,i.Lk)("td",null,(0,k.v_)(t.section),1),(0,i.Lk)("td",null,[(0,i.Lk)("span",{class:(0,k.C4)(o.getStatusClass(t.status))},(0,k.v_)(t.status),3)]),n.setPrivate?((0,i.uX)(),(0,i.CE)("td",Yt,["已通过"===t.status&&t.hasOwnProperty("is_public")?((0,i.uX)(),(0,i.CE)("span",{key:0,class:(0,k.C4)(t.is_public?"status-public":"status-private")},(0,k.v_)(t.is_public?"公开":"私密"),3)):((0,i.uX)(),(0,i.CE)("span",Zt,"-"))])):(0,i.Q3)("",!0),(0,i.Lk)("td",null,(0,k.v_)(t.note||"无"),1),(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.created_at)),1),(0,i.Lk)("td",null,(0,k.v_)(o.formatDate(t.updated_at)),1),(0,i.Lk)("td",null,[(0,i.Lk)("div",te,["已通过"===t.status&&t.article_id&&t.owner?((0,i.uX)(),(0,i.CE)("button",{key:0,class:"edit-btn",onClick:(0,_t.D$)((e=>o.navigateToEdit(t.article_id)),["stop"])}," 编辑 ",8,ee)):(0,i.Q3)("",!0),n.setPrivate&&"已通过"===t.status&&t.article_id&&t.owner&&t.hasOwnProperty("is_public")?((0,i.uX)(),(0,i.CE)("button",{key:1,class:(0,k.C4)(t.is_public?"private-btn":"public-btn"),onClick:(0,_t.D$)((e=>o.toggleArticleAccess(t)),["stop"])},(0,k.v_)(t.is_public?"设为私密":"设为公开"),11,se)):(0,i.Q3)("",!0)])])],10,Ht)))),128))])])):((0,i.uX)(),(0,i.CE)("div",ie,e[28]||(e[28]=[(0,i.Lk)("p",null,"暂无投稿记录",-1)]))),n.totalPages>1?((0,i.uX)(),(0,i.CE)("div",ae,[(0,i.Lk)("button",{disabled:1===n.currentPage,onClick:e[10]||(e[10]=t=>o.loadSubmissions(n.currentPage-1)),class:"page-btn"}," 上一页 ",8,ne),(0,i.Lk)("span",oe,(0,k.v_)(n.currentPage)+" / "+(0,k.v_)(n.totalPages),1),(0,i.Lk)("button",{disabled:n.currentPage===n.totalPages,onClick:e[11]||(e[11]=t=>o.loadSubmissions(n.currentPage+1)),class:"page-btn"}," 下一页 ",8,le)])):(0,i.Q3)("",!0)])])}var ce={name:"SubmissionList",data(){return{submissions:[],currentPage:1,totalPages:1,totalSubmissions:0,loading:!1,setPrivate:!1,inRank:!0,updatingRank:!1,loadingKeyList:!1,showKeyManagement:!1,showExchangeKey:!1,keyList:[],visibleKeyIndex:-1,exchangeForm:{invite_code:"",key:""},submitting:!1}},created(){this.loadSubmissions(1)},methods:{async loadSubmissions(t){this.loading=!0;try{const e=Z.A.get("token");if(!e)return void console.error("未找到登录token");const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/submission",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({page_num:t})});if(!s.ok)throw new Error("获取投稿记录失败");const i=await s.json();this.submissions=i.submissions,this.currentPage=i.current_page,this.totalPages=i.total_pages,this.totalSubmissions=i.total_submissions,this.setPrivate=i.set_private||!1,i.hasOwnProperty("in_rank")&&(this.inRank=i.in_rank)}catch(e){console.error("获取投稿记录出错:",e)}finally{this.loading=!1}},async updateRankingStatus(){const t=new Date,e=new Date(t);e.setHours(t.getHours()+1);const s=`${e.getHours()}:00`,i=this.inRank,a=i?`您确认参与投稿排行榜吗?如确认,榜单将在下次更新时(${s})显示您。`:`您确认退出投稿排行榜吗?如确认,榜单将在下次更新时(${s})不再显示您。`;try{await tt.A.confirm(a,"提示"),this.updatingRank=!0;const t=Z.A.get("token");if(!t)return tt.A.alert("未找到登录token","错误"),void(this.inRank=!this.inRank);const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/ranking/in",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({in:this.inRank})});if(!e.ok)throw new Error("更新设置失败");await e.json();const s=i?"参与":"退出";this.$barMessage.success(`您已成功${s}投稿排行榜!`)}catch(n){if(this.inRank=!this.inRank,"cancel"===n||n&&"cancel"===n.action)return;console.error("更新排行榜设置失败:",n),tt.A.alert("更新设置失败,请稍后重试","错误")}finally{this.updatingRank=!1}},handleManage(){console.log("点击了作品管理按钮"),this.$emit("manage-works")},navigateToArticle(t){this.$router.push(`/article/${t}`)},navigateToEdit(t){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?tt.A.confirm("建议在电脑端进行编辑以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push(`/edit?article=${t}`)})).catch((()=>{console.log("用户取消了在移动端编辑")})):this.$router.push(`/edit?article=${t}`)},formatDate(t){if(!t)return"未知";const e=new Date(t);return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${e.getHours()}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`},getStatusClass(t){switch(t){case"已通过":return"status-approved";case"审核中":return"status-pending";case"未通过":return"status-rejected";default:return""}},async loadKeyList(){this.loadingKeyList=!0;try{const t=Z.A.get("token");if(!t)return void console.error("未找到登录token");const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/getcode",{method:"GET",headers:{Authorization:t,"Content-Type":"application/json"}});if(!e.ok)throw new Error("获取密钥列表失败");const s=await e.json();if(!s.success)throw new Error(s.message||"获取密钥列表失败");this.keyList=s.data||[]}catch(t){console.error("获取密钥列表出错:",t),tt.A.alert(t.message||"获取密钥列表失败,请稍后再试","错误")}finally{this.loadingKeyList=!1}},toggleKeyVisibility(t){this.visibleKeyIndex===t?this.visibleKeyIndex=-1:this.visibleKeyIndex=t},async exchangeKey(){if(this.exchangeForm.invite_code&&this.exchangeForm.key){this.submitting=!0;try{const t=Z.A.get("token");if(!t)return void console.error("未找到登录token");const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/setcode",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify(this.exchangeForm)}),s=await e.json();if(!s.success)throw new Error(s.message||"密钥兑换失败");tt.A.alert("密钥兑换成功","提示"),this.showExchangeKey=!1,this.exchangeForm.invite_code="",this.exchangeForm.key="",this.loadKeyList()}catch(t){console.error("密钥兑换出错:",t),tt.A.alert(t.message||"密钥兑换失败,请稍后再试","错误")}finally{this.submitting=!1}}else tt.A.alert("请输入邀请码和密钥","提示")},async toggleArticleAccess(t){if(!t.article_id)return void tt.A.alert("无效的文章ID","错误");const e=t.is_public?"设为私密":"设为公开";try{await tt.A.confirm(`确认要将文章《${t.title}》${e}吗?`,"确认操作");const s=Z.A.get("token");if(!s)return void tt.A.alert("请先登录","提示");const i=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/access",{method:"POST",headers:{Authorization:s,"Content-Type":"application/json"},body:JSON.stringify({article_id:t.article_id})});if(!i.ok){const t=await i.json().catch((()=>({})));throw new Error(t.message||"操作失败")}const a=await i.json();t.is_public=a.is_public,this.$barMessage.success(a.message||"操作成功")}catch(s){if("cancel"===s.action)return;console.error("切换文章访问权限失败:",s),this.$barMessage.error(s.message||"操作失败,请稍后再试")}}},watch:{showKeyManagement(t){t?this.loadKeyList():this.visibleKeyIndex=-1}}};const de=(0,it.A)(ce,[["render",re],["__scopeId","data-v-4721a9ca"]]);var ue=de,he=s(8630),ge={name:"UserCenter",components:{Navbar:g.A,UserInfo:nt,Coin:Ct,SubmissionList:ue},data(){return{isAuthenticated:!1,isLoading:!0}},created(){document.title="个人中心 - NEU小站"},mounted(){this.checkAuthAndFetchUserInfo()},methods:{async checkAuthAndFetchUserInfo(){const t=Z.A.get("token");if(!t)return this.isLoading=!1,"/user-center"===this.$route.path?void this.$router.replace("/login"):void("/login"===this.$route.path&&this.showLoginDialog());try{const e=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/islogin",{method:"GET",headers:{Authorization:t}});if(!e.ok)throw new Error("Token 验证失败");const s=await e.json();if(!s||!s.isLoggedIn)throw new Error("Token 验证成功但返回状态不正确");this.isAuthenticated=!0,this.isLoading=!1,"/login"===this.$route.path&&this.$router.replace("/user-center")}catch(e){if(console.error("获取用户信息出错:",e),this.isLoading=!1,Z.A.remove("token"),"/user-center"===this.$route.path)return void this.$router.replace("/login");"/login"===this.$route.path&&this.showLoginDialog()}},showLoginDialog(){(0,he.A)().then((t=>{console.log("登录成功:",t),this.isAuthenticated=!0,this.$router.replace("/user-center")})).catch((t=>{console.log("登录取消:",t)}))},handleManageWorks(){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;t?tt.A.confirm("建议在电脑端进行投稿以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push("/submit")})).catch((()=>{console.log("用户取消了在移动端投稿")})):this.$router.push("/submit")}}};const ke=(0,it.A)(ge,[["render",h],["__scopeId","data-v-c5320252"]]);var pe=ke}}]); +//# sourceMappingURL=395.e6073c92.js.map \ No newline at end of file diff --git a/dist/js/550.61a3a508.js b/dist/js/550.568fb1f5.js similarity index 97% rename from dist/js/550.61a3a508.js rename to dist/js/550.568fb1f5.js index 5293509..6cb51fd 100644 --- a/dist/js/550.61a3a508.js +++ b/dist/js/550.568fb1f5.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[550],{1550:function(a,n,t){t.r(n),t.d(n,{default:function(){return z}});t(4114);var e=t(6768),s=t(4232);const i={class:"ranking-page"},r={class:"container"},o={key:0,class:"loading-container"},l={key:1,class:"error-container"},c={key:2,class:"ranking-content"},k={key:0,class:"my-ranking-block"},u={class:"my-rank-content"},d={class:"my-rank-text"},g={class:"value-wrapper"},v={key:0,class:"value unranked"},p={key:1,class:"value ranked"},h={class:"my-rank-tip"},b={key:0,class:"my-rank-opt-out-tip"},y={class:"ranking-list"},m={class:"rank-badge"},P={key:0,class:"medal-icon"},f={key:1,class:"rank-number"},C={class:"user-info-wrapper"},L={class:"contribution-stats"},E={class:"stat-box"},X={class:"stat-value"},w={key:1,class:"pagination"},_=["disabled"],I={class:"page-info"},R=["disabled"];function A(a,n,t,A,q,x){const F=(0,e.g2)("NavBar"),N=(0,e.g2)("UserMeta");return(0,e.uX)(),(0,e.CE)("div",i,[(0,e.bF)(F),(0,e.Lk)("div",r,[n[9]||(n[9]=(0,e.Fv)('感谢每一位为 NEU 小站贡献优质内容的创作者❤️
感谢每一位为 NEU 小站贡献优质内容的创作者❤️
"+rt(e[t].content)+"\n"},gt.fence=function(e,t,n,r,a){const i=e[t],s=i.info?Ze(i.info).trim():"";let o,l="",c="";if(s){const e=s.split(/(\s+)/g);l=e[0],c=e.slice(2).join("")}if(o=n.highlight&&n.highlight(i.content,l,c)||rt(i.content),0===o.indexOf("${o}\n`}return`${o}\n`},gt.image=function(e,t,n,r,a){const i=e[t];return i.attrs[i.attrIndex("alt")][1]=a.renderInlineAsText(i.children,n,r),a.renderToken(e,t,n)},gt.hardbreak=function(e,t,n){return n.xhtmlOut?"'+Mi().highlight(t,{language:n,ignoreIllegals:!0}).value+""}catch(r){}return''+e.utils.escapeHtml(t)+""},breaks:!0}),t=e=>{if(!e||!e.trim().startsWith("