安全更新,升级依赖,新增简介页面

This commit is contained in:
huangyp 2024-10-13 13:31:18 +08:00
parent 1d94d571d1
commit 9ba790ad07
12 changed files with 361 additions and 4 deletions

2
.idea/modules.xml generated
View File

@ -3,6 +3,8 @@
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/password-xl.iml" filepath="$PROJECT_DIR$/password-xl.iml" />
<module fileurl="file://$PROJECT_DIR$/password-xl-home.iml" filepath="$PROJECT_DIR$/password-xl-home.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/password-xl-service.main.iml" filepath="$PROJECT_DIR$/.idea/modules/password-xl-service.main.iml" />
<module fileurl="file://$PROJECT_DIR$/password-xl-web.iml" filepath="$PROJECT_DIR$/password-xl-web.iml" />
</modules>
</component>

8
password-xl-home.iml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$/password-xl-home" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,44 @@
<svg
version="1.1"
baseProfile="full"
width="100%" height="100%"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 800 1400"
>
<path d="M 100 350 A 150 150 0 1 1 400 350 Q400 370 380 370 L 250 370 L 120 370 Q100 370 100 350" stroke="rgb(253, 214, 99)" fill="rgb(253, 214, 99)">
<animateMotion path="M 200 -100 L 400 -300 L 200 -100" dur="20s" begin="1s" repeatCount="indefinite" />
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" values="0 210 530 ; -30 210 530 ; 0 210 530" keyTimes="0 ; 0.5 ; 1" repeatCount="indefinite" />
</path>
<!-- 绿色大方块-->
<rect x="700" y="1000" rx="40" ry="40" width="300" height="300" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)" style="transform-box:fill-box; transform-origin:center;">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 0 0" to="360 0 0" repeatCount="indefinite" />
</rect>
<!-- 白色椭圆-->
<path d="M 100 350 A 40 40 0 1 1 180 350 L 180 430 A 40 40 0 1 1 100 430 Z" stroke="rgb(241, 243, 244)" fill="rgb(241, 243, 244)">
<animateMotion path="M 240 590 L 180 360 L 240 590" dur="20s" begin="0s" repeatCount="indefinite" />
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" values="0 140 390; -60 140 390; 0 140 390" keyTimes="0 ; 0.5 ; 1" repeatCount="indefinite" />
</path>
<!-- 绿色小方块-->
<rect x="400" y="600" rx="40" ry="40" width="100" height="100" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="-30 550 750" to="330 550 750" repeatCount="indefinite" />
</rect>
<svg
viewBox="0 0 1024 1024"
version="1.1"
x="100"
y="1100"
xmlns="http://www.w3.org/2000/svg"
width="200px" height="200px">
<path d="M225.28 163.84h573.44c45.056 0 81.92 36.864 81.92 81.92v450.56c0 45.056-36.864 81.92-81.92 81.92H225.28c-45.056 0-81.92-36.864-81.92-81.92V245.76c0-45.056 36.864-81.92 81.92-81.92z m430.08 450.56c79.872 0 143.36-63.488 143.36-143.36s-63.488-143.36-143.36-143.36-143.36 63.488-143.36 143.36 63.488 143.36 143.36 143.36z m0-81.92c34.816 0 61.44-26.624 61.44-61.44s-26.624-61.44-61.44-61.44-61.44 26.624-61.44 61.44 26.624 61.44 61.44 61.44z"
fill="#0af1f4" style="transform-box:fill-box; transform-origin:center;">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" from="0 0 0" to="360 0 0" repeatCount="indefinite" />
</path>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,40 @@
<svg
version="1.1"
baseProfile="full"
width="100%" height="100%"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 1400 800"
>
<rect x="1300" y="400" rx="40" ry="40" width="300" height="300" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 1450 550" to="360 1450 550" repeatCount="indefinite" />
</rect>
<path d="M 100 350 A 150 150 0 1 1 400 350 Q400 370 380 370 L 250 370 L 120 370 Q100 370 100 350" stroke="rgb(253, 214, 99)" fill="rgb(253, 214, 99)">
<animateMotion path="M 800 -200 L 800 -300 L 800 -200" dur="20s" begin="0s" repeatCount="indefinite" />
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" values="0 210 530 ; -30 210 530 ; 0 210 530" keyTimes="0 ; 0.5 ; 1" repeatCount="indefinite" />
</path>
<circle cx="200" cy="150" r="20" stroke="#1a73e8" fill="#1a73e8">
<animateMotion path="M 0 0 L 40 20 Z" dur="5s" repeatCount="indefinite" />
</circle>
<!-- 三角形 -->
<path d="M 165 580 L 270 580 Q275 578 270 570 L 223 483 Q220 480 217 483 L 165 570 Q160 578 165 580" stroke="rgb(238, 103, 92)" fill="rgb(238, 103, 92)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 210 530" to="360 210 530" repeatCount="indefinite" />
</path>
<circle cx="1200" cy="600" r="30" stroke="rgb(241, 243, 244)" fill="rgb(241, 243, 244)">
<animateMotion path="M 0 0 L -20 40 Z" dur="9s" repeatCount="indefinite" />
</circle>
<path d="M 100 350 A 40 40 0 1 1 180 350 L 180 430 A 40 40 0 1 1 100 430 Z" stroke="rgb(241, 243, 244)" fill="rgb(241, 243, 244)">
<animateMotion path="M 140 390 L 180 360 L 140 390" dur="20s" begin="0s" repeatCount="indefinite" />
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" values="0 140 390; -60 140 390; 0 140 390" keyTimes="0 ; 0.5 ; 1" repeatCount="indefinite" />
</path>
<rect x="900" y="600" rx="30" ry="30" width="90" height="90" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="50s" type="rotate" from="0 900 550" to="360 900 550" repeatCount="indefinite" />
</rect>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,5 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg t="1719379989767" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1845" width="256" height="256">
<path d="M225.28 163.84h573.44c45.056 0 81.92 36.864 81.92 81.92v450.56c0 45.056-36.864 81.92-81.92 81.92H225.28c-45.056 0-81.92-36.864-81.92-81.92V245.76c0-45.056 36.864-81.92 81.92-81.92z m430.08 450.56c79.872 0 143.36-63.488 143.36-143.36s-63.488-143.36-143.36-143.36-143.36 63.488-143.36 143.36 63.488 143.36 143.36 143.36z m0-81.92c34.816 0 61.44-26.624 61.44-61.44s-26.624-61.44-61.44-61.44-61.44 26.624-61.44 61.44 26.624 61.44 61.44 61.44z" fill="#49c3ff" p-id="1847"></path>
<path d="M296.96 307.2c22.528 0 40.96 18.432 40.96 40.96v81.92c0 22.528-18.432 40.96-40.96 40.96s-40.96-18.432-40.96-40.96v-81.92c0-22.528 18.432-40.96 40.96-40.96z" fill="#fff" p-id="1848"></path>
</svg>

After

Width:  |  Height:  |  Size: 979 B

247
password-xl-home/index.html Normal file
View File

@ -0,0 +1,247 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Password-XL</title>
<link rel="icon" type="image/svg+xml" href="/images/logo.ico"/>
<style>
.back-img {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: -2;
display: none
}
.title {
font-size: 100px;
color: #57beff;
display: flex;
justify-content: center;
margin-top: 15vh;
padding: 0;
white-space: nowrap;
}
.logo {
width: 150px;
}
.btn {
font-size: 26px;
color: white;
background-color: #409EFF;
border-radius: 10px;
width: fit-content;
padding: 10px 50px;
cursor: pointer;
user-select: none;
white-space: nowrap;
}
.btn:hover {
background-color: rgb(121, 187, 255);
}
.btn:active {
background-color: rgb(51, 126, 204);
}
.links {
margin-top: 5vh;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.links > a {
text-decoration: none;
color: #444;
font-size: 18px;
line-height: 18px;
position: relative;
top: -2px;
white-space: nowrap;
}
.links > a:hover {
text-decoration: underline;
color: rgb(121, 187, 255);
}
.links > img {
width: 25px;
margin-right: 5px;
}
.links > span {
color: #888;
font-size: 18px;
margin: 0 10px;
line-height: 18px;
position: relative;
top: -2px;
font-weight: 100;
}
.tags {
display: flex;
justify-content: center;
margin-top: 10vh;
flex-wrap: wrap;
padding: 0 2vw;
}
.tags > div {
border-radius: 40px;
padding: 15px 30px;
line-height: 40px;
text-align: center;
font-size: 20px;
color: white;
margin: 12px;
user-select: none;
transition: transform 0.3s ease;
white-space: nowrap;
}
.tags > div:hover {
transform: scale(1.2);
}
.desc {
text-align: center;
display: flex;
justify-content: center;
align-items: center;
color: #666;
font-size: 20px;
}
.start {
margin-top: 3vh;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.about {
position: fixed;
bottom: 10px;
width: 100%;
text-align: center;
}
.about > a {
color: #777;
text-decoration: none;
}
.about > a:hover {
text-decoration: underline;
color: rgb(121, 187, 255);
}
</style>
</head>
<body>
<img alt="" id="back-w" class="back-img" src="./images/background.svg">
<img alt="" id="back-h" class="back-img" src="./images/background-m.svg">
<div class="title">
<img alt="" class="logo" src="./images/logo.svg">
<b>Password-XL</b>
</div>
<div class="desc" style="">
现代化密码管理工具
</div>
<div class="start">
<div class="btn" onclick="location.href = 'https://password-xl.cn'">立即体验</div>
</div>
<div class="links">
<img src="images/github.png" alt="">
<a href="https://github.com/peng0105/password-xl" target="_blank">
github
</a>
<span>|</span>
<img src="images/gitee.png" alt="">
<a href="https://gitee.com/huanyp/password-xl" target="_blank">
gitee
</a>
<span>|</span>
<img src="images/github.png" alt="">
<a href="https://github.com/peng0105/password-xl/wiki" target="_blank" style="font-size: 16px">
在线文档
</a>
<span>|</span>
<img src="images/gitee.png" alt="">
<a href="https://gitee.com/huanyp/password-xl/wikis/Home" target="_blank" style="font-size: 16px">
在线文档
</a>
</div>
<div class="tags"></div>
<div class="about">
<a target="_blank" href="https://beian.miit.gov.cn">京ICP备2023032747号-2</a>
</div>
</body>
<script>
let tags = [
'安全',
'开源',
'在线使用',
'美观',
'便捷',
'多客户端',
'第三方云存储',
'效率',
'私有部署',
'永久免费',
'稳定',
'实用',
'AES加密',
'积极维护中',
'手势密码',
'自定义密码',
'windows 客户端',
'web 客户端',
'安卓客户端',
'苹果客户端',
'linux 客户端',
'最新技术',
'全面测试',
'导入导出',
'暗黑主题',
'密码生成器',
'个性化设置',
'密码标签',
'自由',
'密码强度提示',
'卡片模式',
'表格模式',
'文档超全',
'5000+人使用',
]
let colors = ['rgba(64,158,255,0.9)', 'rgba(103,194,58,0.9)', 'rgba(230,162,60,0.9)', 'rgba(245,108,108,0.9)']
let html = '';
let colorIndex = 0;
tags.forEach(tag => {
if (colorIndex > colors.length - 1) {
colorIndex = 0;
}
html += '<div style="background-color: ' + colors[colorIndex++] + '">' + tag + '</div>'
})
document.getElementsByClassName('tags')[0].innerHTML = html;
let w = window.innerWidth;
let h = window.innerHeight;
if (w < h) {
document.getElementById('back-h').style.display = 'block';
} else {
document.getElementById('back-w').style.display = 'block';
}
</script>
</html>

View File

@ -3,6 +3,7 @@
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
// biome-ignore lint: disable
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
@ -38,6 +39,7 @@ declare global {
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
const provide: typeof import('vue')['provide']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
@ -55,7 +57,10 @@ declare global {
const useAttrs: typeof import('vue')['useAttrs']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useId: typeof import('vue')['useId']
const useModel: typeof import('vue')['useModel']
const useSlots: typeof import('vue')['useSlots']
const useTemplateRef: typeof import('vue')['useTemplateRef']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
@ -64,6 +69,6 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
}

View File

@ -130,6 +130,12 @@ const switchTopicMode = (topicMode: TopicMode) => {
const openRecycleBin = () => {
refStore.recycleBinRef.openRecycleBin()
}
//
const goAbout = () => {
location.href = 'https://password-xl.cn/about'
}
</script>
<template>
@ -151,8 +157,8 @@ const openRecycleBin = () => {
没有保存的密码
</template>
</el-text>
<div v-else class="hidden-xs-only" style="height: 32px;">
<img alt="" style="height: 32px;" src="../../assets/images/logo.svg">
<div v-else class="hidden-xs-only" style="height: 32px" @click="goAbout">
<img alt="" style="height: 32px;cursor: pointer" src="../../assets/images/logo.svg">
</div>
</div>
<div style="display: flex;">

View File

@ -139,7 +139,7 @@ initForm()
</el-button>
<div class="register-guide">
<el-link :underline="false" target="_blank" href="https://github.com/peng0105/password-xl/wiki/%E9%98%BF%E9%87%8C%E4%BA%91OSS%E6%B3%A8%E5%86%8C%E6%8C%87%E5%BC%95" type="primary">阿里云OSS注册指引</el-link>
<el-link :underline="false" target="_blank" href="https://gitee.com/huanyp/password-xl/wikis/%E9%98%BF%E9%87%8C%E4%BA%91OSS%E6%B3%A8%E5%86%8C%E6%8C%87%E5%BC%95" type="primary">阿里云OSS注册指引</el-link>
</div>
</el-col>
</el-row>