1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- <template>
- <div id="app">
- <router-view/>
- </div>
- </template>
- <script>
- import { on, off } from 'view-design/src/utils/dom';
- import { setMatchMedia } from 'view-design/src/utils/assist';
- import { mapMutations } from 'vuex';
- setMatchMedia();
- export default {
- name: 'app',
- methods: {
- ...mapMutations('system/layout', [
- 'setDevice'
- ]),
- handleWindowResize () {
- this.handleMatchMedia();
- },
- handleMatchMedia () {
- const matchMedia = window.matchMedia;
- if (matchMedia('(max-width: 600px)').matches) {
- this.setDevice('Mobile');
- } else if (matchMedia('(max-width: 992px)').matches) {
- this.setDevice('Tablet');
- } else {
- this.setDevice('Desktop');
- }
- }
- },
- mounted () {
- on(window, 'resize', this.handleWindowResize);
- this.handleMatchMedia();
- },
- beforeDestroy () {
- off(window, 'resize', this.handleWindowResize);
- }
- }
- </script>
|