chore(config): 初始化项目配置文件

- 添加 .editorconfig 文件统一代码风格
- 配置 .env.development 环境变量文件
- 创建 .env.example 环境变量示例文件
- 设置 .eslintignore 忽略检查规则
- 配置 .eslintrc.js 代码检查规则
- 添加 .gitignore 文件忽略版本控制
- 设置 .prettierignore 忽略格式化规则
- 新增隐私政策HTML页面文件
- 创建API密钥编辑组件基础结构
This commit is contained in:
2025-12-15 13:29:17 +08:00
commit 1856a611ce
877 changed files with 176918 additions and 0 deletions

20
src/i18n/index.ts Normal file
View File

@@ -0,0 +1,20 @@
/**
* 国际化配置
*/
import { createI18n } from 'vue-i18n';
import { I18N_CACHE_NAME } from '@/config/setting';
import zh_CN from './lang/zh_CN';
// import zh_TW from './lang/zh_TW';
import en from './lang/en';
const messages = { zh_CN, en };
const i18n = createI18n({
messages,
legacy: false,
silentTranslationWarn: true,
// 默认语言
locale: localStorage.getItem(I18N_CACHE_NAME) || 'zh_CN'
});
export default i18n;

14
src/i18n/lang/en/index.ts Normal file
View File

@@ -0,0 +1,14 @@
/**
* 英语
*/
import route from './route';
import layout from './layout';
import login from './login';
import list from './list';
export default {
route,
layout,
login,
list
};

View File

@@ -0,0 +1,80 @@
/* 主框架 */
export default {
system: 'WebsoftCMS',
home: 'Home',
header: {
profile: 'Profile',
password: 'Password',
accessKey: 'AccessKey',
system: 'Setting',
logout: 'SignOut'
},
footer: {
website: 'Website',
document: 'Document',
authorization: 'Authorization',
copyright: 'Copyright © 2021 WebSoft Inc.'
},
logout: {
title: 'Confirm',
message: 'Are you sure you want to log out?'
},
setting: {
title: 'Theme Setting',
sideStyles: {
dark: 'Dark Sidebar',
light: 'Light Sidebar'
},
headStyles: {
light: 'Light Header',
dark: 'Dark Header',
primary: 'Primary Header'
},
layoutStyles: {
side: 'Side Menu Layout',
top: 'Top Menu Layout',
mix: 'Mix Menu Layout'
},
colors: {
default: 'Daybreak Blue',
dust: 'Dust Blue',
sunset: 'Sunset Orange',
volcano: 'Volcano',
purple: 'Golden Purple',
cyan: 'Cyan',
green: 'Polar Green',
geekblue: 'Geek Blue'
},
darkMode: 'Dark Mode',
layoutStyle: 'Navigation Mode',
sideMenuStyle: 'Sidebar Double Menu',
bodyFull: 'Body Fixed Width',
other: 'Other Setting',
fixedHeader: 'Fixed Header',
fixedSidebar: 'Fixed Sidebar',
fixedBody: 'Fixed Body',
logoAutoSize: 'Logo In Header',
styleResponsive: 'Responsive',
colorfulIcon: 'Colorful Icon',
sideUniqueOpen: 'Menu Unique Open',
weakMode: 'Weak Mode',
showFooter: 'Show Footer',
showTabs: 'Show Tabs',
tabStyle: 'Tab Style',
tabStyles: {
default: 'Default',
dot: 'Dot',
card: 'Card'
},
transitionName: 'Transition',
transitions: {
slideRight: 'Slide Right',
slideBottom: 'Slide Bottom',
zoomIn: 'Zoom In',
zoomOut: 'Zoom Out',
fade: 'Fade'
},
reset: 'Reset',
tips: 'It will remember your configuration the next time you open it.'
}
};

17
src/i18n/lang/en/list.ts Normal file
View File

@@ -0,0 +1,17 @@
/* 列表页面 */
export default {
// 基础列表
basic: {
table: {
avatar: 'Avatar',
username: 'Username',
nickname: 'Nickname',
organizationName: 'Organization',
phone: 'Phone',
sexName: 'Sex',
createTime: 'CreateTime',
status: 'Status',
action: 'Action'
}
}
};

14
src/i18n/lang/en/login.ts Normal file
View File

@@ -0,0 +1,14 @@
/* 登录界面 */
export default {
title: 'User Login',
username: 'please input username',
password: 'please input password',
code: 'please input code',
remember: 'remember',
forget: 'forget',
login: 'login',
loading: 'loading',
oldPassword: 'Old',
newPassword: 'New',
confirm: 'Confirm',
};

22
src/i18n/lang/en/route.ts Normal file
View File

@@ -0,0 +1,22 @@
/* 菜单路由 */
export default {
login: { _name: 'Login' },
forget: { _name: 'Forget' },
dashboard: {
_name: 'Dashboard',
workplace: { _name: 'Workplace' },
analysis: { _name: 'Analysis' },
monitor: { _name: 'Monitor' }
},
result: {
_name: 'Result',
success: { _name: 'Success' },
fail: { _name: 'Fail' }
},
exception: {
_name: 'Exception',
'403': { _name: '403' },
'404': { _name: '404' },
'500': { _name: '500' }
}
};

View File

@@ -0,0 +1,14 @@
/**
* 简体中文
*/
import route from './route';
import layout from './layout';
import login from './login';
import list from './list';
export default {
route,
layout,
login,
list
};

View File

@@ -0,0 +1,81 @@
const storeName = localStorage.getItem('StoreName') || 'WebSoft Inc';
/* 主框架 */
export default {
system: '小程序开发',
home: '主页',
header: {
profile: '个人资料',
password: '修改密码',
accessKey: '秘钥管理',
system: '系统设置',
logout: '退出登录'
},
footer: {
website: '官网',
document: '文档',
authorization: '授权',
copyright: `© 2013-${new Date().getFullYear()} ${storeName}`
},
logout: {
title: '提示',
message: '确定要退出登录吗?'
},
setting: {
title: '整体风格设置',
sideStyles: {
dark: '暗色侧边栏',
light: '亮色侧边栏'
},
headStyles: {
light: '亮色顶栏',
dark: '暗色顶栏',
primary: '主色顶栏'
},
layoutStyles: {
side: '左侧菜单布局',
top: '顶部菜单布局',
mix: '混合菜单布局'
},
colors: {
default: '拂晓蓝',
dust: '薄暮',
sunset: '日暮',
volcano: '火山',
purple: '酱紫',
cyan: '明青',
green: '极光绿',
geekblue: '极客蓝'
},
darkMode: '开启暗黑模式',
layoutStyle: '导航模式',
sideMenuStyle: '侧栏双排菜单',
bodyFull: '内容区域定宽',
other: '其它配置',
fixedHeader: '固定顶栏区域',
fixedSidebar: '固定侧栏区域',
fixedBody: '固定主体区域',
logoAutoSize: 'Logo置于顶栏',
styleResponsive: '移动端响应式',
colorfulIcon: '侧栏彩色图标',
sideUniqueOpen: '侧栏排他展开',
weakMode: '开启色弱模式',
showFooter: '开启全局页脚',
showTabs: '开启多页签栏',
tabStyle: '页签显示风格',
tabStyles: {
default: '默认',
dot: '圆点',
card: '卡片'
},
transitionName: '路由切换动画',
transitions: {
slideRight: '滑动消退',
slideBottom: '底部消退',
zoomIn: '放大渐变',
zoomOut: '缩小渐变',
fade: '淡入淡出'
},
reset: '重置',
tips: '该功能可实时预览各种布局效果, 修改后会缓存在本地, 下次打开会记忆主题配置.'
}
};

View File

@@ -0,0 +1,17 @@
/* 列表页面 */
export default {
// 基础列表
basic: {
table: {
avatar: '头像',
username: '账号',
nickname: '昵称',
organizationName: '成员与部门',
phone: '手机号',
sexName: '性别',
createTime: '创建时间',
status: '状态',
action: '操作'
}
}
};

View File

@@ -0,0 +1,14 @@
/* 登录界面 */
export default {
title: '用户登录',
username: '请输入登录账号',
password: '请输入登录密码',
code: '请输入验证码',
remember: '记住密码',
forget: '忘记密码',
login: '登录',
loading: '登录中',
oldPassword: '旧密码',
newPassword: '新密码',
confirm: '确认密码',
};

View File

@@ -0,0 +1,16 @@
/* 菜单路由 */
export default {
login: { _name: '登录' },
forget: { _name: '忘记密码' },
result: {
_name: '结果页面',
success: { _name: '成功页' },
fail: { _name: '失败页' }
},
exception: {
_name: '异常页面',
'403': { _name: '403' },
'404': { _name: '404' },
'500': { _name: '500' }
}
};

35
src/i18n/use-locale.ts Normal file
View File

@@ -0,0 +1,35 @@
/**
* AntDesignVue、WebSoftAdmin、Dayjs 国际化配置
*/
import { ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
import type { Locale } from 'ant-design-vue/es/locale-provider';
import type { EleLocale } from 'ele-admin-pro/es';
// AntDesignVue
import zh_CN from 'ant-design-vue/es/locale/zh_CN';
import en from 'ant-design-vue/es/locale/en_US';
// WebSoftAdmin
import eleZh_CN from 'ele-admin-pro/es/lang/zh_CN';
import eleEn from 'ele-admin-pro/es/lang/en_US';
// Dayjs
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
const antLocales = { zh_CN, en };
const eleLocales = { zh_CN: eleZh_CN, en: eleEn };
export function useLocale() {
const { locale } = useI18n();
const antLocale = ref<Locale>();
const eleLocale = ref<EleLocale>();
watch(
locale,
() => {
antLocale.value = antLocales[locale.value];
eleLocale.value = eleLocales[locale.value];
dayjs.locale(locale.value.toLowerCase().replace(/_/g, '-'));
},
{ immediate: true }
);
return { antLocale, eleLocale };
}