83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
|
|
/**
|
|||
|
|
* 开发环境专用:可拖拽的 baseURL 切换悬浮按钮
|
|||
|
|
* 正式环境(release)不显示
|
|||
|
|
*/
|
|||
|
|
const PRODUCTION_URL = 'https://soulapi.quwanzhi.com'
|
|||
|
|
const STORAGE_KEY = 'apiBaseUrl'
|
|||
|
|
const POSITION_KEY = 'envSwitchPosition'
|
|||
|
|
|
|||
|
|
const URL_OPTIONS = [
|
|||
|
|
{ label: '生产', url: PRODUCTION_URL },
|
|||
|
|
{ label: '本地', url: 'http://localhost:8080' },
|
|||
|
|
{ label: '测试', url: 'https://souldev.quwanzhi.com' },
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
Component({
|
|||
|
|
data: {
|
|||
|
|
visible: false,
|
|||
|
|
x: 20,
|
|||
|
|
y: 120,
|
|||
|
|
currentLabel: '生产',
|
|||
|
|
areaWidth: 375,
|
|||
|
|
areaHeight: 812,
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
lifetimes: {
|
|||
|
|
attached() {
|
|||
|
|
try {
|
|||
|
|
const accountInfo = wx.getAccountInfoSync?.()
|
|||
|
|
const envVersion = accountInfo?.miniProgram?.envVersion || 'release'
|
|||
|
|
if (envVersion === 'release') {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
const sys = wx.getSystemInfoSync?.() || {}
|
|||
|
|
const areaWidth = sys.windowWidth || 375
|
|||
|
|
const areaHeight = sys.windowHeight || 812
|
|||
|
|
const saved = wx.getStorageSync(POSITION_KEY)
|
|||
|
|
const pos = saved ? JSON.parse(saved) : { x: 20, y: 120 }
|
|||
|
|
// 与 app.js 一致:storage 优先,否则用 globalData(已按 env 自动切换)
|
|||
|
|
const current = wx.getStorageSync(STORAGE_KEY) || getApp().globalData?.baseUrl || PRODUCTION_URL
|
|||
|
|
const opt = URL_OPTIONS.find(o => o.url === current) || URL_OPTIONS[0]
|
|||
|
|
this.setData({
|
|||
|
|
visible: true,
|
|||
|
|
x: pos.x ?? 20,
|
|||
|
|
y: pos.y ?? 120,
|
|||
|
|
currentLabel: opt.label,
|
|||
|
|
areaWidth,
|
|||
|
|
areaHeight,
|
|||
|
|
})
|
|||
|
|
} catch (_) {
|
|||
|
|
this.setData({ visible: false })
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
methods: {
|
|||
|
|
onTap() {
|
|||
|
|
const items = URL_OPTIONS.map(o => o.label)
|
|||
|
|
const current = wx.getStorageSync(STORAGE_KEY) || PRODUCTION_URL
|
|||
|
|
const idx = URL_OPTIONS.findIndex(o => o.url === current)
|
|||
|
|
wx.showActionSheet({
|
|||
|
|
itemList: items,
|
|||
|
|
success: (res) => {
|
|||
|
|
const opt = URL_OPTIONS[res.tapIndex]
|
|||
|
|
wx.setStorageSync(STORAGE_KEY, opt.url)
|
|||
|
|
const app = getApp()
|
|||
|
|
if (app && app.globalData) {
|
|||
|
|
app.globalData.baseUrl = opt.url
|
|||
|
|
}
|
|||
|
|
this.setData({ currentLabel: opt.label })
|
|||
|
|
wx.showToast({ title: `已切到${opt.label}`, icon: 'none', duration: 1500 })
|
|||
|
|
},
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
onMovableChange(e) {
|
|||
|
|
const { x, y } = e.detail
|
|||
|
|
if (typeof x === 'number' && typeof y === 'number') {
|
|||
|
|
wx.setStorageSync(POSITION_KEY, JSON.stringify({ x, y }))
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
})
|