From f73a662141811ed6cca384d7f0639a65138813a2 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RQ919RC\\Pc" <1300399510@qq.com> Date: Fri, 21 Nov 2025 19:07:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=AD=BE=E5=88=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加签到功能相关HTML/CSS/JS文件 - 在详情页增加图片预览组件 - 调整详情页文本行高和标题样式 - 修复评论时间显示问题 - 优化本地开发环境授权处理 --- component/preview-image/preview.js | 99 +++++++++++++++++++++ css/details.css | 10 ++- css/details.less | 11 ++- css/signIn.css | 112 ++++++++++++++++++++++++ css/signIn.less | 135 +++++++++++++++++++++++++++++ details.html | 6 +- img/halo-icon.png | Bin 0 -> 49907 bytes js/details.js | 32 +++---- js/public.js | 4 + js/signIn.js | 63 ++++++++++++++ signIn.html | 62 +++++++++++++ 11 files changed, 508 insertions(+), 26 deletions(-) create mode 100644 component/preview-image/preview.js create mode 100644 css/signIn.css create mode 100644 css/signIn.less create mode 100644 img/halo-icon.png create mode 100644 js/signIn.js create mode 100644 signIn.html diff --git a/component/preview-image/preview.js b/component/preview-image/preview.js new file mode 100644 index 0000000..60aed55 --- /dev/null +++ b/component/preview-image/preview.js @@ -0,0 +1,99 @@ +class PreviewImage extends HTMLElement { + static get observedAttributes() { return ["src", "alt"]; } + constructor(){ + super(); + this._src = this.getAttribute("src") || ""; + this._alt = this.getAttribute("alt") || ""; + this.attachShadow({ mode: "open" }); + const root = document.createElement("div"); + root.className = "root"; + const img = document.createElement("img"); + root.appendChild(img); + this.shadowRoot.append(style, root); + this._img = img; + this._render(); + this._img.addEventListener("click", (e)=>{ e.stopPropagation(); this.init(this._src); }); + // 保存一个全局实例(与 bi.js 风格一致,便于外部静态调用) + window.previewImageComponent = this; + } + attributeChangedCallback(name, oldVal, newVal){ + if(name === "src") this._src = newVal || ""; + if(name === "alt") this._alt = newVal || ""; + this._render(); + } + _render(){ + if(this._img){ this._img.src = this._src; this._img.alt = this._alt; } + } + init(src){ PreviewImage.open(src || this._src); } + static open(src){ + if(!src) return; + const mask = document.createElement("div"); + const box = document.createElement("div"); + const img = document.createElement("img"); + + mask.style.width = "100%"; + mask.style.height = "100%"; + mask.style.maxWidth = "none"; + mask.style.maxHeight = "none"; + mask.style.border = "none"; + mask.style.position = "fixed"; + mask.style.top = "0"; + mask.style.left = "0"; + mask.style.backgroundColor = "rgba(255, 255, 255, 0.8)"; + mask.style.zIndex = "10002"; + mask.style.display = "flex"; + mask.style.alignItems = "center"; + mask.style.justifyContent = "center"; + + // box.className = "detail-image flexcenter"; + box.style.width = "80vw"; + box.style.height = "80vh"; + box.style.borderRadius = "8px"; + box.style.backgroundColor = "rgba(17, 17, 17, 0.9)"; + box.style.overflow = "hidden"; + box.style.display = "flex"; + box.style.alignItems = "center"; + box.style.justifyContent = "center"; + box.style.position = "relative"; + + // img.className = "detail-img"; + img.style.maxWidth = "100%"; + img.style.maxHeight = "100%"; + img.src = src; + box.appendChild(img); + mask.appendChild(box); + let scale = 1, tx = 0, ty = 0, dragging = false, sx = 0, sy = 0; + const apply = () => { img.style.transform = `translate(${tx}px, ${ty}px) scale(${scale})`; img.style.cursor = dragging ? "grabbing" : "grab"; }; + const onWheel = (ev) => { ev.preventDefault(); const step = 0.1; scale += (ev.deltaY > 0 ? -step : step); if (scale < 0.1) scale = 0.1; if (scale > 5) scale = 5; apply(); }; + const onDown = (ev) => { ev.preventDefault(); dragging = true; sx = ev.clientX; sy = ev.clientY; apply(); }; + const onMove = (ev) => { if (!dragging) return; const dx = ev.clientX - sx, dy = ev.clientY - sy; sx = ev.clientX; sy = ev.clientY; tx += dx; ty += dy; apply(); }; + const onUp = () => { dragging = false; apply(); }; + img.addEventListener("wheel", onWheel, { passive: false }); img.addEventListener("mousedown", onDown); document.addEventListener("mousemove", onMove); document.addEventListener("mouseup", onUp); img.addEventListener("click", (ev) => ev.stopPropagation()); + const onKey = (ev) => { if (ev.key === "Escape") close(); }; + const close = () => { + document.body.style.overflow = "auto"; + img.removeEventListener("wheel", onWheel); + img.removeEventListener("mousedown", onDown); + document.removeEventListener("mousemove", onMove); + document.removeEventListener("mouseup", onUp); + document.removeEventListener("keydown", onKey); + mask.remove(); + }; + mask.addEventListener("click", (ev)=>{ if (ev.target === mask) close(); }); + box.addEventListener("click", (ev)=>ev.stopPropagation()); + const dl = document.createElement("button"); dl.textContent = "下载图片"; Object.assign(dl.style, { position: "absolute", right: "24px", bottom: "24px", zIndex: "10001", padding: "8px 14px", borderRadius: "6px", border: "none", cursor: "pointer", backgroundColor: "#50e3c2", color: "#000" }); + dl.addEventListener("click", (ev) => { ev.stopPropagation(); const name = (src.split("/").pop() || "image").split("?")[0]; fetch(src).then((r) => r.blob()).then((blob) => { const url = URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = name || "image"; document.body.appendChild(a); a.click(); a.remove(); setTimeout(()=>URL.revokeObjectURL(url),0); }).catch(() => { const a = document.createElement("a"); a.href = src; a.target = "_blank"; document.body.appendChild(a); a.click(); a.remove(); }); }); + box.appendChild(dl); + document.body.appendChild(mask); + document.addEventListener("keydown", onKey); + document.body.style.overflow = "hidden"; + apply(); + } +} +if (!customElements.get("preview-image")) customElements.define("preview-image", PreviewImage); +// 3. 暴露统一对象(可使用 previewImage.initComponent(url)) +PreviewImage.initComponent = function(url){ + if (window.previewImageComponent) { window.previewImageComponent.init(url); return true; } + PreviewImage.open(url); return true; +}; +window.previewImage = PreviewImage; diff --git a/css/details.css b/css/details.css index 492bf31..e53f527 100644 --- a/css/details.css +++ b/css/details.css @@ -156,7 +156,7 @@ font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; font-size: 15px; color: #555555; - line-height: 24px; + line-height: 26px; margin-bottom: 66px; } #details .matter .matter-left .html a { @@ -177,6 +177,13 @@ #details .matter .matter-left .html video { margin: 0 auto; } +#details .matter .matter-left .html h2 { + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif; + font-weight: 650; + color: #000000; + font-size: 18px; + line-height: 30px; +} #details .matter .matter-left .last-time { color: #aaaaaa; font-size: 13px; @@ -1124,6 +1131,7 @@ height: 80vh; border-radius: 8px; background-color: #111; + overflow: hidden; } .detail-image-mask .detail-image .detail-img { max-width: 100%; diff --git a/css/details.less b/css/details.less index 7283cc8..608bfc0 100644 --- a/css/details.less +++ b/css/details.less @@ -180,7 +180,7 @@ font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; font-size: 15px; color: #555555; - line-height: 24px; + line-height: 26px; margin-bottom: 66px; a { @@ -204,6 +204,14 @@ video { margin: 0 auto; } + + h2 { + font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif; + font-weight: 650; + color: #000000; + font-size: 18px; + line-height: 30px; + } } .last-time { @@ -1316,6 +1324,7 @@ height: 80vh; border-radius: 8px; background-color: #111; + overflow: hidden; } .detail-image-mask .detail-image .detail-img { diff --git a/css/signIn.css b/css/signIn.css new file mode 100644 index 0000000..cd950f4 --- /dev/null +++ b/css/signIn.css @@ -0,0 +1,112 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + word-break: break-word; +} +a { + text-decoration: none; + color: unset; +} +body { + background-color: #eef2f5; +} +.flexflex { + display: flex; +} +.flexcenter { + display: flex; + justify-content: center; + align-items: center; +} +.flexjcenter { + display: flex; + justify-content: center; +} +.flexacenter { + display: flex; + align-items: center; +} +.flex1 { + flex: 1; +} +.signInBox-mask { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 10005; +} +.signInBox-mask .signInBox { + width: 1060px; + height: 658px; + background-color: #fff; + border-radius: 20px; + position: relative; + filter: drop-shadow(0 -5px 0 #f7c308); +} +.signInBox-mask .signInBox .signInBox-head { + position: relative; + height: 64px; + border-bottom: 1px dotted #d7d7d7; +} +.signInBox-mask .signInBox .signInBox-head .header-bi { + width: 83px; + height: 99px; + position: absolute; + top: -61px; + left: 50%; + transform: translateX(-50%); +} +.signInBox-mask .signInBox .signInBox-head .header-halo { + width: 160px; + height: 154px; + position: absolute; + top: -89px; + left: 50%; + transform: translateX(-50%); +} +.signInBox-mask .signInBox .signInBox-head .header-cross { + width: 18px; + height: 18px; + position: absolute; + top: 10px; + right: 10px; + cursor: pointer; +} +.signInBox-mask .signInBox .signInBox-content .left-box { + width: 538px; + padding: 20px 30px; + border-right: 1px dotted #d7d7d7; +} +.signInBox-mask .signInBox .signInBox-content .left-box .content-header { + font-size: 15px; + color: #555555; + line-height: 40px; +} +.signInBox-mask .signInBox .signInBox-content .left-box .content-header .bi-img { + width: 25px; + height: 30px; + margin-right: 7px; +} +.signInBox-mask .signInBox .signInBox-content .left-box .content-header .bi-value { + font-family: Arial-Black, "Arial Black", sans-serif; + font-weight: 900; + font-style: normal; + font-size: 28px; + color: #000000; + margin-right: 7px; +} +.signInBox-mask .signInBox .signInBox-content .left-box .content-header .bi-text { + font-size: 15px; + color: #555555; + line-height: normal; + margin-top: 8px; +} +.signInBox-mask .signInBox .signInBox-content .left-box .content-header .bi-rule { + margin-left: auto; +} diff --git a/css/signIn.less b/css/signIn.less new file mode 100644 index 0000000..e7adf9e --- /dev/null +++ b/css/signIn.less @@ -0,0 +1,135 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "PingFangSC-Regular", "PingFang SC", sans-serif; + font-weight: 400; + font-style: normal; + word-break: break-word; +} + +a { + text-decoration: none; + color: unset; +} + +body { + background-color: rgba(238, 242, 245, 1); +} + +.flexflex { + display: flex; +} + +.flexcenter { + display: flex; + justify-content: center; + align-items: center; +} + +.flexjcenter { + display: flex; + justify-content: center; +} + +.flexacenter { + display: flex; + align-items: center; +} + +.flex1 { + flex: 1; +} + +.signInBox-mask { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + // background-color: rgba(0, 0, 0, 0.5); + z-index: 10005; + + .signInBox { + width: 1060px; + height: 658px; + background-color: #fff; + border-radius: 20px; + position: relative; + filter: drop-shadow(0 -5px 0 rgba(247, 195, 8, 1)); + + .signInBox-head { + position: relative; + height: 64px; + + border-bottom: 1px dotted #d7d7d7; + + .header-bi { + width: 83px; + height: 99px; + position: absolute; + top: -61px; + left: 50%; + transform: translateX(-50%); + } + + .header-halo { + width: 160px; + height: 154px; + position: absolute; + top: -89px; + left: 50%; + transform: translateX(-50%); + } + + .header-cross { + width: 18px; + height: 18px; + position: absolute; + top: 10px; + right: 10px; + cursor: pointer; + } + } + + .signInBox-content { + .left-box { + width: 538px; + padding: 20px 30px; + border-right: 1px dotted #d7d7d7; + + .content-header { + font-size: 15px; + color: rgb(85, 85, 85); + line-height: 40px; + + .bi-img { + width: 25px; + height: 30px; + margin-right: 7px; + } + + .bi-value { + font-family: Arial-Black, "Arial Black", sans-serif; + font-weight: 900; + font-style: normal; + font-size: 28px; + color: rgb(0, 0, 0); + margin-right: 7px; + } + + .bi-text { + font-size: 15px; + color: #555555; + line-height: normal; + margin-top: 8px; + } + + .bi-rule { + margin-left: auto; + } + } + } + } + } +} diff --git a/details.html b/details.html index 131498c..9b39132 100644 --- a/details.html +++ b/details.html @@ -17,7 +17,7 @@
-
uzP1eSyPjvvD
+
fi88yrHXiDSj
@@ -77,7 +77,7 @@
{{ info.title }}
-
+
最后编辑:{{ updatedTime || timestamp }}
@@ -482,9 +482,11 @@
+ + \ No newline at end of file diff --git a/img/halo-icon.png b/img/halo-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a338049bbb6dfa789d831870bf77f9c2b2e377ad GIT binary patch literal 49907 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%0Aak>7wEv% zvSMJ)R4pjX_N;q6u8#?+=adqe15yzfRfNar=87ln8FmMm5$23eD7Vbe%-XRX0sut< ztW3E5MnYtt(u0qnkOmdiC1lmCs8244OnO1lAG@&^91o?PD_CA*gOKu?$)>DTW~nR_AsKVl{~iJG2c`x40DfybXnIvcaqnglN#m! z#r}|d0Axs!%vX<$bt&p9MFdHoI^6HB_dQxx+*g&>bydqo)*dl#du~MC)0fQA(OHg! z>0IrI{U;s5Y6+(}0P(2&fUicapm`bj;^m=>7!qa8J(4)9Id7~opp zgu={WVj3I=GeT<^b2$k}$5kL?QsHWPBnmMyG7uLGVQd(kuq?aE^y%HvHv)^7T8G(3 zKa*C*m)-afBTjmvGtV@R(5!sxs~#J#urfFMxBmyoV8;Os#2t zrFOA93Jz7P+Q4c4{BfN=s$tlwTAc!i(j&{dU(u(B?nACJ&wL>azx(Hdf7IXym;k05ICa(j<%uH9->9O0ncI6UxXw zhmu6bQ=};!lpX?uKX>f2|AF7QT2Y5bZh|N%h8a#dnc1~$0d9qz`dxXmtzK=U z_tq!z+$#oU=BQSLt6&-*iNXDlo-n=nq+ji|kzPQ!DVXVEGCwkC^q6IuA06+}AInfm zWEG3Ctj&>d$A}rM@3nH3@)S6Rc)`)}3OG7eFnnL#Q?)wBN|YdK z5V+VJ6CCo#>Q??~c%{e6d)fE+aTw)FkGdM>^{?0OexE7KeUCNR`^OSQkbM9BAQEAF zd&CqL^j~>ByenHCL+NQ>Vf+|qCQWBkXFQ19 zQTIVVZJP)6GKkzDnC7vRi^|; z9&8dU=E+qW8F!?^@5~P42T(FBekT{NPDHxC^)TuZ>8}_A8Q#s-80=HJyTCCFa)6-C zL4GdhTAnVF18~$J2Ul^cZ6JsLPNlT)DRfUOiEq5&)0PkLE)Zaro^g zz9Mm@b(+XKbqTYq*b{^)B~&AAw??&=TBHhjM>^1+sI$_VF13jiQ4>rDG zW$P1|?G2rL4LFn}clc%aYXHCtZ8Cd_C0AMUFcWc6!MF;PoX~~N*O3o0IN8}ewm8~keMCc~MlyhbssC`Kpsq?w8QmOw(lHE;-+mgqCRa>D(B!9++u_@yCReH<8H9lvR6!u85R355XaTu&%b3E(93HF}^o~jy!b* zM~(6~FX@!&s#+Bs{t~l~c2{G`X>(}Z^H6%c&-Ju!g~B8H!=v;k00OlMRk^x0Yz8Yx zRw-iKy2IY3->xofD_f{rKmSbc>E?65f@CwkXmCJ6hmYg&@FMD#pmDdo`y|eYFF5aH zABFb-hd}Vyhal1UV&hw-0xkz18Q`c>4DQ%N!7sx);Cy_;3a{@Cvqjn^?uMgWs=J#Wq0P?<0VBz0}L!s3;VMm*?GG&;+ z6``v7HvCw`?A%%}@9M`}T5y8;OF9*k~U)g&c`>X)`gz(D%s;Do}WhOgS$&Qd{} zeH0slGrdwoPzw$}Sv50{IEFp<0uT;C+rTo)9$jW_P{lMXC3D;XKnp10lTiQF{oN~ zjpT9fBpX?<|6qQ|i4z!=CIU)!eqdQw`@^4DkX7Y583<~?G9-#jEr5nOE?1jU{^iEz z0v74*S{DNbaEOrksTvt2o{3tH=W94a{Xgeq*J8lTv)@1)bU9Mujm!wq0MfWm9Bqj0 zVLX*6pr{>*oD>LyK~8W?~ALT-)t17g|Rm= zsoCky+&$B4XbTK@mi%E!KQgRgxI7j>9WBr0+7wTk8th5{BV%iDmwgNwoc2b-$i&bL z6^byJS#anIqN-0y1>@~+!+c|n6N-J8w<1!Gk2OSca1A&Bg*K<)sOv7d{(|E*E1*@Y z`oo*0?FeaIGemnSA_@Z%9+uxn)IVRTcG+>B{^jZ!ooCo5N|ReOn&-ab2N%%{!@8p7 zu?N*KG^;ozhx7WKXH-b1WN~J7DcCs6_0QK|$(Z3j4;n&~aK1xlJoN4k_-B|vk=dOg z2gvYK_DD%MbTY0zt4gMtGb&~HWQYkMeaVii%pLn>-Zxp&0svBP4wfYEk#F8PFM0xq zSr!#gV(Q#G5+s6KiQ}R{zz3b$f6;k{%x> zIhxhg!D0Ve@ArJZUWdWJi;J)R$Hm3}{_5Gqr@xH28&B{4fe1gi=l?Xq?^%7iBJTgf z;MbqdFu24!&nxMCB;(nq7Z<#(6dPiwL_WyZ8RHp8mv1q^!gpoRWsj3Yc}3A}f<=g;FIHb}`^zu<}e zfYE2zHR><35$TU~FIdJGOpzKyTk|VA(tQpAY71Pca*@QbzMHDDTEh!hBms#%VO;oO zp0iSVs9N#ckl`IQ5`T-n(!-Abl)QBEU)|k*^ln_=u$Ax&e5aG22d~GweSLd?{ip9+ z2L6BY!LMdZ&8T?XVKDOW9KXN+UYeuZt6J+W<+_1rivG?>RjuoPU|$1<*SX`K{Sofn zO!Qs9{wPnKuQPp)6u9=68*#6YB)+Xtm%R~;2{#pWK2PFi;2ZqL#aK3+d!@_WCxmhJ z<8erx`y=slRSLL7tjeYH)u(PMDlKq#zOBSCUG_^{1TZf)K-g-hNPuA)!s3j_nSZV` zZSF^&317eVQe=x`RB_r_^cFzkSW4|K^7x)|MD zqm~9JB%FTpiS5Cxq|}fm`I-)J>2hRUdl2W5p&lQpv^cetTglOd8UeBz)yq=6al5wXE@-dr->;A}!_89GdqC8LKVzlct!U__X z_LM@}Bs$;u>m$3Y=>`COTVq~nnpvM2Xfohy4>d9yxyk5``JEeo#5r*O)In5e{P)-= z&ayh0$YtI;22=pJM9kEfI5)$bJ;_b~wKfMYPz+F%Q{+B`0EfFw+g<@E* zseH4^d)?#lW>%l$Bje-DAxtfk&oG%?)klgeW^9jvIHT*NQAJ9uvpI1wre$v1YCink zvor3oovcR9eDj_%^HnW+?MzGkx-;c0rE4_#CtamT>{oADST|#FeQW1!mCeO z=6EehGVSV;M*~P32NTBCUr-QO5DbFh4`@&|K-`cL3s5rK3yK-1^w1@oFhP(! z8!u>>Jz|hUyGaY_2+u)7?h6d#`y7WVm9~a1MmUp}z=%?a+N4`0M~{yf-sN0@q0=DO zRjpcWjujv=%9p*4)&5-pQoEyuc>t0U&U_ttzu=J2UcR{a7La^%$nAT-o{}c1;O~xE ze93Kp9Q4AS&$!VMZe-*^tG?^Et6Q_f1ctLrUm+A@ldzluMym9IE2lNzp>+c=JiGOP zE-Hw0*=>gr?wI{$aNPsyop!aXD2rOxN<`;mcnT53M$oUE)y8wEk3CovCHYy7;Nn_86}BFuBIHDp5+4 z>GAt#o~l)E=IoBzACTn0=FGRxZAfcgZu)tR{Xn|pgp~CW1W(&qo2Y0?3c>>j`m`r< z1By^F`y-i@>@MZrtjo9>=%im&D%-eMt13BGsnNa=90kRy<~QD}{F-ImHE@4_m>8IK zUZNKXvV>k7(#>ngqkA_Ib)s`GN!E(i9+9@kQM_NJiGE!UHgc`HrA^{y(K%@nn*+co zO>~tey;ovrpD0yyVQl;!Rq@{VDk&`t?a`-JIv zi_1H*;-h}kwwd1dUIax!wE{%O3>an(iBlQ~h{^Dw;eIbEOw#3AK~d=xy94HrBb|1J z&T#YW5p~02h^s!acv4%#a3#kbV7OuVR_7{XmvNOGN(`O$Mx}=SM@zZ$bv^4-fdXWe z8mq)GeF5Tqozg=WaGYATI*j5LmH);`iDuahbl;d^JL3X(mV_h|nun>y!q+k1A) z{Ih$?Zo5*XAUQs|J9gcxay`cw_YhxROs8!!mxoomlrlBqBT?`RitfTQypbeI6pyIO zq{;@3bI)MuDpdw31{liBy?Q>Wbb$@iPNh#WF`qdJHBG~N-G*r5sDA4>{u|=7Hp9Ha ztb(M#l72iNJ^-@CyJ97%pcepw=E6sy={uLxlZRnAjcu7b?*|Y7fXO53?(z86&XXz? z%-o%Eci>eSd#>uiF*zeSRH^DZVV<%%_Pn&`wdNr(bnmq}n&9c{n5CdOEkzDn{G)7o zG~Pg$fIt6l(9Jh9ZiH+mzWk44`Wo+fl_^9@ld4+I7zIdIx4Hz}XGvCd%Q9-fy9}(W z%Jm9n&l8G-X{1Lo7!UJT?UGhWQ?)A+MI)YYolC)jVt5-yM-o;=GHmRQlgCt#8YgWfh4&ii zS-zz#SNL@9b0{rzF}7#8z|gImevv$t8ZiC2mn#$;rY|^ZZx~i%-1}3&F#L<3=WN0K z3XoIas8QZ$%2ysWueif#kN4jK_HPn+QngA9U#BHVW8Zr{K=C#9!@nKh%($fiFxhP< zK$WWv{BjcX2YNPoZUl)liXgEAv*Yf$EgfgKlqT+#tj@Xg!fAyC4^7>9){GvhGX>0`iQz4oe94f4KZy1a7^80Ha` zYT4&_pJD!ueQ@Ah!~z=g*|`lMHBe4Vl3l7*d|5H=kyX{&k-uY?81EYP`tk?E>?oy) zM?nP2_7e+6PL(TrCFuP_us)cj^L$tS3K9TQSHNsXX$qVvSxT4dYytvdb4m|?yh=nU`Ej7oc!;)vM~4;i_nrD*APTMS2;thIAre=&D)WW9clev`Jc-c`|xw6X6%j z(_!`*Z`!77J{v7JhDBZS-ZV2^SD;#sX{4=RX_3cnr=$reS|(CNx7rxCQNPk6ae!k5 zMo!`qQE*68l`8kkv61+9D^*>vF|I3C-uH~vhe!|UKiDWgNS$_8C>U_gZ4%@Rff*fv z5#!y=Pk^Py(VEd7EQ-h#B<+M%-4ZC3B+fE-%ub(Apj@bS36^m1NScZQIZr8Euj8gn(mJnd}@!R*LT5ksM8N9N>m5*CRj@`0V0auHVd=>Xa0bOppkUy1f)>_=kW*+7&20p3*!Dl=^*} z<0+6BFHj1S(i^5kX?)eM0IAHrfS_Pm0c6_PC<|QyQNW~tN!Rmbe4Sti%}!(kfPxybmY^iRmg$R!P$Q zYM%%erHQV~!QMyh;_6v0U8PC~Zar&!{ zC2ra(neiusSL!HnRyU&)q@7TZRa%T+9~vpj+y#rF1%P0vgc#HlR6ebVGwlkPg2K4< zrERu5$3#p65ClV|g|w9z?dvz}%&(x3M%SYw1;!o}gKF3u1xCa6(!=mof@HDiFsXZ; zUe&2@QF*_Ke*^BvNDosUXZq%Q;`%N~-UE>4QJ~a+PVEvX1&Fi(31Enu>%uEY3_qoI z?ExZPLE`;-l>Qa_Cy(L^gdJFt4!{V44J;Et#?}7tUROh3CX{{!kMS#j^uN!oASmq$ zhAnJL6pw%CT-6gOD;N^NS3m;8yN6M?N(;lzsZz!j9Nz0TdxQH*jf78?>M3yaq=oba z$SGhL-@Oj+b?a*C2pQj-t&DeoWNYXDCxBRw4*|(RLe#F`4`zP~AcJyzcZI7*QyN#0 z==W6cDJimF>5_H@f__~d@8zoW(5!%Pw;p{do8gAlRfSTu%s$2}tLLUFElR(a8iv;h_x_yJFm7GKT_uNc z-RpSY^BmIZ3XX0Bj?gpT2g8qTo>U(T4wHS51ey8&I(19^a0Q5&?d_6P)oNjaXuY1SoE*E@q4w)cwILfSH>-fdN6WOj_-hCN|#EFf@Y=j zew8*gkPXW{hySX+tt!$cL8gjiJ}bkoV9IG)2^J^AS5j0e7~OQMebHn}2wlNZzhMQ( zQ@~hljZ?tLa~$)-DcpSp}Q;L-x9Rh$|L&MfWwp@1rQUwt8SUc!Kf$P z;Rq6`K1Px>*B}2l*B}i*?W#061(K#ISe^n(X{&zu6r--7sANglqK4^T_gD1m_Tbp7 zSS#>GiuZq)nODlHS%y6V%mjpBunk@d+}pV#l{8bm%C0vwzAs>P-Ht==R_^2MlRzZ+!jz(J+6K*A9PEa9D-E4j_;8yTh5hsB|3H)h78+keIeA zSMr%(l_&zGATg>&y!Y!SW8zp6Ue9(JR#!EwlEv_b$!IH3jN3DM0ksj6W zBXHnfSEv%dNRM*>DL6iK18}uFEMvM~D>=6Gz4_Q{BuN31>wzrRWwjMBi8G!LPL)f5 z)a_L+!&kLyHQ#ysj%R$>FmugSy?P@*VJ3Y1fl#F=If z5<5E+6$c)bCY*Xij`Nwbmm)qkiti`YapXgZQb}TvyS$YszI|S&ts+=7=4GH$ASsgx z6kl5t+XdR%EQ;b9T>uu&iYxm)^jbZ zbOl8=_LdEpy?xP%#XMqo&nNZtpIW-L|5tU&aas>#+fS4L00KElL_t&poRS*mRVOgy zh4RC>W!%zl*S`-q%>L^;(?w#hk3vImGcuWHw(av8xO z3650{UJd%yMv;7#Dgveky>Ys|bU6hY=~l_2zs^VQ3!aAcD#Jea*S2tbwW%~3(Yo5u zW&DDm*V3=oJs{S&z9hl0s!wbD3XZ*vA>G=)U9vTNZ-g6m4j2Kl0Zsm0x|OExgO+h6 zo}j3jKhys$rH5JmtpKviXAcmIdIBT`h-899cS@QVz6VQz5=laQjdyA53Xu9$4+<0k z5@z6~627miQl+$Bp8}1u@w$AxraN_i4oIhH8&*)%zrPBE0@wT2NjmQ%DQ2P?+j>`E ztbj1?$yF%{7WXj^HkqupMkR$|?>#mm(NR+9TixFp7|naf*bV-5*T*VXK(do6=kh%e z!Dj`Eq)&lm1xi6;8eJsH7pL2{f~9)2FSD!bOYQXU!LkR6G^>QE>eAyEGHqvZY3s_& z`WwH7t>H~`?%Fc<@dd>>K&t3B&qMno*r7J)-a2RoD?1}4X zfc(9{VFiwiaiTiECg=!~M*y*$k5jiSya4h3ltd9Er)-oO@upLvR0W7pKkbw~P|6H1 zd0*EG67yKy9yE5Z1N@7$m;)Wq!E! zK|J$oRizASU)K0GtOmIEbx)~Pr4b;TopB)4&)%H|g;ak}V6+zh51i@U$g%zEZ2$lO M07*qoM6N<$f=BVb!T { const wConfig = JSON.parse(localStorage.getItem("wConfig")) || {}; - console.log("wConfig", wConfig); - if (wConfig.time) { const time = new Date(wConfig.time); const now = new Date(); @@ -127,10 +125,11 @@ const appSectionIndex = createApp({ const data = res.data; let targetInfo = data.info; - console.log("data", data); if (!targetInfo.hidden) targetInfo.hidden = 0; + targetInfo.content = '如果你热爱古典文献,又希望在现代职场大展身手——这个项目可能就是你的“本命”!作为香港最正统的中国语言文学项目,它既传承经典,又为你打跨境传播等全新赛道!\n\n🌟 项目核心亮点权威认证:中国语言文学专业认证,考公考编无障碍\n古今结合:深耕古典文献与理论,同时对接AI内容创作等新兴领域\n语言友好:全程中文授课(普通话+粤语),无语言适应压力\n规模可观:每年录取150+,机会相对较多\n\n点击前往 [港校项目库] 查看 \n中国语言文学\n手机扫码查看\n[attachimg]1008942[/attachimg]\n\n🎯 谁最适合申请?中文系、汉语言、古代文学等对口专业背景\n希望在教育、传媒、AI内容或国际中文教育领域发展\n看重学校声誉与专业正统性的同学\n💼 毕业出路超多元除了教师、公务员等传统路径,毕业生还活跃于:\n✔ 跨境文化传播\n✔ AI内容策划与生成\n✔ 国际中文教育\n✔ 出版与编辑行业\n📌 申请指南专业背景:严格限定中文相关专业,暂不接受跨专业申请\n成绩要求:985/211同学建议86+\n语言成绩:雅思7.0(小分5.5)即可\n面试体验:氛围轻松,专业问题较少\n💡 内部消息参考前几轮拿到面试邀请的同学基本都能录取\n985背景优势明显,建议尽早提交申请\n双非同学如背景特别匹配也可尝试\n🤝 欢迎交流你对中国文学在AI时代的发展有什么想法?或者对哪个就业方向,申请问题欢迎在评论区分享交流!\n欢迎加入寄托香港群交流\n\n[attachimg]969489[/attachimg]'; + // 替换换行 targetInfo.content = targetInfo.content?.replace(/\n/g, "
") || ""; @@ -177,6 +176,9 @@ const appSectionIndex = createApp({ let html = formattedText; + html = html.replaceAll('', "[b]"); + html = html.replaceAll('', "[/b]"); + // 1. 还原换行符为
标签 html = html.replace(/\n/g, "
"); @@ -190,6 +192,8 @@ const appSectionIndex = createApp({ // 4. 还原粗体标记为h2标签 html = html.replace(/\[b\]([\s\S]*?)\[\/b\]/gi, "

$1

"); + console.log(html); + // 5. 统一在单次遍历中按出现顺序替换 attach/attachimg const byAid = new Map(); imageList.forEach((e) => byAid.set(Number(e.aid), { type: "image", ...e })); @@ -214,7 +218,7 @@ const appSectionIndex = createApp({ html = html.replace(/([^<]+<\/span>)\s+/gi, '$1 '); // 7. 清理多余的
标签 - html = html.replace(/

/g, "
"); + // html = html.replace(/

/g, "
"); if (type != "comment") { byAid.forEach((item, aid) => { @@ -271,8 +275,6 @@ const appSectionIndex = createApp({ actions: ["like", "collection"], }) .then((res) => { - console.log("res", res); - const data = res.data; const like = data.like; const collection = data.collection; @@ -418,7 +420,6 @@ const appSectionIndex = createApp({ let commentTotalCount = ref(0); const getComment = () => { - console.log("commentPage.value", commentPage.value); if (commentPage.value == 0 || isgetCommentSate || !token) return; isgetCommentSate = true; ajaxGet(`/v2/api/forum/getCommentList?token=${token}&page=${commentPage.value}&limit=20`) @@ -439,7 +440,7 @@ const appSectionIndex = createApp({ if (element.child.length > 0) { element.child.forEach((el) => { el["picture"] = []; - el.timestamp = strtimeago(element.created_at, 4); + el.timestamp = strtimeago(el.created_at, 4); el["isReplyBoxShow"] = 0; if (el["content"]) el["content"] = restoreHtml(el["content"], el.attachments, "comment"); @@ -518,16 +519,7 @@ const appSectionIndex = createApp({ const handleAnswerText = (e) => { if (e.target.tagName === "IMG") { var src = e.target.getAttribute("src"); - const div = document.createElement("div"); - div.innerHTML = `
`; - div.className = "detail-image-mask flexcenter"; - div.addEventListener("click", () => { - document.body.style.overflow = "auto"; - div.remove(); - }); - - document.body.appendChild(div); - document.body.style.overflow = "hidden"; + previewImage.initComponent(src); } }; @@ -775,8 +767,6 @@ const appSectionIndex = createApp({ images: image, }; - console.log("userInfoWin", userInfoWin.value); - ajax("/v2/api/forum/postComment", { content, token, @@ -872,12 +862,10 @@ const appSectionIndex = createApp({ let target = {}; if (i != null) target = list[index]["child"][i]; else target = list[index]; - console.log("target", target); editToken.value = target.token || ""; editInput.value = target.content || ""; editPicture.value = target.attachments?.images || []; - console.log("editCommentState", editPicture.value); editCommentState.value = true; }; diff --git a/js/public.js b/js/public.js index 68f8076..17a509d 100644 --- a/js/public.js +++ b/js/public.js @@ -9,6 +9,8 @@ const ajax = (url, data) => { url = url.indexOf("https://") > -1 ? url : forumBaseURL + url; return new Promise(function (resolve, reject) { + if (location.hostname == "127.0.0.1") axios.defaults.headers.common["Authorization"] = "n1pstcsmw6m6bcx49z705xhvduqviw29"; + axios .post(url, data, { emulateJSON: true, @@ -67,6 +69,8 @@ const ajaxGet = (url) => { url = url.indexOf("https://") > -1 ? url : forumBaseURL + url; return new Promise(function (resolve, reject) { + if (location.hostname == "127.0.0.1") axios.defaults.headers.common["Authorization"] = "n1pstcsmw6m6bcx49z705xhvduqviw29"; + axios .get( url, diff --git a/js/signIn.js b/js/signIn.js new file mode 100644 index 0000000..0899910 --- /dev/null +++ b/js/signIn.js @@ -0,0 +1,63 @@ +const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch, provide } = Vue; + +const appSectionIndex = createApp({ + setup() { + onMounted(() => { + console.log("signIn"); + + getFirstDay(); + }); + + let dayOfWeek = ref(0); // 当月第一天是星期几 + let totalDaysInMonth = ref(0); // 当月第一共今天 + let currentDay = ref(0); // 今天几号 + let showList = ref([]); // 展示的 签到列表 + + const getFirstDay = () => { + const firstDayOfMonth = new Date(); + firstDayOfMonth.setDate(1); + // 获取当月第一天是星期几(0 表示星期日,1 表示星期一,依此类推) + dayOfWeek.value = firstDayOfMonth.getDay(); + + const currentDate = new Date(); + const currentMonth = currentDate.getMonth() + 1; + const currentYear = currentDate.getFullYear(); + currentDay.value = currentDate.getDate(); + + // 获取当前月份的总天数 + totalDaysInMonth.value = new Date(currentYear, currentMonth, 0).getDate(); + + init(); + }; + + // 初始化 + const init = () => { + ajaxGet("https://api.gter.net/v2/api/forum/getSignInfo").then((res) => { + if (res.code != 200) return; + console.log("res", res); + const data = res.data; + + const list = data.list || {}; + this.getDateList(list); + + const issign = data.issign || 0; + if (issign == 1) wx.setStorageSync("signInState", util.getCurrentDate()); // 存储签到时间 + + this.setData({ + tips: data.tips || [], + integral: Number(data.integral) || 0, + token: data.token || "", + signnum: data.signnum || 0, + signreward: data.signreward || 0, + issign, + }); + + console.log("integral", this.data.integral); + }); + }; + + return { dayOfWeek }; + }, +}); + +appSectionIndex.mount("#signInBox"); diff --git a/signIn.html b/signIn.html new file mode 100644 index 0000000..6045be5 --- /dev/null +++ b/signIn.html @@ -0,0 +1,62 @@ + + + + + + + + + Document + + + +
+
+
+ + + +
+
+
+
+
+ +
216
+
寄托币
+
签到规则
+
+ +
+ +
+
+ +
+ +
+ +
+
+ {{ item.name }} + +
+
+ + + +
+
+
+
+ +
+ + + + + + + \ No newline at end of file