From d863f0174cc3537f51d058f251a931316c4b4b6b Mon Sep 17 00:00:00 2001 From: osiris Date: Thu, 11 Apr 2024 12:09:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E7=E4=B8=AA=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增工具: 数据图表:折线图(#) 数据图表:饼图(#) 数据图表:散点图(#) 选择随机: 投骰子(#) 选择随机: 抛硬币(#) 文本处理:删除重复行(#) 图片工具:图片切割(#) 修复: 数据图表上传数据文件只有第一次有效问题 --- mock/tools.ts | 234 +++++++-- public/images/coin/dollar.png | Bin 0 -> 12965 bytes public/images/coin/xingxing.png | Bin 0 -> 14981 bytes public/images/dice/dice1.png | Bin 0 -> 2342 bytes public/images/dice/dice2.png | Bin 0 -> 2278 bytes public/images/dice/dice3.png | Bin 0 -> 2404 bytes public/images/dice/dice4.png | Bin 0 -> 2422 bytes public/images/dice/dice5.png | Bin 0 -> 2538 bytes public/images/dice/dice6.png | Bin 0 -> 2536 bytes public/images/dice/dice_run1.png | Bin 0 -> 2676 bytes public/images/dice/dice_run2.png | Bin 0 -> 2932 bytes public/images/dice/dice_run3.png | Bin 0 -> 3044 bytes public/images/dice/dice_run4.png | Bin 0 -> 2768 bytes src/components/Chart/Bar/Bar.vue | 2 +- src/components/Chart/Line/Line.vue | 466 +++++++++++++++++ src/components/Chart/Pie/Pie.vue | 474 ++++++++++++++++++ src/components/Chart/Scatter/Scatter.vue | 469 +++++++++++++++++ src/components/Coin/Coin.vue | 133 +++++ src/components/Dice/Dice.vue | 79 +++ src/components/Dice/DiceCore.vue | 115 +++++ src/components/Home/About.vue | 4 +- src/components/ImgCut/ImgCut.vue | 143 ++++++ .../TextRemoveDuplicate.vue | 55 ++ src/router/router.ts | 74 +++ src/store/modules/linux.ts | 21 + src/utils/echarts.ts | 91 +++- 26 files changed, 2303 insertions(+), 57 deletions(-) create mode 100644 public/images/coin/dollar.png create mode 100644 public/images/coin/xingxing.png create mode 100644 public/images/dice/dice1.png create mode 100644 public/images/dice/dice2.png create mode 100644 public/images/dice/dice3.png create mode 100644 public/images/dice/dice4.png create mode 100644 public/images/dice/dice5.png create mode 100644 public/images/dice/dice6.png create mode 100644 public/images/dice/dice_run1.png create mode 100644 public/images/dice/dice_run2.png create mode 100644 public/images/dice/dice_run3.png create mode 100644 public/images/dice/dice_run4.png create mode 100644 src/components/Chart/Line/Line.vue create mode 100644 src/components/Chart/Pie/Pie.vue create mode 100644 src/components/Chart/Scatter/Scatter.vue create mode 100644 src/components/Coin/Coin.vue create mode 100644 src/components/Dice/Dice.vue create mode 100644 src/components/Dice/DiceCore.vue create mode 100644 src/components/ImgCut/ImgCut.vue create mode 100644 src/components/TextRemoveDuplicate/TextRemoveDuplicate.vue create mode 100644 src/store/modules/linux.ts diff --git a/mock/tools.ts b/mock/tools.ts index 6e2e59b..1a55065 100644 --- a/mock/tools.ts +++ b/mock/tools.ts @@ -80,7 +80,7 @@ function getTools() { desc: '在线图片裁剪,标注,滤镜,画等操作', url: '/signimage', cateId: 5, - cate: '设计工具', + cate: '图片处理', }, { id: 1, @@ -142,8 +142,8 @@ function getTools() { logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/%E8%B0%83%E8%89%B2%E6%9D%BF.png', desc: '包含纯色、渐变与阶梯色和常用色彩组合', url: '/palettes', - cateId: 5, - cate: '设计工具' + cateId: 7, + cate: '其他工具' }, { id: 1, @@ -152,7 +152,7 @@ function getTools() { desc: '在线生成带logo、透明、艺术的二维码', url: '/qrcode', cateId: 5, - cate: '设计工具' + cate: '图片处理' }, { id: 1, @@ -160,8 +160,8 @@ function getTools() { logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/choose.png', desc: '选择困难,难以决定,今天吃什么,现在做什么,自定义选项都给你安排的明明白白', url: '/decision', - cateId: 7, - cate: '其他' + cateId: 9, + cate: '选择随机' }, { id: 1, @@ -169,8 +169,8 @@ function getTools() { logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/medium.png', desc: '支持中文的摩斯电码编码解码', url: '/morse', - cateId: 3, - cate: '文本处理' + cateId: 4, + cate: '教育学术' }, { id: 1, @@ -178,8 +178,8 @@ function getTools() { logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/randomnum.png', desc: '可定制范围内进行随机数字,可用于抽奖、点名等用途', url: '/random', - cateId: 7, - cate: '其他' + cateId: 9, + cate: '选择随机' }, { id: 1, @@ -188,7 +188,7 @@ function getTools() { desc: '在线数字一键转换成人民币大写,中文大写转换数字', url: '/numberToChinese', cateId: 7, - cate: '其他' + cate: '其他工具' }, { id: 1, @@ -215,7 +215,7 @@ function getTools() { desc: '把文本转换成图片,生成长图,具有超多个性文字排版', url: '/textToImg', cateId: 5, - cate: '设计工具' + cate: '图片处理' }, { id: 1, @@ -235,6 +235,69 @@ function getTools() { cateId: 8, cate: '数据图表', }, + { + id: 1, + title: '折线图', + logo: '/images/logo/bar.png', + desc: '在线制作柱状图,像做表格一样制作可视化图表,支持导出静态或动态图表', + url: '/line', + cateId: 8, + cate: '数据图表', + }, + { + id: 1, + title: '饼图', + logo: '/images/logo/bar.png', + desc: '在线制作柱状图,像做表格一样制作可视化图表,支持导出静态或动态图表', + url: '/pie', + cateId: 8, + cate: '数据图表', + }, + { + id: 1, + title: '散点图', + logo: '/images/logo/bar.png', + desc: '在线制作柱状图,像做表格一样制作可视化图表,支持导出静态或动态图表', + url: '/scatter', + cateId: 8, + cate: '数据图表', + }, + { + id: 1, + title: '抛硬币', + logo: '/images/logo/bar.png', + desc: '在线抛硬币,选择困难那么交给硬币来帮你选择吧', + url: '/coin', + cateId: 9, + cate: '选择随机', + }, + { + id: 1, + title: '投骰子', + logo: '/images/logo/bar.png', + desc: '在线投骰子,可自定义骰子数量,简单好用的骰子工具', + url: '/dice', + cateId: 9, + cate: '选择随机', + }, + { + id: 1, + title: '文本去重', + logo: '/images/logo/bar.png', + desc: '可以删除或去除文本或字符串中的重复行', + url: '/textRemoveDuplicate', + cateId: 3, + cate: '文本处理', + }, + { + id: 1, + title: '图片分割', + logo: '/images/logo/bar.png', + desc: '将图片分割成四宫格、九宫格、十六宫格,支持自定义行与列', + url: '/imgCut', + cateId: 5, + cate: '图片处理', + }, ] } @@ -343,15 +406,6 @@ function getToolsCate() { cateId: 3, cate: '文本处理' }, - { - id: 1, - title: '摩斯电码', - logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/medium.png', - desc: '支持中文的摩斯电码编码解码', - url: '/morse', - cateId: 3, - cate: '文本处理' - }, { id: 1, title: '字数统计', @@ -360,7 +414,16 @@ function getToolsCate() { url: '/wordCount', cateId: 3, cate: '文本处理', - } + }, + { + id: 1, + title: '文本去重', + logo: '/images/logo/bar.png', + desc: '可以删除或去除文本或字符串中的重复行', + url: '/textRemoveDuplicate', + cateId: 3, + cate: '文本处理', + }, ] }, { @@ -377,6 +440,15 @@ function getToolsCate() { cateId: 4, cate: '教育学术' }, + { + id: 1, + title: '摩斯电码', + logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/medium.png', + desc: '支持中文的摩斯电码编码解码', + url: '/morse', + cateId: 4, + cate: '教育学术' + }, { id: 1, title: '常用进制转换', @@ -399,18 +471,9 @@ function getToolsCate() { }, { id: 5, - title: '设计工具', + title: '图片处理', icon: '', list: [ - { - id: 1, - title: '色板', - logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/%E8%B0%83%E8%89%B2%E6%9D%BF.png', - desc: '包含纯色、渐变与阶梯色和常用色彩组合', - url: '/palettes', - cateId: 5, - cate: '设计工具' - }, { id: 1, title: '二维码生成', @@ -418,7 +481,7 @@ function getToolsCate() { desc: '在线生成带logo、透明、艺术的二维码', url: '/qrcode', cateId: 5, - cate: '设计工具' + cate: '图片处理' }, { id: 1, @@ -427,7 +490,7 @@ function getToolsCate() { desc: '在线图片裁剪,标注,滤镜,画等操作', url: '/signimage', cateId: 5, - cate: '设计工具', + cate: '图片处理', }, { id: 1, @@ -436,8 +499,17 @@ function getToolsCate() { desc: '把文本转换成图片,生成长图,具有超多个性文字排版', url: '/textToImg', cateId: 5, - cate: '设计工具' - } + cate: '图片处理' + }, + { + id: 1, + title: '图片分割', + logo: '/images/logo/bar.png', + desc: '将图片分割成四宫格、九宫格、十六宫格,支持自定义行与列', + url: '/imgCut', + cateId: 5, + cate: '图片处理', + }, ] }, { @@ -478,12 +550,38 @@ function getToolsCate() { url: '/bar', cateId: 8, cate: '数据图表', + },{ + id: 1, + title: '折线图', + logo: '/images/logo/bar.png', + desc: '在线制作折线图,像做表格一样制作可视化图表,支持导出静态或动态图表', + url: '/line', + cateId: 8, + cate: '数据图表', + }, + { + id: 1, + title: '饼图', + logo: '/images/logo/bar.png', + desc: '在线制作饼图,像做表格一样制作可视化图表,支持导出静态或动态图表', + url: '/pie', + cateId: 8, + cate: '数据图表', + }, + { + id: 1, + title: '散点图', + logo: '/images/logo/bar.png', + desc: '在线制作散点图,像做表格一样制作可视化图表,支持导出静态或动态图表', + url: '/scatter', + cateId: 8, + cate: '数据图表', } ] }, { - id: 7, - title: '其他', + id: 9, + title: '选择随机', icon: '', list: [ { @@ -492,17 +590,8 @@ function getToolsCate() { logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/randomnum.png', desc: '可定制范围内进行随机数字,可用于抽奖、点名等用途', url: '/random', - cateId: 7, - cate: '其他' - }, - { - id: 1, - title: '数字转金额大写', - logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/text%20recognition.png', - desc: '在线数字一键转换成人民币大写,中文大写转换数字', - url: '/numberToChinese', - cateId: 7, - cate: '其他' + cateId: 9, + cate: '选择随机' }, { id: 1, @@ -510,8 +599,42 @@ function getToolsCate() { logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/choose.png', desc: '选择困难,难以决定,今天吃什么,现在做什么,自定义选项都给你安排的明明白白', url: '/decision', + cateId: 9, + cate: '选择随机' + }, + { + id: 1, + title: '抛硬币', + logo: '/images/logo/bar.png', + desc: '在线抛硬币,选择困难那么交给硬币来帮你选择吧', + url: '/coin', + cateId: 9, + cate: '选择随机', + }, + { + id: 1, + title: '投骰子', + logo: '/images/logo/bar.png', + desc: '在线投骰子,可自定义骰子数量,简单好用的骰子工具', + url: '/dice', + cateId: 9, + cate: '选择随机', + }, + ] + }, + { + id: 7, + title: '其他工具', + icon: '', + list: [ + { + id: 1, + title: '数字转金额大写', + logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/text%20recognition.png', + desc: '在线数字一键转换成人民币大写,中文大写转换数字', + url: '/numberToChinese', cateId: 7, - cate: '其他' + cate: '其他工具' }, { id: 1, @@ -520,7 +643,16 @@ function getToolsCate() { desc: '手持滚动弹幕', url: '/barrage', cateId: 7, - cate: '其他', + cate: '其他工具', + }, + { + id: 1, + title: '色板', + logo: 'https://baseran2.oss-cn-shenzhen.aliyuncs.com/toools-web/icon/%E8%B0%83%E8%89%B2%E6%9D%BF.png', + desc: '包含纯色、渐变与阶梯色和常用色彩组合', + url: '/palettes', + cateId: 7, + cate: '其他工具' } ] } diff --git a/public/images/coin/dollar.png b/public/images/coin/dollar.png new file mode 100644 index 0000000000000000000000000000000000000000..19457765712cfdfa0ec5ed9a89227e4d7d6e5c5b GIT binary patch literal 12965 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 Mac}{U`B(q|01q;LG5`Po literal 0 HcmV?d00001 diff --git a/public/images/dice/dice2.png b/public/images/dice/dice2.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfde704079b0cf45b39370a40ec26db1fc60e95 GIT binary patch literal 2278 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 WZ_~u@2c?DQ5Ca^$00xh&hyVb8rh2&m literal 0 HcmV?d00001 diff --git a/public/images/dice/dice4.png b/public/images/dice/dice4.png new file mode 100644 index 0000000000000000000000000000000000000000..e3922645eefd5aa3e95cdfe0b1b73833d959875a GIT binary patch literal 2422 zcmV-+35oVnNk&F)2><|BMM6+kP&il$0000G0001E003hE06|PpNazFr009}YN!u7n z+pQ7(kIL5w@)hj*u>6rsrzixL&Pc0zqW8X4%CqzVTXVUQg7i~Hf(h+3$l#jh&cY+j0 zI#I#JM7N|m?B2N>OBeWHAQkI^YO z2@KCYu~L2}zP_BWsWg}$Y?Ghwtv+3t4)9lYi|l-0WuatOV4Fw&yH##}GJOS*sWb-r z9VZUtCB18P2-<*cxbH_t=jCflu85>|#w7Eh%~s0EOCMYViNICZHcq!*JdlyMt~(P+ zqOIj*QhLI^_Y09W(E z-B%4};TQj13#1So8#@{6AKyMF2hY51U0ES@fh0vlQN;2Yn7%?$w2BDP4WNjkh-l4k zoYpPMr5;L(h|uW#rmfg2iXuXix>IFD#MpSV7EOsNdMrg*d~R* z3@#JZl6oacAxR@@iWWv$5EG-Sz$qC_76l|c+NWB#BN5fV~AK&W!E3Dd?S zLS_0d5HOi)H#jUQB18=Z0>Q*&%|^x*p>iE43E6!lBSc6z7Z}_gFsi78T$F_r3I!52$;nQbKvp3niLz~DjKBg>Z7}~= z0#;BsAYcRl08kqModGIj0Av6@kwBVBrK6%DBU3)Guo4Mp02S_^(f-5@mw-4pfZ+hiMxE7;_ocu^H8UVn{@q5DAg zPm(ZjhKVlBH(0NNSH@manV)+qe8HvPY8~=%da890?mkZpg%X&)I{Dq2JSnPSKuM`s zUPLjs1-W%1H0iv8_q7ffmyo&F=2LJ}wuFnhTgFfyWc^*al7xfrpwEpzG7$F^j8PEz zgwlbD7)|+H|GGj^%st020RH>^j))&&z_jKmS3$XXcf3P^TkG_Y ze?YM4lQ~dAYvt4!YoZxO7>O^n`z+gA4|tfT_BiXGXRgbS*=exu?mjP}obCQM=!!J+?*_)H(AcZ@CeF!AG*zPm>9 z;#TT>Tsukc!@oIz>bt)(NQL!M153Tj;~HPKpafJ@`FCrb6&?S?JjU)Fr+rW^rdDjm zV7MZ$#v?VTn&lfQD&xpBd!YE2=IiGM=eoo)&>KNT=(lb|_882+`x;zAkb9wW4xzhCs)er93U1(B2Wpu? z$XlS-r`C)RZ9}VQKP~6HKTnj;@Uu2Be#Kba={^-xd{@OztKY$)Nh^xTR*R;AJe(aA zFICg3BkZL^Z%O=5^LO%}0ORMM{MTv0*hS?zL2+%Lee z9G?$F3C({#@^GQZk7L1J$jn&U)k!>^ZoD}^zHc%I;z#wrI9sNUGa47BWG1a)JhTR7 zb>5nriG*Weg>mOKbY6lqAY{3_fZY3Aq5!z31vN3>#p(1tWi0BvA%=5oEpt@#n8{69 zj3o9h*4JV@M_9b|sXf*N13AkF!|xEP>U@SgPzR=49H4bs@z|Ew1z_I|JBu{d@!|;_ zYR-#u1OX>_Z)=?E{HAorPycJoo;? zV9oG%Do{Z`)+BDP=Sd|fy>&gNBebeKr=gIyZPQYkdD7{=$y$-)!o7EHuJx5B^GH$? z0%ANE;&wCyP5;(h6fq%N^I;iv3_F>{Ko2jKIGh*L&0AV7JNulsev6j}t{ne9n@QA{CCdS@Pg;^OFH1-=&`Ddz~ zU-LlCeZxw7|EkTcKq!En`{Yp1OdiY^PXK#ZR@sg6(oXv{(gaU*=>_mu1&_#Rx=n5U oFvdLRGgCtJ)7*Tk7$U^ubX2*dTyKZ~w-z7u7=m0BA>$L;wH) literal 0 HcmV?d00001 diff --git a/public/images/dice/dice5.png b/public/images/dice/dice5.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c641c2d8e1847a3acde67922537c6709f80c8b GIT binary patch literal 2538 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 A=Kufz literal 0 HcmV?d00001 diff --git a/public/images/dice/dice6.png b/public/images/dice/dice6.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec9e982cdc027325f7e7590544953e43ac5c46a GIT binary patch literal 2536 zcmV<|BMM6+kP&il$0000G0001E003hE06|PpNb3Xu009}YN!u7n z+pQ7(kI<*EcG7hR`CSZ+3Bw2I0{eN$fBPL)1 zY+>7WNRsrtUu3CK9^1BUdyZ_|#;I*{ZQHhOd$;Y*|2>Gvtjvi2+T)0r0OHRSV(!$W z|NEb%7@Qv=wmxB>T{ob-*k@^n2>~Q8g+g zVeCTcc;JprLd6Jby5V61l9~}xRfoV9hpkHkLx7OBG6Z?6?F6b@NXSS6f<3-_p}HYs zAOt~=oo7++kfH`y+-O3zN-KfQwbrUrS`w_znNnRsBI00oU<#o+e0;$2z$mr6`-1Ud zP~RRtU|j|Mma7Zc_p*N79KglJ;6BI>d`t`IwTQ^dmlLe~3*cTrWbX)W&ifmtw-;-0 z^!NYmjmQjK{qpLWiHIzn_|pEEZFdKeizzt!)9>4KEs&pyCvSLm^$cVcSCHLX9$Rg9 zC5@bzpG~&;q^(YJ=mau+);p5vGSG23I{fR)P$!|`y>m3Q_g9isC8S-*@*dx_=qPFT zJZ<|+P?Zo{=4t)E8&rX$jq)@#&!SSun$FYEDmoy<+&rxq0d+H+r-fq{D#>!Jj!e<5 zST>xc-)`tm0?(Vs(l0lpYyE4DEd6W)b;Tbx&e8w=zCOmC{Oc`q^yMuJFqH;}(W5bZIA&wd&rR$1?HY?sJf& za2EzA+xpjQcPa}X7~2scNp$TB_|9+7$-(bFvWrnjVy22Hiip-08CY+FqSY!Qq8Cy` zL@~5h=&WXKGSq<{OA1A3e5gt5Oh%=8 zhay7KXf$W;x=|DnD)&Z0k|LyGHKkZPB1-hLR5{cTZ5)aSsXrhpXf$?>+j6 zeyv<30f;8rl+$CA7q$Abe33y2)BpoEf)9N6wy8e+a}lPorouS*>GS9B(<}dK0hMY- z+291yg2#uin&`lD_iR6HaK&X!-j;b6_gj&BARPBQ1H`cTPNdc31!Y z_@@rsf3Tfw8lOnEvCw}$^!Xk4*lyhdSn$W6e)sQ(959wh$#&yNPKhKV)c)pofBx?| zLo1gKY`D!X+d+bMO12wklag%!NwgQN92^-j*if=*ydjaCY|98a3}7RRNLc`5JCU4Z zaG1_gU@~cJ+SmzO36+E@lbr_)u1sJs0wjr$$wgTrqzDP&a&oc}_$nkM0T|mDt30WAobSm_1;t{zm<#-(lT{HCD=DHR@&`)=`ISc?}xQBYHY|p&yv*lxRJu{X^M*C zUSxI!SF=u+`oUzQfD#GnA0sm@8p#9r*`{C-^j#cTf@-UZiP;*=!x$sV;d$+}3v#D)PS2^*LA*6W*>iF*w9C)eI0092{tvcXb5~huR zN<=dMo7;Xs7CByDNl~j0>r=yB9mZQC^|gpfHKaP3&?UshMxW;R0$AT;j=lDJ^L#$a z@z$h|p@Ext_(*7%ZAA?YQ_+X~vo?9RrVDW#|Dca5>yfT=_p6qI=)W<{=2nQAw)^i6 z+uzrwX^Io>BEMMoXq^jGG!?>1#NDr*h?>=1Ld7Xf-rtq{8Y z1cXJcwd{=3nI&&}p_5Br;r`6aH|z7qqf0wyPA?A* zOc{A!oc{AJJLMS%85x56axo$I#lA#YOZZEjBM-B=*&BVn+VrwXwJ8Li!9PB5e%%ba ztYmB@dZAk)6=av$vIlHT>*KtY>+PlcC}0e9;}P}q`>zPo0gJ{Xpo4yi__pZ$7t^Xc z^bubIc5O_M_nvA>LiYIgx3N3RpVbBR7VX7B!e4`i5Q2g|7;Er{?%`(yJ>&l7IF z&=t0tC!x#O?*!mlY7tFGIhE!X3s1g`nQgy@LnV*gwir{Yfz>;+1Ne4O2yvf-v@p8G zYmi&eJ`miNIb(>lwqW0(RzbunZ)(5NIwGexnI7k&Slwt>Y$ zk+Ac<{H?reeecl3I^V@ylNU>y`!zY5AV~`tc!sH#9H3(&fcDXo~x)A5DM$Y5)AQ|Np9X?*7iCPVjzJ#7T_v1rUYN zp1-I(ndvc->2Vt8A|@Ko5q0EF*#wM z#6_{9+y2=6|Hyzd+;UOEK?q+X8zWE1pxrh!d`mZ!PJwc)f$1Lf%pCMSG3PS86)G$M yc{SP%D-1}2o#JC%OjWWo(R&D60<%c7*sWg?(DxRgIaEM6AOGjnc=}ub0001Py!NpG literal 0 HcmV?d00001 diff --git a/public/images/dice/dice_run1.png b/public/images/dice/dice_run1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9aa844f992f5fb1f4073e533d355fd29f147d81 GIT binary patch literal 2676 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 literal 0 HcmV?d00001 diff --git a/public/images/dice/dice_run4.png b/public/images/dice/dice_run4.png new file mode 100644 index 0000000000000000000000000000000000000000..6df47a9fca3726e0ed3936921502033567315eaf GIT binary patch literal 2768 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 literal 0 HcmV?d00001 diff --git a/src/components/Chart/Bar/Bar.vue b/src/components/Chart/Bar/Bar.vue index 2564e7f..7e839a4 100644 --- a/src/components/Chart/Bar/Bar.vue +++ b/src/components/Chart/Bar/Bar.vue @@ -296,7 +296,7 @@ const updateDataFile = async (params) => { console.log(e) } } - fileReader.readAsBinaryString(_file) + fileReader.readAsArrayBuffer(_file) } //copy diff --git a/src/components/Chart/Line/Line.vue b/src/components/Chart/Line/Line.vue new file mode 100644 index 0000000..3b5d26c --- /dev/null +++ b/src/components/Chart/Line/Line.vue @@ -0,0 +1,466 @@ + + + + + \ No newline at end of file diff --git a/src/components/Chart/Pie/Pie.vue b/src/components/Chart/Pie/Pie.vue new file mode 100644 index 0000000..3106023 --- /dev/null +++ b/src/components/Chart/Pie/Pie.vue @@ -0,0 +1,474 @@ + + + + + \ No newline at end of file diff --git a/src/components/Chart/Scatter/Scatter.vue b/src/components/Chart/Scatter/Scatter.vue new file mode 100644 index 0000000..f855802 --- /dev/null +++ b/src/components/Chart/Scatter/Scatter.vue @@ -0,0 +1,469 @@ + + + + + \ No newline at end of file diff --git a/src/components/Coin/Coin.vue b/src/components/Coin/Coin.vue new file mode 100644 index 0000000..1dbcd60 --- /dev/null +++ b/src/components/Coin/Coin.vue @@ -0,0 +1,133 @@ + + + + + \ No newline at end of file diff --git a/src/components/Dice/Dice.vue b/src/components/Dice/Dice.vue new file mode 100644 index 0000000..b495074 --- /dev/null +++ b/src/components/Dice/Dice.vue @@ -0,0 +1,79 @@ + + + + + \ No newline at end of file diff --git a/src/components/Dice/DiceCore.vue b/src/components/Dice/DiceCore.vue new file mode 100644 index 0000000..a364078 --- /dev/null +++ b/src/components/Dice/DiceCore.vue @@ -0,0 +1,115 @@ + + + + + \ No newline at end of file diff --git a/src/components/Home/About.vue b/src/components/Home/About.vue index 4354178..20c3815 100644 --- a/src/components/Home/About.vue +++ b/src/components/Home/About.vue @@ -15,9 +15,9 @@ const feedBackUrl = import.meta.env.VITE_FEEDBACK_URL

-

本项目是一个开源工具站, 求星星

+

本项目基于 tools-web 构建


-

本项目开源地址:https://github.com/taoran1401/tools-web

+

ctrl + D收藏本站,以便以后使用


联系作者/问题反馈


diff --git a/src/components/ImgCut/ImgCut.vue b/src/components/ImgCut/ImgCut.vue new file mode 100644 index 0000000..7e95ad5 --- /dev/null +++ b/src/components/ImgCut/ImgCut.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/src/components/TextRemoveDuplicate/TextRemoveDuplicate.vue b/src/components/TextRemoveDuplicate/TextRemoveDuplicate.vue new file mode 100644 index 0000000..deac694 --- /dev/null +++ b/src/components/TextRemoveDuplicate/TextRemoveDuplicate.vue @@ -0,0 +1,55 @@ + + + + + \ No newline at end of file diff --git a/src/router/router.ts b/src/router/router.ts index c22bc29..20d05d4 100644 --- a/src/router/router.ts +++ b/src/router/router.ts @@ -1,5 +1,6 @@ //对外暴露配置路由(常量路由) export const constantRoute = [ + //首页 { path: '/', component: () => import('@/components/Home/Home.vue'), @@ -9,6 +10,7 @@ export const constantRoute = [ description: '然部落,在线工具,在线工具大全,开发人员工具,日常生活工具,办公助手,时间戳转换,加密,解密,md5,进制转换,二维码,正则表达式,json格式化,照片处理,字数统计', } }, + //工具 { path: '/timetran', component: () => import('@/components/TimeTran/TimeTran.vue'), @@ -269,6 +271,77 @@ export const constantRoute = [ description: '在线制作柱状图,像做表格一样制作可视化图表,支持导出静态或动态图表', } }, + { + path: '/line', + component: () => import('@/components/Chart/Line/Line.vue'), + name: 'line', + meta: { + title: "折线图", + keywords: '折线图', + description: '在线制作折线图,像做表格一样制作可视化图表,支持导出静态或动态图表', + } + }, + { + path: '/Pie', + component: () => import('@/components/Chart/Pie/Pie.vue'), + name: 'pie', + meta: { + title: "饼图", + keywords: '饼图', + description: '在线制作饼图,像做表格一样制作可视化图表,支持导出静态或动态图表', + } + }, + { + path: '/Scatter', + component: () => import('@/components/Chart/Scatter/Scatter.vue'), + name: 'scatter', + meta: { + title: "散点图", + keywords: '散点图', + description: '在线制作散点图,像做表格一样制作可视化图表,支持导出静态或动态图表', + } + }, + { + path: '/Coin', + component: () => import('@/components/Coin/Coin.vue'), + name: 'coin', + meta: { + title: "抛硬币", + keywords: '抛硬币,硬币', + description: '在线抛硬币,选择困难那么交给硬币来帮你选择吧', + } + }, + { + path: '/Dice', + component: () => import('@/components/Dice/Dice.vue'), + name: 'dice', + meta: { + title: "投骰子", + keywords: '投骰子,骰子,自定义骰子', + description: '在线投骰子,可自定义骰子数量,简单好用的骰子工具', + } + }, + { + path: '/TextRemoveDuplicate', + component: () => import('@/components/TextRemoveDuplicate/TextRemoveDuplicate.vue'), + name: 'textRemoveDuplicate', + meta: { + title: "文本去重", + keywords: '文本去重,文本排重,文本去除重复', + description: '可以删除或去除文本或字符串中的重复行', + } + }, + { + path: '/ImgCut', + component: () => import('@/components/ImgCut/ImgCut.vue'), + name: 'imgCut', + meta: { + title: "图片分割", + keywords: '图片分割,图片切割,四宫格,九宫格,十六宫格', + description: '将图片分割成四宫格、九宫格、十六宫格,支持自定义行与列', + } + }, + // 关于 { path: '/about', component: () => import('@/components/Home/About.vue'), @@ -279,6 +352,7 @@ export const constantRoute = [ description: '', } }, + //其他路由 { path: '/404', component: () => import('@/components/404/404.vue'), diff --git a/src/store/modules/linux.ts b/src/store/modules/linux.ts new file mode 100644 index 0000000..559e9e6 --- /dev/null +++ b/src/store/modules/linux.ts @@ -0,0 +1,21 @@ +import { defineStore } from 'pinia' +export const useUserStore = defineStore('linux', { + //用来存放变量 + state: () => ({ + + }), + //方法 + actions: { + //获取tools + async getCmds() { + //发送请求 + // const result: any = await getTools(data) + // if (result.code == 200) { + + // return result.message + // } else { + // return Promise.reject(new Error(result.message)) + // } + }, + } +}) \ No newline at end of file diff --git a/src/utils/echarts.ts b/src/utils/echarts.ts index b388f25..dedbbd3 100644 --- a/src/utils/echarts.ts +++ b/src/utils/echarts.ts @@ -22,11 +22,11 @@ export function toSpreadsheetData(data, type = 'bar') { } /** - * 转换成echarts使用的数据 + * 转换成echarts使用的数据 - 基础格式(适用于柱状图、折线图等) */ export function toEchartsData(data) { - let tmpColumn: Array = []; - let tmpValue: Array = []; + let tmpColumn: Array = []; + let tmpValue: Array = []; for (let item in data.rows) { if (item == 'len') { continue @@ -37,9 +37,94 @@ export function toEchartsData(data) { return [tmpColumn, tmpValue]; } +/** + * 转换成echarts使用的数据 - 适用于饼图 + * + * @param data + * @returns + */ +export function toEchartsPieData(data) { + let tmpArr: Array = [] + for (let item in data.rows) { + if (item == 'len') { + continue + } + tmpArr.push({ + name: data.rows[item]['cells'][0] ? data.rows[item]['cells'][0]['text'] : '', + value: data.rows[item]['cells'][1] ? data.rows[item]['cells'][1]['text'] : '' + }) + // tmpColumn.push(data.rows[item]['cells'][0] ? data.rows[item]['cells'][0]['text'] : '') + // tmpValue.push(data.rows[item]['cells'][1] ? data.rows[item]['cells'][1]['text'] : '') + } + return tmpArr; +} + +/** + * 数据格式转换 - 根据type转换格式 + * 对象格式{name: '', value: ''}; 列格式: nameArr = [], valueArr = [] + * @param data + * @returns + */ +export function tranObjAndColumn(data, type = 'toObj') { + let returnData = [] as any[]; + if (type == 'toObj') { + if (data.len === 0 || data[0].len === 0) { + return returnData; + } + //转换成饼图使用的obj + let nameArr = data[0]; + let valueArr = data[1]; + let tmpArr: Array = [] + + for (let item in nameArr) { + if (item == 'len') { + continue + } + tmpArr.push({ + name: nameArr[item] ? nameArr[item] : '', + value: valueArr[item] ? valueArr[item] : '', + }) + } + returnData = tmpArr + } else if (type == 'toColumn') { + //饼图对象转换成列数组 + let nameArr = [] as string[] + let valueArr = [] as number[] + for (let item in data) { + nameArr.push(data[item]?.name) + valueArr.push(data[item]?.value) + } + returnData = [nameArr, valueArr] + } else if (type == "toCoord") { + //转换成坐标(散点图用到) + if (data.len === 0 || data[0].len === 0) { + return returnData; + } + //转换成饼图使用的obj + let nameArr = data[0]; + let valueArr = data[1]; + let tmpArr: Array = [] + + for (let item in nameArr) { + if (item == 'len') { + continue + } + tmpArr.push([ + nameArr[item] ? nameArr[item] : 0, + valueArr[item] ? valueArr[item] : 0, + ]) + } + returnData = tmpArr + } + return returnData; +} + + const EchartsUtils = { toSpreadsheetData, toEchartsData, + toEchartsPieData, + tranObjAndColumn, } export default EchartsUtils