Compare commits

...

3 Commits

Author SHA1 Message Date
bd25138da0 123
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-05 20:48:24 +08:00
a581cd7c51 更新
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-05 20:13:00 +08:00
8a973db679 文字显示不正常的Bug
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-29 15:00:17 +08:00
6 changed files with 418 additions and 39 deletions

89
.drone copy.yml Normal file
View File

@ -0,0 +1,89 @@
kind: pipeline # 定义一个管道
type: docker # 当前管道的类型
name: test # 当前管道的名称
steps:
# 第一步:构建项目
- name: 构建项目
image: node:18-alpine
commands:
- rm -rf node_modules
- npm ci
- npm run build
# 第二步上传静态资源到腾讯云COS (使用另一个插件)
- name: 静态资源上传到cos
image: ccr.ccs.tencentyun.com/xiaoqidun/gocos
settings:
secret_id:
from_secret: cos_secret_id
secret_key:
from_secret: cos_secret_key
bucket_url: https://files-1302416092.cos.ap-shanghai.myqcloud.com
source: dist
target: /utils
strip_prefix: dist
# 第三步:部署到服务器
- name: 清除服务器缓存
image: appleboy/drone-ssh
settings:
host:
from_secret: server_host
username:
from_secret: server_username
password:
from_secret: server_password
# 或者使用SSH密钥
# key:
# from_secret: server_ssh_key
port: 22
script:
- rm -rf /www/wwwroot/utils.zguiy.com/*
- mkdir -p /www/wwwroot/utils.zguiy.com/
- chmod 755 /www/wwwroot/utils.zguiy.com/
when:
branch:
- main
- master
- dev
# 第四步:上传构建文件
- name: 上传构建文件
image: appleboy/drone-scp
settings:
host:
from_secret: server_host
username:
from_secret: server_username
password:
from_secret: server_password
# 或者使用SSH密钥
# key:
# from_secret: server_ssh_key
port: 22
source: dist/*
target: /www/wwwroot/utils.zguiy.com/
strip_components: 1
when:
branch:
- main
- master
- dev
# 定义数据卷用于缓存node_modules
volumes:
- name: node_modules_cache
host:
path: /tmp/drone_cache/node_modules
# 触发条件
trigger:
branch:
- main
- master
- dev
event:
- push
- pull_request

View File

@ -8,11 +8,9 @@ steps:
- name: 构建项目
image: node:18-alpine
commands:
- npm install
- rm -rf node_modules
- npm ci
- npm run build
volumes:
- name: node_modules_cache
path: /drone/src/node_modules
# 第二步上传静态资源到腾讯云COS (使用另一个插件)
- name: 静态资源上传到cos
@ -74,11 +72,6 @@ steps:
- master
- dev
# 定义数据卷用于缓存node_modules
volumes:
- name: node_modules_cache
host:
path: /tmp/drone_cache/node_modules
# 触发条件
trigger:

View File

@ -3,7 +3,7 @@ import { ref, watch } from 'vue'
type Theme = 'light' | 'dark'
// 全局主题状态
const currentTheme = ref<Theme>('dark')
const currentTheme = ref<Theme>('light')
export const useTheme = () => {
// 切换主题

View File

@ -106,7 +106,54 @@ export default {
bookmark_list: 'Bookmark List',
export_bookmarks: 'Export Bookmarks',
recovery_success: 'Recovery Successful',
file_format_error: 'File Format Error'
file_format_error: 'File Format Error',
instructions: {
windows: {
title: 'Windows System Instructions',
steps: [
'Copy C:\\Users\\%username%\\AppData\\Local\\Google\\Chrome\\User Data into File Explorer',
'In search bar, type Bookmarks, you will see a list of files named Bookmarks and/or Bookmarks.bak',
'Note: If there is more than one user using the same Chrome, bookmarks from other users will be listed too',
'Select all the files with mouse and drag them to the upload area below',
'Download all the converted HTML files',
'Open each HTML file with Chrome and determine the HTML file that contains your bookmarks (Note: The largest file is most likely the correct one)',
'In your Chrome browser, click the Chrome menu icon and go to Bookmarks > Bookmark Manager',
'Click the menu icon beside search bar and click "Import Bookmarks"',
'Select the HTML file that contains your bookmarks',
'Your bookmarks should now be imported back to Chrome'
]
}
}
},
ip_lookup: {
title: 'IP Lookup',
description: 'IP address geolocation query and type analysis tool',
ip_address: 'IP Address',
lookup: 'Lookup',
query: 'Query',
get_my_ip: 'Get My IP',
clear: 'Clear',
ip_input: 'IP Input',
placeholder: 'Please enter IP address...',
common_ips: 'Common IPs',
querying: 'Querying...',
ip_info: 'IP Information',
location: 'Location',
isp: 'ISP',
organization: 'Organization',
country: 'Country',
region: 'Region',
city: 'City',
timezone: 'Timezone',
coordinates: 'Coordinates',
ip_type: 'IP Type',
public_ip: 'Public IP',
private_ip: 'Private IP',
current_ip: 'Current IP',
ip_analysis: 'IP Analysis',
format: 'Format',
access_type: 'Access Type',
class: 'IP Class'
},
seal_generator: {
title: 'Seal Generator',
@ -147,6 +194,157 @@ export default {
personal_seal_features: 'Personal Seal Features',
important_notice: 'Important Notice',
legal_notice: 'The seals generated by this tool are for learning and testing purposes only. Do not use for illegal purposes. Official company seals need to be registered with relevant authorities.'
},
text_counter: {
title: 'Text Counter',
description: 'Word count, character count, line count and other text analysis tools',
clear: 'Clear',
paste: 'Paste',
sample: 'Sample',
text_input: 'Text Input',
placeholder: 'Please enter or paste text to analyze...',
basic_stats: 'Basic Statistics',
characters: 'Characters',
characters_no_spaces: 'Characters (No Spaces)',
words: 'Words',
lines: 'Lines',
paragraphs: 'Paragraphs',
sentences: 'Sentences',
character_types: 'Character Types',
letters: 'Letters',
numbers: 'Numbers',
spaces: 'Spaces',
punctuation: 'Punctuation',
reading_time: 'Reading Time',
slow_reading: 'Slow Reading',
normal_reading: 'Normal Reading',
fast_reading: 'Fast Reading',
top_words: 'Top Words',
character_count: 'Character Count',
word_count: 'Word Count',
line_count: 'Line Count',
paragraph_count: 'Paragraph Count',
sentence_count: 'Sentence Count',
reading_speed: 'Reading Speed',
fast: 'Fast',
normal: 'Normal',
slow: 'Slow',
most_used_words: 'Most Used Words'
},
image_compressor: {
title: 'Image Compressor',
description: 'Image compression and quality adjustment tool',
compress: 'Compress',
download: 'Download',
reset: 'Reset',
upload_image: 'Upload Image',
click_or_drag: 'Click or drag to upload image',
compression_settings: 'Compression Settings',
quality: 'Quality',
max_width: 'Max Width',
max_height: 'Max Height',
keep_aspect_ratio: 'Keep Aspect Ratio',
output_format: 'Output Format',
original_info: 'Original Info',
size: 'File Size',
dimensions: 'Dimensions',
format: 'Format',
original_preview: 'Original Preview',
compressed_preview: 'Compressed Preview',
compressed_size: 'Compressed Size',
compression_ratio: 'Compression Ratio',
size_reduction: 'Size Reduction',
compressing: 'Compressing...',
width: 'Width',
height: 'Height',
original_size: 'Original Size',
maintain_aspect_ratio: 'Maintain Aspect Ratio',
download_result: 'Download Result'
},
qrcode_generator: {
title: 'QR Code Generator',
description: 'Text to QR code generation tool with customizable styles',
generate: 'Generate',
download: 'Download',
clear: 'Clear',
text_input: 'Text Input',
placeholder: 'Please enter content to generate QR code...',
settings: 'Settings',
size: 'Size',
qr_size: 'QR Code Size',
error_level: 'Error Level',
foreground_color: 'Foreground Color',
background_color: 'Background Color',
preview: 'Preview',
qr_code: 'QR Code',
generating: 'Generating...',
no_preview: 'Please enter content and generate QR code',
download_qr: 'Download QR Code',
qr_preview: 'QR Code Preview'
},
code_formatter: {
title: 'Code Formatter',
description: 'Code beautification, formatting and minification tool',
format: 'Format',
minify: 'Minify',
copy: 'Copy',
clear: 'Clear',
language: 'Language',
indent_size: 'Indent Size',
line_width: 'Line Width',
input: 'Input',
output: 'Output',
output_placeholder: 'Formatted result will be displayed here...',
copy_result: 'Copy Result',
clear_all: 'Clear All',
input_placeholder: 'Please enter code...',
line_count: 'Line Count',
char_count: 'Character Count'
},
base64_to_image: {
title: 'Base64 to Image',
description: 'Base64 and image bidirectional conversion tool',
base64_to_image: 'Base64 to Image',
download_image: 'Download Image',
clear: 'Clear',
base64_input: 'Base64 Input',
base64_placeholder: 'Please enter Base64 encoding...',
image_to_base64: 'Image to Base64',
click_or_drag: 'Click or drag to upload image',
image_preview: 'Image Preview',
preview_image: 'Preview Image',
converting: 'Converting...',
no_preview: 'Please enter Base64 or upload image',
base64_output: 'Base64 Output',
upload_image: 'Upload Image',
image_info: 'Image Info',
copy_base64: 'Copy Base64'
},
yml_properties_converter: {
title: 'YML/Properties Converter',
description: 'YML and Properties configuration file format converter',
yml_to_properties: 'YML to Properties',
properties_to_yml: 'Properties to YML',
yml_to_json: 'YML to JSON',
json_to_yml: 'JSON to YML',
clear: 'Clear',
input: 'Input',
output: 'Output',
paste: 'Paste',
copy: 'Copy',
input_format: 'Input Format',
output_format: 'Output Format',
input_placeholder_yml: 'Enter YAML content...',
input_placeholder_properties: 'Enter Properties content...',
input_placeholder_json: 'Enter JSON content...',
output_placeholder: 'Conversion result will be displayed here...',
use_example: 'Use This Example',
format_description: 'Format Description',
yml_example: 'YAML Example',
properties_example: 'Properties Example',
json_example: 'JSON Example',
convert: 'Convert',
conversion_result: 'Conversion Result'
}
}
}

View File

@ -264,14 +264,19 @@ export default {
code_formatter: {
title: '代码格式化',
description: '代码美化、格式化、压缩工具',
language: '语言',
format: '格式化',
minify: '压缩',
copy: '复制',
clear: '清除',
language: '语言',
indent_size: '缩进大小',
line_width: '行宽',
input: '输入',
output: '输出',
output_placeholder: '格式化结果将显示在这里...',
copy_result: '复制结果',
clear_all: '清除全部',
input_placeholder: '请输入代码...',
output_placeholder: '格式化结果将显示在这里...',
indent_size: '缩进大小',
line_count: '行数',
char_count: '字符数'
},
@ -342,16 +347,30 @@ export default {
description: 'IP地址归属地查询、类型分析工具',
ip_address: 'IP地址',
lookup: '查询',
query: '查询',
get_my_ip: '获取我的IP',
clear: '清除',
ip_input: 'IP输入',
placeholder: '请输入IP地址...',
common_ips: '常用IP',
querying: '查询中...',
ip_info: 'IP信息',
location: '位置信息',
isp: '运营商',
organization: '组织',
country: '国家',
region: '省份',
city: '城市',
timezone: '时区',
coordinates: '坐标',
ip_type: 'IP类型',
public_ip: '公网IP',
private_ip: '私网IP',
current_ip: '当前IP'
current_ip: '当前IP',
ip_analysis: 'IP分析',
format: '格式',
access_type: '访问类型',
class: 'IP类别'
},
date_calculator: {
title: '日期计算',
@ -383,13 +402,33 @@ export default {
text_counter: {
title: '文本统计',
description: '字数、词数、行数等统计分析工具',
clear: '清除',
paste: '粘贴',
sample: '示例',
text_input: '文本输入',
placeholder: '请输入或粘贴需要统计的文本...',
basic_stats: '基础统计',
characters: '字符数',
characters_no_spaces: '字符数(不含空格)',
words: '词数',
lines: '行数',
paragraphs: '段落数',
sentences: '句子数',
character_types: '字符类型',
letters: '字母',
numbers: '数字',
spaces: '空格',
punctuation: '标点符号',
reading_time: '阅读时间',
slow_reading: '慢速阅读',
normal_reading: '正常阅读',
fast_reading: '快速阅读',
top_words: '最常用词汇',
character_count: '字符数',
word_count: '词数',
line_count: '行数',
paragraph_count: '段落数',
sentence_count: '句子数',
reading_time: '阅读时间',
reading_speed: '阅读速度',
fast: '快速',
normal: '正常',
@ -431,27 +470,51 @@ export default {
image_compressor: {
title: '图片压缩',
description: '图片压缩优化、质量调整工具',
upload_image: '上传图片',
compress: '压缩',
download: '下载',
reset: '重置',
upload_image: '上传图片',
click_or_drag: '点击或拖拽上传图片',
compression_settings: '压缩设置',
quality: '质量',
width: '宽度',
height: '高度',
max_width: '最大宽度',
max_height: '最大高度',
keep_aspect_ratio: '保持宽高比',
output_format: '输出格式',
original_info: '原图信息',
size: '文件大小',
dimensions: '尺寸',
format: '格式',
original_size: '原始大小',
original_preview: '原图预览',
compressed_preview: '压缩预览',
compressed_size: '压缩后大小',
compression_ratio: '压缩比',
size_reduction: '减少大小',
compressing: '压缩中...',
width: '宽度',
height: '高度',
original_size: '原始大小',
maintain_aspect_ratio: '保持宽高比',
download_result: '下载结果'
},
qrcode_generator: {
title: '二维码生成',
description: '文本转二维码、自定义样式工具',
text_input: '文本输入',
generate: '生成',
download: '下载',
clear: '清除',
text_input: '文本输入',
placeholder: '请输入要生成二维码的内容...',
settings: '设置选项',
size: '尺寸',
qr_size: '二维码大小',
error_level: '容错级别',
foreground_color: '前景色',
background_color: '背景色',
preview: '预览',
qr_code: '二维码',
generating: '生成中...',
no_preview: '请输入内容并生成二维码',
download_qr: '下载二维码',
qr_preview: '二维码预览'
},
@ -488,6 +551,24 @@ export default {
description: 'YML与Properties配置文件格式互转',
yml_to_properties: 'YML转Properties',
properties_to_yml: 'Properties转YML',
yml_to_json: 'YML转JSON',
json_to_yml: 'JSON转YML',
clear: '清空',
input: '输入',
output: '输出',
paste: '粘贴',
copy: '复制',
input_format: '输入格式',
output_format: '输出格式',
input_placeholder_yml: '请输入YAML内容...',
input_placeholder_properties: '请输入Properties内容...',
input_placeholder_json: '请输入JSON内容...',
output_placeholder: '转换结果将显示在这里...',
use_example: '使用此示例',
format_description: '格式说明',
yml_example: 'YAML 示例',
properties_example: 'Properties 示例',
json_example: 'JSON 示例',
convert: '转换',
yml_input: 'YML输入',
properties_input: 'Properties输入',
@ -496,13 +577,20 @@ export default {
base64_to_image: {
title: 'Base64转图片',
description: 'Base64与图片双向转换工具',
image_to_base64: '图片转Base64',
base64_to_image: 'Base64转图片',
upload_image: '上传图片',
base64_input: 'Base64输入',
image_preview: '图片预览',
image_info: '图片信息',
download_image: '下载图片',
clear: '清除',
base64_input: 'Base64输入',
base64_placeholder: '请输入Base64编码...',
image_to_base64: '图片转Base64',
click_or_drag: '点击或拖拽上传图片',
image_preview: '图片预览',
preview_image: '预览图片',
converting: '转换中...',
no_preview: '请输入Base64或上传图片',
base64_output: 'Base64输出',
upload_image: '上传图片',
image_info: '图片信息',
copy_base64: '复制Base64'
},
image_watermark: {
@ -557,7 +645,24 @@ export default {
bookmark_list: '书签列表',
export_bookmarks: '导出书签',
recovery_success: '恢复成功',
file_format_error: '文件格式错误'
file_format_error: '文件格式错误',
instructions: {
windows: {
title: 'Windows 系统操作说明',
steps: [
'复制路径 C:\\Users\\%username%\\AppData\\Local\\Google\\Chrome\\User Data 到文件资源管理器',
'在搜索栏中输入 Bookmarks你将看到名为 Bookmarks 和/或 Bookmarks.bak 的文件列表',
'如果同一台电脑上有多个用户使用 Chrome其他用户的书签文件也会被列出',
'选择所有文件并将它们拖拽到下方的上传区域',
'下载所有转换后的 HTML 文件',
'用 Chrome 打开每个 HTML 文件,确定哪个文件包含你的书签(通常最大的文件是正确的)',
'在 Chrome 浏览器中,点击菜单图标,进入 书签 > 书签管理器',
'点击搜索栏旁边的菜单图标,选择"导入书签"',
'选择包含你书签的 HTML 文件',
'你的书签现在应该已经导入到 Chrome 中了'
]
}
}
},
seal_generator: {
title: '印章生成器',

View File

@ -8,12 +8,12 @@ import type { Tool } from '@/types/tools'
// 定义工具列表
const tools: Tool[] = [
{
code: 'json_formatter',
icon: faCode,
category: ['common', 'json'],
keywords: ['json', 'json格式化', '格式化', '美化', '压缩', '校验', 'formatter', 'validator', 'gshjson', 'gshjson', 'jsonxg', 'jxg']
},
// {
// code: 'json_formatter',
// icon: faCode,
// category: ['common', 'json'],
// keywords: ['json', 'json格式化', '格式化', '美化', '压缩', '校验', 'formatter', 'validator', 'gshjson', 'gshjson', 'jsonxg', 'jxg']
// },
{
code: 'http_tester',
icon: faGlobe,
@ -170,12 +170,6 @@ const tools: Tool[] = [
category: ['image'],
keywords: ['图标', 'ico', '图片转ico', 'icon', '图标生成', '图标转换', 'favicon', '网站图标', 'tubiao', 'tb', 'zhuanicon', 'icon转换', 'icon生成']
},
{
code: 'cron_generator',
icon: faCalendarAlt,
category: ['datetime'],
keywords: ['cron', 'cron表达式', '定时任务', '调度', '表达式生成', '执行时间', 'crontab', 'quartz', 'schedule', 'dingshi', 'dingshibiaodashi', 'dsrw', 'bds', 'cronbds']
},
{
code: 'chrome_bookmark_recovery',
icon: faBookmark,