123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <template>
- <div class="tabbar-page-wrapper">
- <global-tip :type="'3'"></global-tip>
- <!-- login -->
- <popup-login v-if="!loginStatus" @loginAction="loginAction" />
- <template v-else>
- <top-bar :userInfo="userInfo" :bgColor="bgColor" :color="color" :boxShadow="boxShadow"></top-bar>
- <div class="tabbar-content">
- <router-view></router-view>
- </div>
- <tabbar :userInfo="userInfo" @tabbarClick="onTabbarHandler"></tabbar>
- </template>
- </div>
- </template>
- <script setup>
- import { onMounted, onBeforeUnmount, ref, nextTick } from "vue";
- import { getChromeStorage } from "@/uilts/chromeExtension";
- import { setStorage, getStorage } from "@/uilts/help";
- import Report from "@/log-center/log";
- import router from "@/router/popup.js";
- import TopBar from "@/view/popup/components/top-bar.vue";
- import Tabbar from "@/view/popup/components/tabbar.vue";
- import GlobalTip from '@/view/components/global-tip.vue';
- import popupLogin from "@/view/popup/components/login.vue";
- let userInfo = ref({});
- let bgColor = ref('#1b92e2');
- let color = ref('#fff');
- let boxShadow = ref('none');
- let loginStatus = ref('default');
- const getUserInfo = (cb) => {
- getChromeStorage("userInfo", (res) => {
- if (res && res.accessToken) {
- userInfo.value = res;
- loginStatus.value = res;
- } else {
- loginStatus.value = '';
- userInfo.value = {};
- }
- cb && cb(res);
- });
- };
- const onTabbarHandler = (params) => {
- if (params.path == '/') {
- bgColor.value = '#1b92e2';
- boxShadow.value = 'none';
- color.value = '#fff'
- } else {
- bgColor.value = '#fff';
- color.value = '#000';
- if (params.path != '/more') {
- boxShadow.value = '0px 0.5px 0px 0px #D1D9DD';
- } else {
- boxShadow.value = 'none';
- }
- }
- }
- const loginAction = () => {
- Report.reportLog({
- pageSource: Report.pageSource.denetLogin,
- businessType: Report.businessType.buttonClick,
- objectType: Report.objectType.loginButton
- });
- login();
- };
- const login = () => {
- callEventPageMethod("POPUP_LOGIN", "", function (response) {
- console.log("res", response);
- });
- }
- /**
- * sendMessage
- */
- const callEventPageMethod = (actionType, data, callback) => {
- chrome.runtime.sendMessage(
- {
- actionType: actionType,
- data: data
- },
- function (response) {
- if (typeof callback === "function") callback(response);
- }
- );
- };
- const onPageVisbile = () => {
- document.addEventListener('visibilitychange', function () {
- let isHidden = document.hidden;
- if (!isHidden) {
- if (!userInfo.value.accessToken) {
- setTimeout(() => {
- getUserInfo();
- }, 500)
- }
- }
- });
- }
- const onRuntimeMsg = () => {
- chrome.runtime.onMessage.addListener(msgListener)
- }
- const msgListener = (req, sender, sendResponse) => {
- switch (req.actionType) {
- case 'BG_LOGIN_SET_USERINFO_CB':
- if (!userInfo.value.accessToken) {
- setTimeout(() => {
- getUserInfo();
- }, 800)
- }
- break;
- case 'CONTENT_POPUP_PAGE_SHOW':
- init();
- break;
- }
- }
- const init = () => {
- nextTick(() => {
- onTabbarHandler(router.currentRoute.value);
- })
- getUserInfo();
- }
- onMounted(() => {
- onPageVisbile();
- onRuntimeMsg();
- init();
- });
- onBeforeUnmount(() => {
- chrome.runtime.onMessage.removeListener(msgListener);
- })
- </script>
- <style lang='scss'>
- .tabbar-page-wrapper {
- width: 100%;
- height: 100%;
- position: relative;
- .tabbar-content {
- width: 100%;
- height: calc(100% - 120px);
- }
- }
- </style>
|