feat(l2): 添加多环境配置及国际化支持

- 新增klp和g30环境配置文件
- 添加vue-i18n实现中英文切换
- 更新package.json添加环境组相关脚本
- 修改vue.config.js支持多环境配置加载
This commit is contained in:
砂糖
2025-12-27 13:35:47 +08:00
parent 3650d87a34
commit 4fa6a1f59a
13 changed files with 349 additions and 43 deletions

View File

@@ -0,0 +1,26 @@
# 页面标题
VUE_APP_TITLE = 'Galvanizing Line & Production Process Management System'
# 开发环境配置
ENV = 'development'
# 若依管理系统/开发环境
VUE_APP_BASE_API = '/dev-api'
# 应用访问路径 例如使用前缀 /admin/
VUE_APP_CONTEXT_PATH = '/'
# 监控地址
VUE_APP_MONITRO_ADMIN = 'http://localhost:9090/admin/login'
# xxl-job 控制台地址
VUE_APP_XXL_JOB_ADMIN = 'http://localhost:9100/xxl-job-admin'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# L2业务后端地址
VUE_APP_SERVICE_BASE_API = 'http://localhost:8089'
# 语言配置
VUE_APP_I18N_LOCALE = 'en-US'

View File

@@ -0,0 +1,25 @@
# 页面标题
VUE_APP_TITLE = 'Galvanizing Line & Production Process Management System'
# 生产环境配置
ENV = 'production'
# 若依管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
# 应用访问路径 例如使用前缀 /admin/
VUE_APP_CONTEXT_PATH = '/'
# 监控地址
VUE_APP_MONITRO_ADMIN = '/admin/login'
# xxl-job 控制台地址
VUE_APP_XXL_JOB_ADMIN = '/xxl-job-admin'
# L2业务后端地址
VUE_APP_SERVICE_BASE_API = 'http://192.168.5.209:8080'
# 语言配置
VUE_APP_I18N_LOCALE = 'en-US'

View File

@@ -0,0 +1,17 @@
# 页面标题
VUE_APP_TITLE = 'Galvanizing Line & Production Process Management System'
BABEL_ENV = development
NODE_ENV = development
# 测试环境配置
ENV = 'staging'
# 若依管理系统/测试环境
VUE_APP_BASE_API = '/stage-api'
VUE_APP_SERVICE_BASE_API = 'http://49.232.87.108:12081'
# 语言配置
VUE_APP_I18N_LOCALE = 'en-US'

View File

@@ -0,0 +1,26 @@
# 页面标题
VUE_APP_TITLE = 镀锌机组及生产工艺管理系统
# 开发环境配置
ENV = 'development'
# 接口基础路径,该路径会被代理到 VUE_APP_SERVICE_BASE_API
VUE_APP_BASE_API = '/dev-api'
# 应用访问路径 例如使用前缀 /admin/
VUE_APP_CONTEXT_PATH = '/'
# 监控地址
VUE_APP_MONITRO_ADMIN = 'http://localhost:9090/admin/login'
# xxl-job 控制台地址
VUE_APP_XXL_JOB_ADMIN = 'http://localhost:9100/xxl-job-admin'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# 代理后的真实后端地址
VUE_APP_SERVICE_BASE_API = 'http://localhost:8089'
# 语言配置
VUE_APP_I18N_LOCALE = 'zh-CN'

View File

@@ -0,0 +1,23 @@
# 页面标题
VUE_APP_TITLE = 镀锌机组及生产工艺管理系统
# 生产环境配置
ENV = 'production'
# 若依管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
# 应用访问路径 例如使用前缀 /admin/
VUE_APP_CONTEXT_PATH = '/'
# 监控地址
VUE_APP_MONITRO_ADMIN = '/admin/login'
# xxl-job 控制台地址
VUE_APP_XXL_JOB_ADMIN = '/xxl-job-admin'
# L2业务后端地址
VUE_APP_SERVICE_BASE_API = 'http://localhost:8089'
# 语言配置
VUE_APP_I18N_LOCALE = 'zh-CN'

View File

@@ -0,0 +1,17 @@
# 页面标题
VUE_APP_TITLE = 镀锌机组及生产工艺管理系统
BABEL_ENV = development
NODE_ENV = development
# 测试环境配置
ENV = staging
# 若依管理系统/测试环境
VUE_APP_BASE_API = /stage-api
VUE_APP_SERVICE_BASE_API = http://140.143.206.120:10082/prod-api
# 语言配置
VUE_APP_I18N_LOCALE = 'zh-CN'

View File

@@ -9,7 +9,13 @@
"stage": "vue-cli-service serve --mode staging",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview"
"preview": "node build/index.js --preview",
"klp:dev": "cross-env ENV_GROUP=klp ENV_MODE=development vue-cli-service serve",
"klp:stage": "cross-env ENV_GROUP=klp ENV_MODE=staging vue-cli-service serve",
"klp:build": "cross-env ENV_GROUP=klp ENV_MODE=production vue-cli-service build",
"g30:dev": "cross-env ENV_GROUP=g30 ENV_MODE=development vue-cli-service serve",
"g30:stage": "cross-env ENV_GROUP=g30 ENV_MODE=staging vue-cli-service serve",
"g30:build": "cross-env ENV_GROUP=g30 ENV_MODE=production vue-cli-service build"
},
"keywords": [
"vue",
@@ -25,10 +31,12 @@
"url": "https://gitee.com/y_project/RuoYi-Vue.git"
},
"dependencies": {
"@klp/ruoyi": "workspace:^1.0.0",
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.28.1",
"clipboard": "2.0.8",
"core-js": "3.37.1",
"cross-env": "^10.1.0",
"dayjs": "^1.11.18",
"echarts": "5.4.0",
"element-ui": "2.15.14",
@@ -48,12 +56,12 @@
"vue": "2.6.12",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.5",
"vue-i18n": "8.x",
"vue-konva": "^2.1.7",
"vue-router": "3.4.9",
"vuedraggable": "2.24.3",
"vuex": "3.6.0",
"xlsx": "^0.18.5",
"@klp/ruoyi": "workspace:^1.0.0"
"xlsx": "^0.18.5"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
@@ -62,6 +70,7 @@
"chalk": "4.1.0",
"compression-webpack-plugin": "6.1.2",
"connect": "3.6.6",
"dotenv": "^17.2.3",
"sass": "1.32.13",
"sass-loader": "10.1.1",
"script-ext-html-webpack-plugin": "2.1.5",

50
apps/l2/src/i18n/en-US.js Normal file
View File

@@ -0,0 +1,50 @@
export default {
common: {
title: 'Galvanizing Line & Production Process Management System',
home: 'Home',
dashboard: 'Dashboard',
system: 'System Management',
monitor: 'System Monitoring',
tool: 'Tools',
logout: 'Logout',
login: 'Login',
register: 'Register',
username: 'Username',
password: 'Password',
remember: 'Remember me',
forgetPassword: 'Forgot password',
submit: 'Submit',
reset: 'Reset',
add: 'Add',
edit: 'Edit',
delete: 'Delete',
view: 'View',
search: 'Search',
refresh: 'Refresh',
save: 'Save',
cancel: 'Cancel',
confirm: 'Confirm',
back: 'Back',
success: 'Success',
error: 'Error',
warning: 'Warning',
info: 'Info',
yes: 'Yes',
no: 'No',
operation: 'Operation',
status: 'Status',
createTime: 'Create Time',
updateTime: 'Update Time',
remark: 'Remark',
pleaseSelect: 'Please select',
pleaseInput: 'Please input',
pleaseEnter: 'Please enter'
},
dashboard: {
welcome: 'Welcome to Galvanizing Line & Production Process Management System',
todayData: 'Today\'s Data',
totalData: 'Total Data',
onlineUsers: 'Online Users',
systemInfo: 'System Information'
}
}

34
apps/l2/src/i18n/index.js Normal file
View File

@@ -0,0 +1,34 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import ElementLocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
Vue.use(VueI18n)
// 从环境变量读取语言设置优先使用VUE_APP_I18N_LOCALE
const locale = process.env.VUE_APP_I18N_LOCALE || 'zh-CN'
// 合并系统语言包和Element UI语言包
const messages = {
'zh-CN': {
...require('./zh-CN'),
...zhLocale
},
'en-US': {
...require('./en-US'),
...enLocale
}
}
// 创建i18n实例
const i18n = new VueI18n({
locale,
fallbackLocale: 'zh-CN',
messages
})
// 设置Element UI的i18n
ElementLocale.i18n((key, value) => i18n.t(key, value))
export default i18n

50
apps/l2/src/i18n/zh-CN.js Normal file
View File

@@ -0,0 +1,50 @@
export default {
common: {
title: '镀锌机组及生产工艺管理系统',
home: '首页',
dashboard: '仪表盘',
system: '系统管理',
monitor: '系统监控',
tool: '工具',
logout: '退出登录',
login: '登录',
register: '注册',
username: '用户名',
password: '密码',
remember: '记住我',
forgetPassword: '忘记密码',
submit: '提交',
reset: '重置',
add: '新增',
edit: '编辑',
delete: '删除',
view: '查看',
search: '搜索',
refresh: '刷新',
save: '保存',
cancel: '取消',
confirm: '确认',
back: '返回',
success: '成功',
error: '错误',
warning: '警告',
info: '提示',
yes: '是',
no: '否',
operation: '操作',
status: '状态',
createTime: '创建时间',
updateTime: '更新时间',
remark: '备注',
pleaseSelect: '请选择',
pleaseInput: '请输入',
pleaseEnter: '请输入'
},
dashboard: {
welcome: '欢迎使用镀锌机组及生产工艺管理系统',
todayData: '今日数据',
totalData: '累计数据',
onlineUsers: '在线用户',
systemInfo: '系统信息'
}
}

View File

@@ -5,6 +5,7 @@ import VueKonva from 'vue-konva';
import Element from 'element-ui'
import './assets/styles/element-variables.scss'
import i18n from './i18n' // 引入i18n配置
import '@/assets/styles/index.scss' // global css
// import '@/assets/styles/ruoyi.scss' // ruoyi css
@@ -72,7 +73,8 @@ DictData.install()
*/
Vue.use(Element, {
size: Cookies.get('size') || 'small' // set element-ui default size
size: Cookies.get('size') || 'small', // set element-ui default size
i18n: (key, value) => i18n.t(key, value) // i18n support
})
Vue.config.productionTip = false
@@ -81,5 +83,6 @@ new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})

View File

@@ -1,10 +1,36 @@
'use strict'
const path = require('path')
const dotenv = require('dotenv')
const fs = require('fs')
function resolve(dir) {
return path.join(__dirname, dir)
}
const envGroup = process.env.ENV_GROUP || 'klp' // 默认使用 klp 组
const envMode = process.env.ENV_MODE || 'development' // 默认使用 development 模式
// 2. 拼接环境文件的绝对路径(核心:解决子目录文件找不到问题)
const envFilePath = path.resolve(
process.cwd(), // 项目根目录(避免相对路径歧义)
`config/${envGroup}/.env.${envMode}` // 拼接config/环境组/.env.环境模式
)
// 3. 读取并解析环境文件,注入到 process.env 中
if (fs.existsSync(envFilePath)) {
// 解析 .env 文件
const envConfig = dotenv.config({
path: envFilePath,
override: true
})
if (envConfig.error) {
throw new Error(`加载 ${envGroup} 环境组 ${envMode} 模式配置失败:${envConfig.error.message}`)
}
console.log(`✅ 成功加载环境配置:${envFilePath}`)
} else {
console.warn(`⚠️ 未找到环境配置文件:${envFilePath},请检查 ENV_GROUP 和 ENV_MODE 配置`)
}
const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '镀锌机组及生产工艺管理系统' // 网页标题