vue2-client 1.8.259 → 1.8.261

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 (210) hide show
  1. package/.env +19 -19
  2. package/.eslintrc.js +90 -90
  3. package/CHANGELOG.md +824 -824
  4. package/Components.md +60 -60
  5. package/babel.config.js +21 -21
  6. package/docs/index.md +30 -30
  7. package/docs/lowcode.md +188 -188
  8. package/docs/lowcodeForDeveloper.md +200 -192
  9. package/index.js +31 -31
  10. package/jest-transform-stub.js +8 -8
  11. package/jest.config.js +21 -21
  12. package/jest.setup.js +7 -7
  13. package/package.json +95 -95
  14. package/public/index.html +27 -27
  15. package/src/App.vue +188 -188
  16. package/src/ReportView.js +19 -19
  17. package/src/assets/img/querySlotDemo.svg +15 -15
  18. package/src/assets/svg/badtwo.svg +1 -1
  19. package/src/assets/svg/goodtwo.svg +1 -1
  20. package/src/base-client/components/common/AMisRender/index.js +3 -3
  21. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  22. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +413 -413
  23. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  24. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  25. package/src/base-client/components/common/CitySelect/CitySelect.vue +348 -348
  26. package/src/base-client/components/common/CitySelect/index.js +3 -3
  27. package/src/base-client/components/common/CitySelect/index.md +109 -109
  28. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  29. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  30. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  31. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  32. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  33. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  34. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  35. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  36. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  37. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  38. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  39. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  40. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  41. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  42. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  43. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +394 -355
  44. package/src/base-client/components/common/LowCodePageRender/LowCodePageRender.vue +29 -29
  45. package/src/base-client/components/common/LowCodePageRender/editorPageRender.vue +533 -467
  46. package/src/base-client/components/common/LowCodePageRender/index.js +3 -3
  47. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  48. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  49. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  50. package/src/base-client/components/common/Tree/index.js +2 -2
  51. package/src/base-client/components/common/Upload/Upload.vue +197 -197
  52. package/src/base-client/components/common/Upload/index.js +3 -3
  53. package/src/base-client/components/common/XAddForm/XAddForm.vue +98 -98
  54. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +732 -732
  55. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  56. package/src/base-client/components/common/XAddNativeForm/lowcodeEditorRegister.js +16 -12
  57. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  58. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  59. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  60. package/src/base-client/components/common/XBadge/XBadge.vue +78 -78
  61. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  62. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  63. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  64. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  65. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +167 -167
  66. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +299 -299
  67. package/src/base-client/components/common/XDescriptions/demo.vue +50 -50
  68. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  69. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  70. package/src/base-client/components/common/XDescriptions/lowcodeEditorRegister.js +15 -5
  71. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +214 -214
  72. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  73. package/src/base-client/components/common/XForm/XForm.vue +281 -281
  74. package/src/base-client/components/common/XForm/XFormItem.vue +807 -807
  75. package/src/base-client/components/common/XForm/XTreeSelect.vue +206 -206
  76. package/src/base-client/components/common/XForm/index.md +178 -178
  77. package/src/base-client/components/common/XFormCol/XFormCol.vue +36 -36
  78. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +241 -241
  79. package/src/base-client/components/common/XFormGroup/demo.vue +40 -40
  80. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  81. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  82. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  83. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  84. package/src/base-client/components/common/XFormTable/XFormTable.vue +519 -519
  85. package/src/base-client/components/common/XFormTable/index.md +98 -98
  86. package/src/base-client/components/common/XFormTable/lowcodeEditorRegister.js +16 -12
  87. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +147 -147
  88. package/src/base-client/components/common/XReport/XReport.vue +843 -843
  89. package/src/base-client/components/common/XReport/XReportDemo.vue +2233 -2233
  90. package/src/base-client/components/common/XReport/XReportDesign.vue +470 -470
  91. package/src/base-client/components/common/XReport/XReportJsonRender.vue +267 -267
  92. package/src/base-client/components/common/XReport/XReportTrGroup.vue +745 -742
  93. package/src/base-client/components/common/XReport/index.js +3 -3
  94. package/src/base-client/components/common/XReport/index.md +44 -44
  95. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  96. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  97. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  98. package/src/base-client/components/common/XStepView/index.js +3 -3
  99. package/src/base-client/components/common/XStepView/index.md +31 -31
  100. package/src/base-client/components/common/XTable/XTable.vue +636 -636
  101. package/src/base-client/components/common/XTable/index.md +255 -255
  102. package/src/base-client/components/common/XTree/XTree.vue +318 -318
  103. package/src/base-client/components/common/XTree/index.js +3 -3
  104. package/src/base-client/components/common/XTree/index.md +36 -36
  105. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +114 -114
  106. package/src/base-client/components/common/XTreeOne/lowcodeEditorRegister.js +11 -9
  107. package/src/base-client/components/index.js +51 -51
  108. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  109. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  110. package/src/base-client/plugins/AppData.js +115 -115
  111. package/src/base-client/plugins/Config.js +19 -19
  112. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  113. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  114. package/src/bootstrap.js +39 -39
  115. package/src/components/CodeMirror/inedx.vue +118 -118
  116. package/src/components/CodeMirror/setting.js +40 -40
  117. package/src/components/FilePreview/FilePreview.vue +166 -166
  118. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  119. package/src/components/STable/index.js +323 -323
  120. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  121. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  122. package/src/components/menu/SideMenu.vue +75 -75
  123. package/src/components/menu/menu.js +273 -273
  124. package/src/components/tool/AStepItem.vue +60 -60
  125. package/src/config/CreateQueryConfig.js +322 -322
  126. package/src/config/default/antd.config.js +89 -89
  127. package/src/config/default/setting.config.js +55 -55
  128. package/src/font-style/font.css +4 -4
  129. package/src/layouts/CommonLayout.vue +56 -56
  130. package/src/layouts/PageLayout.vue +151 -151
  131. package/src/layouts/SinglePageView.vue +138 -138
  132. package/src/layouts/header/AdminHeader.vue +132 -132
  133. package/src/layouts/header/HeaderNotice.vue +177 -177
  134. package/src/layouts/tabs/TabsHead.vue +189 -189
  135. package/src/layouts/tabs/TabsView.vue +387 -387
  136. package/src/lib.js +1 -1
  137. package/src/main.js +26 -26
  138. package/src/mock/extend/index.js +84 -84
  139. package/src/mock/goods/index.js +108 -108
  140. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  141. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  142. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  143. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  144. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  145. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  146. package/src/pages/DynamicStatistics/FavoriteList.vue +51 -51
  147. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  148. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  149. package/src/pages/DynamicStatistics/index.vue +282 -282
  150. package/src/pages/Example/index.vue +32 -32
  151. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  152. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  153. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  154. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  155. package/src/pages/NewDynamicStatistics/FavoriteList.vue +51 -51
  156. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  157. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  158. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  159. package/src/pages/ServiceReview/index.vue +284 -284
  160. package/src/pages/XReportView/index.vue +62 -62
  161. package/src/pages/login/Login.vue +378 -378
  162. package/src/pages/login/LoginV3.vue +389 -389
  163. package/src/pages/lowCode/lowCodeEditor.vue +1501 -1285
  164. package/src/pages/lowCode/lowCodeRender.vue +39 -39
  165. package/src/pages/resourceManage/orgListManage.vue +98 -98
  166. package/src/pages/system/dictionary/index.vue +44 -44
  167. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  168. package/src/pages/system/monitor/operLog/index.vue +37 -37
  169. package/src/pages/system/settings/modifyPassword.vue +117 -117
  170. package/src/pages/system/ticket/index.vue +480 -480
  171. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  172. package/src/router/async/config.async.js +33 -33
  173. package/src/router/async/router.map.js +107 -107
  174. package/src/router/guards.js +220 -220
  175. package/src/router/index.js +27 -27
  176. package/src/router.js +19 -19
  177. package/src/services/api/TicketDetailsViewApi.js +46 -46
  178. package/src/services/api/cas.js +79 -79
  179. package/src/services/api/common.js +284 -284
  180. package/src/services/api/entity.js +18 -18
  181. package/src/services/api/index.js +17 -17
  182. package/src/services/api/restTools.js +46 -46
  183. package/src/services/apiService.js +14 -14
  184. package/src/services/user.js +71 -71
  185. package/src/store/modules/setting.js +119 -119
  186. package/src/theme/default/style.less +57 -57
  187. package/src/theme/global.less +130 -130
  188. package/src/utils/authority-utils.js +85 -85
  189. package/src/utils/errorCode.js +6 -6
  190. package/src/utils/htmlToPDF.js +108 -108
  191. package/src/utils/htmlToPDFApi.js +5 -5
  192. package/src/utils/indexedDB.js +201 -201
  193. package/src/utils/login.js +144 -144
  194. package/src/utils/lowcode/lowcodeComponentMixin.js +112 -78
  195. package/src/utils/lowcode/lowcodeLog.js +29 -29
  196. package/src/utils/lowcode/lowcodeUtils.js +276 -129
  197. package/src/utils/lowcode/registerComponentForEditor.js +11 -11
  198. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  199. package/src/utils/map-utils.js +47 -47
  200. package/src/utils/reg.js +19 -19
  201. package/src/utils/request.js +343 -343
  202. package/src/utils/routerUtil.js +435 -435
  203. package/src/utils/runEvalFunction.js +6 -6
  204. package/src/utils/util.js +241 -241
  205. package/src/utils/waterMark.js +31 -31
  206. package/test/Amis.spec.js +163 -163
  207. package/test/Tree.spec.js +167 -167
  208. package/test/myDialog.spec.js +46 -46
  209. package/vue.config.js +177 -177
  210. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,220 +1,220 @@
1
- import { hasAuthority } from '@vue2-client/utils/authority-utils'
2
- import { loginIgnore } from '@vue2-client/router/index'
3
- import { checkAuthorization, METHOD, request } from '@vue2-client/utils/request'
4
- import NProgress from 'nprogress'
5
- import { logout } from '@vue2-client/services/user'
6
- import {
7
- startLogin,
8
- checkSingleAuthorization,
9
- } from '@vue2-client/utils/login'
10
- import AES from '@vue2-client/utils/EncryptUtil'
11
- import Vue from 'vue'
12
- import { funcToRouter, loadRoutes } from '@vue2-client/utils/routerUtil'
13
-
14
- NProgress.configure({ showSpinner: false })
15
-
16
- /**
17
- * 进度条开始
18
- * @param to
19
- * @param form
20
- * @param next
21
- */
22
- const progressStart = (to, from, next) => {
23
- // start progress bar
24
- if (!NProgress.isStarted()) {
25
- NProgress.start()
26
- }
27
- next()
28
- }
29
-
30
- /**
31
- * 登录守卫
32
- * @param to
33
- * @param form
34
- * @param next
35
- * @param options
36
- */
37
- const loginGuard = (to, from, next, options) => {
38
- if (window.__MICRO_APP_ENVIRONMENT__) {
39
- window.microApp.dispatch({ type: '子应用发送给主应用的数据', to: to.path })
40
- }
41
- const urlParams = new URLSearchParams(window.location.search)
42
- // 如果是需要我们自己登陆的项目
43
- const token = urlParams.get('token')
44
- // 如果是v2 的项目 资源管理和营收分开库的那种项目 传递用户信息进来
45
- const tokenV2 = urlParams.get('tokenV2')
46
- // 如果是 v4 的父项目,通过localStorage传递信息
47
- const V4_LOGIN_DATA_KEY = localStorage.getItem('v4LoginData')
48
- if (token) {
49
- const { AESDecrypt } = AES
50
- const info = AESDecrypt(token, '3KMKqvgwR8ULbR8Z')
51
- const { store, message, router } = options
52
- if (
53
- (!loginIgnore.includes(to) || to.name === '404') &&
54
- !checkSingleAuthorization('SinglePage', token)
55
- ) {
56
- localStorage.setItem('SinglePage_TOKEN', token)
57
- startLogin({
58
- ...info,
59
- pathname: window.location.pathname,
60
- store,
61
- router,
62
- })
63
- } else {
64
- const roles = store.getters['account/roles']
65
- let user = {}
66
- try {
67
- user = JSON.parse(localStorage.getItem(process.env.VUE_APP_USER_KEY))
68
- } catch (e) {
69
- user = localStorage.getItem(process.env.VUE_APP_USER_KEY)
70
- }
71
- const setUser = store._mutations['account/setUser'][0]
72
- setUser(user)
73
- if (roles.length === 0 && !loginIgnore.includes(to)) {
74
- message.warning('登录已失效,请重新登录')
75
- logout().finally((res) => {
76
- next({ path: '/login' })
77
- })
78
- } else {
79
- next()
80
- }
81
- }
82
- } else if (tokenV2) {
83
- const { AESDecrypt } = AES
84
- const info = AESDecrypt(tokenV2, '3KMKqvgwR8ULbR8Z')
85
- request(`/rs/user/${info.name}/${info.password}/智慧燃气`, METHOD.GET).then(
86
- res => {
87
- const curUser = {
88
- name: res.name,
89
- username: res.name,
90
- orgid: res.name,
91
- avatar: '',
92
- ename: res.ename,
93
- id: res.id,
94
- orgName: res.f_fengongsi,
95
- contact: '',
96
- phone: '',
97
- orgs: res.orgs
98
- }
99
- Vue.$store.commit('account/setUser', Object.assign(curUser, res))
100
- const login = {
101
- f: res,
102
- jwt: res.id,
103
- r: res.roles
104
- }
105
- Vue.$store.commit('account/setLogin', login)
106
- loadRoutes(funcToRouter(res.functions))
107
- next()
108
- }
109
- )
110
- } else if (V4_LOGIN_DATA_KEY) {
111
- const v4LoginData = JSON.parse(localStorage.getItem('userInfo'))
112
- const curUser = {
113
- name: v4LoginData.name,
114
- username: v4LoginData.name,
115
- orgid: v4LoginData.name,
116
- avatar: '',
117
- ename: v4LoginData.ename,
118
- id: v4LoginData.id,
119
- orgName: v4LoginData.orgs,
120
- contact: '',
121
- phone: '',
122
- orgs: v4LoginData.orgs
123
- }
124
- Vue.$store.commit('account/setUser', Object.assign(curUser, v4LoginData))
125
- const login = {
126
- f: v4LoginData,
127
- jwt: v4LoginData.id,
128
- r: v4LoginData.r
129
- }
130
- Vue.$store.commit('account/setLogin', login)
131
- loadRoutes(funcToRouter(v4LoginData.functions))
132
- next()
133
- } else {
134
- const { store, message } = options
135
- if (
136
- (!loginIgnore.includes(to) || to.name === '404') &&
137
- !checkAuthorization()
138
- ) {
139
- message.warning('登录已失效,请重新登录')
140
- next({ path: '/login' })
141
- } else {
142
- const roles = store.getters['account/roles']
143
- if (roles.length === 0 && !loginIgnore.includes(to)) {
144
- message.warning('登录已失效,请重新登录')
145
- logout().finally((res) => {
146
- next({ path: '/login' })
147
- })
148
- } else {
149
- next()
150
- }
151
- }
152
- }
153
- }
154
-
155
- /**
156
- * 权限守卫
157
- * @param to
158
- * @param form
159
- * @param next
160
- * @param options
161
- */
162
- const authorityGuard = (to, from, next, options) => {
163
- const { store, message } = options
164
- const permissions = store.getters['account/permissions']
165
- const roles = store.getters['account/roles']
166
- if (!hasAuthority(to, permissions, roles)) {
167
- message.warning(`对不起,您无权访问页面: ${to.fullPath},请联系管理员`)
168
- next({ path: '/403' })
169
- // NProgress.done()
170
- } else {
171
- next()
172
- }
173
- }
174
-
175
- /**
176
- * 混合导航模式下一级菜单跳转重定向
177
- * @param to
178
- * @param from
179
- * @param next
180
- * @param options
181
- * @returns {*}
182
- */
183
- const redirectGuard = (to, from, next, options) => {
184
- const { store } = options
185
- const getFirstChild = (routes) => {
186
- const route = routes[0]
187
- if (!route.children || route.children.length === 0) {
188
- return route
189
- }
190
- return getFirstChild(route.children)
191
- }
192
- if (store.state.setting.layout === 'mix') {
193
- const firstMenu = store.getters['setting/firstMenu']
194
- if (firstMenu.find((item) => item.fullPath === to.fullPath)) {
195
- store.commit('setting/setActivatedFirst', to.fullPath)
196
- const subMenu = store.getters['setting/subMenu']
197
- if (subMenu.length > 0) {
198
- const redirect = getFirstChild(subMenu)
199
- return next({ path: redirect.fullPath })
200
- }
201
- }
202
- }
203
- next()
204
- }
205
-
206
- /**
207
- * 进度条结束
208
- * @param to
209
- * @param form
210
- * @param options
211
- */
212
- const progressDone = () => {
213
- // finish progress bar
214
- NProgress.done()
215
- }
216
-
217
- export default {
218
- beforeEach: [progressStart, loginGuard, authorityGuard, redirectGuard],
219
- afterEach: [progressDone],
220
- }
1
+ import { hasAuthority } from '@vue2-client/utils/authority-utils'
2
+ import { loginIgnore } from '@vue2-client/router/index'
3
+ import { checkAuthorization, METHOD, request } from '@vue2-client/utils/request'
4
+ import NProgress from 'nprogress'
5
+ import { logout } from '@vue2-client/services/user'
6
+ import {
7
+ startLogin,
8
+ checkSingleAuthorization,
9
+ } from '@vue2-client/utils/login'
10
+ import AES from '@vue2-client/utils/EncryptUtil'
11
+ import Vue from 'vue'
12
+ import { funcToRouter, loadRoutes } from '@vue2-client/utils/routerUtil'
13
+
14
+ NProgress.configure({ showSpinner: false })
15
+
16
+ /**
17
+ * 进度条开始
18
+ * @param to
19
+ * @param form
20
+ * @param next
21
+ */
22
+ const progressStart = (to, from, next) => {
23
+ // start progress bar
24
+ if (!NProgress.isStarted()) {
25
+ NProgress.start()
26
+ }
27
+ next()
28
+ }
29
+
30
+ /**
31
+ * 登录守卫
32
+ * @param to
33
+ * @param form
34
+ * @param next
35
+ * @param options
36
+ */
37
+ const loginGuard = (to, from, next, options) => {
38
+ if (window.__MICRO_APP_ENVIRONMENT__) {
39
+ window.microApp.dispatch({ type: '子应用发送给主应用的数据', to: to.path })
40
+ }
41
+ const urlParams = new URLSearchParams(window.location.search)
42
+ // 如果是需要我们自己登陆的项目
43
+ const token = urlParams.get('token')
44
+ // 如果是v2 的项目 资源管理和营收分开库的那种项目 传递用户信息进来
45
+ const tokenV2 = urlParams.get('tokenV2')
46
+ // 如果是 v4 的父项目,通过localStorage传递信息
47
+ const V4_LOGIN_DATA_KEY = localStorage.getItem('v4LoginData')
48
+ if (token) {
49
+ const { AESDecrypt } = AES
50
+ const info = AESDecrypt(token, '3KMKqvgwR8ULbR8Z')
51
+ const { store, message, router } = options
52
+ if (
53
+ (!loginIgnore.includes(to) || to.name === '404') &&
54
+ !checkSingleAuthorization('SinglePage', token)
55
+ ) {
56
+ localStorage.setItem('SinglePage_TOKEN', token)
57
+ startLogin({
58
+ ...info,
59
+ pathname: window.location.pathname,
60
+ store,
61
+ router,
62
+ })
63
+ } else {
64
+ const roles = store.getters['account/roles']
65
+ let user = {}
66
+ try {
67
+ user = JSON.parse(localStorage.getItem(process.env.VUE_APP_USER_KEY))
68
+ } catch (e) {
69
+ user = localStorage.getItem(process.env.VUE_APP_USER_KEY)
70
+ }
71
+ const setUser = store._mutations['account/setUser'][0]
72
+ setUser(user)
73
+ if (roles.length === 0 && !loginIgnore.includes(to)) {
74
+ message.warning('登录已失效,请重新登录')
75
+ logout().finally((res) => {
76
+ next({ path: '/login' })
77
+ })
78
+ } else {
79
+ next()
80
+ }
81
+ }
82
+ } else if (tokenV2) {
83
+ const { AESDecrypt } = AES
84
+ const info = AESDecrypt(tokenV2, '3KMKqvgwR8ULbR8Z')
85
+ request(`/rs/user/${info.name}/${info.password}/智慧燃气`, METHOD.GET).then(
86
+ res => {
87
+ const curUser = {
88
+ name: res.name,
89
+ username: res.name,
90
+ orgid: res.name,
91
+ avatar: '',
92
+ ename: res.ename,
93
+ id: res.id,
94
+ orgName: res.f_fengongsi,
95
+ contact: '',
96
+ phone: '',
97
+ orgs: res.orgs
98
+ }
99
+ Vue.$store.commit('account/setUser', Object.assign(curUser, res))
100
+ const login = {
101
+ f: res,
102
+ jwt: res.id,
103
+ r: res.roles
104
+ }
105
+ Vue.$store.commit('account/setLogin', login)
106
+ loadRoutes(funcToRouter(res.functions))
107
+ next()
108
+ }
109
+ )
110
+ } else if (V4_LOGIN_DATA_KEY) {
111
+ const v4LoginData = JSON.parse(localStorage.getItem('userInfo'))
112
+ const curUser = {
113
+ name: v4LoginData.name,
114
+ username: v4LoginData.name,
115
+ orgid: v4LoginData.name,
116
+ avatar: '',
117
+ ename: v4LoginData.ename,
118
+ id: v4LoginData.id,
119
+ orgName: v4LoginData.orgs,
120
+ contact: '',
121
+ phone: '',
122
+ orgs: v4LoginData.orgs
123
+ }
124
+ Vue.$store.commit('account/setUser', Object.assign(curUser, v4LoginData))
125
+ const login = {
126
+ f: v4LoginData,
127
+ jwt: v4LoginData.id,
128
+ r: v4LoginData.r
129
+ }
130
+ Vue.$store.commit('account/setLogin', login)
131
+ loadRoutes(funcToRouter(v4LoginData.functions))
132
+ next()
133
+ } else {
134
+ const { store, message } = options
135
+ if (
136
+ (!loginIgnore.includes(to) || to.name === '404') &&
137
+ !checkAuthorization()
138
+ ) {
139
+ message.warning('登录已失效,请重新登录')
140
+ next({ path: '/login' })
141
+ } else {
142
+ const roles = store.getters['account/roles']
143
+ if (roles.length === 0 && !loginIgnore.includes(to)) {
144
+ message.warning('登录已失效,请重新登录')
145
+ logout().finally((res) => {
146
+ next({ path: '/login' })
147
+ })
148
+ } else {
149
+ next()
150
+ }
151
+ }
152
+ }
153
+ }
154
+
155
+ /**
156
+ * 权限守卫
157
+ * @param to
158
+ * @param form
159
+ * @param next
160
+ * @param options
161
+ */
162
+ const authorityGuard = (to, from, next, options) => {
163
+ const { store, message } = options
164
+ const permissions = store.getters['account/permissions']
165
+ const roles = store.getters['account/roles']
166
+ if (!hasAuthority(to, permissions, roles)) {
167
+ message.warning(`对不起,您无权访问页面: ${to.fullPath},请联系管理员`)
168
+ next({ path: '/403' })
169
+ // NProgress.done()
170
+ } else {
171
+ next()
172
+ }
173
+ }
174
+
175
+ /**
176
+ * 混合导航模式下一级菜单跳转重定向
177
+ * @param to
178
+ * @param from
179
+ * @param next
180
+ * @param options
181
+ * @returns {*}
182
+ */
183
+ const redirectGuard = (to, from, next, options) => {
184
+ const { store } = options
185
+ const getFirstChild = (routes) => {
186
+ const route = routes[0]
187
+ if (!route.children || route.children.length === 0) {
188
+ return route
189
+ }
190
+ return getFirstChild(route.children)
191
+ }
192
+ if (store.state.setting.layout === 'mix') {
193
+ const firstMenu = store.getters['setting/firstMenu']
194
+ if (firstMenu.find((item) => item.fullPath === to.fullPath)) {
195
+ store.commit('setting/setActivatedFirst', to.fullPath)
196
+ const subMenu = store.getters['setting/subMenu']
197
+ if (subMenu.length > 0) {
198
+ const redirect = getFirstChild(subMenu)
199
+ return next({ path: redirect.fullPath })
200
+ }
201
+ }
202
+ }
203
+ next()
204
+ }
205
+
206
+ /**
207
+ * 进度条结束
208
+ * @param to
209
+ * @param form
210
+ * @param options
211
+ */
212
+ const progressDone = () => {
213
+ // finish progress bar
214
+ NProgress.done()
215
+ }
216
+
217
+ export default {
218
+ beforeEach: [progressStart, loginGuard, authorityGuard, redirectGuard],
219
+ afterEach: [progressDone],
220
+ }
@@ -1,27 +1,27 @@
1
- import { formatRoutes } from '@vue2-client/utils/routerUtil'
2
-
3
- // 不需要登录拦截的路由配置
4
- const loginIgnore = {
5
- names: ['404', '403'], // 根据路由名称匹配
6
- paths: ['/login', '/submitTicket', '/submitTicket/', '/ServiceReview', '/DynamicStatistics', '/NewDynamicStatistics'], // 根据路由fullPath匹配
7
- /**
8
- * 判断路由是否包含在该配置中
9
- * @param route vue-router 的 route 对象
10
- * @returns {boolean}
11
- */
12
- includes (route) {
13
- return this.names.includes(route.name) || this.paths.includes(route.path)
14
- }
15
- }
16
-
17
- /**
18
- * 初始化路由实例
19
- * @param isAsync 是否异步路由模式
20
- * @returns {RouterOptions}
21
- */
22
- function initRouter (isAsync) {
23
- const options = require('./async/config.async').default
24
- formatRoutes(options.routes)
25
- return options
26
- }
27
- export { loginIgnore, initRouter }
1
+ import { formatRoutes } from '@vue2-client/utils/routerUtil'
2
+
3
+ // 不需要登录拦截的路由配置
4
+ const loginIgnore = {
5
+ names: ['404', '403'], // 根据路由名称匹配
6
+ paths: ['/login', '/submitTicket', '/submitTicket/', '/ServiceReview', '/DynamicStatistics', '/NewDynamicStatistics'], // 根据路由fullPath匹配
7
+ /**
8
+ * 判断路由是否包含在该配置中
9
+ * @param route vue-router 的 route 对象
10
+ * @returns {boolean}
11
+ */
12
+ includes (route) {
13
+ return this.names.includes(route.name) || this.paths.includes(route.path)
14
+ }
15
+ }
16
+
17
+ /**
18
+ * 初始化路由实例
19
+ * @param isAsync 是否异步路由模式
20
+ * @returns {RouterOptions}
21
+ */
22
+ function initRouter (isAsync) {
23
+ const options = require('./async/config.async').default
24
+ formatRoutes(options.routes)
25
+ return options
26
+ }
27
+ export { loginIgnore, initRouter }
package/src/router.js CHANGED
@@ -1,19 +1,19 @@
1
- // 动态导入你的组件
2
- function loadView (view) {
3
- console.log('view', view)
4
- return () => import(/* webpackChunkName: "view-[request]" */ `@vue2-client/base-client/components/common/${view}`)
5
- }
6
-
7
- const routes = [
8
- // 对于每个路由,你都可以使用 'loadView' 方法动态加载对应的组件
9
- { path: '/Tree', component: loadView('Tree') },
10
- { path: '/XStepView', component: loadView('XStepView') },
11
- { path: '/Amis', component: () => import('@vue2-client/pages/AMisDemo/AMisDemo') },
12
- { path: '/Amis2', component: () => import('@vue2-client/pages/AMisDemo/AMisDemo2') },
13
- { path: '/DynamicStatistics', component: () => import('@vue2-client/pages/DynamicStatistics/index') },
14
- { path: '/NewDynamicStatistics', component: () => import('@vue2-client/pages/NewDynamicStatistics/index') },
15
- { path: '/submitTicket', component: () => import('@vue2-client/pages/system/ticket') },
16
- { path: '/submitTicket/', component: () => import('@vue2-client/pages/system/ticket') }
17
- // ... 其他路由
18
- ]
19
- export default routes
1
+ // 动态导入你的组件
2
+ function loadView (view) {
3
+ console.log('view', view)
4
+ return () => import(/* webpackChunkName: "view-[request]" */ `@vue2-client/base-client/components/common/${view}`)
5
+ }
6
+
7
+ const routes = [
8
+ // 对于每个路由,你都可以使用 'loadView' 方法动态加载对应的组件
9
+ { path: '/Tree', component: loadView('Tree') },
10
+ { path: '/XStepView', component: loadView('XStepView') },
11
+ { path: '/Amis', component: () => import('@vue2-client/pages/AMisDemo/AMisDemo') },
12
+ { path: '/Amis2', component: () => import('@vue2-client/pages/AMisDemo/AMisDemo2') },
13
+ { path: '/DynamicStatistics', component: () => import('@vue2-client/pages/DynamicStatistics/index') },
14
+ { path: '/NewDynamicStatistics', component: () => import('@vue2-client/pages/NewDynamicStatistics/index') },
15
+ { path: '/submitTicket', component: () => import('@vue2-client/pages/system/ticket') },
16
+ { path: '/submitTicket/', component: () => import('@vue2-client/pages/system/ticket') }
17
+ // ... 其他路由
18
+ ]
19
+ export default routes
@@ -1,46 +1,46 @@
1
- const TicketDetailsViewApi = {
2
- // 查询:获取工单流转详情
3
- getTicketWorkFlowDetails: '/api/af-system/logic/getTicketWorkFlowDetails',
4
- // 查询:获取工单详情
5
- getTicketDetails: '/api/af-system/logic/getTicketDetails',
6
- // 手动关闭工单
7
- manualCloseTicket: '/api/af-system/logic/manualCloseTicket',
8
- // 转交工单给其他人
9
- transferTicketToOthers: '/api/af-system/logic/transferTicketToOthers',
10
- // 确认工单,开始处理
11
- confirmTicket: '/api/af-system/logic/confirmTicket',
12
- // 查询:获取订单详情用于订单追踪
13
- getTicketDetailsForUploader: '/api/af-system/logic/getTicketDetailsForUploader',
14
- // 更新:将工单优先级增加
15
- rushTicket: '/api/af-system/logic/rushTicket',
16
- // 客户手动关闭工单
17
- manualCloseTicketByCustomer: '/api/af-system/logic/manualCloseTicketByCustomer',
18
- // 在工单提交页面删除照片
19
- revocationImage: '/api/af-system/logic/revocationImage',
20
- // 在工单提交页面删除照片
21
- getTicketImages: '/api/af-system/logic/getTicketImages',
22
- // 用户填写附加信息时取消了操作,将已上传的照片清空
23
- removeAllImages: '/api/af-system/logic/removeAllImages',
24
- // 提交用户填写附加信息
25
- AddonDescriptionToTicket: '/api/af-system/logic/AddonDescriptionToTicket',
26
- // 获取用户填写附加信息
27
- getAddonDescription: '/api/af-system/logic/getAddonDescription',
28
- // 发起售后工单流程
29
- createTicket: '/api/af-system/logic/createTicket',
30
- // 查询:获取所有员工名,供前端展示备选项
31
- getAllEmployeeName: '/api/af-system/logic/getAllEmployeeName',
32
- // 改变报装进度
33
- updateApplySubState: '/api/af-system/logic/updateApplySubState',
34
- // 保存工作流日志
35
- saveApplyWorkflowLog: '/api/af-system/logic/saveApplyWorkflowLog',
36
- // 完工确认后更改报装状态
37
- afterApplyFinalStepSubmit: '/api/af-system/logic/afterApplyFinalStepSubmit',
38
- // 保存用户每一步输入的表单内容
39
- saveApplyStepFormData: '/api/af-system/logic/saveApplyStepFormData',
40
- // 用户点击 回退/提交 修改工单状态
41
- clientSubmit: '/api/af-system/logic/clientSubmit',
42
- // 获取已经完成步骤的用户填写数据
43
- getApplyCompletedStepData: '/api/af-system/logic/getApplyCompletedStepData',
44
- }
45
-
46
- export { TicketDetailsViewApi }
1
+ const TicketDetailsViewApi = {
2
+ // 查询:获取工单流转详情
3
+ getTicketWorkFlowDetails: '/api/af-system/logic/getTicketWorkFlowDetails',
4
+ // 查询:获取工单详情
5
+ getTicketDetails: '/api/af-system/logic/getTicketDetails',
6
+ // 手动关闭工单
7
+ manualCloseTicket: '/api/af-system/logic/manualCloseTicket',
8
+ // 转交工单给其他人
9
+ transferTicketToOthers: '/api/af-system/logic/transferTicketToOthers',
10
+ // 确认工单,开始处理
11
+ confirmTicket: '/api/af-system/logic/confirmTicket',
12
+ // 查询:获取订单详情用于订单追踪
13
+ getTicketDetailsForUploader: '/api/af-system/logic/getTicketDetailsForUploader',
14
+ // 更新:将工单优先级增加
15
+ rushTicket: '/api/af-system/logic/rushTicket',
16
+ // 客户手动关闭工单
17
+ manualCloseTicketByCustomer: '/api/af-system/logic/manualCloseTicketByCustomer',
18
+ // 在工单提交页面删除照片
19
+ revocationImage: '/api/af-system/logic/revocationImage',
20
+ // 在工单提交页面删除照片
21
+ getTicketImages: '/api/af-system/logic/getTicketImages',
22
+ // 用户填写附加信息时取消了操作,将已上传的照片清空
23
+ removeAllImages: '/api/af-system/logic/removeAllImages',
24
+ // 提交用户填写附加信息
25
+ AddonDescriptionToTicket: '/api/af-system/logic/AddonDescriptionToTicket',
26
+ // 获取用户填写附加信息
27
+ getAddonDescription: '/api/af-system/logic/getAddonDescription',
28
+ // 发起售后工单流程
29
+ createTicket: '/api/af-system/logic/createTicket',
30
+ // 查询:获取所有员工名,供前端展示备选项
31
+ getAllEmployeeName: '/api/af-system/logic/getAllEmployeeName',
32
+ // 改变报装进度
33
+ updateApplySubState: '/api/af-system/logic/updateApplySubState',
34
+ // 保存工作流日志
35
+ saveApplyWorkflowLog: '/api/af-system/logic/saveApplyWorkflowLog',
36
+ // 完工确认后更改报装状态
37
+ afterApplyFinalStepSubmit: '/api/af-system/logic/afterApplyFinalStepSubmit',
38
+ // 保存用户每一步输入的表单内容
39
+ saveApplyStepFormData: '/api/af-system/logic/saveApplyStepFormData',
40
+ // 用户点击 回退/提交 修改工单状态
41
+ clientSubmit: '/api/af-system/logic/clientSubmit',
42
+ // 获取已经完成步骤的用户填写数据
43
+ getApplyCompletedStepData: '/api/af-system/logic/getApplyCompletedStepData',
44
+ }
45
+
46
+ export { TicketDetailsViewApi }