vue2-client 1.2.0 → 1.2.3

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 (134) hide show
  1. package/README.md +65 -65
  2. package/babel.config.js +1 -0
  3. package/docs/notice.md +22 -0
  4. package/index.js +28 -28
  5. package/package.json +1 -1
  6. package/src/App.vue +93 -93
  7. package/src/assets/img/SunClientDownload.png +0 -0
  8. package/src/assets/img/SunClientManual/1.png +0 -0
  9. package/src/assets/img/SunClientManual/2.png +0 -0
  10. package/src/assets/img/SunClientManual/3.png +0 -0
  11. package/src/assets/img/SunClientManual/4.png +0 -0
  12. package/src/assets/img/ToDeskDownload.png +0 -0
  13. package/src/assets/img/ToDeskManual/1.png +0 -0
  14. package/src/assets/img/ToDeskManual/2.png +0 -0
  15. package/src/assets/img/ToDeskManual/3.png +0 -0
  16. package/src/assets/img/ToDeskManual/4.png +0 -0
  17. package/src/assets/sound/newNote.mp3 +0 -0
  18. package/src/base-client/all.js +57 -57
  19. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +1157 -1159
  20. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  21. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +540 -540
  22. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  23. package/src/base-client/components/common/CustomColumnsDrawer/index.md +46 -46
  24. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +150 -150
  25. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  26. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  27. package/src/base-client/components/common/XAddForm/XAddForm.vue +323 -323
  28. package/src/base-client/components/common/XAddForm/index.md +60 -60
  29. package/src/base-client/components/common/XBadge/index.md +39 -39
  30. package/src/base-client/components/common/XCard/index.md +43 -43
  31. package/src/base-client/components/common/XForm/XForm.vue +275 -275
  32. package/src/base-client/components/common/XForm/XFormItem.vue +217 -217
  33. package/src/base-client/components/common/XForm/index.md +196 -196
  34. package/src/base-client/components/common/XFormCol/index.md +35 -35
  35. package/src/base-client/components/common/XFormTable/XFormTable.vue +407 -405
  36. package/src/base-client/components/common/XFormTable/index.md +89 -89
  37. package/src/base-client/components/common/XTable/XTable.vue +262 -262
  38. package/src/base-client/components/common/XTable/index.md +255 -255
  39. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +105 -105
  40. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +226 -226
  41. package/src/base-client/components/iot/CustomerDetailsView/index.md +41 -41
  42. package/src/base-client/components/iot/DataAnalysisUser/DataAnalysisUser.vue +127 -127
  43. package/src/base-client/components/iot/DataAnalysisView/DataAnalysisView.vue +244 -250
  44. package/src/base-client/components/iot/DataAnalysisViewGD/DataAnalysisViewGD.vue +548 -548
  45. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +453 -453
  46. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +231 -231
  47. package/src/base-client/components/iot/DeviceDetailsView/index.md +43 -43
  48. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +330 -330
  49. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  50. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstruct.vue +122 -122
  51. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +122 -122
  52. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsMain.vue +225 -225
  53. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +135 -135
  54. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +277 -277
  55. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +472 -472
  56. package/src/base-client/components/iot/InstructDetailsView/index.md +45 -45
  57. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +380 -380
  58. package/src/base-client/components/iot/LogDetailsView/index.md +43 -43
  59. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +360 -360
  60. package/src/base-client/components/iot/MeterDetailsView/index.md +43 -43
  61. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +335 -335
  62. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +185 -185
  63. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +292 -292
  64. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +237 -237
  65. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +257 -257
  66. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +190 -190
  67. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +723 -723
  68. package/src/base-client/components/iot/WebmeterAnalysisView/index.md +48 -48
  69. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  70. package/src/base-client/components/system/DictionaryDetailsView/index.md +41 -41
  71. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +248 -248
  72. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +371 -406
  73. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +838 -486
  74. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +261 -184
  75. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +528 -303
  76. package/src/base-client/plugins/AppData.js +69 -69
  77. package/src/base-client/plugins/GetLoginInfoService.js +221 -221
  78. package/src/base-client/plugins/index.js +21 -21
  79. package/src/bootstrap.js +27 -27
  80. package/src/components/Ellipsis/Ellipsis.vue +64 -64
  81. package/src/components/Ellipsis/index.md +38 -38
  82. package/src/components/NumberInfo/index.md +43 -43
  83. package/src/components/STable/README.md +341 -341
  84. package/src/components/Trend/index.md +45 -45
  85. package/src/components/cache/AKeepAlive.js +172 -172
  86. package/src/components/checkbox/index.js +7 -7
  87. package/src/components/index.js +36 -36
  88. package/src/components/menu/menu.js +273 -273
  89. package/src/components/setting/Setting.vue +237 -237
  90. package/src/components/table/advance/AdvanceTable.vue +275 -275
  91. package/src/components/transition/PageToggleTransition.vue +97 -97
  92. package/src/layouts/CommonLayout.vue +42 -42
  93. package/src/layouts/PageLayout.vue +151 -151
  94. package/src/layouts/SinglePageView.vue +74 -74
  95. package/src/layouts/header/AdminHeader.vue +109 -109
  96. package/src/layouts/header/HeaderAvatar.vue +60 -60
  97. package/src/layouts/header/HeaderNotice.vue +97 -97
  98. package/src/layouts/tabs/TabsHead.vue +190 -190
  99. package/src/layouts/tabs/TabsView.vue +355 -355
  100. package/src/main.js +20 -20
  101. package/src/mock/goods/index.js +108 -108
  102. package/src/mock/index.js +12 -12
  103. package/src/mock/project/index.js +17 -17
  104. package/src/mock/user/current.js +13 -13
  105. package/src/mock/user/login.js +39 -39
  106. package/src/mock/workplace/index.js +15 -15
  107. package/src/pages/exception/403.vue +25 -25
  108. package/src/pages/exception/404.vue +25 -25
  109. package/src/pages/exception/500.vue +25 -25
  110. package/src/pages/login/Login.vue +194 -194
  111. package/src/pages/report/ReportTableHome.vue +28 -28
  112. package/src/pages/resourceManage/resourceManageMain.vue +55 -55
  113. package/src/pages/system/applyInstallView/Core.vue +570 -570
  114. package/src/pages/system/applyInstallView/index.vue +34 -34
  115. package/src/pages/system/dictionary/index.vue +41 -41
  116. package/src/pages/system/queryParams/index.vue +41 -41
  117. package/src/router/async/config.async.js +25 -25
  118. package/src/router/async/router.map.js +59 -59
  119. package/src/router/guards.js +104 -104
  120. package/src/router/index.js +27 -27
  121. package/src/services/api/EmployeeDetailsViewApi.js +3 -1
  122. package/src/services/api/TicketDetailsViewApi.js +9 -1
  123. package/src/services/api/common.js +37 -39
  124. package/src/services/api/restTools.js +23 -23
  125. package/src/services/dataSource.js +12 -12
  126. package/src/services/user.js +34 -34
  127. package/src/store/modules/setting.js +114 -114
  128. package/src/utils/i18n.js +80 -80
  129. package/src/utils/indexedDB.js +146 -146
  130. package/src/utils/request.js +197 -197
  131. package/src/utils/routerUtil.js +15 -2
  132. package/tests/unit/ReportTable.spec.js +15 -15
  133. package/vue.config.js +153 -153
  134. package/webpack.config.js +12 -12
@@ -10,7 +10,9 @@ const EmployeeDetailsViewApi = {
10
10
  // 查询:获取部门名字典
11
11
  getDepartmentDictionary: '/webmeterapi/getDepartmentDictionary',
12
12
  // 查询:获取模块名字典
13
- getModelDictionary: '/webmeterapi/getModelDictionary'
13
+ getModelDictionary: '/webmeterapi/getModelDictionary',
14
+ // 查询:获取所有员工名,供前端展示备选项
15
+ getAllEmployeeName: '/webmeterapi/getAllEmployeeName'
14
16
  }
15
17
 
16
18
  export { EmployeeDetailsViewApi }
@@ -24,7 +24,15 @@ const TicketDetailsViewApi = {
24
24
  // 获取工单类别字典
25
25
  getTicketCategoryDictionary: '/webmeterapi/getTicketCategoryDictionary',
26
26
  // 在工单提交页面删除照片
27
- revocationImage: '/webmeterapi/revocationImage'
27
+ revocationImage: '/webmeterapi/revocationImage',
28
+ // 在工单提交页面删除照片
29
+ getTicketImages: '/webmeterapi/getTicketImages',
30
+ // 用户填写附加信息时取消了操作,将已上传的照片清空
31
+ removeAllImages: '/webmeterapi/removeAllImages',
32
+ // 提交用户填写附加信息
33
+ AddonDescriptionToTicket: '/webmeterapi/AddonDescriptionToTicket',
34
+ // 获取用户填写附加信息
35
+ getAddonDescription: '/webmeterapi/getAddonDescription'
28
36
  }
29
37
 
30
38
  export { TicketDetailsViewApi }
@@ -1,39 +1,37 @@
1
- import { METHOD, request } from '@vue2-client/utils/request'
2
-
3
- const commonApi = {
4
- // 获取表格列配置
5
- getColumnsJson: '/webmeterapi/getColumns',
6
- // 通用查询
7
- query: '/webmeterapi/commonQuery',
8
- // 通用新增/修改
9
- addOrModify: '/webmeterapi/commonAddOrModify',
10
- // 通用删除
11
- delete: '/webmeterapi/commonDelete',
12
- // 获取字典键列表
13
- getDictionaryParam: '/webmeterapi/getDictionaryParam',
14
- // 根据字典键获取值
15
- getDictionaryValue: '/webmeterapi/getDictionaryValue'
16
- }
17
-
18
- /**
19
- * 通用表单查询
20
- */
21
- export function query (parameter) {
22
- return request(commonApi.query, METHOD.POST, parameter)
23
- }
24
-
25
- /**
26
- * 通用新增/修改
27
- */
28
- export function addOrModify (parameter) {
29
- return request(commonApi.addOrModify, METHOD.POST, parameter)
30
- }
31
-
32
- /**
33
- * 通用删除
34
- */
35
- export function remove (parameter) {
36
- return request(commonApi.delete, METHOD.POST, parameter)
37
- }
38
-
39
- export { commonApi }
1
+ import { METHOD, request } from '@vue2-client/utils/request'
2
+
3
+ const commonApi = {
4
+ // 获取表格列配置
5
+ getColumnsJson: '/webmeterapi/getColumns',
6
+ // 通用查询
7
+ query: '/webmeterapi/commonQuery',
8
+ // 通用新增/修改
9
+ addOrModify: '/webmeterapi/commonAddOrModify',
10
+ // 通用删除
11
+ delete: '/webmeterapi/commonDelete',
12
+ // 获取字典键列表
13
+ getDictionaryParam: '/webmeterapi/getDictionaryParam'
14
+ }
15
+
16
+ /**
17
+ * 通用表单查询
18
+ */
19
+ export function query (parameter) {
20
+ return request(commonApi.query, METHOD.POST, parameter)
21
+ }
22
+
23
+ /**
24
+ * 通用新增/修改
25
+ */
26
+ export function addOrModify (parameter) {
27
+ return request(commonApi.addOrModify, METHOD.POST, parameter)
28
+ }
29
+
30
+ /**
31
+ * 通用删除
32
+ */
33
+ export function remove (parameter) {
34
+ return request(commonApi.delete, METHOD.POST, parameter)
35
+ }
36
+
37
+ export { commonApi }
@@ -1,23 +1,23 @@
1
- import { METHOD, request } from '@vue2-client/utils/request'
2
-
3
- /**
4
- * GET请求
5
- * @param url 请求地址
6
- * @param parameter 路径参数
7
- * @returns {Promise<AxiosResponse<T>>}
8
- */
9
- function get (url, parameter) {
10
- return request(url, METHOD.GET, parameter)
11
- }
12
-
13
- /**
14
- * POST请求
15
- * @param url 请求地址
16
- * @param parameter 请求参数
17
- * @returns {Promise<AxiosResponse<T>>}
18
- */
19
- function post (url, parameter) {
20
- return request(url, METHOD.POST, parameter)
21
- }
22
-
23
- export { get, post }
1
+ import { METHOD, request } from '@vue2-client/utils/request'
2
+
3
+ /**
4
+ * GET请求
5
+ * @param url 请求地址
6
+ * @param parameter 路径参数
7
+ * @returns {Promise<AxiosResponse<T>>}
8
+ */
9
+ function get (url, parameter) {
10
+ return request(url, METHOD.GET, parameter)
11
+ }
12
+
13
+ /**
14
+ * POST请求
15
+ * @param url 请求地址
16
+ * @param parameter 请求参数
17
+ * @returns {Promise<AxiosResponse<T>>}
18
+ */
19
+ function post (url, parameter) {
20
+ return request(url, METHOD.POST, parameter)
21
+ }
22
+
23
+ export { get, post }
@@ -1,12 +1,12 @@
1
- import { GOODS, GOODS_COLUMNS } from './api'
2
- import { METHOD, request } from '@vue2-client/utils/request'
3
-
4
- export async function goodsList (params) {
5
- return request(GOODS, METHOD.GET, params)
6
- }
7
-
8
- export async function goodsColumns () {
9
- return request(GOODS_COLUMNS, METHOD.GET)
10
- }
11
-
12
- export default { goodsList, goodsColumns }
1
+ import { GOODS, GOODS_COLUMNS } from './api'
2
+ import { METHOD, request } from '@vue2-client/utils/request'
3
+
4
+ export async function goodsList (params) {
5
+ return request(GOODS, METHOD.GET, params)
6
+ }
7
+
8
+ export async function goodsColumns () {
9
+ return request(GOODS_COLUMNS, METHOD.GET)
10
+ }
11
+
12
+ export default { goodsList, goodsColumns }
@@ -1,34 +1,34 @@
1
- import { LOGIN, ROUTES } from '@vue2-client/services/api'
2
- import { request, METHOD, removeAuthorization } from '@vue2-client/utils/request'
3
-
4
- /**
5
- * 登录服务
6
- * @param name 账户名
7
- * @param password 账户密码
8
- * @returns {Promise<AxiosResponse<T>>}
9
- */
10
- export async function login (name, password) {
11
- return request(LOGIN, METHOD.POST, {
12
- name: name,
13
- password: password
14
- })
15
- }
16
-
17
- export async function getRoutesConfig (value) {
18
- return request(ROUTES, METHOD.POST, value)
19
- }
20
-
21
- /**
22
- * 退出登录
23
- */
24
- export function logout () {
25
- localStorage.removeItem(process.env.VUE_APP_ROUTES_KEY)
26
- localStorage.removeItem(process.env.VUE_APP_PERMISSIONS_KEY)
27
- localStorage.removeItem(process.env.VUE_APP_ROLES_KEY)
28
- removeAuthorization()
29
- }
30
- export default {
31
- login,
32
- logout,
33
- getRoutesConfig
34
- }
1
+ import { LOGIN, ROUTES } from '@vue2-client/services/api'
2
+ import { request, METHOD, removeAuthorization } from '@vue2-client/utils/request'
3
+
4
+ /**
5
+ * 登录服务
6
+ * @param name 账户名
7
+ * @param password 账户密码
8
+ * @returns {Promise<AxiosResponse<T>>}
9
+ */
10
+ export async function login (name, password) {
11
+ return request(LOGIN, METHOD.POST, {
12
+ name: name,
13
+ password: password
14
+ })
15
+ }
16
+
17
+ export async function getRoutesConfig (value) {
18
+ return request(ROUTES, METHOD.POST, value)
19
+ }
20
+
21
+ /**
22
+ * 退出登录
23
+ */
24
+ export function logout () {
25
+ localStorage.removeItem(process.env.VUE_APP_ROUTES_KEY)
26
+ localStorage.removeItem(process.env.VUE_APP_PERMISSIONS_KEY)
27
+ localStorage.removeItem(process.env.VUE_APP_ROLES_KEY)
28
+ removeAuthorization()
29
+ }
30
+ export default {
31
+ login,
32
+ logout,
33
+ getRoutesConfig
34
+ }
@@ -1,114 +1,114 @@
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
- }
114
- }
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
+ }
114
+ }
package/src/utils/i18n.js CHANGED
@@ -1,80 +1,80 @@
1
- import Vue from 'vue'
2
- import VueI18n from 'vue-i18n'
3
- import routesI18n from '@vue2-client/router/i18n'
4
- import './Objects'
5
- import { getI18nKey } from '@vue2-client/utils/routerUtil'
6
-
7
- /**
8
- * 创建 i18n 配置
9
- * @param locale 本地化语言
10
- * @param fallback 回退语言
11
- * @returns {VueI18n}
12
- */
13
- function initI18n (locale, fallback) {
14
- Vue.use(VueI18n)
15
- const i18nOptions = {
16
- locale,
17
- fallbackLocale: fallback,
18
- silentFallbackWarn: true
19
- }
20
- return new VueI18n(i18nOptions)
21
- }
22
-
23
- /**
24
- * 根据 router options 配置生成 国际化语言
25
- * @param lang
26
- * @param routes
27
- * @param valueKey
28
- * @returns {*}
29
- */
30
- function generateI18n (lang, routes, valueKey) {
31
- routes.forEach(route => {
32
- const keys = getI18nKey(route.fullPath).split('.')
33
- const value = valueKey === 'path' ? route[valueKey].split('/').filter(item => !item.startsWith(':') && item != '').join('.') : route[valueKey]
34
- lang.assignProps(keys, value)
35
- if (route.children) {
36
- generateI18n(lang, route.children, valueKey)
37
- }
38
- })
39
- return lang
40
- }
41
-
42
- /**
43
- * 格式化 router.options.routes,生成 fullPath
44
- * @param routes
45
- * @param parentPath
46
- */
47
- function formatFullPath (routes, parentPath = '') {
48
- routes.forEach(route => {
49
- const isFullPath = route.path.substring(0, 1) === '/'
50
- route.fullPath = isFullPath ? route.path : (parentPath === '/' ? parentPath + route.path : parentPath + '/' + route.path)
51
- if (route.children) {
52
- formatFullPath(route.children, route.fullPath)
53
- }
54
- })
55
- }
56
-
57
- /**
58
- * 从路由提取国际化数据
59
- * @param i18n
60
- * @param routes
61
- */
62
- function mergeI18nFromRoutes (i18n, routes) {
63
- formatFullPath(routes)
64
- // eslint-disable-next-line no-new-object
65
- const CN = generateI18n(new Object(), routes, 'name')
66
- // eslint-disable-next-line no-new-object
67
- const US = generateI18n(new Object(), routes, 'path')
68
- i18n.mergeLocaleMessage('CN', CN)
69
- i18n.mergeLocaleMessage('US', US)
70
- const messages = routesI18n.messages
71
- Object.keys(messages).forEach(lang => {
72
- i18n.mergeLocaleMessage(lang, messages[lang])
73
- })
74
- }
75
-
76
- export {
77
- initI18n,
78
- mergeI18nFromRoutes,
79
- formatFullPath
80
- }
1
+ import Vue from 'vue'
2
+ import VueI18n from 'vue-i18n'
3
+ import routesI18n from '@vue2-client/router/i18n'
4
+ import './Objects'
5
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
6
+
7
+ /**
8
+ * 创建 i18n 配置
9
+ * @param locale 本地化语言
10
+ * @param fallback 回退语言
11
+ * @returns {VueI18n}
12
+ */
13
+ function initI18n (locale, fallback) {
14
+ Vue.use(VueI18n)
15
+ const i18nOptions = {
16
+ locale,
17
+ fallbackLocale: fallback,
18
+ silentFallbackWarn: true
19
+ }
20
+ return new VueI18n(i18nOptions)
21
+ }
22
+
23
+ /**
24
+ * 根据 router options 配置生成 国际化语言
25
+ * @param lang
26
+ * @param routes
27
+ * @param valueKey
28
+ * @returns {*}
29
+ */
30
+ function generateI18n (lang, routes, valueKey) {
31
+ routes.forEach(route => {
32
+ const keys = getI18nKey(route.fullPath).split('.')
33
+ const value = valueKey === 'path' ? route[valueKey].split('/').filter(item => !item.startsWith(':') && item != '').join('.') : route[valueKey]
34
+ lang.assignProps(keys, value)
35
+ if (route.children) {
36
+ generateI18n(lang, route.children, valueKey)
37
+ }
38
+ })
39
+ return lang
40
+ }
41
+
42
+ /**
43
+ * 格式化 router.options.routes,生成 fullPath
44
+ * @param routes
45
+ * @param parentPath
46
+ */
47
+ function formatFullPath (routes, parentPath = '') {
48
+ routes.forEach(route => {
49
+ const isFullPath = route.path.substring(0, 1) === '/'
50
+ route.fullPath = isFullPath ? route.path : (parentPath === '/' ? parentPath + route.path : parentPath + '/' + route.path)
51
+ if (route.children) {
52
+ formatFullPath(route.children, route.fullPath)
53
+ }
54
+ })
55
+ }
56
+
57
+ /**
58
+ * 从路由提取国际化数据
59
+ * @param i18n
60
+ * @param routes
61
+ */
62
+ function mergeI18nFromRoutes (i18n, routes) {
63
+ formatFullPath(routes)
64
+ // eslint-disable-next-line no-new-object
65
+ const CN = generateI18n(new Object(), routes, 'name')
66
+ // eslint-disable-next-line no-new-object
67
+ const US = generateI18n(new Object(), routes, 'path')
68
+ i18n.mergeLocaleMessage('CN', CN)
69
+ i18n.mergeLocaleMessage('US', US)
70
+ const messages = routesI18n.messages
71
+ Object.keys(messages).forEach(lang => {
72
+ i18n.mergeLocaleMessage(lang, messages[lang])
73
+ })
74
+ }
75
+
76
+ export {
77
+ initI18n,
78
+ mergeI18nFromRoutes,
79
+ formatFullPath
80
+ }