Browse Source

feat: 添加路由跳转组件 全局window声明文件

master
姜鑫 4 years ago
committed by Gitea
parent
commit
690c43ab5f
  1. 2
      public/index.html
  2. 1
      src/App.vue
  3. 26
      src/composables/useDay.ts
  4. 6
      src/composables/useHandleScreen.ts
  5. 5
      src/directives/language.ts
  6. 6
      src/index.d.ts
  7. 2
      src/main.ts
  8. 5
      src/router/index.ts
  9. 4
      src/store/actions.ts
  10. 4
      src/store/state.ts
  11. 12
      src/utils/initMapAndMallInfo.ts
  12. 2
      src/utils/utils.ts
  13. 20
      src/views/Nav/Nav.vue
  14. 15
      src/views/Transfer/Transfer.vue

2
public/index.html

@ -6,6 +6,8 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<script type="text/javascript" src="/static/qm/three.js"></script>
<script type="text/javascript" src="/static/qm/MainMap_QM.js"></script>
</head>
<body>
<noscript>

1
src/App.vue

@ -20,7 +20,6 @@ import { useHandleScreen } from '@/composables/useHandleScreen'
import { useModuleStatistics } from '@/composables/useStatistics'
import Map from '@/components/Map/Map.vue'
const Logout = defineAsyncComponent(() => import('@/base/Logout/Logout.vue'))
const AutoBackNotification = defineAsyncComponent(() => import('@/base/AutoBackNotification/AutoBackNotification.vue'))

26
src/composables/useDay.ts

@ -1,28 +1,26 @@
import { computed, ref } from 'vue'
import { useStore } from '@/store'
import { formatDay, Format } from '@/utils/utils'
import { Language } from '@/store/state'
type Keys = {
// eslint-disable-next-line no-unused-vars
[K in Language]: string[]
}
export const useDay = () => {
const dayCn = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
const dayEn = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
const dayTw = ['星期日', '星期壹', '星期二', '星期三', '星期四', '星期五', '星期六']
const days: Keys = {
zh: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
en: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
tw: ['星期日', '星期壹', '星期二', '星期三', '星期四', '星期五', '星期六']
}
const date = ref(new Date())
const store = useStore()
const language = computed(() => store.$state.language)
const currentWeek = () => {
switch (language.value) {
case 'tw':
return dayTw[date.value.getDay()]
const currentWeek = () => days[language.value][date.value.getDay()]
case 'en':
return dayEn[date.value.getDay()]
default:
return dayCn[date.value.getDay()]
}
}
const whichWeek = computed(currentWeek)
return {

6
src/composables/useHandleScreen.ts

@ -46,9 +46,9 @@ export const useHandleScreen = (callback?: () => void) => {
const { data } = await getBackTime()
if (Array.isArray(data)) {
state.times = data.length ? data : [60, 60]
state.countDownNum = data[0] ?? 60
state.countDownToWall = data[1] ?? 60
state.times = data
state.countDownNum = data[0]
state.countDownToWall = data[1]
}
} catch (error) {
console.log('获取返回时长失败: ', error)

5
src/directives/language.ts

@ -23,19 +23,14 @@ export default (el: HTMLElement, binding: any) => {
}
if (language === 'en' && arg[value + 'En']) {
console.log('en')
content = arg[value + 'En']
} else if (language === 'en' && !arg[value + 'En']) {
console.log('en')
content = arg[value]
}
if (language === 'tw') {
console.log('tw')
content = chineseLanguageLoader(arg[value])
}
console.log(content, 999)
el.innerHTML = content
debugger
})
}

6
src/index.d.ts

@ -0,0 +1,6 @@
export declare global {
interface Window {
Config: Record<string, any>
Map_QM: Record<string, any>
}
}

2
src/main.ts

@ -34,7 +34,7 @@ get('/static/offline/JSON/config.json').then(res => {
)
app.use(pinia)
const store = useStore()
store.SET_CONFIG(res.data as typeof store.config)
store.SET_CONFIG(res.data as Record<string, any>)
app.use(router).use(i18n).mount('#app')
})

5
src/router/index.ts

@ -10,6 +10,11 @@ const routes: Array<RouteRecordRaw> = [
path: '/nav',
name: 'Nav',
component: () => import(/* webpackChunkName: "nav" */ '@/views/Nav/Nav.vue')
},
{
path: '/transfer',
name: 'Transfer',
component: () => import(/* webpackChunkName: "transfer" */ '@/views/Transfer/Transfer.vue')
}
]

4
src/store/actions.ts

@ -14,6 +14,7 @@ export interface Actions {
SET_CONFIG(config: Record<string, any>): void
SET_IS_USE_FACE(flag: boolean): void
SET_IS_USE_SPEECH(flag: boolean): void
SET_FACILITY_LIST(list: any[]): void
}
type __StoreWithState = _StoreWithState<GlobalType, State, Record<string, any>, Actions>
@ -46,5 +47,8 @@ export const actions: MyThis = {
},
SET_IS_USE_SPEECH(flag) {
this.isUseSpeech = flag
},
SET_FACILITY_LIST(list) {
this.facilityList = list
}
}

4
src/store/state.ts

@ -9,6 +9,7 @@ export interface State {
config: Record<string, any>
isUseFace: boolean
isUseSpeech: boolean
facilityList: any[]
}
export const state = (): State => ({
@ -19,5 +20,6 @@ export const state = (): State => ({
shop: {},
currentFloor: {},
isUseFace: false,
isUseSpeech: false
isUseSpeech: false,
facilityList: []
})

12
src/utils/initMapAndMallInfo.ts

@ -21,16 +21,16 @@ export const setInitMapAndMallInfo = async function () {
}))
//初始化地图
onReady(currentFloor.data as Map, () => {
const facilityList = (window as any).Map_QM.getAllIcon().flat(Infinity)
const facilityList = window.Map_QM.getAllIcon().flat(Infinity)
const list = facilityList.map((item: { imgUrl: string }) => {
item.imgUrl.replace('./', '/')
return item
})
;(window as any).Map_QM.addEventListener('shop', onClickShop, false)
window.Map_QM.addEventListener('shop', onClickShop, false)
store.SET_FACILITY_LIST(uniqBy(list, 'type'))
;(window as any).Map_QM.renderer.domElement.addEventListener('webglcontextlost', onContextLost)
window.Map_QM.renderer.domElement.addEventListener('webglcontextlost', onContextLost)
})
}
@ -40,11 +40,11 @@ function onClickShop(event: { data: { shopName: string; xaxis: any; yaxis: any;
const store = useStore()
showMapDialog()
;(document.getElementById('shopNum') as HTMLElement).innerText = event.data.shopName
;(window as any).Map_QM.addElementLabel(document.getElementById('shopInfo'), event.data.xaxis, event.data.yaxis)
window.Map_QM.addElementLabel(document.getElementById('shopInfo'), event.data.xaxis, event.data.yaxis)
store.SET_SHOP(event.data.shopData)
} else {
hideMapDialog()
;(window as any).Map_QM.cancelSelectShop()
window.Map_QM.cancelSelectShop()
}
}
@ -60,7 +60,7 @@ function showMapDialog() {
//地图初始化
function onReady({ floorOrder, yaxis, angle }: Map, callback: () => void) {
;(window as any).Config.getInstance(callback, 0, floorOrder, yaxis, angle) //设备楼栋, 设备楼层, 点位(机器点位直连主干道而不在主干道上), 方向 84 85
window.Config.getInstance(callback, 0, floorOrder, yaxis, angle) //设备楼栋, 设备楼层, 点位(机器点位直连主干道而不在主干道上), 方向 84 85
}
//监听地图上下文丢失 刷新页面

2
src/utils/utils.ts

@ -103,5 +103,5 @@ export const formatDay = (date: Date, format: Format = 'y-m-d') => {
return `${year}/${month}/${week}`
}
return `${year}-${month}-${week}`
return year + '-' + month + '-' + week
}

20
src/views/Nav/Nav.vue

@ -98,21 +98,21 @@ const list = computed(() => [
//
function handleReplay() {
;(window as any).Config.setPlaySpeed(4)
window.Config.setPlaySpeed(4)
state.replay = !state.replay
state.pause = false
state.speedUp = false
;(window as any).Map_QM.pathRePlay()
window.Map_QM.pathRePlay()
}
//
function togglePause() {
;(window as any).Config.setPlaySpeed(4)
window.Config.setPlaySpeed(4)
state.pause = !state.pause
state.replay = false
state.speedUp = false
nextTick(() => {
;(window as any).Map_QM.pathStop()
window.Map_QM.pathStop()
})
}
@ -128,7 +128,7 @@ function handleSpeedUp() {
//线
function handleControl(index: number) {
;(window as any).Config.setPlaySpeed(4)
window.Config.setPlaySpeed(4)
state.replay = false
state.pause = false
state.speedUp = false
@ -141,26 +141,26 @@ function selectedWayMethods(index: number) {
switch (index) {
case 0:
//线
;(window as any).Map_QM.ChangePathByGood()
window.Map_QM.ChangePathByGood()
break
case 1:
//
;(window as any).Map_QM.ChangePathByFt(backPathArray)
window.Map_QM.ChangePathByFt(backPathArray)
break
case 2:
//
;(window as any).Map_QM.ChangePathByDt(backPathArray)
window.Map_QM.ChangePathByDt(backPathArray)
break
default:
;(window as any).Map_QM.ChangePathByGood(backPathArray)
window.Map_QM.ChangePathByGood(backPathArray)
break
}
}
//
function startNavi({ floorOrder, yaxis }: { floorOrder: number; yaxis: number }) {
;(window as any).Map_QM.pathNode({ floor: floorOrder, node: yaxis }, backPathArray)
window.Map_QM.pathNode({ floor: floorOrder, node: yaxis }, backPathArray)
}
//

15
src/views/Transfer/Transfer.vue

@ -0,0 +1,15 @@
<!-- 该组件只作为路由中间件 跳转使用 不参与任何业务开发 -->
<template>
<div></div>
</template>
<script setup lang="ts">
import { onMounted } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
onMounted(() => {
router.back()
})
</script>
Loading…
Cancel
Save