diff --git a/src/App.vue b/src/App.vue index 96f5004..d56d359 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,21 +1,18 @@ - diff --git a/src/assets/js/appBridge.js b/src/assets/js/appBridge.js index 31446a2..3dae8aa 100644 --- a/src/assets/js/appBridge.js +++ b/src/assets/js/appBridge.js @@ -49,9 +49,20 @@ export default { * @returns {Boolean} 操作是否成功 */ navigateBack() { - return this.postMessageToRN({ - type: 'back' - }); + if (!this.isInReactNative()) { + return false; + } + try { + window.ReactNativeWebView.postMessage(JSON.stringify({ + type: 'back', + data: { + force: false // 不强制返回,让原生端判断是否可以返回 + } + })); + return true; + } catch (error) { + return false; + } }, /** @@ -127,9 +138,20 @@ export default { * @returns {Boolean} 操作是否成功 */ takeOverAndroidBack() { - return this.postMessageToRN({ - type: 'takeOverAndroidBack' - }); + if (!this.isInReactNative()) { + return false; + } + try { + window.ReactNativeWebView.postMessage(JSON.stringify({ + type: 'takeOverAndroidBack', + data: { + enabled: true + } + })); + return true; + } catch (error) { + return false; + } }, /** diff --git a/src/components/AndroidBackHandler.vue b/src/components/AndroidBackHandler.vue new file mode 100644 index 0000000..d94f264 --- /dev/null +++ b/src/components/AndroidBackHandler.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/main.ts b/src/main.ts index d42604f..cc6560e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,50 +12,30 @@ import appBridge from '@/assets/js/appBridge'; import VConsole from 'vconsole'; const app = createApp(App); -// import VConsole from 'vconsole'; -// let vconsole; if (import.meta.env.VITE_APP_ENV !== 'production') { const vconsole = new VConsole(); app.use(vconsole); - // eslint-disable-next-line no-unused-vars - // vconsole = new VConsole(); } -// 添加 TypeScript 类型声明,在文件顶部添加 declare global { interface Window { onAndroidBack: (() => void) | null; - appBridge?: any; // 同时添加 appBridge 类型声明 + appBridge?: any; } } - +// 隐藏/显示 header +appBridge.setHeaderShown(false); +// 设置系统状态栏明暗主题 +appBridge.setStatusBarStyle('light'); router.beforeEach((to, from, next) => { if (to.query.digitalYiliToken) { utils.setSessionStorage('xToken', to.query.digitalYiliToken); } - // appBridge.setTitle(to.meta.title as string); - // 设置禁止原生返回 - appBridge.takeOverAndroidBack(); - // 定义路由是否可以返回的判断 - const routerCanGoBack = () => { - const position = router.options.history.state?.position; - return typeof position === 'number' && position > 0; - }; - - // 定义调用APP返回的方法 - const callAppGoBack = () => { - appBridge.navigateBack(); // 使用现有的navigateBack方法替代不存在的goBack方法 - }; - // 添加 Android 返回按钮监听方法 - window.onAndroidBack = () => { - if (routerCanGoBack()) { - router.back(); - } else { - callAppGoBack(); - } - }; + // 设置 header 标题 + appBridge.setTitle(to.meta.title as string); next(); }); + app.use(createPinia()); app.use(router); app.mount('#app'); diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue index 354f30e..2ace324 100644 --- a/src/views/Home/Index.vue +++ b/src/views/Home/Index.vue @@ -8,23 +8,24 @@ import { onMounted, ref } from 'vue'; // import { showFailToast } from 'vant'; const contentShow = ref(false); onMounted(async() => { - if (utils.getSessionStorage('xToken')) { - const appToken = utils.getParameter('digitalYiliToken'); - getUserInfo(appToken).then((res) => { - if (res.data) { - contentShow.value = true; - utils.setSessionStorage('userInfo', res.data.data); - } else { - contentShow.value = false; - showFailToast(error.response.data?.message || error.data?.message || error.message || '服务器错误'); - } - }).catch((error) => { - contentShow.value = false; - showFailToast(error?.response?.data?.message || error?.message || '服务器错误'); - }); - } else { - contentShow.value = true; - } + contentShow.value = true; + // if (utils.getSessionStorage('xToken')) { + // const appToken = utils.getParameter('digitalYiliToken'); + // getUserInfo(appToken).then((res) => { + // if (res.data) { + // contentShow.value = true; + // utils.setSessionStorage('userInfo', res.data.data); + // } else { + // contentShow.value = false; + // showFailToast(error.response.data?.message || error.data?.message || error.message || '服务器错误'); + // } + // }).catch((error) => { + // contentShow.value = false; + // showFailToast(error?.response?.data?.message || error?.message || '服务器错误'); + // }); + // } else { + // contentShow.value = true; + // } }); @@ -45,13 +46,13 @@ onMounted(async() => { padding: 0 10px 60px; background: linear-gradient(0deg, #f5f5f5 0%, #f5f5f5 84%, #a5d380 100%); - & > :first-child { + &> :first-child { display: flex; justify-content: space-around; border-radius: 6px; background-color: white; - & > div { + &>div { display: flex; flex-direction: column; width: 50px; diff --git a/src/views/Survey/views/Publish/Index.vue b/src/views/Survey/views/Publish/Index.vue index 77063dd..0bd0134 100644 --- a/src/views/Survey/views/Publish/Index.vue +++ b/src/views/Survey/views/Publish/Index.vue @@ -5,11 +5,9 @@
- + alt="" />
@@ -42,8 +40,8 @@