安全更新,升级依赖,新增简介页面
This commit is contained in:
parent
1d94d571d1
commit
9ba790ad07
2
.idea/modules.xml
generated
2
.idea/modules.xml
generated
@ -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
8
password-xl-home.iml
Normal 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>
|
44
password-xl-home/images/background-m.svg
Normal file
44
password-xl-home/images/background-m.svg
Normal 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 |
40
password-xl-home/images/background.svg
Normal file
40
password-xl-home/images/background.svg
Normal 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 |
BIN
password-xl-home/images/gitee.png
Normal file
BIN
password-xl-home/images/gitee.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
BIN
password-xl-home/images/github.png
Normal file
BIN
password-xl-home/images/github.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
BIN
password-xl-home/images/logo.ico
Normal file
BIN
password-xl-home/images/logo.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
5
password-xl-home/images/logo.svg
Normal file
5
password-xl-home/images/logo.svg
Normal 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
247
password-xl-home/index.html
Normal 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>
|
7
password-xl-web/src/auto-imports.d.ts
vendored
7
password-xl-web/src/auto-imports.d.ts
vendored
@ -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')
|
||||
}
|
||||
|
@ -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;">
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user