在小程序开发版和体验版添加切换环境功能

This commit is contained in:
范鹏 2024-09-02 13:41:35 +08:00
parent 8c028e0905
commit fbff1e5cef
4 changed files with 88 additions and 14 deletions

17
App.vue
View File

@ -14,7 +14,22 @@
//
appid: '',
//
envVersion: ''
envVersion: '',
//
getEnvConfig() {
const envVserionStorage = uni.getStorageSync('envVersion')
if(envVserionStorage) {
return envVserionStorage
} else {
if(this.envVersion === 'develop') {
return 'DEV'
} else if(this.envVersion === 'trial') {
return 'PRE'
} else {
return 'PROD'
}
}
}
},
computed: {
...mapState(useBluetoothStore, ['bluetoothStatus']),

View File

@ -1,26 +1,30 @@
import request from '@/utils/request'
const version = '1.0.0'
const buildNumber = 0
const DEV = {
name: '开发',
baseUrl: 'https://dev.lock.star-lock.cn/api',
webviewBaseUrl: 'https://dev.lock.star-lock.cn',
version: version
version,
buildNumber
}
const PRE = {
name: '预发',
baseUrl: 'https://pre.lock.star-lock.cn/api',
webviewBaseUrl: 'https://pre.lock.star-lock.cn',
version: version
version,
buildNumber
}
const PROD = {
name: '线上',
baseUrl: 'https://lock.xhjcn.ltd/api',
webviewBaseUrl: 'https://lock.xhjcn.ltd',
version: version
version,
buildNumber
}
// 更换环境的时候 切换导出就行
export default DEV
export default { DEV, PRE, PROD }

View File

@ -31,6 +31,10 @@
<image class="icon-arrow" src="/static/images/icon_arrow.png" mode="aspectFill"></image>
</view>
</view>
<view class="env" v-if="envVersion !== 'release' && env">
<view class="env-text">{{env.name}}环境 版本号{{env.version}}+{{env.buildNumber}}</view>
<view class="env-button" @click="show=true">切换环境</view>
</view>
<label for="changePhone">
<view class="switch-account">切换账号</view>
</label>
@ -40,11 +44,17 @@
<label for="phone">
<view class="button-login">登录</view>
</label>
<view class="env" v-if="envVersion !== 'release' && env">
<view class="env-text">{{env.name}}环境 版本号{{env.version}}+{{env.buildNumber}}</view>
<view class="env-button" @click="show=true">切换环境</view>
</view>
</view>
</view>
<button open-type="contact" style="display:none" id="contact"></button>
<button open-type="getPhoneNumber" style="display:none" id="phone" @getphonenumber="getphonenumber"></button>
<button open-type="getPhoneNumber" style="display:none" id="changePhone" @getphonenumber="changePhone"></button>
<up-action-sheet :actions="envList" :closeOnClickOverlay="true" title="切换环境" cancelText="取消" :closeOnClickAction="true"
:show="show" :safeAreaInsetBottom="true" @close="show=false" @select="selectEnv"></up-action-sheet>
</template>
<script>
@ -53,11 +63,16 @@
import { useLockStore } from '@/stores/lock'
import { mapState, mapActions } from 'pinia'
import { phoneLoginRequest } from '@/api/user'
import env from '@/config/env'
export default {
data() {
return {
buttonInfo: null
buttonInfo: null,
env: null,
envVersion: '',
envList: [],
show: false
}
},
computed: {
@ -66,12 +81,29 @@
},
async onLoad() {
this.buttonInfo = await this.getButtonInfo()
this.env = env[getApp().globalData.getEnvConfig()]
this.envVersion = getApp().globalData.envVersion
for (let key in env) {
this.envList.push({
...env[key],
key: key
})
}
console.log(this.envList)
},
methods: {
...mapActions(useBasicStore, ['getButtonInfo', 'routeJump']),
...mapActions(useLockStore, ['getLockList', 'updateLockSearch']),
...mapActions(useUserStore, ['updateLoginStatus', 'phoneLogin', 'updateUserInfo', 'getUserInfo',
'checkSession']),
selectEnv(env) {
uni.setStorageSync('envVersion', env.key)
uni.removeStorageSync('token')
uni.removeStorageSync('openid')
uni.reLaunch({
url: '/pages/home/home'
})
},
async changePhone(res) {
if(res.detail.errMsg === 'getPhoneNumber:fail user deny') {
return
@ -203,6 +235,32 @@ page {
font-weight: bold;
}
.env {
position: absolute;
bottom: 180rpx;
width: 600rpx;
line-height: 80rpx;
text-align: center;
margin-left: 75rpx;
font-size: 40rpx;
font-weight: bold;
.env-text {
color: #999999;
font-size: 30rpx;
}
.env-button {
border-radius: 46rpx;
background: #f0ad4e;
color: #ffffff;
font-size: 40rpx;
font-weight: bold;
width: 600rpx;
height: 80rpx;
}
}
.button-login {
border-radius: 46rpx;
width: 650rpx;

View File

@ -1,4 +1,4 @@
import baseConfig from '@/config/env'
import env from '@/config/env'
/*
* config
@ -12,10 +12,12 @@ import baseConfig from '@/config/env'
const request = (config) => {
return new Promise((resolve) => {
const baseConfig = env[getApp().globalData.getEnvConfig()]
const token = config?.token ? config.token : uni.getStorageSync('token')
const headerDefault = {
appid: getApp().globalData.appid,
version: baseConfig.version,
version: baseConfig.version + '+' + baseConfig.buildNumber,
authorization: `Bearer ${token}`
}
const URL = config.baseUrl ? config.baseUrl + config.url : baseConfig.baseUrl + config.url
@ -63,13 +65,8 @@ const request = (config) => {
resolve({ code: -1, data, message: '网络不太好哦,请稍后再试' })
},
async complete(res) {
const env =
baseConfig.baseUrl.indexOf('test') !== -1
? 'test'
: baseConfig.baseUrl.indexOf('pre') !== -1
? 'pre'
: 'release'
console.log(URL.substring(baseConfig.baseUrl.length + 1), {
env: getApp().globalData.getEnvConfig(),
url: URL.substring(baseConfig.baseUrl.length + 1),
req: config?.data || {},
code: res?.data?.errorCode,