|
@@ -17,6 +17,67 @@ import '@vant/touch-emulator';
|
|
|
// 导入语言
|
|
|
import i18n from './utils/i18n';
|
|
|
|
|
|
+async function checkVersion() {
|
|
|
+ // 开发环境跳过检测
|
|
|
+ if (process.env.NODE_ENV !== 'production') return;
|
|
|
+ try {
|
|
|
+ // 添加时间戳避免 version.json 缓存
|
|
|
+ const response = await fetch('/shenze/version.json?t=' + Date.now());
|
|
|
+ const serverVersion = await response.json();
|
|
|
+ const localVersion = localStorage.getItem('appVersion') || '';
|
|
|
+
|
|
|
+ if (serverVersion.version !== localVersion) {
|
|
|
+ showUpdateDialog(serverVersion.version); // 触发更新提示
|
|
|
+ } else if (!localVersion) {
|
|
|
+ localStorage.setItem('appVersion', serverVersion.version);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('版本检测失败:', error);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 启动定时检测(每 30 秒)
|
|
|
+function startVersionPolling() {
|
|
|
+ checkVersion(); // 初始检测
|
|
|
+ setInterval(checkVersion, 30000); // 30 秒轮询一次
|
|
|
+}
|
|
|
+
|
|
|
+// 在应用初始化时启动轮询
|
|
|
+startVersionPolling();
|
|
|
+
|
|
|
+function showUpdateDialog(newVersion) {
|
|
|
+ Dialog.confirm({
|
|
|
+ title: '版本更新提示',
|
|
|
+ message: `检测到新版本 ${newVersion},是否立即刷新?`,
|
|
|
+ confirmButtonText: '立即刷新',
|
|
|
+ cancelButtonText: '稍后刷新',
|
|
|
+ }).then(() => {
|
|
|
+ localStorage.setItem('appVersion', newVersion);
|
|
|
+ window.location.reload();
|
|
|
+ }).catch(() => {
|
|
|
+ // 用户取消
|
|
|
+ console.log('用户推迟了更新');
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 注册Service Worker
|
|
|
+if ('serviceWorker' in navigator && process.env.NODE_ENV === 'production') {
|
|
|
+ window.addEventListener('load', () => {
|
|
|
+ navigator.serviceWorker.register('/shenze/sw.js').then(registration => {
|
|
|
+ console.log('ServiceWorker 注册成功:', registration.scope);
|
|
|
+
|
|
|
+ navigator.serviceWorker.addEventListener('controllerchange', () => {
|
|
|
+ window.location.reload();
|
|
|
+ });
|
|
|
+ }).catch(error => {
|
|
|
+ console.log('ServiceWorker 注册失败:', error);
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 在应用初始化前执行检测
|
|
|
+checkVersion();
|
|
|
+
|
|
|
const app = createApp(App) // 创建实例
|
|
|
// 全局过滤器
|
|
|
app.config.globalProperties.$filters = {
|