docs(website): 添加简记memo产品原型和UI设计规范文档

- 新增「简记memo」一体化小程序产品原型设计文档
- 新增简记memo完整版UI视觉设计规范和界面细节
- 添加IDEA项目配置文件.gitignore
- 创建404页面HTML文件,包含响应式布局和错误提示
- 添加关于页面HTML文件,展示品牌介绍和团队信息
- 实现AES加解密工具函数,支持请求体加密
- 添加用户协议页面基础框架
This commit is contained in:
sunct
2026-07-31 14:12:32 +08:00
commit 3c3bf53ae4
115 changed files with 21304 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
/* ===================================
简记memo - 项目公共配置
=================================== */
const SITE_CONFIG = {
path: '/static/images/logo.png',
name: '简记memo',
subtitle: '让记录更简单',
slogan: '记录,是对抗遗忘的方式。\n生活的美好藏在点滴细节里,\n用简记memo,写下时光的足迹。',
version: 'v1.0.0',
copyright: `© ${new Date().getFullYear()} 简记memo. All rights reserved.`,
email: 'memo@miaoall.cn',
wechat: {
name: '孙三苗',
account: 'sunsanmiao'
},
defaultAvatar: '/static/avatar/default.png',
brand: {
primaryColor: '#4F9EDE',
secondaryColor: '#3A8BC9',
accentColor: '#67B8E3',
gradient: 'linear-gradient(135deg, #4F9EDE 0%, #3A8BC9 100%)',
lightGradient: 'linear-gradient(135deg, #67B8E3 0%, #4F9EDE 100%)'
}
};
const APP_INFO = {
name: '简记memo',
slogan: '简洁高效的个人事务管理工具',
description: '集待办任务、账单记录、心情日记于一体的个人事务管理工具',
features: [
{ icon: '📅', text: '日历管理' },
{ icon: '✅', text: '待办事项' },
{ icon: '💰', text: '账单记录' },
{ icon: '😊', text: '心情日记' }
],
beian: {
icp: '京ICP备2026013204号',
icpLink: 'https://beian.miit.gov.cn/',
police: '京公网安备11011402055644号',
policeLink: 'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=京公网安备11011402055644号'
}
};
function renderSiteFooter(containerId) {
const container = document.getElementById(containerId);
if (!container) return;
container.innerHTML = `
<div class="site-footer">
<div class="footer-brand">
<img src="${SITE_CONFIG.path}" alt="${SITE_CONFIG.name}" class="footer-logo" onerror="this.style.display='none'">
<span class="footer-name">${SITE_CONFIG.name}</span>
</div>
<div class="footer-info">
<p class="footer-slogan">${SITE_CONFIG.slogan.replace(/\n/g, '<br>')}</p>
<p class="footer-copyright">${SITE_CONFIG.copyright}</p>
<p class="footer-beian">
<a href="${APP_INFO.beian.icpLink}" target="_blank">${APP_INFO.beian.icp}</a>
&nbsp;|&nbsp;
<a href="${APP_INFO.beian.policeLink}" target="_blank">${APP_INFO.beian.police}</a>
</p>
</div>
</div>
`;
}
function renderSimpleFooter(containerId) {
const container = document.getElementById(containerId);
if (!container) return;
container.innerHTML = `
<div class="simple-footer">
<span>${SITE_CONFIG.copyright}</span>
<span class="footer-divider">|</span>
<a href="${APP_INFO.beian.icpLink}" target="_blank">${APP_INFO.beian.icp}</a>
<span class="footer-divider">|</span>
<a href="${APP_INFO.beian.policeLink}" target="_blank">${APP_INFO.beian.police}</a>
</div>
`;
}
function getAppName() {
return SITE_CONFIG.name;
}
function getLogoPath() {
return SITE_CONFIG.path;
}
function getBrandGradient() {
return SITE_CONFIG.brand.gradient;
}
const UserStore = {
KEY: 'user_info',
set(data) {
localStorage.setItem(this.KEY, JSON.stringify(data));
},
get() {
const data = localStorage.getItem(this.KEY);
return data ? JSON.parse(data) : null;
},
clear() {
localStorage.removeItem(this.KEY);
},
setToken(token) {
const user = this.get() || {};
user.token = token;
this.set(user);
},
getToken() {
const user = this.get();
return user ? user.token : null;
},
setUserInfo(info) {
const user = this.get() || {};
const mergedUser = { ...user, ...info };
this.set(mergedUser);
},
getUserInfo() {
return this.get();
}
};