vue2-client 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.eslintrc.js +81 -81
  2. package/README.md +4 -2
  3. package/babel.config.js +14 -14
  4. package/docs/index.md +29 -29
  5. package/{src/index.js → index.js} +8 -8
  6. package/jest.config.js +3 -3
  7. package/package.json +1 -1
  8. package/public/index.html +27 -27
  9. package/src/App.vue +93 -93
  10. package/src/base-client/all.js +26 -26
  11. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +4 -4
  12. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  13. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +3 -3
  14. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  15. package/src/base-client/components/common/CustomColumnsDrawer/index.md +46 -46
  16. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +3 -3
  17. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  18. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  19. package/src/base-client/components/common/XAddForm/XAddForm.vue +3 -3
  20. package/src/base-client/components/common/XAddForm/index.md +60 -60
  21. package/src/base-client/components/common/XBadge/index.md +39 -39
  22. package/src/base-client/components/common/XCard/index.md +43 -43
  23. package/src/base-client/components/common/XForm/XForm.vue +2 -2
  24. package/src/base-client/components/common/XForm/XFormItem.vue +1 -1
  25. package/src/base-client/components/common/XForm/index.md +3 -3
  26. package/src/base-client/components/common/XFormCol/index.md +35 -35
  27. package/src/base-client/components/common/XFormTable/XFormTable.vue +6 -6
  28. package/src/base-client/components/common/XFormTable/index.md +89 -89
  29. package/src/base-client/components/common/XTable/XTable.vue +3 -3
  30. package/src/base-client/components/common/XTable/index.md +3 -3
  31. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +105 -105
  32. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +3 -3
  33. package/src/base-client/components/iot/CustomerDetailsView/index.md +41 -41
  34. package/src/base-client/components/iot/DataAnalysisUser/DataAnalysisUser.vue +127 -127
  35. package/src/base-client/components/iot/DataAnalysisViewGD/DataAnalysisViewGD.vue +5 -5
  36. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +3 -3
  37. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +3 -3
  38. package/src/base-client/components/iot/DeviceDetailsView/index.md +43 -43
  39. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +1 -1
  40. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  41. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstruct.vue +122 -122
  42. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +4 -4
  43. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsMain.vue +225 -225
  44. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +135 -135
  45. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +3 -3
  46. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +5 -5
  47. package/src/base-client/components/iot/InstructDetailsView/index.md +45 -45
  48. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +3 -3
  49. package/src/base-client/components/iot/LogDetailsView/index.md +43 -43
  50. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +3 -3
  51. package/src/base-client/components/iot/MeterDetailsView/index.md +43 -43
  52. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +1 -1
  53. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +3 -3
  54. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +3 -3
  55. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +4 -4
  56. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +3 -3
  57. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +3 -3
  58. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +4 -4
  59. package/src/base-client/components/iot/WebmeterAnalysisView/index.md +48 -48
  60. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +4 -4
  61. package/src/base-client/components/system/DictionaryDetailsView/index.md +41 -41
  62. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +3 -3
  63. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +5 -5
  64. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +5 -5
  65. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +3 -3
  66. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +6 -6
  67. package/src/base-client/plugins/AppData.js +3 -3
  68. package/src/base-client/plugins/GetLoginInfoService.js +2 -2
  69. package/src/base-client/plugins/index.js +4 -4
  70. package/src/bootstrap.js +4 -4
  71. package/src/components/Ellipsis/Ellipsis.vue +64 -64
  72. package/src/components/Ellipsis/index.md +38 -38
  73. package/src/components/NumberInfo/index.md +43 -43
  74. package/src/components/STable/README.md +341 -341
  75. package/src/components/Trend/index.md +45 -45
  76. package/src/components/cache/AKeepAlive.js +172 -172
  77. package/src/components/checkbox/index.js +7 -7
  78. package/src/components/index.js +36 -36
  79. package/src/components/menu/menu.js +273 -273
  80. package/src/components/setting/Setting.vue +237 -237
  81. package/src/components/table/advance/AdvanceTable.vue +275 -275
  82. package/src/components/transition/PageToggleTransition.vue +97 -97
  83. package/src/config/default/setting.config.js +33 -33
  84. package/src/layouts/CommonLayout.vue +42 -42
  85. package/src/layouts/ComponentLayoutOne.vue +47 -47
  86. package/src/layouts/PageLayout.vue +151 -151
  87. package/src/layouts/SinglePageView.vue +74 -74
  88. package/src/layouts/header/AdminHeader.vue +109 -109
  89. package/src/layouts/header/HeaderAvatar.vue +60 -60
  90. package/src/layouts/header/HeaderNotice.vue +1 -1
  91. package/src/layouts/tabs/TabsHead.vue +190 -190
  92. package/src/layouts/tabs/TabsView.vue +355 -355
  93. package/src/main.js +2 -2
  94. package/src/mock/common/reportData.js +20 -20
  95. package/src/mock/goods/index.js +108 -108
  96. package/src/mock/index.js +12 -12
  97. package/src/mock/project/index.js +17 -17
  98. package/src/mock/user/current.js +13 -13
  99. package/src/mock/user/login.js +39 -39
  100. package/src/mock/user/routes.js +61 -61
  101. package/src/mock/workplace/index.js +15 -15
  102. package/src/pages/exception/403.vue +2 -2
  103. package/src/pages/exception/404.vue +2 -2
  104. package/src/pages/exception/500.vue +2 -2
  105. package/src/pages/login/Login.vue +8 -8
  106. package/src/pages/report/ReportTable.js +125 -125
  107. package/src/pages/report/ReportTableHome.vue +2 -2
  108. package/src/pages/resourceManage/resourceManageMain.vue +1 -1
  109. package/src/pages/system/applyInstallView/Core.vue +570 -570
  110. package/src/pages/system/applyInstallView/index.vue +34 -34
  111. package/src/pages/system/dictionary/index.vue +41 -41
  112. package/src/pages/system/queryParams/index.vue +41 -41
  113. package/src/router/async/config.async.js +25 -25
  114. package/src/router/async/router.map.js +13 -13
  115. package/src/router/guards.js +104 -104
  116. package/src/router/index.js +2 -2
  117. package/src/services/api/common.js +1 -1
  118. package/src/services/api/restTools.js +1 -1
  119. package/src/services/dataSource.js +12 -12
  120. package/src/services/user.js +34 -34
  121. package/src/store/index.js +5 -5
  122. package/src/store/modules/setting.js +114 -114
  123. package/src/theme/index.less +5 -5
  124. package/src/theme/reportTable.less +58 -58
  125. package/src/utils/i18n.js +80 -80
  126. package/src/utils/indexedDB.js +1 -1
  127. package/src/utils/request.js +1 -1
  128. package/src/utils/routerUtil.js +3 -3
  129. package/tests/unit/ReportTable.spec.js +2 -2
  130. package/vue.config.js +1 -0
  131. package/webpack.config.js +1 -1
  132. package/src/router/config.js +0 -23
@@ -1,151 +1,151 @@
1
- <template>
2
- <div class="page-layout">
3
- <page-header
4
- ref="pageHeader"
5
- :style="`margin-top: ${multiPage ? 0 : -24}px`"
6
- :breadcrumb="breadcrumb"
7
- :title="pageTitle"
8
- :logo="logo"
9
- :avatar="avatar">
10
- <slot name="action" slot="action"></slot>
11
- <slot slot="content" name="headerContent"></slot>
12
- <div slot="content" v-if="!this.$slots.headerContent && desc">
13
- <p>{{ desc }}</p>
14
- <div v-if="this.linkList" class="link">
15
- <template v-for="(link, index) in linkList">
16
- <a :key="index" :href="link.href"><a-icon :type="link.icon" />{{ link.title }}</a>
17
- </template>
18
- </div>
19
- </div>
20
- <slot v-if="this.$slots.extra" slot="extra" name="extra"></slot>
21
- </page-header>
22
- <div ref="page" :class="['page-content', layout, pageWidth]" >
23
- <slot></slot>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script>
29
- import PageHeader from '@/components/page/header/PageHeader'
30
- import { mapState, mapMutations } from 'vuex'
31
- import { getI18nKey } from '@/utils/routerUtil'
32
-
33
- export default {
34
- name: 'PageLayout',
35
- components: { PageHeader },
36
- // eslint-disable-next-line vue/require-prop-types
37
- props: ['desc', 'logo', 'title', 'avatar', 'linkList', 'extraImage'],
38
- data () {
39
- return {
40
- page: {},
41
- pageHeaderHeight: 0
42
- }
43
- },
44
- watch: {
45
- $route () {
46
- this.page = this.$route.meta.page
47
- }
48
- },
49
- updated () {
50
- if (!this._inactive) {
51
- this.updatePageHeight()
52
- }
53
- },
54
- activated () {
55
- this.updatePageHeight()
56
- },
57
- deactivated () {
58
- this.updatePageHeight(0)
59
- },
60
- mounted () {
61
- this.updatePageHeight()
62
- },
63
- created () {
64
- this.page = this.$route.meta.page
65
- },
66
- beforeDestroy () {
67
- this.updatePageHeight(0)
68
- },
69
- computed: {
70
- ...mapState('setting', ['layout', 'multiPage', 'pageMinHeight', 'pageWidth', 'customTitles']),
71
- pageTitle () {
72
- const pageTitle = this.page && this.page.title
73
- return this.customTitle || (pageTitle && this.$t(pageTitle)) || this.title || this.routeName
74
- },
75
- routeName () {
76
- const route = this.$route
77
- return this.$t(getI18nKey(route.matched[route.matched.length - 1].path))
78
- },
79
- breadcrumb () {
80
- const page = this.page
81
- const breadcrumb = page && page.breadcrumb
82
- if (breadcrumb) {
83
- const i18nBreadcrumb = []
84
- breadcrumb.forEach(item => {
85
- i18nBreadcrumb.push(this.$t(item))
86
- })
87
- return i18nBreadcrumb
88
- } else {
89
- return this.getRouteBreadcrumb()
90
- }
91
- },
92
- marginCorrect () {
93
- return this.multiPage ? 24 : 0
94
- }
95
- },
96
- methods: {
97
- ...mapMutations('setting', ['correctPageMinHeight']),
98
- getRouteBreadcrumb () {
99
- const routes = this.$route.matched
100
- const path = this.$route.path
101
- const breadcrumb = []
102
- routes.filter(item => path.includes(item.path))
103
- .forEach(route => {
104
- const path = route.path.length === 0 ? '/home' : route.path
105
- breadcrumb.push(this.$t(getI18nKey(path)))
106
- })
107
- const pageTitle = this.page && this.page.title
108
- if (this.customTitle || pageTitle) {
109
- breadcrumb[breadcrumb.length - 1] = this.customTitle || pageTitle
110
- }
111
- return breadcrumb
112
- },
113
- /**
114
- * 用于计算页面内容最小高度
115
- * @param newHeight
116
- */
117
- updatePageHeight (newHeight = this.$refs.pageHeader.$el.offsetHeight + this.marginCorrect) {
118
- this.correctPageMinHeight(this.pageHeaderHeight - newHeight)
119
- this.pageHeaderHeight = newHeight
120
- }
121
- }
122
- }
123
- </script>
124
-
125
- <style lang="less">
126
- .page-header{
127
- margin: 0 -24px 0;
128
- }
129
- .link{
130
- /*margin-top: 16px;*/
131
- line-height: 24px;
132
- a{
133
- font-size: 14px;
134
- margin-right: 32px;
135
- i{
136
- font-size: 22px;
137
- margin-right: 8px;
138
- }
139
- }
140
- }
141
- .page-content{
142
- position: relative;
143
- padding: 24px 0 0;
144
- &.side{
145
- }
146
- &.head.fixed{
147
- margin: 0 auto;
148
- max-width: 1400px;
149
- }
150
- }
151
- </style>
1
+ <template>
2
+ <div class="page-layout">
3
+ <page-header
4
+ ref="pageHeader"
5
+ :style="`margin-top: ${multiPage ? 0 : -24}px`"
6
+ :breadcrumb="breadcrumb"
7
+ :title="pageTitle"
8
+ :logo="logo"
9
+ :avatar="avatar">
10
+ <slot name="action" slot="action"></slot>
11
+ <slot slot="content" name="headerContent"></slot>
12
+ <div slot="content" v-if="!this.$slots.headerContent && desc">
13
+ <p>{{ desc }}</p>
14
+ <div v-if="this.linkList" class="link">
15
+ <template v-for="(link, index) in linkList">
16
+ <a :key="index" :href="link.href"><a-icon :type="link.icon" />{{ link.title }}</a>
17
+ </template>
18
+ </div>
19
+ </div>
20
+ <slot v-if="this.$slots.extra" slot="extra" name="extra"></slot>
21
+ </page-header>
22
+ <div ref="page" :class="['page-content', layout, pageWidth]" >
23
+ <slot></slot>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ import PageHeader from '@vue2-client/components/page/header/PageHeader'
30
+ import { mapState, mapMutations } from 'vuex'
31
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
32
+
33
+ export default {
34
+ name: 'PageLayout',
35
+ components: { PageHeader },
36
+ // eslint-disable-next-line vue/require-prop-types
37
+ props: ['desc', 'logo', 'title', 'avatar', 'linkList', 'extraImage'],
38
+ data () {
39
+ return {
40
+ page: {},
41
+ pageHeaderHeight: 0
42
+ }
43
+ },
44
+ watch: {
45
+ $route () {
46
+ this.page = this.$route.meta.page
47
+ }
48
+ },
49
+ updated () {
50
+ if (!this._inactive) {
51
+ this.updatePageHeight()
52
+ }
53
+ },
54
+ activated () {
55
+ this.updatePageHeight()
56
+ },
57
+ deactivated () {
58
+ this.updatePageHeight(0)
59
+ },
60
+ mounted () {
61
+ this.updatePageHeight()
62
+ },
63
+ created () {
64
+ this.page = this.$route.meta.page
65
+ },
66
+ beforeDestroy () {
67
+ this.updatePageHeight(0)
68
+ },
69
+ computed: {
70
+ ...mapState('setting', ['layout', 'multiPage', 'pageMinHeight', 'pageWidth', 'customTitles']),
71
+ pageTitle () {
72
+ const pageTitle = this.page && this.page.title
73
+ return this.customTitle || (pageTitle && this.$t(pageTitle)) || this.title || this.routeName
74
+ },
75
+ routeName () {
76
+ const route = this.$route
77
+ return this.$t(getI18nKey(route.matched[route.matched.length - 1].path))
78
+ },
79
+ breadcrumb () {
80
+ const page = this.page
81
+ const breadcrumb = page && page.breadcrumb
82
+ if (breadcrumb) {
83
+ const i18nBreadcrumb = []
84
+ breadcrumb.forEach(item => {
85
+ i18nBreadcrumb.push(this.$t(item))
86
+ })
87
+ return i18nBreadcrumb
88
+ } else {
89
+ return this.getRouteBreadcrumb()
90
+ }
91
+ },
92
+ marginCorrect () {
93
+ return this.multiPage ? 24 : 0
94
+ }
95
+ },
96
+ methods: {
97
+ ...mapMutations('setting', ['correctPageMinHeight']),
98
+ getRouteBreadcrumb () {
99
+ const routes = this.$route.matched
100
+ const path = this.$route.path
101
+ const breadcrumb = []
102
+ routes.filter(item => path.includes(item.path))
103
+ .forEach(route => {
104
+ const path = route.path.length === 0 ? '/home' : route.path
105
+ breadcrumb.push(this.$t(getI18nKey(path)))
106
+ })
107
+ const pageTitle = this.page && this.page.title
108
+ if (this.customTitle || pageTitle) {
109
+ breadcrumb[breadcrumb.length - 1] = this.customTitle || pageTitle
110
+ }
111
+ return breadcrumb
112
+ },
113
+ /**
114
+ * 用于计算页面内容最小高度
115
+ * @param newHeight
116
+ */
117
+ updatePageHeight (newHeight = this.$refs.pageHeader.$el.offsetHeight + this.marginCorrect) {
118
+ this.correctPageMinHeight(this.pageHeaderHeight - newHeight)
119
+ this.pageHeaderHeight = newHeight
120
+ }
121
+ }
122
+ }
123
+ </script>
124
+
125
+ <style lang="less">
126
+ .page-header{
127
+ margin: 0 -24px 0;
128
+ }
129
+ .link{
130
+ /*margin-top: 16px;*/
131
+ line-height: 24px;
132
+ a{
133
+ font-size: 14px;
134
+ margin-right: 32px;
135
+ i{
136
+ font-size: 22px;
137
+ margin-right: 8px;
138
+ }
139
+ }
140
+ }
141
+ .page-content{
142
+ position: relative;
143
+ padding: 24px 0 0;
144
+ &.side{
145
+ }
146
+ &.head.fixed{
147
+ margin: 0 auto;
148
+ max-width: 1400px;
149
+ }
150
+ }
151
+ </style>
@@ -1,74 +1,74 @@
1
- <template>
2
- <page-toggle-transition :disabled="animate.disabled" :animate="animate.name" :direction="animate.direction">
3
- <template v-if="login">
4
- <iframe
5
- id="singlepageview"
6
- @load="load"
7
- :src="url"
8
- frameborder="0"
9
- ref="singlepage">
10
- </iframe>
11
- </template>
12
- </page-toggle-transition>
13
- </template>
14
-
15
- <script>
16
- import PageToggleTransition from '../components/transition/PageToggleTransition'
17
- import { ACCESS_TOKEN } from '@/store/mutation-types'
18
- import { mapState, mapMutations } from 'vuex'
19
-
20
- export default {
21
- name: 'SinglePageView',
22
- components: { PageToggleTransition },
23
- props: {
24
- singlePageUrl: {
25
- type: Object,
26
- default: () => {
27
- return { url: '' }
28
- }
29
- }
30
- },
31
- data () {
32
- return {
33
- url: '../singlepage/page.html',
34
- // singlePageUrl: null,
35
- iframe: {}
36
- }
37
- },
38
- computed: {
39
- ...mapState('setting', ['multiPage', 'animate']),
40
- ...mapState('account', ['login'])
41
- },
42
- mounted () {
43
- if (!this.login) {
44
- this.setLogin(JSON.parse(sessionStorage.getItem(process.env.VUE_APP_LOGIN_KEY)))
45
- }
46
- },
47
- methods: {
48
- ...mapMutations('account', ['setLogin']),
49
- load () {
50
- this.iframe = this.$refs.singlepage.contentWindow
51
- const appdata = {
52
- singleValues: this.$appdata.getSingleValues(),
53
- params: this.$appdata.getParams()
54
- }
55
- const data = {
56
- token: localStorage.getItem(ACCESS_TOKEN),
57
- login: this.login,
58
- appdata: appdata,
59
- page: this.singlePageUrl.url
60
- }
61
- console.log('发送参数', data)
62
- this.iframe.postMessage(data, '*')
63
- }
64
- }
65
- }
66
- </script>
67
-
68
- <style lang="less">
69
- #singlepageview {
70
- width: 100%;
71
- height: calc(100vh - 117px);
72
- border: none;
73
- }
74
- </style>
1
+ <template>
2
+ <page-toggle-transition :disabled="animate.disabled" :animate="animate.name" :direction="animate.direction">
3
+ <template v-if="login">
4
+ <iframe
5
+ id="singlepageview"
6
+ @load="load"
7
+ :src="url"
8
+ frameborder="0"
9
+ ref="singlepage">
10
+ </iframe>
11
+ </template>
12
+ </page-toggle-transition>
13
+ </template>
14
+
15
+ <script>
16
+ import PageToggleTransition from '../components/transition/PageToggleTransition'
17
+ import { ACCESS_TOKEN } from '@vue2-client/store/mutation-types'
18
+ import { mapState, mapMutations } from 'vuex'
19
+
20
+ export default {
21
+ name: 'SinglePageView',
22
+ components: { PageToggleTransition },
23
+ props: {
24
+ singlePageUrl: {
25
+ type: Object,
26
+ default: () => {
27
+ return { url: '' }
28
+ }
29
+ }
30
+ },
31
+ data () {
32
+ return {
33
+ url: '../singlepage/page.html',
34
+ // singlePageUrl: null,
35
+ iframe: {}
36
+ }
37
+ },
38
+ computed: {
39
+ ...mapState('setting', ['multiPage', 'animate']),
40
+ ...mapState('account', ['login'])
41
+ },
42
+ mounted () {
43
+ if (!this.login) {
44
+ this.setLogin(JSON.parse(sessionStorage.getItem(process.env.VUE_APP_LOGIN_KEY)))
45
+ }
46
+ },
47
+ methods: {
48
+ ...mapMutations('account', ['setLogin']),
49
+ load () {
50
+ this.iframe = this.$refs.singlepage.contentWindow
51
+ const appdata = {
52
+ singleValues: this.$appdata.getSingleValues(),
53
+ params: this.$appdata.getParams()
54
+ }
55
+ const data = {
56
+ token: localStorage.getItem(ACCESS_TOKEN),
57
+ login: this.login,
58
+ appdata: appdata,
59
+ page: this.singlePageUrl.url
60
+ }
61
+ console.log('发送参数', data)
62
+ this.iframe.postMessage(data, '*')
63
+ }
64
+ }
65
+ }
66
+ </script>
67
+
68
+ <style lang="less">
69
+ #singlepageview {
70
+ width: 100%;
71
+ height: calc(100vh - 117px);
72
+ border: none;
73
+ }
74
+ </style>
@@ -1,109 +1,109 @@
1
- <template>
2
- <a-layout-header :class="[headerTheme, 'admin-header']">
3
- <div :class="['admin-header-wide', layout, pageWidth]">
4
- <router-link v-if="isMobile || layout === 'head'" to="/" :class="['logo', isMobile ? null : 'pc', headerTheme]">
5
- <img width="32" src="@/assets/img/logo.png" />
6
- <h1 v-if="!isMobile">{{ systemName }}</h1>
7
- </router-link>
8
- <a-divider v-if="isMobile" type="vertical" />
9
- <a-icon v-if="layout !== 'head'" class="trigger" :type="collapsed ? 'menu-unfold' : 'menu-fold'" @click="toggleCollapse"/>
10
- <div v-if="layout !== 'side' && !isMobile" class="admin-header-menu" :style="`width: ${menuWidth};`">
11
- <i-menu class="head-menu" :theme="headerTheme" mode="horizontal" :options="menuData" @select="onSelect"/>
12
- </div>
13
- <div :class="['admin-header-right', headerTheme]">
14
- <header-search class="header-item" @active="val => searchActive = val" />
15
- <a-tooltip class="header-item" title="清理查询缓存" placement="bottom" >
16
- <a @click="handleToClearCache">
17
- <a-icon type="reload" />
18
- </a>
19
- </a-tooltip>
20
- <a-tooltip class="header-item" title="帮助文档" placement="bottom" >
21
- <a href="https://iczer.gitee.io/vue-antd-admin-docs/" target="_blank">
22
- <a-icon type="question-circle-o" />
23
- </a>
24
- </a-tooltip>
25
- <header-notice class="header-item"/>
26
- <header-avatar class="header-item"/>
27
- <a-dropdown class="lang header-item">
28
- <div>
29
- <a-icon type="global"/> {{ langAlias }}
30
- </div>
31
- <a-menu @click="val => setLang(val.key)" :selected-keys="[lang]" slot="overlay">
32
- <a-menu-item v-for=" lang in langList" :key="lang.key">{{ lang.key.toLowerCase() + ' ' + lang.name }}</a-menu-item>
33
- </a-menu>
34
- </a-dropdown>
35
- </div>
36
- </div>
37
- </a-layout-header>
38
- </template>
39
-
40
- <script>
41
- import HeaderSearch from './HeaderSearch'
42
- import HeaderNotice from './HeaderNotice'
43
- import HeaderAvatar from './HeaderAvatar'
44
- import IMenu from '@/components/menu/menu'
45
- import { mapState, mapMutations } from 'vuex'
46
- import { Modal } from 'ant-design-vue'
47
- import { indexedDB } from '@/utils/indexedDB'
48
-
49
- export default {
50
- name: 'AdminHeader',
51
- components: { IMenu, HeaderAvatar, HeaderNotice, HeaderSearch },
52
- // eslint-disable-next-line vue/require-prop-types
53
- props: ['collapsed', 'menuData'],
54
- data () {
55
- return {
56
- langList: [
57
- { key: 'CN', name: '简体中文', alias: '简体' },
58
- { key: 'HK', name: '繁體中文', alias: '繁體' },
59
- { key: 'US', name: 'English', alias: 'English' }
60
- ],
61
- searchActive: false
62
- }
63
- },
64
- computed: {
65
- ...mapState('setting', ['theme', 'isMobile', 'layout', 'systemName', 'lang', 'pageWidth']),
66
- headerTheme () {
67
- if (this.layout == 'side' && this.theme.mode == 'dark' && !this.isMobile) {
68
- return 'light'
69
- }
70
- return this.theme.mode
71
- },
72
- langAlias () {
73
- const lang = this.langList.find(item => item.key == this.lang)
74
- return lang.alias
75
- },
76
- menuWidth () {
77
- const { layout, searchActive } = this
78
- const headWidth = layout === 'head' ? '100% - 188px' : '100%'
79
- const extraWidth = searchActive ? '600px' : '400px'
80
- return `calc(${headWidth} - ${extraWidth})`
81
- }
82
- },
83
- methods: {
84
- toggleCollapse () {
85
- this.$emit('toggleCollapse')
86
- },
87
- onSelect (obj) {
88
- this.$emit('menuSelect', obj)
89
- },
90
- handleToClearCache () {
91
- Modal.confirm({
92
- title: '信息',
93
- content: '您确定要清除查询配置缓存吗?',
94
- onOk: () => {
95
- indexedDB.clear(() => {
96
- location.reload()
97
- })
98
- },
99
- onCancel () {}
100
- })
101
- },
102
- ...mapMutations('setting', ['setLang'])
103
- }
104
- }
105
- </script>
106
-
107
- <style lang="less" scoped>
108
- @import "index";
109
- </style>
1
+ <template>
2
+ <a-layout-header :class="[headerTheme, 'admin-header']">
3
+ <div :class="['admin-header-wide', layout, pageWidth]">
4
+ <router-link v-if="isMobile || layout === 'head'" to="/" :class="['logo', isMobile ? null : 'pc', headerTheme]">
5
+ <img width="32" src="@/assets/img/logo.png" />
6
+ <h1 v-if="!isMobile">{{ systemName }}</h1>
7
+ </router-link>
8
+ <a-divider v-if="isMobile" type="vertical" />
9
+ <a-icon v-if="layout !== 'head'" class="trigger" :type="collapsed ? 'menu-unfold' : 'menu-fold'" @click="toggleCollapse"/>
10
+ <div v-if="layout !== 'side' && !isMobile" class="admin-header-menu" :style="`width: ${menuWidth};`">
11
+ <i-menu class="head-menu" :theme="headerTheme" mode="horizontal" :options="menuData" @select="onSelect"/>
12
+ </div>
13
+ <div :class="['admin-header-right', headerTheme]">
14
+ <header-search class="header-item" @active="val => searchActive = val" />
15
+ <a-tooltip class="header-item" title="清理查询缓存" placement="bottom" >
16
+ <a @click="handleToClearCache">
17
+ <a-icon type="reload" />
18
+ </a>
19
+ </a-tooltip>
20
+ <a-tooltip class="header-item" title="帮助文档" placement="bottom" >
21
+ <a href="https://iczer.gitee.io/vue-antd-admin-docs/" target="_blank">
22
+ <a-icon type="question-circle-o" />
23
+ </a>
24
+ </a-tooltip>
25
+ <header-notice class="header-item"/>
26
+ <header-avatar class="header-item"/>
27
+ <a-dropdown class="lang header-item">
28
+ <div>
29
+ <a-icon type="global"/> {{ langAlias }}
30
+ </div>
31
+ <a-menu @click="val => setLang(val.key)" :selected-keys="[lang]" slot="overlay">
32
+ <a-menu-item v-for=" lang in langList" :key="lang.key">{{ lang.key.toLowerCase() + ' ' + lang.name }}</a-menu-item>
33
+ </a-menu>
34
+ </a-dropdown>
35
+ </div>
36
+ </div>
37
+ </a-layout-header>
38
+ </template>
39
+
40
+ <script>
41
+ import HeaderSearch from './HeaderSearch'
42
+ import HeaderNotice from './HeaderNotice'
43
+ import HeaderAvatar from './HeaderAvatar'
44
+ import IMenu from '@vue2-client/components/menu/menu'
45
+ import { mapState, mapMutations } from 'vuex'
46
+ import { Modal } from 'ant-design-vue'
47
+ import { indexedDB } from '@vue2-client/utils/indexedDB'
48
+
49
+ export default {
50
+ name: 'AdminHeader',
51
+ components: { IMenu, HeaderAvatar, HeaderNotice, HeaderSearch },
52
+ // eslint-disable-next-line vue/require-prop-types
53
+ props: ['collapsed', 'menuData'],
54
+ data () {
55
+ return {
56
+ langList: [
57
+ { key: 'CN', name: '简体中文', alias: '简体' },
58
+ { key: 'HK', name: '繁體中文', alias: '繁體' },
59
+ { key: 'US', name: 'English', alias: 'English' }
60
+ ],
61
+ searchActive: false
62
+ }
63
+ },
64
+ computed: {
65
+ ...mapState('setting', ['theme', 'isMobile', 'layout', 'systemName', 'lang', 'pageWidth']),
66
+ headerTheme () {
67
+ if (this.layout == 'side' && this.theme.mode == 'dark' && !this.isMobile) {
68
+ return 'light'
69
+ }
70
+ return this.theme.mode
71
+ },
72
+ langAlias () {
73
+ const lang = this.langList.find(item => item.key == this.lang)
74
+ return lang.alias
75
+ },
76
+ menuWidth () {
77
+ const { layout, searchActive } = this
78
+ const headWidth = layout === 'head' ? '100% - 188px' : '100%'
79
+ const extraWidth = searchActive ? '600px' : '400px'
80
+ return `calc(${headWidth} - ${extraWidth})`
81
+ }
82
+ },
83
+ methods: {
84
+ toggleCollapse () {
85
+ this.$emit('toggleCollapse')
86
+ },
87
+ onSelect (obj) {
88
+ this.$emit('menuSelect', obj)
89
+ },
90
+ handleToClearCache () {
91
+ Modal.confirm({
92
+ title: '信息',
93
+ content: '您确定要清除查询配置缓存吗?',
94
+ onOk: () => {
95
+ indexedDB.clear(() => {
96
+ location.reload()
97
+ })
98
+ },
99
+ onCancel () {}
100
+ })
101
+ },
102
+ ...mapMutations('setting', ['setLang'])
103
+ }
104
+ }
105
+ </script>
106
+
107
+ <style lang="less" scoped>
108
+ @import "index";
109
+ </style>