From d54080a213b8568a6361b3b5042b445e8b18e530 Mon Sep 17 00:00:00 2001 From: Yro Boros Date: Sun, 1 Mar 2026 22:36:23 +1000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BA=D0=B0=D1=87=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/word.png | Bin 0 -> 875 bytes src/components/Setings.vue | 1 - src/components/Stat.vue | 74 +++++++++++++++++++++++++++++-------- 3 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 src/assets/word.png diff --git a/src/assets/word.png b/src/assets/word.png new file mode 100644 index 0000000000000000000000000000000000000000..4700b96562e7a295d278bb4da92740a7865cffb9 GIT binary patch literal 875 zcmV-x1C;!UP)mriKa3%*pq(MDa0ifn0i+L8 z-#%&?RMf!AkX)nljc z51fu36duVck^(x`1?=dwf@bC!StWl4Q zdSuiigWDsd;*sYOP`R8|xC)N3wO~Ol0fd_MSPXxTYDU4|0Z3W}r_n-S4W^oWOB6Ne zo=q*71D8uLlpUBnl3MtaAts3($)aX7NB&~S$>&7#$Ud~dC`QsBG;oUP$`e2GApgnTXKNH$ZdbG%Oy8Ls65SuZZN(-2>kjgp~L3pPSS`x890QwtM-;uc62oPp|HhNLfI;A{5uLMtQ(bwHEV zUL>(8z*xva;?IG4wiZdOcMvpDit-S3L4G_mqqid!xuEXxTqJ%Dw8RTR^2niq_eg5t zLZnj36e=DBAH#y=2}E83gP>#f&jZjmRjU=9i zS{MwPW;{}x2{c5CaO6cKb@Slj8AW<1g~1@|SS^Q-L{{aqf!Uxu0m>VQq;(Nxv=X&2 z7&IQajS;n=`UO?ZABLhdE)+E>`No5*s|zZra`J`H(r7;6{z-nu;On!4M&eQX9!s!z zI0sb?w3Z)agAZp=x~*x2Z?JgwCR*3_<>)BN=qSqQ0NtoZMm;j>k)bv9Hk2nrL7qr0 z@)%~*)5B)Lz;Ii_G5i diff --git a/src/components/Stat.vue b/src/components/Stat.vue index 21514a2..2a5d273 100644 --- a/src/components/Stat.vue +++ b/src/components/Stat.vue @@ -46,6 +46,42 @@ const viewed_b = async () => { console.log(err); } }; +const download = async () => { + try { + const rez = await axios.get("http://127.0.0.1:8001/file_download", { + params: { + path: props.article_date.split(" ")[0], + title: props.title, + }, + responseType: "blob", + }); + const blobUrl = window.URL.createObjectURL(new Blob([rez.data], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" })); + const link = document.createElement("a"); + // Принудительно добавляем .docx к имени файла + let filename = props.title + ".docx"; + try { + const disposition = rez.headers && rez.headers["content-disposition"]; + if (disposition) { + const match = disposition.match(/filename\*?=([^;\n]+)/i); + if (match) { + let name = match[1].replace(/UTF-8''/, "").replace(/"/g, ""); + if (!name.endsWith(".docx")) name += ".docx"; + filename = name; + } + } + } catch (e) { + /* ignore */ + } + link.href = blobUrl; + link.setAttribute("download", filename); + document.body.appendChild(link); + link.click(); + link.remove(); + window.URL.revokeObjectURL(blobUrl); + } catch (err) { + console.log(err); + } +}; onMounted(() => { document.addEventListener("click", handleClickOutside); @@ -57,26 +93,24 @@ onBeforeUnmount(() => { \ No newline at end of file +