agilebuilder-ui 1.0.74 → 1.0.76
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.
- package/lib/super-ui.css +1 -1
- package/lib/super-ui.js +5672 -5557
- package/lib/super-ui.umd.cjs +61 -61
- package/package.json +2 -1
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-app.vue +1 -0
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-input.vue +32 -1
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload.vue +10 -4
- package/packages/fs-upload-new/src/fs-upload-new.vue +65 -0
- package/packages/super-grid/src/custom-formatter.js +1 -0
- package/packages/super-grid/src/super-grid.vue +2 -2
- package/src/permission.js +108 -122
- package/src/store/modules/user.js +2 -0
- package/src/styles/theme/dark-blue/sidebar.scss +10 -0
- package/src/styles/theme/green/sidebar.scss +10 -1
- package/src/styles/theme/ocean-blue/sidebar.scss +10 -0
- package/src/utils/common-util.js +112 -23
- package/src/utils/i18n-util.js +141 -0
- package/src/utils/jump-page-utils.js +7 -1
- package/src/views/layout/Layout.vue +0 -37
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agilebuilder-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.76",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "./lib/super-ui.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@element-plus/icons-vue": "^2.1.0",
|
|
27
27
|
"@vitejs/plugin-vue": "^4.2.3",
|
|
28
|
+
"axios": "^1.5.1",
|
|
28
29
|
"element-plus": "^2.4.1",
|
|
29
30
|
"nprogress": "^0.2.0",
|
|
30
31
|
"sass": "^1.69.4",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
@close="annexUploadFlag=false"
|
|
22
22
|
>
|
|
23
23
|
<FileUploadMobile
|
|
24
|
+
ref="fileUploadRef"
|
|
24
25
|
:disabled="disabled"
|
|
25
26
|
:fileInfo="fileInfo"
|
|
26
27
|
:systemCode="systemCode"
|
|
@@ -40,6 +41,11 @@
|
|
|
40
41
|
:pageContext="pageContext"
|
|
41
42
|
:configure="configure"
|
|
42
43
|
:openFsUpload="openFsUpload"
|
|
44
|
+
:componentId="componentId"
|
|
45
|
+
:componentName="componentName"
|
|
46
|
+
:listCode="listCode"
|
|
47
|
+
:options="options"
|
|
48
|
+
:openCameraOrChoosePhoto="openCameraOrChoosePhoto"
|
|
43
49
|
@uploadend="uploadendMobile"
|
|
44
50
|
@remove="removeMobileFile"
|
|
45
51
|
/>
|
|
@@ -186,7 +192,7 @@ const openAnnexUpload = ()=>{
|
|
|
186
192
|
|
|
187
193
|
function uploadendMobile(fileList) {
|
|
188
194
|
const fileServerPaths = Array.from(props.fileList,({serverPath})=>serverPath)
|
|
189
|
-
|
|
195
|
+
console.log('uploadendMobile---props.fileList=', JSON.stringify(props.fileList),'fileServerPaths=',fileServerPaths, 'fileList=', JSON.stringify(fileList))
|
|
190
196
|
fileList.forEach(file=>{
|
|
191
197
|
// 如果已经存在就不要重复添加到fileList中了
|
|
192
198
|
if(fileServerPaths.indexOf(file.serverPath) < 0){
|
|
@@ -196,7 +202,9 @@ function uploadendMobile(fileList) {
|
|
|
196
202
|
})
|
|
197
203
|
}
|
|
198
204
|
})
|
|
205
|
+
console.log('uploadendMobile2222---props.fileList=', JSON.stringify(props.fileList),'fileServerPaths=',fileServerPaths, 'fileList=', JSON.stringify(fileList))
|
|
199
206
|
fileNames.value =props.fileList.map((item: any) => item.showName).join(',')
|
|
207
|
+
console.log('uploadendMobile3333---fileNames.value=', fileNames.value)
|
|
200
208
|
props.onSuccess()
|
|
201
209
|
}
|
|
202
210
|
|
|
@@ -215,6 +223,29 @@ function removeMobileFile(param) {
|
|
|
215
223
|
props.onRemove()
|
|
216
224
|
}
|
|
217
225
|
|
|
226
|
+
const userAgent = ref(null)
|
|
227
|
+
const fileUploadRef = ref(null)
|
|
228
|
+
const userAgentOrg = navigator.userAgent
|
|
229
|
+
if (userAgentOrg.indexOf(' uni-app ') > 0) {
|
|
230
|
+
// 表示uni-app中访问的
|
|
231
|
+
userAgent.value = 'app'
|
|
232
|
+
} else {
|
|
233
|
+
// 表示手机浏览器访问的
|
|
234
|
+
userAgent.value = 'browser'
|
|
235
|
+
}
|
|
236
|
+
// 移动端选择文件结束
|
|
237
|
+
function pickFileDone(data) {
|
|
238
|
+
if (userAgent.value === 'app') {
|
|
239
|
+
fileUploadRef.value.pickFileDone(data)
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// 移动端上传文件结束
|
|
243
|
+
function uploadFileDone(data) {
|
|
244
|
+
if (userAgent.value === 'app') {
|
|
245
|
+
fileUploadRef.value.uploadFileDone(data)
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
defineExpose({pickFileDone,uploadFileDone})
|
|
218
249
|
</script>
|
|
219
250
|
|
|
220
251
|
<style lang="scss" scoped></style>
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
:file-list="fileList"
|
|
7
7
|
:multiple="multiple"
|
|
8
8
|
:disabled="disabled"
|
|
9
|
-
:open-camera-or-choose-photo="openCameraOrChoosePhoto"
|
|
10
|
-
:options="options"
|
|
11
9
|
:fileInfo="fileInfo"
|
|
12
10
|
:systemCode="systemCode"
|
|
13
11
|
:accept="accept"
|
|
@@ -24,6 +22,11 @@
|
|
|
24
22
|
:pageContext="pageContext"
|
|
25
23
|
:configure="configure"
|
|
26
24
|
:openFsUpload="openFsUpload"
|
|
25
|
+
:componentId="componentId"
|
|
26
|
+
:componentName="componentName"
|
|
27
|
+
:listCode="listCode"
|
|
28
|
+
:options="options"
|
|
29
|
+
:openCameraOrChoosePhoto="openCameraOrChoosePhoto"
|
|
27
30
|
@uploadend="uploadedFile"
|
|
28
31
|
@remove="removeFile"
|
|
29
32
|
/>
|
|
@@ -33,8 +36,6 @@
|
|
|
33
36
|
:file-list="fileList"
|
|
34
37
|
:multiple="multiple"
|
|
35
38
|
:disabled="disabled"
|
|
36
|
-
:open-camera-or-choose-photo="openCameraOrChoosePhoto"
|
|
37
|
-
:options="options"
|
|
38
39
|
:fileInfo="fileInfo"
|
|
39
40
|
:systemCode="systemCode"
|
|
40
41
|
:accept="accept"
|
|
@@ -51,6 +52,11 @@
|
|
|
51
52
|
:pageContext="pageContext"
|
|
52
53
|
:configure="configure"
|
|
53
54
|
:openFsUpload="openFsUpload"
|
|
55
|
+
:componentId="componentId"
|
|
56
|
+
:componentName="componentName"
|
|
57
|
+
:listCode="listCode"
|
|
58
|
+
:options="options"
|
|
59
|
+
:openCameraOrChoosePhoto="openCameraOrChoosePhoto"
|
|
54
60
|
@uploadend="uploadedFile"
|
|
55
61
|
@remove="removeFile"
|
|
56
62
|
/>
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
/>
|
|
57
57
|
<FileUploadInputMobile
|
|
58
58
|
v-else-if="isMobile && displayType === 'input'"
|
|
59
|
+
ref="fileUploadRef"
|
|
59
60
|
:disabled="disabled"
|
|
60
61
|
:fileInfo="fileInfo"
|
|
61
62
|
:systemCode="systemCode"
|
|
@@ -75,8 +76,14 @@
|
|
|
75
76
|
:pageContext="pageContext"
|
|
76
77
|
:configure="configure"
|
|
77
78
|
:openFsUpload="openFsUpload"
|
|
79
|
+
:componentId="componentId"
|
|
80
|
+
:componentName="componentName"
|
|
81
|
+
:listCode="listCode"
|
|
82
|
+
:options="options"
|
|
83
|
+
:openCameraOrChoosePhoto="openCameraOrChoosePhoto"
|
|
78
84
|
/>
|
|
79
85
|
<FileUploadMobile v-else-if="isMobile"
|
|
86
|
+
ref="fileUploadRef"
|
|
80
87
|
:disabled="disabled"
|
|
81
88
|
:fileInfo="fileInfo"
|
|
82
89
|
:systemCode="systemCode"
|
|
@@ -96,6 +103,11 @@
|
|
|
96
103
|
:pageContext="pageContext"
|
|
97
104
|
:configure="configure"
|
|
98
105
|
:openFsUpload="openFsUpload"
|
|
106
|
+
:componentId="componentId"
|
|
107
|
+
:componentName="componentName"
|
|
108
|
+
:listCode="listCode"
|
|
109
|
+
:options="options"
|
|
110
|
+
:openCameraOrChoosePhoto="openCameraOrChoosePhoto"
|
|
99
111
|
@uploadend="uploadendMobile"
|
|
100
112
|
@remove="removeMobileFile"
|
|
101
113
|
/>
|
|
@@ -193,6 +205,34 @@ const props = defineProps({
|
|
|
193
205
|
configure: {
|
|
194
206
|
type: Object,
|
|
195
207
|
default: () => ({})
|
|
208
|
+
},
|
|
209
|
+
// 组件id,在表单或列表中应该唯一,一般传字段名即可
|
|
210
|
+
componentId: {
|
|
211
|
+
type: String,
|
|
212
|
+
default: function () {
|
|
213
|
+
return 'file-upload'
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
// 组件名称,一般是字段label
|
|
217
|
+
componentName: {
|
|
218
|
+
type: String,
|
|
219
|
+
default: function () {
|
|
220
|
+
return 'file-upload'
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
options: {
|
|
224
|
+
type: Object,
|
|
225
|
+
default: null
|
|
226
|
+
},
|
|
227
|
+
// 列表编码
|
|
228
|
+
listCode: {
|
|
229
|
+
type: String,
|
|
230
|
+
default: null
|
|
231
|
+
},
|
|
232
|
+
// 打开相机和相册选项,默认是都可以打开
|
|
233
|
+
openCameraOrChoosePhoto: {
|
|
234
|
+
type: String,
|
|
235
|
+
default: 'openCameraAndChoosePhoto'
|
|
196
236
|
}
|
|
197
237
|
})
|
|
198
238
|
const isMobile = ref(isMobileBrowser())
|
|
@@ -259,4 +299,29 @@ function removeMobileFile(param) {
|
|
|
259
299
|
}
|
|
260
300
|
props.onRemove()
|
|
261
301
|
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
const userAgent = ref(null)
|
|
305
|
+
const fileUploadRef = ref(null)
|
|
306
|
+
const userAgentOrg = navigator.userAgent
|
|
307
|
+
if (userAgentOrg.indexOf(' uni-app ') > 0) {
|
|
308
|
+
// 表示uni-app中访问的
|
|
309
|
+
userAgent.value = 'app'
|
|
310
|
+
} else {
|
|
311
|
+
// 表示手机浏览器访问的
|
|
312
|
+
userAgent.value = 'browser'
|
|
313
|
+
}
|
|
314
|
+
// 移动端选择文件结束
|
|
315
|
+
function pickFileDone(data) {
|
|
316
|
+
if (userAgent.value === 'app') {
|
|
317
|
+
fileUploadRef.value.pickFileDone(data)
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// 移动端上传文件结束
|
|
321
|
+
function uploadFileDone(data) {
|
|
322
|
+
if (userAgent.value === 'app') {
|
|
323
|
+
fileUploadRef.value.uploadFileDone(data)
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
defineExpose({pickFileDone,uploadFileDone})
|
|
262
327
|
</script>
|
|
@@ -2965,14 +2965,14 @@ export default {
|
|
|
2965
2965
|
const popPageSetting = openPageParams
|
|
2966
2966
|
if(this.pageContext){
|
|
2967
2967
|
// 新页面设计组件中弹框或刷新区域时
|
|
2968
|
-
|
|
2968
|
+
const isMobile = this.isMobile
|
|
2969
|
+
if (jumpMode === 'popup' || jumpMode === 'refresh' || (isMobile && jumpMode === 'newTab')) {
|
|
2969
2970
|
// 弹出页面
|
|
2970
2971
|
const gridParams = store.get(this.code)
|
|
2971
2972
|
this.jumpPageSetting = popPageSetting
|
|
2972
2973
|
const isSubTableShowPage = gridParams.isSubTableShowPage
|
|
2973
2974
|
// 每页显示多少条
|
|
2974
2975
|
const pageSize = gridParams.pagination && gridParams.pagination.pageSize
|
|
2975
|
-
const isMobile = this.isMobile
|
|
2976
2976
|
const row = popPageSetting.row
|
|
2977
2977
|
const eventParams = {
|
|
2978
2978
|
position: popPageSetting._position,
|
package/src/permission.js
CHANGED
|
@@ -8,17 +8,17 @@ import { ElMessage as Message } from 'element-plus'
|
|
|
8
8
|
import * as Vue from 'vue'
|
|
9
9
|
import authApi from './utils/auth-api'
|
|
10
10
|
|
|
11
|
-
import {cacheAllLanguagesUtil, getLocaleByLang, cacheCurrentLanguageUtil} from './utils/common-util'
|
|
11
|
+
import { cacheAllLanguagesUtil, getLocaleByLang, cacheCurrentLanguageUtil } from './utils/common-util'
|
|
12
12
|
|
|
13
13
|
// 首次加载业务系统时,获得用户的语言
|
|
14
14
|
function initUserLanguage() {
|
|
15
15
|
return new Promise((resolve, reject) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
cacheCurrentLanguageUtil(window.$http).then((lang) => {
|
|
17
|
+
const locale = getLocaleByLang(lang)
|
|
18
|
+
// i18n.locale = locale // 关键语句
|
|
19
|
+
window.$locale = locale
|
|
20
|
+
resolve()
|
|
21
|
+
})
|
|
22
22
|
})
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -27,13 +27,7 @@ function cacheAllLanguages() {
|
|
|
27
27
|
return cacheAllLanguagesUtil(window.$http)
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const whiteList = [
|
|
31
|
-
'/login',
|
|
32
|
-
'/update-password',
|
|
33
|
-
'/forget-password',
|
|
34
|
-
'/reset-password',
|
|
35
|
-
'/redirect',
|
|
36
|
-
] // 不重定向白名单
|
|
30
|
+
const whiteList = ['/login', '/update-password', '/forget-password', '/reset-password', '/redirect'] // 不重定向白名单
|
|
37
31
|
|
|
38
32
|
let devpJWTKey = '_devpJWT'
|
|
39
33
|
let runDevpJWTKey = '_runDevpJWT'
|
|
@@ -59,12 +53,12 @@ router.beforeEach((to, from, next) => {
|
|
|
59
53
|
let token
|
|
60
54
|
// 是否是开发环境功能
|
|
61
55
|
let isDevp = isDevpSystem()
|
|
62
|
-
if(authApi.getSessionCache(runDevpJWTKey)) {
|
|
56
|
+
if (authApi.getSessionCache(runDevpJWTKey)) {
|
|
63
57
|
// setToken(authApi.getSessionCache(runDevpJWTKey))
|
|
64
58
|
token = authApi.getSessionCache(runDevpJWTKey)
|
|
65
59
|
console.log('router.beforeEach-authApi.getSessionCache(_runDevpJWT)=', authApi.getSessionCache(runDevpJWTKey))
|
|
66
60
|
}
|
|
67
|
-
if(!token) {
|
|
61
|
+
if (!token) {
|
|
68
62
|
token = getToken()
|
|
69
63
|
}
|
|
70
64
|
console.log('router.beforeEach-token=', token)
|
|
@@ -83,10 +77,15 @@ router.beforeEach((to, from, next) => {
|
|
|
83
77
|
setToken(token)
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
|
-
if (to.query
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
80
|
+
// if (to.query) {
|
|
81
|
+
// if (to.query._systemName_) {
|
|
82
|
+
// window.top.document.title = to.query._systemName_
|
|
83
|
+
// }
|
|
84
|
+
// if (to.query.customSystem) {
|
|
85
|
+
// window.$vueApp.config.globalProperties.currentSystem = to.query.customSystem
|
|
86
|
+
// }
|
|
87
|
+
// // 表示需要设置浏览器页签名
|
|
88
|
+
// }
|
|
90
89
|
// console.log('router.beforeEach-getToken()=', token)
|
|
91
90
|
// 表示需要显示菜单。为了控制是否需要走获得有权限的菜单集合的接口。单点登录跳转到表单页面时不需要请求菜单,提高页面显示速度。
|
|
92
91
|
let isNeedMenu
|
|
@@ -100,14 +99,9 @@ router.beforeEach((to, from, next) => {
|
|
|
100
99
|
}
|
|
101
100
|
console.log('iMatrix-router.beforeEach2-isNeedMenu==', isNeedMenu)
|
|
102
101
|
if (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
'/reset-password',
|
|
107
|
-
'/redirect',
|
|
108
|
-
].indexOf(to.path) === -1 ||
|
|
109
|
-
store.getters.whiteList.indexOf(to.path) !== -1) &&
|
|
110
|
-
token
|
|
102
|
+
(['/update-password', '/forget-password', '/reset-password', '/redirect'].indexOf(to.path) === -1 ||
|
|
103
|
+
store.getters.whiteList.indexOf(to.path) !== -1) &&
|
|
104
|
+
token
|
|
111
105
|
) {
|
|
112
106
|
if (to.path === '/login') {
|
|
113
107
|
next({ path: '/', query: to.query })
|
|
@@ -115,104 +109,99 @@ router.beforeEach((to, from, next) => {
|
|
|
115
109
|
} else {
|
|
116
110
|
console.log('router.beforeEach-to.path!=login')
|
|
117
111
|
if (store.getters.name === '') {
|
|
112
|
+
if (to.query) {
|
|
113
|
+
if (to.query._systemName_) {
|
|
114
|
+
window.top.document.title = to.query._systemName_
|
|
115
|
+
}
|
|
116
|
+
if (to.query.customSystem && to.query.customSystem !== 'undefined' && to.query.customSystem !== 'null') {
|
|
117
|
+
window.$vueApp.config.globalProperties.currentSystem = to.query.customSystem
|
|
118
|
+
}
|
|
119
|
+
// 表示需要设置浏览器页签名
|
|
120
|
+
}
|
|
118
121
|
// 表示刷新了页面(例如点击了一级菜单)后,会重新走该方法
|
|
119
122
|
console.log('router.beforeEach-store.getters.name === ""')
|
|
120
123
|
store
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
})
|
|
136
|
-
})
|
|
137
|
-
}).then((user)=>{
|
|
138
|
-
return new Promise((resolve, reject) => {
|
|
139
|
-
cacheAllLanguages().then(()=>{
|
|
140
|
-
resolve(user)
|
|
141
|
-
})
|
|
142
|
-
})
|
|
143
|
-
}).then((user)=>{
|
|
144
|
-
console.log('router.beforeEach-getCurrentUser')
|
|
145
|
-
const devpRoleCodes = authApi.getSessionCache(runCurrentRoleKey)
|
|
146
|
-
if(!isDevp && devpRoleCodes){
|
|
147
|
-
// 表示是开发环境设计时生成的运行平台的JWT,且缓存了项目权限编码,对应运行平台的岗位编码
|
|
148
|
-
// console.log('开发环境设计时生成的运行平台的JWT,且缓存了项目权限编码时,!isDevp && devpRoleCodes')
|
|
149
|
-
return store.dispatch(
|
|
150
|
-
'getDevPlatformPermissions',
|
|
151
|
-
devpRoleCodes
|
|
152
|
-
)
|
|
153
|
-
} else {
|
|
154
|
-
// 开发平台本身的功能或直接平台功能时
|
|
155
|
-
// console.log('开发平台本身的功能或直接平台功能时')
|
|
156
|
-
return store.dispatch(
|
|
157
|
-
'getCurrentUserPermissions',
|
|
158
|
-
user.loginName
|
|
159
|
-
)
|
|
160
|
-
}
|
|
161
|
-
})
|
|
162
|
-
.then((permissions) => {
|
|
163
|
-
return store.dispatch('generateRoutes', permissions)
|
|
164
|
-
})
|
|
165
|
-
.then(() => {
|
|
166
|
-
if (isNeedMenu) {
|
|
167
|
-
// 需要显示左侧菜单 并 不是开发平台时,开发平台的菜单需要在设计项目时获得
|
|
168
|
-
console.log('iMatrix-router.beforeEach2-getPermissionMenus')
|
|
169
|
-
return store.dispatch('getPermissionMenus', window.$vueApp.config.globalProperties.currentSystem)
|
|
170
|
-
} else {
|
|
171
|
-
return new Promise((resolve, reject) => {
|
|
172
|
-
resolve()
|
|
173
|
-
})
|
|
174
|
-
}
|
|
124
|
+
.dispatch('isLoginTimeOut')
|
|
125
|
+
.then((result) => {
|
|
126
|
+
if (result === true) {
|
|
127
|
+
store.dispatch('clearToken').then(() => {
|
|
128
|
+
next({ path: '/', replace: true })
|
|
129
|
+
NProgress.done()
|
|
130
|
+
})
|
|
131
|
+
} else {
|
|
132
|
+
store
|
|
133
|
+
.dispatch('getCurrentUser')
|
|
134
|
+
.then((user) => {
|
|
135
|
+
return new Promise((resolve, reject) => {
|
|
136
|
+
initUserLanguage().then(() => {
|
|
137
|
+
resolve(user)
|
|
175
138
|
})
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
from
|
|
183
|
-
)
|
|
184
|
-
store.getters.protectedRouters.forEach(item =>{
|
|
185
|
-
router.addRoute(item)
|
|
186
|
-
})
|
|
187
|
-
// 404等错误路由一定要放到受权限保护的路由之后
|
|
188
|
-
// router.addRoutes(errorRouterMap)
|
|
189
|
-
window.sessionStorage.setItem(
|
|
190
|
-
new Date().getTime() + '-name=null-from~~toPath',
|
|
191
|
-
from.path + '~~' + to.path
|
|
192
|
-
)
|
|
193
|
-
next({ ...to, replace: true })
|
|
139
|
+
})
|
|
140
|
+
})
|
|
141
|
+
.then((user) => {
|
|
142
|
+
return new Promise((resolve, reject) => {
|
|
143
|
+
cacheAllLanguages().then(() => {
|
|
144
|
+
resolve(user)
|
|
194
145
|
})
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
146
|
+
})
|
|
147
|
+
})
|
|
148
|
+
.then((user) => {
|
|
149
|
+
console.log('router.beforeEach-getCurrentUser')
|
|
150
|
+
const devpRoleCodes = authApi.getSessionCache(runCurrentRoleKey)
|
|
151
|
+
if (!isDevp && devpRoleCodes) {
|
|
152
|
+
// 表示是开发环境设计时生成的运行平台的JWT,且缓存了项目权限编码,对应运行平台的岗位编码
|
|
153
|
+
// console.log('开发环境设计时生成的运行平台的JWT,且缓存了项目权限编码时,!isDevp && devpRoleCodes')
|
|
154
|
+
return store.dispatch('getDevPlatformPermissions', devpRoleCodes)
|
|
155
|
+
} else {
|
|
156
|
+
// 开发平台本身的功能或直接平台功能时
|
|
157
|
+
// console.log('开发平台本身的功能或直接平台功能时')
|
|
158
|
+
return store.dispatch('getCurrentUserPermissions', user.loginName)
|
|
159
|
+
}
|
|
160
|
+
})
|
|
161
|
+
.then((permissions) => {
|
|
162
|
+
return store.dispatch('generateRoutes', permissions)
|
|
163
|
+
})
|
|
164
|
+
.then(() => {
|
|
165
|
+
if (isNeedMenu) {
|
|
166
|
+
// 需要显示左侧菜单 并 不是开发平台时,开发平台的菜单需要在设计项目时获得
|
|
167
|
+
console.log('iMatrix-router.beforeEach2-getPermissionMenus')
|
|
168
|
+
return store.dispatch('getPermissionMenus', window.$vueApp.config.globalProperties.currentSystem)
|
|
169
|
+
} else {
|
|
170
|
+
return new Promise((resolve, reject) => {
|
|
171
|
+
resolve()
|
|
202
172
|
})
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
173
|
+
}
|
|
174
|
+
})
|
|
175
|
+
.then(() => {
|
|
176
|
+
// 根据roles权限生成可访问的路由表
|
|
177
|
+
console.log('router.beforeEach-generateRoutes==to=', to, ',from=', from)
|
|
178
|
+
store.getters.protectedRouters.forEach((item) => {
|
|
179
|
+
router.addRoute(item)
|
|
180
|
+
})
|
|
181
|
+
// 404等错误路由一定要放到受权限保护的路由之后
|
|
182
|
+
// router.addRoutes(errorRouterMap)
|
|
183
|
+
window.sessionStorage.setItem(
|
|
184
|
+
new Date().getTime() + '-name=null-from~~toPath',
|
|
185
|
+
from.path + '~~' + to.path
|
|
186
|
+
)
|
|
187
|
+
next({ ...to, replace: true })
|
|
188
|
+
})
|
|
189
|
+
.catch((err) => {
|
|
190
|
+
store.dispatch('clearToken').then(() => {
|
|
191
|
+
Message.error(err || 'Verification failed, please login again')
|
|
192
|
+
next({ path: '/' })
|
|
193
|
+
})
|
|
194
|
+
})
|
|
195
|
+
}
|
|
196
|
+
})
|
|
197
|
+
.catch((err) => {
|
|
198
|
+
store.dispatch('clearToken').then(() => {
|
|
199
|
+
Message.error(err || 'Verification failed, please login again')
|
|
200
|
+
next({ path: '/' })
|
|
210
201
|
})
|
|
202
|
+
})
|
|
211
203
|
} else {
|
|
212
|
-
console.log(
|
|
213
|
-
'router.beforeEach-store.getters.name ==',
|
|
214
|
-
store.getters.name
|
|
215
|
-
)
|
|
204
|
+
console.log('router.beforeEach-store.getters.name ==', store.getters.name)
|
|
216
205
|
if (isNeedMenu) {
|
|
217
206
|
// 需要显示左侧菜单
|
|
218
207
|
let systemCode = window.$vueApp.config.globalProperties.currentSystem
|
|
@@ -228,10 +217,7 @@ router.beforeEach((to, from, next) => {
|
|
|
228
217
|
}
|
|
229
218
|
}
|
|
230
219
|
} else {
|
|
231
|
-
if (
|
|
232
|
-
whiteList.indexOf(to.path) !== -1 ||
|
|
233
|
-
store.getters.whiteList.indexOf(to.path) !== -1
|
|
234
|
-
) {
|
|
220
|
+
if (whiteList.indexOf(to.path) !== -1 || store.getters.whiteList.indexOf(to.path) !== -1) {
|
|
235
221
|
next()
|
|
236
222
|
} else {
|
|
237
223
|
// 必须使用to.fullPath,fullPath是带有参数的,to.path没有参数,会导致跳转到的页面参数丢失
|
|
@@ -81,6 +81,7 @@ const user = {
|
|
|
81
81
|
},
|
|
82
82
|
// 登录
|
|
83
83
|
loginWithValidateCode({ commit }, userInfo) {
|
|
84
|
+
console.log('loginWithValidateCode----userInfo=', userInfo)
|
|
84
85
|
const username = userInfo.username.trim()
|
|
85
86
|
return new Promise((resolve, reject) => {
|
|
86
87
|
ssoService
|
|
@@ -92,6 +93,7 @@ const user = {
|
|
|
92
93
|
userInfo.imageCodeKey
|
|
93
94
|
)
|
|
94
95
|
.then((data) => {
|
|
96
|
+
console.log('loginWithValidateCode2222----data=', data)
|
|
95
97
|
// const data = response.data
|
|
96
98
|
setToken(data.jwt)
|
|
97
99
|
setLanguage(data.language)
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
.el-menu-item{
|
|
289
|
-
color:
|
|
289
|
+
color: #FFFFFF;
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
.el-menu-item:hover{
|
|
@@ -320,4 +320,13 @@
|
|
|
320
320
|
color: #FFFFFF;
|
|
321
321
|
background-color: $--menu-hove-background-color;
|
|
322
322
|
}
|
|
323
|
+
运行时工具栏样式
|
|
324
|
+
.amb-widget-tools-parent{
|
|
325
|
+
margin-bottom: 20px;
|
|
326
|
+
}
|
|
327
|
+
.amb-widget-container-tool{
|
|
328
|
+
display: flex;
|
|
329
|
+
overflow-x: auto;
|
|
330
|
+
padding: 10px 0;
|
|
331
|
+
}
|
|
323
332
|
}
|
|
@@ -276,4 +276,14 @@
|
|
|
276
276
|
.el-sub-menu__title:hover{
|
|
277
277
|
background-color: $--menu-hove-background-color;
|
|
278
278
|
}
|
|
279
|
+
|
|
280
|
+
运行时工具栏样式
|
|
281
|
+
.amb-widget-tools-parent{
|
|
282
|
+
margin-bottom: 20px;
|
|
283
|
+
}
|
|
284
|
+
.amb-widget-container-tool{
|
|
285
|
+
display: flex;
|
|
286
|
+
overflow-x: auto;
|
|
287
|
+
padding: 10px 0;
|
|
288
|
+
}
|
|
279
289
|
}
|