vue2-client 1.18.15 → 1.18.17

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/.env +1 -1
  2. package/.eslintrc.js +90 -90
  3. package/Components.md +60 -60
  4. package/docs/index.md +30 -30
  5. package/index.js +31 -31
  6. package/jest-transform-stub.js +8 -8
  7. package/jest.setup.js +7 -7
  8. package/package.json +1 -1
  9. package/public/index.html +1 -1
  10. package/src/assets/img/querySlotDemo.svg +15 -15
  11. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  12. package/src/base-client/components/common/CitySelect/index.js +3 -3
  13. package/src/base-client/components/common/CitySelect/index.md +109 -109
  14. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  15. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  16. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  17. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  18. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  19. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  20. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  21. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  22. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  23. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  24. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  25. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  26. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  27. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  28. package/src/base-client/components/common/Tree/index.js +2 -2
  29. package/src/base-client/components/common/Upload/index.js +3 -3
  30. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  31. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  32. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  33. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  34. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  35. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  36. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  37. package/src/base-client/components/common/XForm/index.md +178 -178
  38. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  39. package/src/base-client/components/common/XStepView/index.js +3 -3
  40. package/src/base-client/components/common/XStepView/index.md +31 -31
  41. package/src/base-client/components/common/XTable/index.md +255 -255
  42. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  43. package/src/base-client/plugins/Config.js +19 -19
  44. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  45. package/src/components/Charts/Bar.vue +62 -62
  46. package/src/components/Charts/ChartCard.vue +134 -134
  47. package/src/components/Charts/Liquid.vue +67 -67
  48. package/src/components/Charts/MiniArea.vue +39 -39
  49. package/src/components/Charts/MiniBar.vue +39 -39
  50. package/src/components/Charts/MiniProgress.vue +75 -75
  51. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  52. package/src/components/Charts/Radar.vue +68 -68
  53. package/src/components/Charts/RankList.vue +77 -77
  54. package/src/components/Charts/TagCloud.vue +113 -113
  55. package/src/components/Charts/TransferBar.vue +64 -64
  56. package/src/components/Charts/Trend.vue +82 -82
  57. package/src/components/Charts/chart.less +12 -12
  58. package/src/components/Charts/smooth.area.less +13 -13
  59. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  60. package/src/components/NumberInfo/index.js +3 -3
  61. package/src/components/NumberInfo/index.less +54 -54
  62. package/src/components/NumberInfo/index.md +43 -43
  63. package/src/components/card/ChartCard.vue +79 -79
  64. package/src/components/chart/Bar.vue +60 -60
  65. package/src/components/chart/MiniArea.vue +67 -67
  66. package/src/components/chart/MiniBar.vue +59 -59
  67. package/src/components/chart/MiniProgress.vue +57 -57
  68. package/src/components/chart/Radar.vue +80 -80
  69. package/src/components/chart/RankingList.vue +60 -60
  70. package/src/components/chart/Trend.vue +79 -79
  71. package/src/components/chart/index.less +9 -9
  72. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  73. package/src/components/index.js +3 -1
  74. package/src/components/input/IInput.vue +66 -66
  75. package/src/components/menu/SideMenu.vue +75 -75
  76. package/src/components/menu/menu.js +273 -273
  77. package/src/components/tool/AStepItem.vue +60 -60
  78. package/src/components/xScrollBox/example.vue +70 -0
  79. package/src/components/xScrollBox/index.vue +50 -0
  80. package/src/layouts/BlankView.vue +1 -1
  81. package/src/layouts/CommonLayout.vue +56 -56
  82. package/src/layouts/header/HeaderNotice.vue +177 -177
  83. package/src/lib.js +1 -1
  84. package/src/main.js +2 -0
  85. package/src/mock/extend/index.js +84 -84
  86. package/src/mock/goods/index.js +108 -108
  87. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  88. package/src/pages/system/dictionary/index.vue +44 -44
  89. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  90. package/src/pages/system/monitor/operLog/index.vue +37 -37
  91. package/src/router/async/router.map.js +2 -1
  92. package/src/services/api/cas.js +79 -79
  93. package/src/store/modules/setting.js +119 -119
  94. package/src/utils/authority-utils.js +85 -85
  95. package/src/utils/errorCode.js +6 -6
  96. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,44 +1,44 @@
1
- <template>
2
- <a-card :bordered="false">
3
- <dictionary-details-view
4
- v-if="selectId"
5
- :id="selectId"
6
- :visible.sync="detailVisible"
7
- />
8
- <x-form-table
9
- serviceName="af-system"
10
- :queryParamsName="queryParamsName"
11
- title="字典"
12
- @action="toDetail">
13
- </x-form-table>
14
- </a-card>
15
- </template>
16
-
17
- <script>
18
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
19
- import DictionaryDetailsView from '@vue2-client/base-client/components/system/DictionaryDetailsView'
20
-
21
- export default {
22
- name: 'Dictionary',
23
- components: {
24
- XFormTable,
25
- DictionaryDetailsView
26
- },
27
- data () {
28
- return {
29
- // 选中的编号
30
- selectId: undefined,
31
- // 查询配置文件名
32
- queryParamsName: 'crud_dictionary_manage',
33
- // 是否显示详情抽屉
34
- detailVisible: false
35
- }
36
- },
37
- methods: {
38
- toDetail (record, id) {
39
- this.selectId = id + ''
40
- this.detailVisible = true
41
- }
42
- }
43
- }
44
- </script>
1
+ <template>
2
+ <a-card :bordered="false">
3
+ <dictionary-details-view
4
+ v-if="selectId"
5
+ :id="selectId"
6
+ :visible.sync="detailVisible"
7
+ />
8
+ <x-form-table
9
+ serviceName="af-system"
10
+ :queryParamsName="queryParamsName"
11
+ title="字典"
12
+ @action="toDetail">
13
+ </x-form-table>
14
+ </a-card>
15
+ </template>
16
+
17
+ <script>
18
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
19
+ import DictionaryDetailsView from '@vue2-client/base-client/components/system/DictionaryDetailsView'
20
+
21
+ export default {
22
+ name: 'Dictionary',
23
+ components: {
24
+ XFormTable,
25
+ DictionaryDetailsView
26
+ },
27
+ data () {
28
+ return {
29
+ // 选中的编号
30
+ selectId: undefined,
31
+ // 查询配置文件名
32
+ queryParamsName: 'crud_dictionary_manage',
33
+ // 是否显示详情抽屉
34
+ detailVisible: false
35
+ }
36
+ },
37
+ methods: {
38
+ toDetail (record, id) {
39
+ this.selectId = id + ''
40
+ this.detailVisible = true
41
+ }
42
+ }
43
+ }
44
+ </script>
@@ -1,37 +1,37 @@
1
- <template>
2
- <a-card :bordered="false">
3
- <x-form-table
4
- title="登录日志"
5
- serviceName="af-system"
6
- :queryParamsName="queryParamsName"
7
- @action="toDetail">
8
- </x-form-table>
9
- </a-card>
10
- </template>
11
-
12
- <script>
13
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
14
-
15
- export default {
16
- name: 'LoginInfor',
17
- components: {
18
- XFormTable
19
- },
20
- data () {
21
- return {
22
- // 选中的编号
23
- selectNo: undefined,
24
- // 查询配置文件名
25
- queryParamsName: 'crud_login_infor_manage',
26
- // 是否显示详情抽屉
27
- detailVisible: false
28
- }
29
- },
30
- methods: {
31
- toDetail (record, id) {
32
- this.selectNo = id + ''
33
- this.detailVisible = true
34
- }
35
- }
36
- }
37
- </script>
1
+ <template>
2
+ <a-card :bordered="false">
3
+ <x-form-table
4
+ title="登录日志"
5
+ serviceName="af-system"
6
+ :queryParamsName="queryParamsName"
7
+ @action="toDetail">
8
+ </x-form-table>
9
+ </a-card>
10
+ </template>
11
+
12
+ <script>
13
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
14
+
15
+ export default {
16
+ name: 'LoginInfor',
17
+ components: {
18
+ XFormTable
19
+ },
20
+ data () {
21
+ return {
22
+ // 选中的编号
23
+ selectNo: undefined,
24
+ // 查询配置文件名
25
+ queryParamsName: 'crud_login_infor_manage',
26
+ // 是否显示详情抽屉
27
+ detailVisible: false
28
+ }
29
+ },
30
+ methods: {
31
+ toDetail (record, id) {
32
+ this.selectNo = id + ''
33
+ this.detailVisible = true
34
+ }
35
+ }
36
+ }
37
+ </script>
@@ -1,37 +1,37 @@
1
- <template>
2
- <a-card :bordered="false">
3
- <x-form-table
4
- title="操作日志"
5
- :queryParamsName="queryParamsName"
6
- serviceName="af-system"
7
- @action="toDetail">
8
- </x-form-table>
9
- </a-card>
10
- </template>
11
-
12
- <script>
13
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
14
-
15
- export default {
16
- name: 'OperLog',
17
- components: {
18
- XFormTable
19
- },
20
- data () {
21
- return {
22
- // 选中的编号
23
- selectNo: undefined,
24
- // 查询配置文件名
25
- queryParamsName: 'crud_oper_log_manage',
26
- // 是否显示详情抽屉
27
- detailVisible: false
28
- }
29
- },
30
- methods: {
31
- toDetail (record, id) {
32
- this.selectNo = id + ''
33
- this.detailVisible = true
34
- }
35
- }
36
- }
37
- </script>
1
+ <template>
2
+ <a-card :bordered="false">
3
+ <x-form-table
4
+ title="操作日志"
5
+ :queryParamsName="queryParamsName"
6
+ serviceName="af-system"
7
+ @action="toDetail">
8
+ </x-form-table>
9
+ </a-card>
10
+ </template>
11
+
12
+ <script>
13
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
14
+
15
+ export default {
16
+ name: 'OperLog',
17
+ components: {
18
+ XFormTable
19
+ },
20
+ data () {
21
+ return {
22
+ // 选中的编号
23
+ selectNo: undefined,
24
+ // 查询配置文件名
25
+ queryParamsName: 'crud_oper_log_manage',
26
+ // 是否显示详情抽屉
27
+ detailVisible: false
28
+ }
29
+ },
30
+ methods: {
31
+ toDetail (record, id) {
32
+ this.selectNo = id + ''
33
+ this.detailVisible = true
34
+ }
35
+ }
36
+ }
37
+ </script>
@@ -55,7 +55,8 @@ path: 'example',
55
55
  name: '示例主页面',
56
56
  // component: () => import('@vue2-client/base-client/components/his/HChart/demo.vue'),
57
57
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
58
- component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue'),
58
+ // component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue'),
59
+ component: () => import('@vue2-client/components/xScrollBox/example.vue'),
59
60
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
60
61
  // component: () => import('@vue2-client/pages/addressSelect/addressDemo.vue'),
61
62
  // component: () => import('@vue2-client/base-client/components/common/XDescriptions/demo.vue'),
@@ -1,79 +1,79 @@
1
- import { post } from '@vue2-client/services/api/restTools'
2
- import notification from 'ant-design-vue/lib/notification'
3
- import { logout } from '@vue2-client/services/user'
4
- import Cookie from 'js-cookie'
5
-
6
- const casApi = {
7
- // 根据用户信息校验服务访问权限并生成ST
8
- createSTByUserInfo: '/api/af-sso/logic/createSTByUserInfo',
9
- // 根据TGC生成ST
10
- createSTByTGC: '/api/af-sso/logic/createSTByTGC',
11
- // 验证ST
12
- serviceValidate: '/api/af-sso/logic/openapi/serviceValidate',
13
- // 其他验证
14
- otherValidate: '/api/af-sso/logic'
15
- }
16
-
17
- function setTGTCookie (cookie) {
18
- return Cookie.set('TGT-Cookie', cookie)
19
- }
20
- function removeTGTCookie () {
21
- return Cookie.remove('TGT-Cookie')
22
- }
23
- export function getTGTCookie () {
24
- return Cookie.get('TGT-Cookie')
25
- }
26
-
27
- export function CASLoginByAuth (serviceKey) {
28
- return new Promise((resolve, reject) => {
29
- post(casApi.createSTByUserInfo, {
30
- serviceKey: serviceKey
31
- }).then(res => {
32
- setTGTCookie(res.tgc)
33
- resolve(res)
34
- }).catch(msg => {
35
- reject(msg)
36
- })
37
- })
38
- }
39
-
40
- export function CASLogin (serviceKey, inner) {
41
- // 从第三方跳转登录
42
- const tgc = getTGTCookie()
43
- if (tgc && !inner) {
44
- return new Promise((resolve, reject) => {
45
- post(casApi.createSTByTGC, {
46
- serviceKey: serviceKey,
47
- tgc: tgc
48
- }).then(res => {
49
- resolve(res)
50
- }).catch(msg => {
51
- if (msg === '当前操作没有权限') {
52
- removeTGTCookie()
53
- notification.error({
54
- message: '授权已过期,请重新登录',
55
- description: '2秒后自动跳转回登陆页面'
56
- })
57
- logout().then(() => {
58
- setTimeout(() => {
59
- window.location.href = '/login?serviceKey=' + serviceKey
60
- }, 1500)
61
- })
62
- } else {
63
- reject(msg)
64
- }
65
- })
66
- })
67
- } else {
68
- return CASLoginByAuth(serviceKey)
69
- }
70
- }
71
-
72
- export function doOtherValidate (logicName, st, serviceKey) {
73
- return post(casApi.otherValidate + '/' + logicName, {
74
- st: st,
75
- serviceKey: serviceKey
76
- }, null)
77
- }
78
-
79
- export default casApi
1
+ import { post } from '@vue2-client/services/api/restTools'
2
+ import notification from 'ant-design-vue/lib/notification'
3
+ import { logout } from '@vue2-client/services/user'
4
+ import Cookie from 'js-cookie'
5
+
6
+ const casApi = {
7
+ // 根据用户信息校验服务访问权限并生成ST
8
+ createSTByUserInfo: '/api/af-sso/logic/createSTByUserInfo',
9
+ // 根据TGC生成ST
10
+ createSTByTGC: '/api/af-sso/logic/createSTByTGC',
11
+ // 验证ST
12
+ serviceValidate: '/api/af-sso/logic/openapi/serviceValidate',
13
+ // 其他验证
14
+ otherValidate: '/api/af-sso/logic'
15
+ }
16
+
17
+ function setTGTCookie (cookie) {
18
+ return Cookie.set('TGT-Cookie', cookie)
19
+ }
20
+ function removeTGTCookie () {
21
+ return Cookie.remove('TGT-Cookie')
22
+ }
23
+ export function getTGTCookie () {
24
+ return Cookie.get('TGT-Cookie')
25
+ }
26
+
27
+ export function CASLoginByAuth (serviceKey) {
28
+ return new Promise((resolve, reject) => {
29
+ post(casApi.createSTByUserInfo, {
30
+ serviceKey: serviceKey
31
+ }).then(res => {
32
+ setTGTCookie(res.tgc)
33
+ resolve(res)
34
+ }).catch(msg => {
35
+ reject(msg)
36
+ })
37
+ })
38
+ }
39
+
40
+ export function CASLogin (serviceKey, inner) {
41
+ // 从第三方跳转登录
42
+ const tgc = getTGTCookie()
43
+ if (tgc && !inner) {
44
+ return new Promise((resolve, reject) => {
45
+ post(casApi.createSTByTGC, {
46
+ serviceKey: serviceKey,
47
+ tgc: tgc
48
+ }).then(res => {
49
+ resolve(res)
50
+ }).catch(msg => {
51
+ if (msg === '当前操作没有权限') {
52
+ removeTGTCookie()
53
+ notification.error({
54
+ message: '授权已过期,请重新登录',
55
+ description: '2秒后自动跳转回登陆页面'
56
+ })
57
+ logout().then(() => {
58
+ setTimeout(() => {
59
+ window.location.href = '/login?serviceKey=' + serviceKey
60
+ }, 1500)
61
+ })
62
+ } else {
63
+ reject(msg)
64
+ }
65
+ })
66
+ })
67
+ } else {
68
+ return CASLoginByAuth(serviceKey)
69
+ }
70
+ }
71
+
72
+ export function doOtherValidate (logicName, st, serviceKey) {
73
+ return post(casApi.otherValidate + '/' + logicName, {
74
+ st: st,
75
+ serviceKey: serviceKey
76
+ }, null)
77
+ }
78
+
79
+ export default casApi
@@ -1,119 +1,119 @@
1
- import config from '@vue2-client/config'
2
- import { ADMIN } from '@vue2-client/config/default'
3
- import { formatFullPath } from '@vue2-client/utils/i18n'
4
- import { filterMenu } from '@vue2-client/utils/authority-utils'
5
- import { getLocalSetting } from '@vue2-client/utils/themeUtil'
6
- import deepClone from 'lodash.clonedeep'
7
-
8
- const localSetting = getLocalSetting(true)
9
- const customTitlesStr = sessionStorage.getItem(process.env.VUE_APP_TBAS_TITLES_KEY)
10
- const customTitles = (customTitlesStr && JSON.parse(customTitlesStr)) || []
11
-
12
- export default {
13
- namespaced: true,
14
- state: {
15
- isMobile: false,
16
- animates: ADMIN.animates,
17
- palettes: ADMIN.palettes,
18
- pageMinHeight: 0,
19
- menuData: [],
20
- activatedFirst: undefined,
21
- customTitles,
22
- ...config,
23
- ...localSetting
24
- },
25
- getters: {
26
- menuData (state, getters, rootState) {
27
- if (state.filterMenu) {
28
- const { permissions, roles } = rootState.account
29
- return filterMenu(deepClone(state.menuData), permissions, roles)
30
- }
31
- return state.menuData
32
- },
33
- firstMenu (state, getters) {
34
- const { menuData } = getters
35
- if (menuData.length > 0 && !menuData[0].fullPath) {
36
- formatFullPath(menuData)
37
- }
38
- return menuData.map(item => {
39
- const menuItem = { ...item }
40
- delete menuItem.children
41
- return menuItem
42
- })
43
- },
44
- subMenu (state) {
45
- const { menuData, activatedFirst } = state
46
- if (menuData.length > 0 && !menuData[0].fullPath) {
47
- formatFullPath(menuData)
48
- }
49
- const current = menuData.find(menu => menu.fullPath === activatedFirst)
50
- return current && current.children || []
51
- }
52
- },
53
- mutations: {
54
- setDevice (state, isMobile) {
55
- state.isMobile = isMobile
56
- },
57
- setTheme (state, theme) {
58
- state.theme = theme
59
- },
60
- setLayout (state, layout) {
61
- state.layout = layout
62
- },
63
- setMultiPage (state, multiPage) {
64
- state.multiPage = multiPage
65
- },
66
- setAnimate (state, animate) {
67
- state.animate = animate
68
- },
69
- setWeekMode (state, weekMode) {
70
- state.weekMode = weekMode
71
- },
72
- setFixedHeader (state, fixedHeader) {
73
- state.fixedHeader = fixedHeader
74
- },
75
- setFixedSideBar (state, fixedSideBar) {
76
- state.fixedSideBar = fixedSideBar
77
- },
78
- setLang (state, lang) {
79
- state.lang = lang
80
- },
81
- setHideSetting (state, hideSetting) {
82
- state.hideSetting = hideSetting
83
- },
84
- correctPageMinHeight (state, minHeight) {
85
- state.pageMinHeight += minHeight
86
- },
87
- setMenuData (state, menuData) {
88
- state.menuData = menuData
89
- },
90
- setAsyncRoutes (state, asyncRoutes) {
91
- state.asyncRoutes = asyncRoutes
92
- },
93
- setPageWidth (state, pageWidth) {
94
- state.pageWidth = pageWidth
95
- },
96
- setActivatedFirst (state, activatedFirst) {
97
- state.activatedFirst = activatedFirst
98
- },
99
- setFixedTabs (state, fixedTabs) {
100
- state.fixedTabs = fixedTabs
101
- },
102
- setCustomTitle (state, { path, title }) {
103
- if (title) {
104
- const obj = state.customTitles.find(item => item.path === path)
105
- if (obj) {
106
- obj.title = title
107
- } else {
108
- state.customTitles.push({ path, title })
109
- }
110
- sessionStorage.setItem(process.env.VUE_APP_TBAS_TITLES_KEY, JSON.stringify(state.customTitles))
111
- }
112
- },
113
- setSetting (state, setting) {
114
- for (const key in setting) {
115
- state[key] = setting[key]
116
- }
117
- }
118
- }
119
- }
1
+ import config from '@vue2-client/config'
2
+ import { ADMIN } from '@vue2-client/config/default'
3
+ import { formatFullPath } from '@vue2-client/utils/i18n'
4
+ import { filterMenu } from '@vue2-client/utils/authority-utils'
5
+ import { getLocalSetting } from '@vue2-client/utils/themeUtil'
6
+ import deepClone from 'lodash.clonedeep'
7
+
8
+ const localSetting = getLocalSetting(true)
9
+ const customTitlesStr = sessionStorage.getItem(process.env.VUE_APP_TBAS_TITLES_KEY)
10
+ const customTitles = (customTitlesStr && JSON.parse(customTitlesStr)) || []
11
+
12
+ export default {
13
+ namespaced: true,
14
+ state: {
15
+ isMobile: false,
16
+ animates: ADMIN.animates,
17
+ palettes: ADMIN.palettes,
18
+ pageMinHeight: 0,
19
+ menuData: [],
20
+ activatedFirst: undefined,
21
+ customTitles,
22
+ ...config,
23
+ ...localSetting
24
+ },
25
+ getters: {
26
+ menuData (state, getters, rootState) {
27
+ if (state.filterMenu) {
28
+ const { permissions, roles } = rootState.account
29
+ return filterMenu(deepClone(state.menuData), permissions, roles)
30
+ }
31
+ return state.menuData
32
+ },
33
+ firstMenu (state, getters) {
34
+ const { menuData } = getters
35
+ if (menuData.length > 0 && !menuData[0].fullPath) {
36
+ formatFullPath(menuData)
37
+ }
38
+ return menuData.map(item => {
39
+ const menuItem = { ...item }
40
+ delete menuItem.children
41
+ return menuItem
42
+ })
43
+ },
44
+ subMenu (state) {
45
+ const { menuData, activatedFirst } = state
46
+ if (menuData.length > 0 && !menuData[0].fullPath) {
47
+ formatFullPath(menuData)
48
+ }
49
+ const current = menuData.find(menu => menu.fullPath === activatedFirst)
50
+ return current && current.children || []
51
+ }
52
+ },
53
+ mutations: {
54
+ setDevice (state, isMobile) {
55
+ state.isMobile = isMobile
56
+ },
57
+ setTheme (state, theme) {
58
+ state.theme = theme
59
+ },
60
+ setLayout (state, layout) {
61
+ state.layout = layout
62
+ },
63
+ setMultiPage (state, multiPage) {
64
+ state.multiPage = multiPage
65
+ },
66
+ setAnimate (state, animate) {
67
+ state.animate = animate
68
+ },
69
+ setWeekMode (state, weekMode) {
70
+ state.weekMode = weekMode
71
+ },
72
+ setFixedHeader (state, fixedHeader) {
73
+ state.fixedHeader = fixedHeader
74
+ },
75
+ setFixedSideBar (state, fixedSideBar) {
76
+ state.fixedSideBar = fixedSideBar
77
+ },
78
+ setLang (state, lang) {
79
+ state.lang = lang
80
+ },
81
+ setHideSetting (state, hideSetting) {
82
+ state.hideSetting = hideSetting
83
+ },
84
+ correctPageMinHeight (state, minHeight) {
85
+ state.pageMinHeight += minHeight
86
+ },
87
+ setMenuData (state, menuData) {
88
+ state.menuData = menuData
89
+ },
90
+ setAsyncRoutes (state, asyncRoutes) {
91
+ state.asyncRoutes = asyncRoutes
92
+ },
93
+ setPageWidth (state, pageWidth) {
94
+ state.pageWidth = pageWidth
95
+ },
96
+ setActivatedFirst (state, activatedFirst) {
97
+ state.activatedFirst = activatedFirst
98
+ },
99
+ setFixedTabs (state, fixedTabs) {
100
+ state.fixedTabs = fixedTabs
101
+ },
102
+ setCustomTitle (state, { path, title }) {
103
+ if (title) {
104
+ const obj = state.customTitles.find(item => item.path === path)
105
+ if (obj) {
106
+ obj.title = title
107
+ } else {
108
+ state.customTitles.push({ path, title })
109
+ }
110
+ sessionStorage.setItem(process.env.VUE_APP_TBAS_TITLES_KEY, JSON.stringify(state.customTitles))
111
+ }
112
+ },
113
+ setSetting (state, setting) {
114
+ for (const key in setting) {
115
+ state[key] = setting[key]
116
+ }
117
+ }
118
+ }
119
+ }