Browse Source

自定义url传参

黄琪勇 6 months ago
parent
commit
0ea7fb28fe

+ 17 - 0
src/queryParams/index.ts

@@ -0,0 +1,17 @@
+import { reactive } from "vue"
+import router from "@/router"
+
+/** 维护其他系统过来的特殊字段  这里用来记录,以免其他系统传过来的参数混乱 不好维护 */
+type queryParamsType = {
+  hideFullScreen: boolean
+}
+const queryParams = reactive<queryParamsType>({
+  hideFullScreen: false // 隐藏预览时候的全屏按钮
+})
+
+export function initQueryParams() {
+  const query = router.currentRoute.value.query
+  queryParams.hideFullScreen = !!query.hideFullScreen
+}
+
+export default queryParams

+ 4 - 0
src/router/index.ts

@@ -4,6 +4,7 @@ import NProgress from "@/plugins/nprogress"
 import { ElMessage } from "element-plus"
 import { getToken, CODE401 } from "@/libs/auth"
 import userStore from "@/store/user"
+import { initQueryParams } from "@/queryParams"
 
 const userStoreHook = userStore()
 
@@ -71,4 +72,7 @@ router.afterEach(() => {
   NProgress.done()
 })
 
+router.isReady().then(() => {
+  initQueryParams()
+})
 export default router

+ 5 - 2
src/views/Screen/BaseView.vue

@@ -30,8 +30,10 @@
         <IconMagic class="tool-btn" v-tooltip="'激光笔'" :class="{ active: laserPen }" @click="laserPen = !laserPen" />
         <IconStopwatchStart class="tool-btn" v-tooltip="'计时器'" :class="{ active: timerlVisible }" @click="timerlVisible = !timerlVisible" />
         <IconListView class="tool-btn" v-tooltip="'演讲者视图'" @click="changeViewMode('presenter')" />
-        <IconOffScreenOne class="tool-btn" v-tooltip="'退出全屏'" v-if="fullscreenState" @click="manualExitFullscreen()" />
-        <IconFullScreenOne class="tool-btn" v-tooltip="'进入全屏'" v-else @click="enterFullscreen()" />
+        <template v-if="!queryParams.hideFullScreen">
+          <IconOffScreenOne class="tool-btn" v-tooltip="'退出全屏'" v-if="fullscreenState" @click="manualExitFullscreen()" />
+          <IconFullScreenOne class="tool-btn" v-tooltip="'进入全屏'" v-else @click="enterFullscreen()" />
+        </template>
         <IconPower v-if="screenStore.mode === 'pptEditor'" class="tool-btn" v-tooltip="'结束放映'" @click="exitScreening()" />
       </div>
     </div>
@@ -53,6 +55,7 @@ import ScreenSlideList from "./ScreenSlideList.vue"
 import SlideThumbnails from "./SlideThumbnails.vue"
 import WritingBoardTool from "./WritingBoardTool.vue"
 import CountdownTimer from "./CountdownTimer.vue"
+import queryParams from "@/queryParams"
 
 const props = defineProps<{
   changeViewMode: (mode: "base" | "presenter") => void

+ 2 - 1
src/views/Screen/PresenterView.vue

@@ -9,7 +9,7 @@
       <div class="tool-btn" :class="{ active: timerlVisible }" @click="timerlVisible = !timerlVisible">
         <IconStopwatchStart class="tool-icon" /><span>计时器</span>
       </div>
-      <div class="tool-btn" @click="() => (fullscreenState ? manualExitFullscreen() : enterFullscreen())">
+      <div v-if="!queryParams.hideFullScreen" class="tool-btn" @click="() => (fullscreenState ? manualExitFullscreen() : enterFullscreen())">
         <IconOffScreenOne class="tool-icon" v-if="fullscreenState" />
         <IconOffScreenOne class="tool-icon" v-else />
         <span>{{ fullscreenState ? "退出全屏" : "全屏" }}</span>
@@ -89,6 +89,7 @@ import ScreenSlideList from "./ScreenSlideList.vue"
 import WritingBoardTool from "./WritingBoardTool.vue"
 import CountdownTimer from "./CountdownTimer.vue"
 import Divider from "@/components/Divider.vue"
+import queryParams from "@/queryParams"
 
 const props = defineProps<{
   changeViewMode: (mode: "base" | "presenter") => void