vue2-client 1.4.11 → 1.4.13

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 (96) hide show
  1. package/CHANGELOG.md +366 -362
  2. package/index.js +30 -30
  3. package/package.json +78 -78
  4. package/src/App.vue +4 -2
  5. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  6. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  7. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  8. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  9. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  10. package/src/base-client/components/common/XAddForm/XAddForm.vue +354 -354
  11. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +327 -327
  12. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  13. package/src/base-client/components/common/XForm/XForm.vue +274 -274
  14. package/src/base-client/components/common/XForm/XFormItem.vue +389 -389
  15. package/src/base-client/components/common/XFormTable/index.md +96 -96
  16. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  17. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  18. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  19. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  20. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  21. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  22. package/src/base-client/plugins/AppData.js +69 -69
  23. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  24. package/src/base-client/plugins/PagedList.js +177 -177
  25. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  26. package/src/base-client/plugins/i18n-extend.js +32 -32
  27. package/src/components/Ellipsis/index.md +38 -38
  28. package/src/components/NumberInfo/index.md +43 -43
  29. package/src/components/STable/README.md +341 -341
  30. package/src/components/STable/index.js +318 -318
  31. package/src/components/Trend/index.md +45 -45
  32. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  33. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  34. package/src/components/exception/ExceptionPage.vue +2 -2
  35. package/src/components/form/FormRow.vue +52 -52
  36. package/src/components/index.js +36 -36
  37. package/src/components/menu/SideMenu.vue +62 -62
  38. package/src/components/menu/menu.js +273 -273
  39. package/src/components/setting/Setting.vue +235 -235
  40. package/src/components/table/StandardTable.vue +141 -141
  41. package/src/components/table/advance/ActionColumns.vue +158 -158
  42. package/src/components/table/advance/SearchArea.vue +355 -355
  43. package/src/components/tool/AStepItem.vue +60 -60
  44. package/src/components/tool/AvatarList.vue +68 -68
  45. package/src/components/tool/Drawer.vue +142 -142
  46. package/src/components/tool/TagSelect.vue +83 -83
  47. package/src/components/transition/PageToggleTransition.vue +97 -97
  48. package/src/config/default/setting.config.js +1 -1
  49. package/src/config/replacer/resolve.config.js +67 -67
  50. package/src/layouts/AdminLayout.vue +174 -174
  51. package/src/layouts/header/AdminHeader.vue +104 -104
  52. package/src/layouts/header/HeaderNotice.vue +167 -167
  53. package/src/layouts/header/HeaderSearch.vue +67 -67
  54. package/src/layouts/header/InstitutionDetail.vue +181 -181
  55. package/src/layouts/tabs/TabsHead.vue +190 -190
  56. package/src/layouts/tabs/TabsView.vue +379 -379
  57. package/src/mock/goods/index.js +108 -108
  58. package/src/pages/CreateQueryPage.vue +65 -65
  59. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -0
  60. package/src/pages/dashboard/workplace/i18n.js +40 -0
  61. package/src/pages/dashboard/workplace/index.js +2 -0
  62. package/src/pages/dashboard/workplace/index.less +59 -0
  63. package/src/pages/login/Login.vue +27 -41
  64. package/src/pages/report/ReportTable.js +124 -124
  65. package/src/pages/report/ReportTableHome.vue +28 -28
  66. package/src/pages/resourceManage/orgListManage.vue +98 -98
  67. package/src/pages/system/dictionary/index.vue +43 -43
  68. package/src/pages/system/file/index.vue +317 -317
  69. package/src/pages/system/queryParams/index.vue +43 -43
  70. package/src/router/async/config.async.js +27 -27
  71. package/src/router/async/router.map.js +5 -0
  72. package/src/router/index.js +27 -27
  73. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  74. package/src/services/api/LogDetailsViewApi.js +10 -10
  75. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  76. package/src/services/api/TicketDetailsViewApi.js +34 -34
  77. package/src/services/api/commonTempTable.js +10 -10
  78. package/src/services/api/index.js +17 -17
  79. package/src/services/api/manage.js +8 -8
  80. package/src/services/apiService.js +1 -0
  81. package/src/services/user.js +13 -5
  82. package/src/store/modules/index.js +4 -4
  83. package/src/store/mutation-types.js +1 -0
  84. package/src/theme/default/nprogress.less +76 -76
  85. package/src/theme/default/style.less +47 -47
  86. package/src/utils/colors.js +103 -103
  87. package/src/utils/excel/Blob.js +180 -180
  88. package/src/utils/excel/Export2Excel.js +141 -141
  89. package/src/utils/formatter.js +68 -68
  90. package/src/utils/i18n.js +80 -80
  91. package/src/utils/request.js +109 -33
  92. package/src/utils/routerUtil.js +364 -364
  93. package/src/utils/theme-color-replacer-extend.js +91 -91
  94. package/src/utils/themeUtil.js +100 -100
  95. package/src/utils/util.js +230 -230
  96. package/vue.config.js +7 -0
@@ -1,163 +1,163 @@
1
- <template>
2
- <a-tooltip :title="title" :overlayStyle="{zIndex: 2001}">
3
- <div class="img-check-box" @click="toggle">
4
- <img :src="img" alt=""/>
5
- <div v-if="sChecked" class="check-item">
6
- <a-icon type="check" />
7
- </div>
8
- </div>
9
- </a-tooltip>
10
- </template>
11
-
12
- <script>
13
- const Group = {
14
- name: 'ImgCheckboxGroup',
15
- props: {
16
- multiple: {
17
- type: Boolean,
18
- required: false,
19
- default: false
20
- },
21
- defaultValues: {
22
- type: Array,
23
- required: false,
24
- default: () => []
25
- }
26
- },
27
- data () {
28
- return {
29
- values: [],
30
- options: []
31
- }
32
- },
33
- provide () {
34
- return {
35
- groupContext: this
36
- }
37
- },
38
- watch: {
39
- 'values': function (value) {
40
- this.$emit('change', value)
41
- // // 此条件是为解决单选时,触发两次chang事件问题
42
- // if (!(newVal.length === 1 && oldVal.length === 1 && newVal[0] === oldVal[0])) {
43
- // this.$emit('change', this.values)
44
- // }
45
- }
46
- },
47
- methods: {
48
- handleChange (option) {
49
- if (!option.checked) {
50
- if (this.values.indexOf(option.value) > -1) {
51
- this.values = this.values.filter(item => item !== option.value)
52
- }
53
- } else {
54
- if (!this.multiple) {
55
- this.values = [option.value]
56
- this.options.forEach(item => {
57
- if (item.value !== option.value) {
58
- item.sChecked = false
59
- }
60
- })
61
- } else {
62
- this.values.push(option.value)
63
- }
64
- }
65
- }
66
- },
67
- render (h) {
68
- return h(
69
- 'div',
70
- {
71
- attrs: { style: 'display: flex' }
72
- },
73
- [this.$slots.default]
74
- )
75
- }
76
- }
77
-
78
- export default {
79
- name: 'ImgCheckbox',
80
- Group,
81
- props: {
82
- checked: {
83
- type: Boolean,
84
- required: false,
85
- default: false
86
- },
87
- img: {
88
- type: String,
89
- required: true
90
- },
91
- // eslint-disable-next-line vue/require-prop-types
92
- value: {
93
- required: true
94
- },
95
- // eslint-disable-next-line vue/require-default-prop
96
- title: String
97
- },
98
- data () {
99
- return {
100
- sChecked: this.initChecked()
101
- }
102
- },
103
- inject: ['groupContext'],
104
- watch: {
105
- 'sChecked': function () {
106
- const option = {
107
- value: this.value,
108
- checked: this.sChecked
109
- }
110
- this.$emit('change', option)
111
- const groupContext = this.groupContext
112
- if (groupContext) {
113
- groupContext.handleChange(option)
114
- }
115
- }
116
- },
117
- created () {
118
- const groupContext = this.groupContext
119
- if (groupContext) {
120
- this.sChecked = groupContext.defaultValues.length > 0 ? groupContext.defaultValues.indexOf(this.value) >= 0 : this.sChecked
121
- groupContext.options.push(this)
122
- }
123
- },
124
- methods: {
125
- toggle () {
126
- if (this.groupContext.multiple || !this.sChecked) {
127
- this.sChecked = !this.sChecked
128
- }
129
- },
130
- initChecked () {
131
- const groupContext = this.groupContext
132
- if (!groupContext) {
133
- return this.checked
134
- } else if (groupContext.multiple) {
135
- return groupContext.defaultValues.indexOf(this.value) > -1
136
- } else {
137
- return groupContext.defaultValues[0] === this.value
138
- }
139
- }
140
- }
141
- }
142
- </script>
143
-
144
- <style lang="less" scoped>
145
- .img-check-box{
146
- margin-right: 16px;
147
- position: relative;
148
- border-radius: 4px;
149
- cursor: pointer;
150
- .check-item{
151
- position: absolute;
152
- top: 0;
153
- right: 0;
154
- width: 100%;
155
- padding-top: 15px;
156
- padding-left: 24px;
157
- height: 100%;
158
- color: @primary-color;
159
- font-size: 14px;
160
- font-weight: bold;
161
- }
162
- }
163
- </style>
1
+ <template>
2
+ <a-tooltip :title="title" :overlayStyle="{zIndex: 2001}">
3
+ <div class="img-check-box" @click="toggle">
4
+ <img :src="img" alt=""/>
5
+ <div v-if="sChecked" class="check-item">
6
+ <a-icon type="check" />
7
+ </div>
8
+ </div>
9
+ </a-tooltip>
10
+ </template>
11
+
12
+ <script>
13
+ const Group = {
14
+ name: 'ImgCheckboxGroup',
15
+ props: {
16
+ multiple: {
17
+ type: Boolean,
18
+ required: false,
19
+ default: false
20
+ },
21
+ defaultValues: {
22
+ type: Array,
23
+ required: false,
24
+ default: () => []
25
+ }
26
+ },
27
+ data () {
28
+ return {
29
+ values: [],
30
+ options: []
31
+ }
32
+ },
33
+ provide () {
34
+ return {
35
+ groupContext: this
36
+ }
37
+ },
38
+ watch: {
39
+ 'values': function (value) {
40
+ this.$emit('change', value)
41
+ // // 此条件是为解决单选时,触发两次chang事件问题
42
+ // if (!(newVal.length === 1 && oldVal.length === 1 && newVal[0] === oldVal[0])) {
43
+ // this.$emit('change', this.values)
44
+ // }
45
+ }
46
+ },
47
+ methods: {
48
+ handleChange (option) {
49
+ if (!option.checked) {
50
+ if (this.values.indexOf(option.value) > -1) {
51
+ this.values = this.values.filter(item => item !== option.value)
52
+ }
53
+ } else {
54
+ if (!this.multiple) {
55
+ this.values = [option.value]
56
+ this.options.forEach(item => {
57
+ if (item.value !== option.value) {
58
+ item.sChecked = false
59
+ }
60
+ })
61
+ } else {
62
+ this.values.push(option.value)
63
+ }
64
+ }
65
+ }
66
+ },
67
+ render (h) {
68
+ return h(
69
+ 'div',
70
+ {
71
+ attrs: { style: 'display: flex' }
72
+ },
73
+ [this.$slots.default]
74
+ )
75
+ }
76
+ }
77
+
78
+ export default {
79
+ name: 'ImgCheckbox',
80
+ Group,
81
+ props: {
82
+ checked: {
83
+ type: Boolean,
84
+ required: false,
85
+ default: false
86
+ },
87
+ img: {
88
+ type: String,
89
+ required: true
90
+ },
91
+ // eslint-disable-next-line vue/require-prop-types
92
+ value: {
93
+ required: true
94
+ },
95
+ // eslint-disable-next-line vue/require-default-prop
96
+ title: String
97
+ },
98
+ data () {
99
+ return {
100
+ sChecked: this.initChecked()
101
+ }
102
+ },
103
+ inject: ['groupContext'],
104
+ watch: {
105
+ 'sChecked': function () {
106
+ const option = {
107
+ value: this.value,
108
+ checked: this.sChecked
109
+ }
110
+ this.$emit('change', option)
111
+ const groupContext = this.groupContext
112
+ if (groupContext) {
113
+ groupContext.handleChange(option)
114
+ }
115
+ }
116
+ },
117
+ created () {
118
+ const groupContext = this.groupContext
119
+ if (groupContext) {
120
+ this.sChecked = groupContext.defaultValues.length > 0 ? groupContext.defaultValues.indexOf(this.value) >= 0 : this.sChecked
121
+ groupContext.options.push(this)
122
+ }
123
+ },
124
+ methods: {
125
+ toggle () {
126
+ if (this.groupContext.multiple || !this.sChecked) {
127
+ this.sChecked = !this.sChecked
128
+ }
129
+ },
130
+ initChecked () {
131
+ const groupContext = this.groupContext
132
+ if (!groupContext) {
133
+ return this.checked
134
+ } else if (groupContext.multiple) {
135
+ return groupContext.defaultValues.indexOf(this.value) > -1
136
+ } else {
137
+ return groupContext.defaultValues[0] === this.value
138
+ }
139
+ }
140
+ }
141
+ }
142
+ </script>
143
+
144
+ <style lang="less" scoped>
145
+ .img-check-box{
146
+ margin-right: 16px;
147
+ position: relative;
148
+ border-radius: 4px;
149
+ cursor: pointer;
150
+ .check-item{
151
+ position: absolute;
152
+ top: 0;
153
+ right: 0;
154
+ width: 100%;
155
+ padding-top: 15px;
156
+ padding-left: 24px;
157
+ height: 100%;
158
+ color: @primary-color;
159
+ font-size: 14px;
160
+ font-weight: bold;
161
+ }
162
+ }
163
+ </style>
@@ -7,7 +7,7 @@
7
7
  <h1>{{ config[type].title }}</h1>
8
8
  <div class="desc">{{ config[type].desc }}</div>
9
9
  <div class="action">
10
- <!--<a-button type="primary" @click="backHome">返回首页</a-button>-->
10
+ <a-button type="primary" @click="backHome">返回登录页</a-button>
11
11
  </div>
12
12
  </div>
13
13
  </div>
@@ -28,7 +28,7 @@ export default {
28
28
  methods: {
29
29
  backHome () {
30
30
  if (this.homeRoute) {
31
- this.$router.push(this.homeRoute)
31
+ this.$router.push('/login')
32
32
  }
33
33
  this.$emit('backHome', this.type)
34
34
  }
@@ -1,52 +1,52 @@
1
- <template>
2
- <div class="form-row">
3
- <div class="label">
4
- <span>{{ label }}</span>
5
- </div>
6
- <div class="content">
7
- <slot></slot>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- export default {
14
- name: 'FormRow',
15
- // eslint-disable-next-line vue/require-prop-types
16
- props: ['label']
17
- }
18
- </script>
19
-
20
- <style lang="less" scoped>
21
- .form-row{
22
- display: flex;
23
- border-bottom: 1px dashed @border-color-base;
24
- margin-bottom: 16px;
25
- .label {
26
- color: @title-color;
27
- font-size: 14px;
28
- margin-right: 24px;
29
- flex: 0 0 auto;
30
- text-align: right;
31
- & > span {
32
- display: inline-block;
33
- height: 39px;
34
- line-height: 39px;
35
- &:after {
36
- content: ':';
37
- }
38
- }
39
- }
40
- .content {
41
- flex: 1 1 0;
42
- :global {
43
- .ant-form-item:last-child {
44
- margin-right: 0;
45
- }
46
- .ant-form-item {
47
- margin-bottom: 0;
48
- }
49
- }
50
- }
51
- }
52
- </style>
1
+ <template>
2
+ <div class="form-row">
3
+ <div class="label">
4
+ <span>{{ label }}</span>
5
+ </div>
6
+ <div class="content">
7
+ <slot></slot>
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ export default {
14
+ name: 'FormRow',
15
+ // eslint-disable-next-line vue/require-prop-types
16
+ props: ['label']
17
+ }
18
+ </script>
19
+
20
+ <style lang="less" scoped>
21
+ .form-row{
22
+ display: flex;
23
+ border-bottom: 1px dashed @border-color-base;
24
+ margin-bottom: 16px;
25
+ .label {
26
+ color: @title-color;
27
+ font-size: 14px;
28
+ margin-right: 24px;
29
+ flex: 0 0 auto;
30
+ text-align: right;
31
+ & > span {
32
+ display: inline-block;
33
+ height: 39px;
34
+ line-height: 39px;
35
+ &:after {
36
+ content: ':';
37
+ }
38
+ }
39
+ }
40
+ .content {
41
+ flex: 1 1 0;
42
+ :global {
43
+ .ant-form-item:last-child {
44
+ margin-right: 0;
45
+ }
46
+ .ant-form-item {
47
+ margin-bottom: 0;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ </style>
@@ -1,36 +1,36 @@
1
- // chart
2
- import Bar from '@vue2-client/components/Charts/Bar'
3
- import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
- import Liquid from '@vue2-client/components/Charts/Liquid'
5
- import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
- import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
- import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
- import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
- import Radar from '@vue2-client/components/Charts/Radar'
10
- import RankList from '@vue2-client/components/Charts/RankList'
11
- import TagCloud from '@vue2-client/components/Charts/TagCloud'
12
- import TransferBar from '@vue2-client/components/Charts/TransferBar'
13
- import Trend from '@vue2-client/components/Trend'
14
-
15
- // pro components
16
- import Ellipsis from '@vue2-client/components/Ellipsis'
17
- import NumberInfo from '@vue2-client/components/NumberInfo'
18
- import STable from '@vue2-client/components/STable'
19
-
20
- export {
21
- Bar,
22
- ChartCard,
23
- Liquid,
24
- MiniArea,
25
- MiniSmoothArea,
26
- MiniBar,
27
- MiniProgress,
28
- Radar,
29
- TagCloud,
30
- RankList,
31
- TransferBar,
32
- Ellipsis,
33
- NumberInfo,
34
- STable,
35
- Trend
36
- }
1
+ // chart
2
+ import Bar from '@vue2-client/components/Charts/Bar'
3
+ import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
+ import Liquid from '@vue2-client/components/Charts/Liquid'
5
+ import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
+ import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
+ import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
+ import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
+ import Radar from '@vue2-client/components/Charts/Radar'
10
+ import RankList from '@vue2-client/components/Charts/RankList'
11
+ import TagCloud from '@vue2-client/components/Charts/TagCloud'
12
+ import TransferBar from '@vue2-client/components/Charts/TransferBar'
13
+ import Trend from '@vue2-client/components/Trend'
14
+
15
+ // pro components
16
+ import Ellipsis from '@vue2-client/components/Ellipsis'
17
+ import NumberInfo from '@vue2-client/components/NumberInfo'
18
+ import STable from '@vue2-client/components/STable'
19
+
20
+ export {
21
+ Bar,
22
+ ChartCard,
23
+ Liquid,
24
+ MiniArea,
25
+ MiniSmoothArea,
26
+ MiniBar,
27
+ MiniProgress,
28
+ Radar,
29
+ TagCloud,
30
+ RankList,
31
+ TransferBar,
32
+ Ellipsis,
33
+ NumberInfo,
34
+ STable,
35
+ Trend
36
+ }
@@ -1,62 +1,62 @@
1
- <template>
2
- <a-layout-sider
3
- :theme="sideTheme"
4
- :class="['side-menu', 'beauty-scroll', isMobile ? null : 'shadow']"
5
- width="256px"
6
- :collapsible="collapsible"
7
- v-model="collapsed"
8
- :trigger="null">
9
- <div :class="['logo', theme]">
10
- <router-link to="/dashboard/workplace">
11
- <img :src="logoSrc" alt="logo">
12
- <h1 :style="{ fontWeight: 'bold', fontSize: systemNameFontSize }">{{ systemName }}</h1>
13
- </router-link>
14
- </div>
15
- <i-menu :theme="theme" :collapsed="collapsed" :options="menuData" @select="onSelect" class="menu"/>
16
- </a-layout-sider>
17
- </template>
18
-
19
- <script>
20
- import IMenu from './menu'
21
- import { mapState } from 'vuex'
22
- export default {
23
- name: 'SideMenu',
24
- components: { IMenu },
25
- props: {
26
- collapsible: {
27
- type: Boolean,
28
- required: false,
29
- default: false
30
- },
31
- collapsed: {
32
- type: Boolean,
33
- required: false,
34
- default: false
35
- },
36
- menuData: {
37
- type: Array,
38
- required: true
39
- },
40
- theme: {
41
- type: String,
42
- required: false,
43
- default: 'dark'
44
- }
45
- },
46
- computed: {
47
- sideTheme () {
48
- return this.theme === 'light' ? this.theme : 'dark'
49
- },
50
- ...mapState('setting', ['isMobile', 'systemName', 'logoSrc', 'systemNameFontSize'])
51
- },
52
- methods: {
53
- onSelect (obj) {
54
- this.$emit('menuSelect', obj)
55
- }
56
- }
57
- }
58
- </script>
59
-
60
- <style lang="less" scoped>
61
- @import "index";
62
- </style>
1
+ <template>
2
+ <a-layout-sider
3
+ :theme="sideTheme"
4
+ :class="['side-menu', 'beauty-scroll', isMobile ? null : 'shadow']"
5
+ width="256px"
6
+ :collapsible="collapsible"
7
+ v-model="collapsed"
8
+ :trigger="null">
9
+ <div :class="['logo', theme]">
10
+ <router-link to="/dashboard/workplace">
11
+ <img :src="logoSrc" alt="logo">
12
+ <h1 :style="{ fontWeight: 'bold', fontSize: systemNameFontSize }">{{ systemName }}</h1>
13
+ </router-link>
14
+ </div>
15
+ <i-menu :theme="theme" :collapsed="collapsed" :options="menuData" @select="onSelect" class="menu"/>
16
+ </a-layout-sider>
17
+ </template>
18
+
19
+ <script>
20
+ import IMenu from './menu'
21
+ import { mapState } from 'vuex'
22
+ export default {
23
+ name: 'SideMenu',
24
+ components: { IMenu },
25
+ props: {
26
+ collapsible: {
27
+ type: Boolean,
28
+ required: false,
29
+ default: false
30
+ },
31
+ collapsed: {
32
+ type: Boolean,
33
+ required: false,
34
+ default: false
35
+ },
36
+ menuData: {
37
+ type: Array,
38
+ required: true
39
+ },
40
+ theme: {
41
+ type: String,
42
+ required: false,
43
+ default: 'dark'
44
+ }
45
+ },
46
+ computed: {
47
+ sideTheme () {
48
+ return this.theme === 'light' ? this.theme : 'dark'
49
+ },
50
+ ...mapState('setting', ['isMobile', 'systemName', 'logoSrc', 'systemNameFontSize'])
51
+ },
52
+ methods: {
53
+ onSelect (obj) {
54
+ this.$emit('menuSelect', obj)
55
+ }
56
+ }
57
+ }
58
+ </script>
59
+
60
+ <style lang="less" scoped>
61
+ @import "index";
62
+ </style>