feat: 工具详情页添加描述

This commit is contained in:
taoran
2024-06-20 17:12:02 +08:00
parent 95961dc05a
commit 6082f1d789
44 changed files with 438 additions and 64 deletions
@@ -0,0 +1,26 @@
<script setup lang="ts">
import { onMounted } from 'vue';
const props = defineProps({
title: {
type: String,
default: '描述'
}
})
onMounted(() => {
})
</script>
<template>
<!-- desc -->
<div class="mt-3 rounded-2xl bg-white p-4">
<el-divider content-position="left">{{ props.title }}</el-divider>
<div class="m-4">
<slot></slot>
</div>
</div>
</template>
<style scoped>
</style>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
const info = reactive({
title: "ASCII码表",
@@ -311,6 +312,14 @@ const tableDataNonStandard = reactive([
</el-table-column>
</el-table>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
ASCIIAmerican Standard Code for Information Interchange美国信息交换标准代码是一种字符编码标准它使用一个字节8位二进制数来表示128个不同的字符这些字符包括33个控制字符具有特殊功能但不可直接显示的字符和95个可打印字符ASCII码表中的字符从0到127编号其中0代表空字符NULL1代表开始头SOH2代表正文开始STX依此类推ASCII码表的最小值是0代表空字符
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive,ref,onMounted } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
import figlet from 'figlet';
const info = reactive({
@@ -165,14 +166,15 @@ onMounted(() => {
<pre tabindex="0"><code>{{ contentRes }}</code></pre>
</div>
<!-- <el-divider content-position="left">描述</el-divider>
<div>
<el-text>
</el-text>
</div> -->
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
好用的ASCII字形生成器输入框中输入需要生成的字母提供多种风格选择
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { onBeforeMount, reactive,ref } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { ElMessage } from 'element-plus'
import vueDanmaku from 'vue3-danmaku' //https://www.npmjs.com/package/vue3-danmaku
const info = reactive({
@@ -114,6 +115,14 @@ onBeforeMount(() => {
<el-text>双击可退出弹幕</el-text>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
手持弹幕是一种新型的互动沟通工具可以方便地为各种户外活动演出嘉年华等活动增加趣味性和互动性手持弹幕具有轻便易携带易操作等优点可以让每个参与者都变成活动的一部分同时手持弹幕还可以通过预先编写的文本表情等形式表达参与者的情感和想法实现沟通互动在社交媒体时代手持弹幕的使用也带来了更广泛的社交效应增加了活动的互动性和传播度无论是举办方还是参与者手持弹幕都是一个非常有价值的互动工具
</el-text>
</ToolDetail>
</div>
</template>
+12
View File
@@ -4,6 +4,7 @@ import Spreadsheet from 'x-data-spreadsheet'
import 'x-data-spreadsheet/dist/locale/zh-cn';
import { UploadProps,UploadRawFile,genFileId } from 'element-plus'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
import { toEchartsData, toSpreadsheetData } from '@/utils/echarts'
import * as echarts from 'echarts'
@@ -459,6 +460,17 @@ onMounted(() => {
<el-drawer id="x-spreadsheet" v-model="drawer" direction="btt" custom-class="sheet" style="">
</el-drawer>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线图表制作工具在线制作柱状图<br>
在线编辑表格生成柱状图支持png和jpeg格式导出<br>
柱状图是采用垂直柱子,即矩形块的宽度一样,用高度来代表数值大小<br>
能让使用者更为直观地看到不同类别数据或不同时间阶段的比较情况及发展趋势通常利用于较小的数据集分析<br>
无需任何基础即可上手并且支持超全的自定义配置轻松实现你的个性化图表需求<br>
</el-text>
</ToolDetail>
</div>
</template>
+11
View File
@@ -4,6 +4,7 @@ import Spreadsheet from 'x-data-spreadsheet'
import 'x-data-spreadsheet/dist/locale/zh-cn';
import { UploadProps,UploadRawFile,genFileId } from 'element-plus'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
import { toEchartsData, toSpreadsheetData } from '@/utils/echarts'
import * as echarts from 'echarts'
@@ -459,6 +460,16 @@ onMounted(() => {
<el-drawer id="x-spreadsheet" v-model="drawer" direction="btt" class="sheet" style="">
</el-drawer>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
折线图为日常最常用的图表之一当必须呈现与时间相关的数据时它是首选它最适合分析趋势<br>
在线图表制作工具在线制作折线图<br>
支持导入表格并在线编辑表格生成折线图支持png和jpeg格式导出<br>
支持超全的自定义配置轻松实现你的个性化图表需求<br>
</el-text>
</ToolDetail>
</div>
</template>
+12
View File
@@ -4,6 +4,7 @@ import Spreadsheet from 'x-data-spreadsheet'
import 'x-data-spreadsheet/dist/locale/zh-cn';
import { UploadProps,UploadRawFile,genFileId } from 'element-plus'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
import { toEchartsPieData, toSpreadsheetData, tranObjAndColumn } from '@/utils/echarts'
import * as echarts from 'echarts'
@@ -467,6 +468,17 @@ onMounted(() => {
<el-drawer id="x-spreadsheet" v-model="drawer" direction="btt" custom-class="sheet" style="">
</el-drawer>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
饼图是通过一个圆来展示数据用圆内各扇形的角度来表示数据之间的占比关系<br>
能够很好地展示不同分类的变量之间或单个分类变量与整体之间的占比情况常用来强调某个突出的分类变量或表示表示占比关系<br>
在线图表制作工具在线制作饼图<br>
支持导入表格并在线编辑表格生成饼图支持png和jpeg格式导出<br>
支持超全的自定义配置轻松实现你的个性化图表需求<br>
</el-text>
</ToolDetail>
</div>
</template>
@@ -4,6 +4,7 @@ import Spreadsheet from 'x-data-spreadsheet'
import 'x-data-spreadsheet/dist/locale/zh-cn';
import { UploadProps,UploadRawFile,genFileId } from 'element-plus'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
import { toEchartsData, toSpreadsheetData, tranObjAndColumn } from '@/utils/echarts'
import * as echarts from 'echarts'
@@ -462,6 +463,16 @@ onMounted(() => {
<el-drawer id="x-spreadsheet" v-model="drawer" direction="btt" custom-class="sheet" style="">
</el-drawer>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
散点图更偏向于研究型图表通过直观醒目的图形方式反映出变量随自变量而变化的大致趋势可以帮助我们推断出不同维度数据之间的相关性也经常用在地图的标注上<br>
在线图表制作工具在线制作散点图<br>
支持导入表格并在线编辑表格生成散点图支持png和jpeg格式导出<br>
支持超全的自定义配置轻松实现你的个性化图表需求<br>
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { ref,reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
const info = reactive({
title: "抛硬币",
@@ -39,6 +40,14 @@ const throwCoin = () => {
<el-button type="primary" class="w-48" size="large" disabled v-else>抛硬币...</el-button>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
面临艰难的选择 我们邀请您在线掷硬币
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive,ref,onMounted } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
import { CopyDocument } from '@element-plus/icons-vue'
import { colord, extend } from 'colord';
@@ -219,27 +220,41 @@ onMounted(() => {
</div>
</li>
</ul>
<!-- <el-divider content-position="left">描述</el-divider>
<div class="text-left">
<el-text>
CSS 颜色无处不在它可以作为文字背景阴影表格边框链接等属性我们在 CSS 中使用的大多数颜色都是 Hex RGB其实表示颜色的方式有很多
<div class="indent-8">
- RGB: RGB 值也是我们常用的颜色表示方式RGB 指的就是红-绿-这个顺序非常重要每种颜色使用 0 255 之间的数字指定最常见的 RGB 值黑色rgb(0,0,0) 和白色rgb(255,255,255)RGB表示法使我们以更易读的形式来访问与十六进制值相同的颜色范围
</div>
&nbsp;&nbsp;&nbsp;&nbsp;- Hex: 可以使用十六进制值来表示 CSS 中的颜色这也是我们用的最多的颜色表示方式十六进制使用 16 个符号表示使用 0 - 9 表示值 0 9A - F 表示值 10 15<br/>
&nbsp;&nbsp;&nbsp;&nbsp;- HSL: HSL 全称是 Hue-Saturation-Lightness分别表示色调饱和度和亮度它基于 RGB 色轮的每种颜色都有一个角度以及饱和度和亮度值的百分比值<br/>
&nbsp;&nbsp;&nbsp;&nbsp;- HSV: HSV色彩空间是对传统RGB模型的一种改进引入了三个主要组件来定义颜色色调H饱和度S和明度V与RGB模型不同后者基于颜色的主导波长饱和度和亮度提供了更直观的颜色描述方式
&nbsp;&nbsp;&nbsp;&nbsp;- HWB: HWB 全称为Hue-Whiteness-Blackness表示色调白度和黑度<br/>
&nbsp;&nbsp;&nbsp;&nbsp;- LAB: LAB 是一个可以在 Photoshop 等软件中访问的颜色空间它代表了人类可以看到的整个颜色范围它使用三个轴表示亮度a 轴和b <br/>
&nbsp;&nbsp;&nbsp;&nbsp;- LCH: LCH 代表亮度色度和色调它与 Lab 具有相同的 L 但不是使用坐标 a* b*而是使用 C色度 H色调色调可以是 0 360 之间的值色度代表颜色的量它类似于 HSL 中的饱和度但是色度值可以超过 100理论上它是无上限的<br/>
&nbsp;&nbsp;&nbsp;&nbsp;- CMYK: CMYK 代表 CyanMagentaYellow Key它们与打印机中的墨水颜色相匹配虽然屏幕通常以 RGB 来显示颜色而打印机通常使用青色品红色黄色和黑色的组合来表示颜色这些是最常见的墨水颜色<br/>
</el-text>
</div> -->
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在不同格式十六进制rgbhsl和css名称之间转换颜色<br>
<br>
CSS 颜色无处不在它可以作为文字背景阴影表格边框链接等属性我们在 CSS 中使用的大多数颜色都是 Hex RGB其实表示颜色的方式有很多<br>
<div class="indent-8">
- RGB: RGB 值也是我们常用的颜色表示方式RGB 指的就是红-绿-这个顺序非常重要每种颜色使用 0 255 之间的数字指定最常见的 RGB 值黑色rgb(0,0,0) 和白色rgb(255,255,255)RGB表示法使我们以更易读的形式来访问与十六进制值相同的颜色范围
</div>
<div class="indent-8">
- Hex: 可以使用十六进制值来表示 CSS 中的颜色这也是我们用的最多的颜色表示方式十六进制使用 16 个符号表示使用 0 - 9 表示值 0 9A - F 表示值 10 15<br/>
</div>
<div class="indent-8">
- HSL: HSL 全称是 Hue-Saturation-Lightness分别表示色调饱和度和亮度它基于 RGB 色轮的每种颜色都有一个角度以及饱和度和亮度值的百分比值<br/>
</div>
<div class="indent-8">
- HSV: HSV色彩空间是对传统RGB模型的一种改进引入了三个主要组件来定义颜色色调H饱和度S和明度V与RGB模型不同后者基于颜色的主导波长饱和度和亮度提供了更直观的颜色描述方式
</div>
<div class="indent-8">
- HWB: HWB 全称为Hue-Whiteness-Blackness表示色调白度和黑度<br/>
</div>
<div class="indent-8">
- LAB: LAB 是一个可以在 Photoshop 等软件中访问的颜色空间它代表了人类可以看到的整个颜色范围它使用三个轴表示亮度a 轴和b <br/>
</div>
<div class="indent-8">
- LCH: LCH 代表亮度色度和色调它与 Lab 具有相同的 L 但不是使用坐标 a* b*而是使用 C色度 H色调色调可以是 0 360 之间的值色度代表颜色的量它类似于 HSL 中的饱和度但是色度值可以超过 100理论上它是无上限的<br/>
</div>
<div class="indent-8">
- CMYK: CMYK 代表 CyanMagentaYellow Key它们与打印机中的墨水颜色相匹配虽然屏幕通常以 RGB 来显示颜色而打印机通常使用青色品红色黄色和黑色的组合来表示颜色这些是最常见的墨水颜色<br/>
</div>
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string';
import { Codemirror } from "vue-codemirror";
import '@codemirror/search';
@@ -81,6 +82,14 @@ const copyRes = async () => {
<el-text type="danger">{{ info.parseErr }}</el-text>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线css格式化在线压缩css代码
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive, onMounted,ref } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
const info = reactive({
title: "帮我决定",
@@ -86,6 +87,14 @@ onMounted(() => {
<el-button @click="clear">清空</el-button>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
选择困难症患者的福音由我来帮你决定可自定义决定内容随机选择决定
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { ref,reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import DiceCore from "@/components/Tools/Dice/DiceCore.vue"
// import { copy } from '@/utils/string'
const info = reactive({
@@ -62,6 +63,14 @@ const resetDice = () => {
<el-button type="primary" class="w-48" size="large" @click="resetDice">重置</el-button>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线投骰子骰子工具自定义骰子数量
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { CodeDiff } from "v-code-diff";
// import { copy } from '@/utils/string'
const info = reactive({
@@ -31,6 +32,14 @@ const info = reactive({
theme="dark"
/>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线文本差异比对支持中文英文代码比对不限制字数轻松比对文本
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
const info = reactive({
title: "tool name",
@@ -19,6 +20,14 @@ const info = reactive({
<div class="p-4 rounded-2xl bg-white">
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
示例...
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive,ref,onMounted } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { escape, unescape } from 'lodash';
import { copy } from '@/utils/string'
const info = reactive({
@@ -52,12 +53,12 @@ onMounted(() => {
</div>
<!-- <el-divider content-position="left">描述</el-divider>
<div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
</el-text>
</div> -->
html实体转义实体转义成html
</el-text>
</ToolDetail>
</div>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string';
import { Codemirror } from "vue-codemirror";
import '@codemirror/search';
@@ -67,6 +68,13 @@ const copyRes = async () => {
<el-text type="danger">{{ info.parseErr }}</el-text>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
提供在线htmlxml格式化
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
const info = reactive({
title: "HTTP状态码",
@@ -129,6 +130,13 @@ const tableDataControlFive = reactive([
</el-table-column>
</el-table>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
超全面http状态对应的名称和含义解释
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -2,6 +2,7 @@
import { onMounted, reactive, ref,computed, watch } from 'vue'
import { UploadProps,UploadRawFile,genFileId } from 'element-plus'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
const info = reactive({
title: "图片切割",
@@ -136,6 +137,14 @@ onMounted(() => {
<el-empty :image-size="200" description="无预览"/>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
将图片分割成四宫格九宫格十六宫格支持自定义行与列<br>
比如九宫格切图广泛应用于微信朋友圈微博等社交媒体
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string';
import { Codemirror } from "vue-codemirror";
import '@codemirror/search';
@@ -95,6 +96,13 @@ const copyRes = async () => {
<el-text type="danger">{{ info.parseErr }}</el-text>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
JS格式化/压缩工具,提供在线JS格式化JS压缩JS混淆
</el-text>
</ToolDetail>
</div>
</template>
+22 -17
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive,ref,onMounted } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import {jwtDecode} from 'jwt-decode'
const info = reactive({
title: "JWT解析",
@@ -72,24 +73,28 @@ onMounted(() => {
class="w-full"
/>
</div>
<el-divider content-position="left">描述</el-divider>
<div>
<el-text>
1. JWT JSON Web Tokens 的缩写是目前最流行的跨域认证解决方案是一个开放式标准(RFC 7519)用于在各方之间以JSON对象安全传输信息<br/>
2. Header(头部)<br/>
&nbsp;&nbsp;- typ(type): 用来标识整个token字符串是一个JWT字符串<br/>
&nbsp;&nbsp;- alg(algorithm): 用来说明这个JWT签发的时候所使用的签名和摘要算法<br/>
3. Payload(载荷)<br/>
&nbsp;&nbsp;- iss (Issuer)签发者<br/>
&nbsp;&nbsp;- sub (Subject)主题<br/>
&nbsp;&nbsp;- aud (Audience)接收者<br/>
&nbsp;&nbsp;- exp (Expiration time)过期时间<br/>
&nbsp;&nbsp;- nbf (Not Before)生效时间<br/>
&nbsp;&nbsp;- iat (Issued At)签发时间<br/>
&nbsp;&nbsp;- jti (JWT ID)编号<br/>
</el-text>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
解析和解码JSON Web Tokenjwt并显示其内容<br>
<br>
1. JWT JSON Web Tokens 的缩写是目前最流行的跨域认证解决方案是一个开放式标准(RFC 7519)用于在各方之间以JSON对象安全传输信息<br/>
2. Header(头部)<br/>
&nbsp;&nbsp;- typ(type): 用来标识整个token字符串是一个JWT字符串<br/>
&nbsp;&nbsp;- alg(algorithm): 用来说明这个JWT签发的时候所使用的签名和摘要算法<br/>
3. Payload(载荷)<br/>
&nbsp;&nbsp;- iss (Issuer)签发者<br/>
&nbsp;&nbsp;- sub (Subject)主题<br/>
&nbsp;&nbsp;- aud (Audience)接收者<br/>
&nbsp;&nbsp;- exp (Expiration time)过期时间<br/>
&nbsp;&nbsp;- nbf (Not Before)生效时间<br/>
&nbsp;&nbsp;- iat (Issued At)签发时间<br/>
&nbsp;&nbsp;- jti (JWT ID)编号<br/>
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { transferred, copy } from '@/utils/string';
import { Codemirror } from "vue-codemirror";
import { json } from '@codemirror/lang-json';
@@ -122,6 +123,14 @@ const copyRes = async () => {
<el-text type="danger">{{ info.parseErr }}</el-text>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
JSONJavaScript Object Notation是一种轻量级的数据交换格式它基于JavaScript的一个子集但与语言无关因此在多种编程环境中广泛使用JSON格式易于人阅读和编写同时也易于机器解析和生成它通常用于网络应用程序中服务器与客户端之间的数据传输<br>
JSON 工具提供实时编辑和预览JSON 数据语法高亮校验格式化转义去转义压缩等功能可以提高阅读修改的效率和准确性
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { Md5 } from 'ts-md5'
import { copy } from '@/utils/string'
const info = reactive({
@@ -83,6 +84,14 @@ const copyRes = async (resStr: string) => {
</el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线md5加密,md5加密算法,md5加密工具,免费MD5在线加密,可生成32位md5,16位md5
</el-text>
</ToolDetail>
</div>
</template>
+9 -1
View File
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
const info = reactive({
title: "在线markdown编辑器",
content: '',
@@ -21,6 +21,14 @@ const info = reactive({
<div class="">
<v-md-editor v-model="info.content" height="500px"></v-md-editor>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线编辑markdown
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
import { toMorse, toText } from '@/utils/morse'
const info = reactive({
@@ -49,6 +50,14 @@ const copyRes = async (resStr: string) => {
<el-input type="textarea" :rows="8" v-model="info.tranRes"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
摩尔斯电码或摩斯电码Morse code是一种编码系统通过不同顺序的信号表示英文字母数字和标点符号由美国人艾尔菲德·维尔在协助Samuel Morse发明摩尔斯电报机1835时创造今天国际摩尔斯电码仍在使用
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy, numberToChinese } from '@/utils/string'
const info = reactive({
title: "数字转金额大写",
@@ -42,6 +43,13 @@ const copyRes = async (resStr: string) => {
<el-input type="textarea" :rows="8" v-model="info.tranRes"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
可以将阿拉伯数字金额转换为中文大写金额的在线工具;用户输入阿拉伯数字金额如100会立即转换成壹佰的中文
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
const info = reactive({
title: "色板",
@@ -70,6 +71,14 @@ const copyRes = async (resStr: string) => {
</div>
<div></div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线复制颜色好看的颜色组合色板
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive,ref } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import QRCodeVue3 from 'qrcode-vue3'
import { Delete, Plus } from '@element-plus/icons-vue'
import { ElMessage, type UploadFile } from 'element-plus'
@@ -173,6 +174,14 @@ const gen = () => {
/>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
根据内容生成二维码自定义尺寸纠错级别颜色等带logo二维码
</el-text>
</ToolDetail>
</div>
</template>
+8
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
// import { copy } from '@/utils/string'
const info = reactive({
title: "生成随机数",
@@ -48,6 +49,13 @@ const random = () => {
<el-button @click="random" type="primary" size="large" disabled v-else>生成...</el-button>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
可定制范围内进行随机数字可用于抽奖点名等用途
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { onMounted, reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy, genRandomStrByChars } from '@/utils/string'
import { ElMessage } from 'element-plus'
const info = reactive({
@@ -148,6 +149,14 @@ onMounted(() => {
<el-input type="textarea" :autosize="info.autosize" v-model="info.resStr"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线生成密码支持开启或关闭大小写 数字 特殊符号支持自定义字符长度批量生成密码
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { Codemirror } from "vue-codemirror"
// import { lineNumbers } from '@codemirror/view';
@@ -157,6 +158,14 @@ const execMatch = () => {
<el-input type="textarea" :rows="4" readonly v-model="info.matchRes"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
正则表达式是对字符串包括普通字符例如a z 之间的字母和特殊字符称为元字符操作的一种逻辑公式就是用事先定义好的一些特定字符及这些特定字符的组合组成一个规则字符串这个规则字符串用来表达对字符串的一种过滤逻辑正则表达式是一种文本模式该模式描述在搜索文本时要匹配的一个或多个字符串
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { ElMessage } from 'element-plus'
import { copy } from '@/utils/string'
import { isBinary, isOctal, isDecimal, isHexadecimal } from '@/utils/verify'
@@ -248,6 +249,13 @@ const copyRes = async (index: any) => {
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
进位制其实是一种记数的方式所以也称为进位记数法/位值计数法可以用有限的数字符号代表所有的数值 可使用数字符号的数目称为基数英文radix或底数基数为n即可称n进位制简称n进制 例如平常生活中我们经常用到的十进制就是使用10个阿拉伯数字0-9进行记数所以它的基数就是10称为十进制
</el-text>
</ToolDetail>
</div>
</template>
@@ -2,6 +2,7 @@
import { ref, reactive } from "vue"
import SignImageCore from './SignImageCore.vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { UploadProps, UploadInstance, UploadRawFile, genFileId } from 'element-plus'
import { autoDown } from '@/utils/file'
import { Jh_getTimeStamp } from '@/utils/time'
@@ -80,6 +81,14 @@ const saveImg = () => {
@getNewImg="info.getNewImg"
></SignImageCore>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线图片裁剪图片标注图片滤镜图片画笔图片旋转图片文字图片尺寸调整等操作
</el-text>
</ToolDetail>
</div>
</template>
+8 -1
View File
@@ -1,10 +1,10 @@
<script setup lang="ts">
import { reactive, ref, shallowRef, onBeforeUnmount, onMounted } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import '@wangeditor/editor/dist/css/style.css' // 引入富文本 css
import { Editor, Toolbar } from '@wangeditor/editor-for-vue' //富文本组件
import { copy } from '@/utils/string'
import Html from '../Html/Html.vue'
const info = reactive({
title: "在线文本编辑/HTML获取",
mode: 'default',
@@ -92,6 +92,13 @@ const copyRes = async (resStr: string) => {
/>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线富文本编辑, html实时预览在线编辑文本文本编辑获取html
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive, computed } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
const info = reactive({
@@ -48,6 +49,14 @@ const copyRes = async () => {
<el-input type="textarea" :rows="8" v-model="removeDuplicate"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
可以删除或去除文本或字符串中的重复行
</el-text>
</ToolDetail>
</div>
</template>
+8 -2
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive, ref, shallowRef, onBeforeUnmount } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import html2canvas from "html2canvas";
import '@wangeditor/editor/dist/css/style.css' // 引入富文本 css
import { Editor, Toolbar } from '@wangeditor/editor-for-vue' //富文本组件
@@ -132,9 +133,14 @@ onBeforeUnmount(() => {
/>
<div ref="poster" class="absolute top-0 -z-10" v-html="valueHtml"></div>
</div>
<!-- v-html="valueHtml" -->
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
把文本转换成图片生成长图富文本自定义文字排版可导出pngjpeg格式可更换背景图设置宽度是好用的文本转图片工具
</el-text>
</ToolDetail>
</div>
</template>
+8 -4
View File
@@ -3,6 +3,7 @@ import { onMounted, onUnmounted, reactive } from 'vue'
import { VideoPause,VideoPlay,CopyDocument } from '@element-plus/icons-vue'
import { Jh_getTimeStamp,Jh_timeStampToTime,Jh_convertTimeStamp } from '@/utils/time'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
const info = reactive({
title: "时间戳转换",
@@ -119,10 +120,13 @@ const copyRes = async () => {
</div>
</div>
<div class="p-4 rounded-2xl bg-white mt-5">
<div class="text-xl mt-5 mb-5">时间戳</div>
<el-text>Unix 时间戳是从1970年1月1日UTC/GMT的午夜开始所经过的秒数不考虑闰秒</el-text>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
时间戳是从1970年1月1日UTC/GMT的午夜开始所经过的秒数不考虑闰秒用于表示一个时间点然而这种格式对于人类阅读并不友好因此需要转换成可读的日期和时间格式这个工具能够将时间戳快速转换为人类可读的日期时间格式同时也支持反向转换即将日期时间转换为时间戳<br>
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
import { ElMessage } from 'element-plus'
import { v4 as uuidv4 } from 'uuid'
@@ -62,6 +63,14 @@ const copyRes = async (resStr: string) => {
<el-input type="textarea" :autosize="info.autosize" v-model="info.resStr"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线UUID批量生成
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { Codemirror } from "vue-codemirror"
// import { lineNumbers } from '@codemirror/view';
import { copy } from '@/utils/string'
@@ -75,6 +76,14 @@ const copyRes = async () => {
<el-input type="textarea" :rows="8" v-model="info.tranRes"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
Unicode是计算机科学领域里的一项业界标准有时候我们需要对一段文本或者一段内容进行重新排版编译的时候就需要将获取的值进行转码
</el-text>
</ToolDetail>
</div>
</template>
+9
View File
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive, onMounted } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { useRoute } from "vue-router"
import Length from './Length.vue'
import Area from './Area.vue'
@@ -90,6 +91,14 @@ onMounted(() => {
</el-tabs>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线单位换算长度单位换算面积单位换算时间单位换算温度单位换算压力单位换算热量单位换算功率单位换算
</el-text>
</ToolDetail>
</div>
</template>
@@ -1,6 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
import { copy } from '@/utils/string'
const info = reactive({
@@ -54,6 +55,14 @@ const copyRes = async () => {
<el-input type="textarea" :rows="8" v-model="info.tranRes"></el-input>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线url编码在线url解码工具
</el-text>
</ToolDetail>
</div>
</template>
+9 -1
View File
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { reactive } from 'vue'
import DetailHeader from '@/components/Layout/DetailHeader/DetailHeader.vue'
import ToolDetail from '@/components/Layout/ToolDetail/ToolDetail.vue'
const info = reactive({
title: "在线字数统计",
content: '',
@@ -52,6 +52,14 @@ const changeContent = () => {
<div class="ml-3"><el-text>空白字符{{ info.emptyNum }}</el-text></div>
</div>
</div>
<!-- desc -->
<ToolDetail title="描述">
<el-text>
在线统计字数汉字标点数字字母字符
</el-text>
</ToolDetail>
</div>
</template>
+2 -2
View File
@@ -57,7 +57,7 @@ export function getToolsCate() {
id: 1,
title: 'Json在线转换',
logo: '/images/logo/json.png',
desc: '在线编辑json, 语法检查',
desc: '提供实时编辑和预览JSON 数据,语法高亮、校验、格式化、转义,去转义、压缩等功能,可以提高阅读修改的效率和准确性',
url: '/json/',
cateId: 2,
cate: '开发运维',
@@ -330,7 +330,7 @@ export function getToolsCate() {
id: 1,
title: '在线图片处理',
logo: '/images/logo/img.png',
desc: '在线图片裁剪,标注,滤镜,等操作',
desc: '在线图片裁剪,图片标注,图片滤镜,图片画笔、图片旋转、图片文字等操作',
url: '/signimage/',
cateId: 5,
cate: '图片处理',