app-env-badge.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <template>
  2. <!-- 非生产环境常驻提醒,避免误把本机/测试包当生产上传 -->
  3. <view v-if="show" class="app-env-badge" :class="'app-env-badge--' + envKey" @click="onTap">
  4. <text class="app-env-badge__text">当前环境:{{ label }}({{ envKey }})· 点此查看</text>
  5. </view>
  6. </template>
  7. <script setup>
  8. import { computed } from 'vue'
  9. import {
  10. APP_ENV,
  11. CURRENT_ENV,
  12. IS_PRODUCTION,
  13. resolveApiBase,
  14. resolveWebOrigin
  15. } from '@/config/env'
  16. const show = computed(() => !IS_PRODUCTION)
  17. const envKey = computed(() => APP_ENV || CURRENT_ENV.key || 'unknown')
  18. const label = computed(() => CURRENT_ENV.label || envKey.value)
  19. function onTap() {
  20. uni.showModal({
  21. title: '环境配置提醒',
  22. content: [
  23. `APP_ENV = ${envKey.value}(${label.value})`,
  24. `API:${resolveApiBase()}`,
  25. `Web:${resolveWebOrigin()}`,
  26. '',
  27. '上传微信正式版前,请将 config/env.js 改为:',
  28. "export const APP_ENV = 'production'",
  29. '并执行:npm run release:check-api'
  30. ].join('\n'),
  31. showCancel: false,
  32. confirmText: '知道了'
  33. })
  34. }
  35. </script>
  36. <style scoped>
  37. .app-env-badge {
  38. position: fixed;
  39. left: 0;
  40. right: 0;
  41. bottom: 0;
  42. z-index: 99999;
  43. padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  44. text-align: center;
  45. box-sizing: border-box;
  46. }
  47. .app-env-badge--local {
  48. background: #dc2626;
  49. }
  50. .app-env-badge--test,
  51. .app-env-badge--testLocalH5 {
  52. background: #d97706;
  53. }
  54. .app-env-badge__text {
  55. color: #fff;
  56. font-size: 12px;
  57. font-weight: 700;
  58. line-height: 1.4;
  59. }
  60. </style>