feat(config): add environment-specific build and dev scripts with dotenv support

- 添加了针对不同环境(mes、zhisheng)的构建和开发脚本
- 集成 dotenv 支持,通过 .env 文件管理环境变量
- 更新 manifest.json 中的图标和启动页路径,修正版本号
- 重构配置文件以支持动态环境变量注入
- 修改 HTTP API 调用地址为可配置化,便于多环境部署切换
This commit is contained in:
郭鸿轩 2025-08-16 18:09:06 +08:00
parent 216d7c6ab4
commit aa186a3f82
8 changed files with 67 additions and 45 deletions

4
.env Normal file
View File

@ -0,0 +1,4 @@
NODE_ENV = development
VUE_APP_UPGRADE_NAME = erp_pda
VUE_APP_PRODUCTION_API_URL = https://www.haotopai.com/hcscm/mes/server/pda/v1
VUE_APP_DEV_API_URL = https://www.haotopai.com/hcscm/mes/server/pda/v1

4
.env.mes Normal file
View File

@ -0,0 +1,4 @@
NODE_ENV = development
VUE_APP_UPGRADE_NAME = erp_pda
VUE_APP_PRODUCTION_API_URL = https://www.haotopai.com/hcscm/mes/server/pda/v1
VUE_APP_DEV_API_URL = https://www.haotopai.com/hcscm/mes/server/pda/v1

4
.env.zhisheng Normal file
View File

@ -0,0 +1,4 @@
NODE_ENV = development
VUE_APP_UPGRADE_NAME = erp_pda_pre
VUE_APP_PRODUCTION_API_URL = https://hcscmpre.zzfzyc.com/hcscm/pda/v1
VUE_APP_DEV_API_URL = https://hcscmpre.zzfzyc.com/hcscm/pda/v1

View File

@ -7,6 +7,8 @@
"serve": "npm run dev:h5",
"build": "npm run build:h5",
"build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build",
"build:app-plus:zhisheng": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build --mode zhisheng",
"build:app-plus:mes": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build --mode mes",
"build:custom": "cross-env NODE_ENV=production uniapp-cli custom",
"build:h5": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build",
"build:mp-360": "cross-env NODE_ENV=production UNI_PLATFORM=mp-360 vue-cli-service uni-build",
@ -25,6 +27,8 @@
"build:quickapp-webview-huawei": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build",
"build:quickapp-webview-union": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build",
"dev:app-plus": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch",
"dev:app-plus:zhisheng": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch --mode zhisheng",
"dev:app-plus:mes": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch --mode mes",
"dev:custom": "cross-env NODE_ENV=development uniapp-cli custom",
"dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
"dev:mp-360": "cross-env NODE_ENV=development UNI_PLATFORM=mp-360 vue-cli-service uni-build --watch",
@ -79,6 +83,7 @@
"@vue/shared": "^3.0.0",
"core-js": "^3.8.3",
"dayjs": "^1.11.13",
"dotenv": "^17.2.1",
"flyio": "^0.6.2",
"uview-ui": "1.8.8",
"vue": ">= 2.6.14 < 2.7",

View File

@ -6,7 +6,7 @@
export const isDevelopment = process.env.NODE_ENV === 'development'
const config = {
upgradeName: 'erp_pda_pre',
upgradeName: process.env.VUE_APP_UPGRADE_NAME || 'erp_pda',
// 产品名称
productName: '浩拓技术',
@ -17,22 +17,16 @@ const config = {
// 版本检查标识
appCode: 'android',
// 内部版本号码
appVersion: 1,
// 管理基础路径
adminPath: 'https://hcscmpre.zzfzyc.com/hcscm/pda/v1',
// 环境判断
isDevelopment: isDevelopment,
// 生产环境API URL
productionApiUrl: 'https://hcscmpre.zzfzyc.com/hcscm/pda/v1',
productionApiUrl: process.env.VUE_APP_PRODUCTION_API_URL || 'https://www.haotopai.com/hcscm/mes/server/pda/v1',
// 开发环境API URL选项
devApiUrlOptions: [
{ label: '测试环境', value: 'https://hcscmtest.zzfzyc.com/hcscm/pda/v1' },
{ label: '正式环境', value: 'https://hcscmpre.zzfzyc.com/hcscm/pda/v1' },
{ label: '正式环境', value: process.env.VUE_APP_DEV_API_URL || 'https://www.haotopai.com/hcscm/mes/server/pda/v1' },
{ label: '自定义', value: 'custom' }
]

View File

@ -12,9 +12,9 @@ const install = (Vue, vm) => {
// 基础服务:登录登出、身份信息、菜单授权、切换系统、字典数据等
lang: (params = {}) => vm.$u.get('/lang/'+params.lang),
index: (params = {}) => vm.$u.get(config.adminPath+'/mobile/index', params),
getUserInfo: (params = {}) => vm.$u.get(config.adminPath+'/mobile/user/getUserInfo', params),
login: (params = {}) => vm.$u.post(config.adminPath+'/mobile/login/loginByPassword', params),
index: (params = {}) => vm.$u.get(config.productionApiUrl+'/mobile/index', params),
getUserInfo: (params = {}) => vm.$u.get(config.productionApiUrl+'/mobile/user/getUserInfo', params),
login: (params = {}) => vm.$u.post(config.productionApiUrl+'/mobile/login/loginByPassword', params),
// PDA登录接口
pdaLogin: (params = {}) => vm.$u.postJson('/login', params),
pdaLogout: (params = {}) => vm.$u.postJson('/logout', params),
@ -24,18 +24,18 @@ const install = (Vue, vm) => {
getFpmArrangeOrder: (params = {}) => vm.$u.get('/product/fpmArrangeOrder/getFpmArrangeOrder', params),
// 生成出仓单
outFpmArrangeOrder: (params = {}) => vm.$u.put('/product/fpmArrangeOrder/outFpmArrangeOrder', params),
sendCode: (params = {}) => vm.$u.post(config.adminPath+'/mobile/login/sendCode', params),
registerUser: (params = {}) => vm.$u.post(config.adminPath+'/mobile/user/registerUser', params),
sendCode: (params = {}) => vm.$u.post(config.productionApiUrl+'/mobile/login/sendCode', params),
registerUser: (params = {}) => vm.$u.post(config.productionApiUrl+'/mobile/user/registerUser', params),
//首页相关api
getIndexCardInfo: (params = {}) => vm.$u.get(config.adminPath+'/mobile/index/getIndexCardInfo', params),
getM2mOrderFlowList: (params = {}) => vm.$u.get(config.adminPath+'/mobile/index/getM2mOrderFlowList', params),
getIndexCardInfo: (params = {}) => vm.$u.get(config.productionApiUrl+'/mobile/index/getIndexCardInfo', params),
getM2mOrderFlowList: (params = {}) => vm.$u.get(config.productionApiUrl+'/mobile/index/getM2mOrderFlowList', params),
//获取卡可购买套餐包
getM2mOrderPackageList: (params = {}) => vm.$u.get(config.adminPath+'/mobile/index/getM2mOrderPackageList', params),
getM2mOrderPackageList: (params = {}) => vm.$u.get(config.productionApiUrl+'/mobile/index/getM2mOrderPackageList', params),
logout: (params = {}) => vm.$u.get(config.adminPath+'/mobile/login/logout', params),
authInfo: (params = {}) => vm.$u.get(config.adminPath+'/authInfo', params),
menuTree: (params = {}) => vm.$u.get(config.adminPath+'/menuTree', params),
switchSys: (params = {}) => vm.$u.get(config.adminPath+'/switch/'+params.sysCode),
logout: (params = {}) => vm.$u.get(config.productionApiUrl+'/mobile/login/logout', params),
authInfo: (params = {}) => vm.$u.get(config.productionApiUrl+'/authInfo', params),
menuTree: (params = {}) => vm.$u.get(config.productionApiUrl+'/menuTree', params),
switchSys: (params = {}) => vm.$u.get(config.productionApiUrl+'/switch/'+params.sysCode),
dictData: (params = {}) => vm.$u.get(config.a取dminPath+'/system/dict/data/type/'+params.dictType),
// 账号服务:验证码接口、忘记密码接口、注册账号接口等
@ -53,29 +53,29 @@ const install = (Vue, vm) => {
// 个人信息修改
user: {
saveUserInfo: (params = {}) => vm.$u.post(config.adminPath+'/mobile/user/saveUserInfo', params),
infoSavePwd: (params = {}) => vm.$u.put(config.adminPath+'/system/user/profile/updatePwd', params),
infoSavePqa: (params = {}) => vm.$u.post(config.adminPath+'/sys/user/infoSavePqa', params),
saveUserInfo: (params = {}) => vm.$u.post(config.productionApiUrl+'/mobile/user/saveUserInfo', params),
infoSavePwd: (params = {}) => vm.$u.put(config.productionApiUrl+'/system/user/profile/updatePwd', params),
infoSavePqa: (params = {}) => vm.$u.post(config.productionApiUrl+'/sys/user/infoSavePqa', params),
},
// 员工用户查询
empUser: {
listData: (params = {}) => vm.$u.get(config.adminPath+'/sys/empUser/listData', params),
listData: (params = {}) => vm.$u.get(config.productionApiUrl+'/sys/empUser/listData', params),
},
// 组织机构查询
office: {
treeData: (params = {}) => vm.$u.get(config.adminPath+'/sys/office/treeData', params),
treeData: (params = {}) => vm.$u.get(config.productionApiUrl+'/sys/office/treeData', params),
},
// 增删改查例子
testData: {
form: (params = {}) => vm.$u.post(config.adminPath+'/test/testData/form', params),
list: (params = {}) => vm.$u.post(config.adminPath+'/test/testData/listData', params),
save: (params = {}) => vm.$u.postJson(config.adminPath+'/test/testData/save', params),
disable: (params = {}) => vm.$u.post(config.adminPath+'/test/testData/disable', params),
enable: (params = {}) => vm.$u.post(config.adminPath+'/test/testData/enable', params),
delete: (params = {}) => vm.$u.post(config.adminPath+'/test/testData/delete', params),
form: (params = {}) => vm.$u.post(config.productionApiUrl+'/test/testData/form', params),
list: (params = {}) => vm.$u.post(config.productionApiUrl+'/test/testData/listData', params),
save: (params = {}) => vm.$u.postJson(config.productionApiUrl+'/test/testData/save', params),
disable: (params = {}) => vm.$u.post(config.productionApiUrl+'/test/testData/disable', params),
enable: (params = {}) => vm.$u.post(config.productionApiUrl+'/test/testData/enable', params),
delete: (params = {}) => vm.$u.post(config.productionApiUrl+'/test/testData/delete', params),
},
};

View File

@ -2,8 +2,8 @@
"name" : "浩拓技术",
"appid" : "__UNI__F79F300",
"description" : "浩拓纺织平台",
"versionName" : "1.1.1",
"versionCode" : 101,
"versionName" : "1.1.0",
"versionCode" : 100,
"transformPx" : false,
"app-plus" : {
"optimization" : {
@ -76,10 +76,10 @@
},
"icons" : {
"android" : {
"hdpi" : "dist/dev/app-plus/static/haotop/image/logo/72.png",
"xhdpi" : "dist/dev/app-plus/static/haotop/image/logo/96.png",
"xxhdpi" : "dist/dev/app-plus/static/haotop/image/logo/144.png",
"xxxhdpi" : "dist/dev/app-plus/static/haotop/image/logo/1024.png"
"hdpi" : "src/static/haotop/image/logo/72.png",
"xhdpi" : "src/static/haotop/image/logo/96.png",
"xxhdpi" : "src/static/haotop/image/logo/144.png",
"xxxhdpi" : "src/static/haotop/image/logo/1024.png"
},
"ios" : {
"appstore" : "",
@ -109,9 +109,9 @@
"splashscreen" : {
"androidStyle" : "default",
"android" : {
"hdpi" : "dist/dev/app-plus/static/haotop/image/logo/Start.png",
"xhdpi" : "dist/dev/app-plus/static/haotop/image/logo/Start.png",
"xxhdpi" : "dist/dev/app-plus/static/haotop/image/logo/Start.png"
"hdpi" : "src/static/haotop/image/logo/Start.png",
"xhdpi" : "src/static/haotop/image/logo/Start.png",
"xxhdpi" : "src/static/haotop/image/logo/Start.png"
}
}
}

View File

@ -1,10 +1,21 @@
const dotenv = require('dotenv');
// // Load environment variables from .env file
dotenv.config();
module.exports = {
chainWebpack: (config) => {
config.plugin('define').tap((definitions) => {
console.log('VUE_APP_UPGRADE_NAME',JSON.stringify(process.env.VUE_APP_UPGRADE_NAME))
console.log('VUE_APP_PRODUCTION_API_URL',JSON.stringify(process.env.VUE_APP_PRODUCTION_API_URL))
console.log('VUE_APP_DEV_API_URL',JSON.stringify(process.env.VUE_APP_DEV_API_URL))
Object.assign(definitions[0], {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false'
'process.env': {
...definitions[0]['process.env'],
VUE_APP_UPGRADE_NAME: JSON.stringify(process.env.VUE_APP_UPGRADE_NAME),
VUE_APP_PRODUCTION_API_URL: JSON.stringify(process.env.VUE_APP_PRODUCTION_API_URL),
VUE_APP_DEV_API_URL: JSON.stringify(process.env.VUE_APP_DEV_API_URL),
}
})
return definitions
})