agilebuilder-ui 1.0.69 → 1.0.71
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 +26046 -25713
- package/lib/super-ui.umd.cjs +58 -58
- package/package.json +1 -1
- package/packages/department-tree/src/department-tree.vue +28 -10
- package/packages/department-tree-mobile/src/department-tree-app.vue +6 -6
- package/packages/department-user-tree/src/department-user-tree.vue +16 -2
- package/packages/department-user-tree-mobile/src/department-user-tree-app.vue +6 -6
- package/packages/fs-upload-new/src/fs-button-upload.vue +8 -12
- package/packages/fs-upload-new/src/fs-drag-upload.vue +2 -2
- package/packages/fs-upload-new/src/fs-preview-new.vue +77 -27
- package/packages/super-grid/src/apis.js +6 -6
- package/packages/super-grid/src/custom-formatter.js +2 -1
- package/packages/super-grid/src/search-button.vue +18 -14
- package/packages/super-grid/src/search-form-mobile.vue +250 -0
- package/packages/super-grid/src/search-form.vue +159 -82
- package/packages/super-grid/src/super-grid.vue +21 -5
- package/src/api/sso-service.js +25 -14
- package/src/i18n/langs/cn.js +2 -1
- package/src/i18n/langs/en.js +2 -1
- package/src/styles/theme/green/sidebar.scss +12 -1
- package/src/utils/common-util.js +142 -111
- package/src/utils/jump-page-utils.js +34 -13
- package/src/utils/permissionAuth.js +47 -8
- package/src/utils/util.js +1 -1
package/src/api/sso-service.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import request from '../utils/request'
|
|
2
2
|
import {getLanguage, getTheme} from '../utils/auth'
|
|
3
3
|
import * as Vue from 'vue'
|
|
4
|
+
import { isMobileBrowser } from '../utils/common-util'
|
|
4
5
|
function login(username, password, language) {
|
|
5
6
|
const usernamePasswordToken = {
|
|
6
7
|
username,
|
|
@@ -60,22 +61,26 @@ function logout() {
|
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
function getCurrentUserPermissionsBySystem(loginName, systemCode) {
|
|
63
|
-
if
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
if(isMobileBrowser()){
|
|
65
|
+
return getCurrentUserMobilePermissions(loginName)
|
|
66
|
+
} else {
|
|
67
|
+
if (!systemCode) {
|
|
68
|
+
if (window.$vueApp.config.globalProperties.customSystem) {
|
|
69
|
+
systemCode = window.$vueApp.config.globalProperties.customSystem
|
|
70
|
+
} else {
|
|
71
|
+
systemCode = window.$vueApp.config.globalProperties.systemCode
|
|
72
|
+
}
|
|
68
73
|
}
|
|
74
|
+
return request.get(
|
|
75
|
+
window.$vueApp.config.globalProperties.baseAPI +
|
|
76
|
+
'/sso/current-users/permissions/with-system?loginName=' +
|
|
77
|
+
encodeURI(loginName) +
|
|
78
|
+
'&systemCode=' +
|
|
79
|
+
systemCode +
|
|
80
|
+
'&_t=' +
|
|
81
|
+
new Date().getTime()
|
|
82
|
+
)
|
|
69
83
|
}
|
|
70
|
-
return request.get(
|
|
71
|
-
window.$vueApp.config.globalProperties.baseAPI +
|
|
72
|
-
'/sso/current-users/permissions/with-system?loginName=' +
|
|
73
|
-
encodeURI(loginName) +
|
|
74
|
-
'&systemCode=' +
|
|
75
|
-
systemCode +
|
|
76
|
-
'&_t=' +
|
|
77
|
-
new Date().getTime()
|
|
78
|
-
)
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
function isPasswordExpired(username, password) {
|
|
@@ -212,6 +217,12 @@ function getDevPlatformPermissions(roleCodes) {
|
|
|
212
217
|
)
|
|
213
218
|
}
|
|
214
219
|
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
function getCurrentUserMobilePermissions (loginName) {
|
|
223
|
+
return request.get(Vue.prototype.baseAPI + '/sso/current-users/mobile-permissions?loginName=' + encodeURI(loginName) + '&_t=' + new Date().getTime())
|
|
224
|
+
}
|
|
225
|
+
|
|
215
226
|
export default {
|
|
216
227
|
login,
|
|
217
228
|
getCurrentUser,
|
package/src/i18n/langs/cn.js
CHANGED
|
@@ -81,7 +81,8 @@ const cn = {
|
|
|
81
81
|
asyncExport: '正在异步导出,请等待消息通知!',
|
|
82
82
|
selectedWorkingGroup: '已选工作组',
|
|
83
83
|
forbiddenExceptionLinkUrl: '请点击进行权限申请',
|
|
84
|
-
forbiddenExceptionLinkUser: '如有疑问请联系'
|
|
84
|
+
forbiddenExceptionLinkUser: '如有疑问请联系',
|
|
85
|
+
uploadFileTip: '上传的文件不超过{fileSize}M'
|
|
85
86
|
},
|
|
86
87
|
// 列表组件
|
|
87
88
|
superGrid: {
|
package/src/i18n/langs/en.js
CHANGED
|
@@ -83,7 +83,8 @@ const en = {
|
|
|
83
83
|
asyncExport: 'Asynchronous export, please wait for message notification!',
|
|
84
84
|
selectedWorkingGroup: 'Selected working group',
|
|
85
85
|
forbiddenExceptionLinkUrl: 'please click to apply',
|
|
86
|
-
forbiddenExceptionLinkUser: 'if you have any questions,please contact'
|
|
86
|
+
forbiddenExceptionLinkUser: 'if you have any questions,please contact',
|
|
87
|
+
uploadFileTip: 'The file size should lower {fileSize}M'
|
|
87
88
|
},
|
|
88
89
|
superGrid: {
|
|
89
90
|
columnConfig: 'Column Config',
|
|
@@ -284,14 +284,25 @@
|
|
|
284
284
|
.router-link-active >.is-active{
|
|
285
285
|
color: $--menu-dont-color;
|
|
286
286
|
}
|
|
287
|
+
|
|
287
288
|
.el-menu-item{
|
|
288
|
-
color:
|
|
289
|
+
color: $--menu-dont-color;
|
|
289
290
|
}
|
|
291
|
+
|
|
290
292
|
.el-menu-item:hover{
|
|
291
293
|
background-color: $--menu-hove-background-color;
|
|
292
294
|
color: #FFFFFF;
|
|
293
295
|
}
|
|
294
296
|
|
|
297
|
+
.el-menu-item.is-active {
|
|
298
|
+
color: $--menu-dont-color;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.el-menu-item.is-active:hover {
|
|
302
|
+
background-color: $--menu-hove-background-color;
|
|
303
|
+
color: #FFFFFF;
|
|
304
|
+
}
|
|
305
|
+
|
|
295
306
|
.el-sub-menu .el-sub-menu__title{
|
|
296
307
|
color: #FFFFFF;
|
|
297
308
|
}
|
package/src/utils/common-util.js
CHANGED
|
@@ -2,6 +2,7 @@ import * as Vue from 'vue'
|
|
|
2
2
|
import authApi from './auth-api'
|
|
3
3
|
import { getToken, getLanguage, getAllLanguages, setAllLanguages } from './auth'
|
|
4
4
|
import { v4 as uuidv4 } from 'uuid'
|
|
5
|
+
import {getCookieCache} from './auth'
|
|
5
6
|
/**
|
|
6
7
|
* 获得相对地址
|
|
7
8
|
*/
|
|
@@ -22,9 +23,7 @@ export function getRelativeBaseUrl(originalBaseUrl) {
|
|
|
22
23
|
if (baseUrls.length >= 3) {
|
|
23
24
|
const baseUrlPrefix = baseUrls[0] + '//' + baseUrls[2]
|
|
24
25
|
// console.log('getRelativeBaseUrl---baseUrlPrefix=',baseUrlPrefix)
|
|
25
|
-
baseUrlSuffix = originalBaseUrl.substring(
|
|
26
|
-
originalBaseUrl.indexOf(baseUrlPrefix) + baseUrlPrefix.length
|
|
27
|
-
)
|
|
26
|
+
baseUrlSuffix = originalBaseUrl.substring(originalBaseUrl.indexOf(baseUrlPrefix) + baseUrlPrefix.length)
|
|
28
27
|
// console.log('getRelativeBaseUrl---baseUrlSuffix=',baseUrlSuffix)
|
|
29
28
|
}
|
|
30
29
|
if (relativeUrl.lastIndexOf('/') === relativeUrl.length - 1) {
|
|
@@ -83,19 +82,14 @@ export function replacePrefix(originalUrl) {
|
|
|
83
82
|
// console.log('replacePrefix---locationPrefixUrl=',locationPrefixUrl)
|
|
84
83
|
if (orginalPrefixUrl !== locationPrefixUrl) {
|
|
85
84
|
// 获得/demo/#/notice/task需要替换为http://127.0.0.1/demo/#/notice/task
|
|
86
|
-
let suffixUrl = originalUrl.substring(
|
|
87
|
-
originalUrl.indexOf(orginalPrefixUrl) + orginalPrefixUrl.length
|
|
88
|
-
)
|
|
85
|
+
let suffixUrl = originalUrl.substring(originalUrl.indexOf(orginalPrefixUrl) + orginalPrefixUrl.length)
|
|
89
86
|
if (suffixUrl.indexOf('/') !== 0) {
|
|
90
87
|
suffixUrl = '/' + suffixUrl
|
|
91
88
|
}
|
|
92
89
|
// console.log('replacePrefix---suffixUrl=',suffixUrl)
|
|
93
90
|
if (locationPrefixUrl.lastIndexOf('/') === locationPrefixUrl.length - 1) {
|
|
94
91
|
// 表示以“/”结尾,去掉最后一个“/”
|
|
95
|
-
locationPrefixUrl = locationPrefixUrl.substring(
|
|
96
|
-
0,
|
|
97
|
-
locationPrefixUrl.lastIndexOf('/')
|
|
98
|
-
)
|
|
92
|
+
locationPrefixUrl = locationPrefixUrl.substring(0, locationPrefixUrl.lastIndexOf('/'))
|
|
99
93
|
}
|
|
100
94
|
// console.log('replacePrefix---locationPrefixUrl2=',locationPrefixUrl)
|
|
101
95
|
newUrl = locationPrefixUrl + suffixUrl
|
|
@@ -132,12 +126,7 @@ export function getLoginUrl() {
|
|
|
132
126
|
}
|
|
133
127
|
getPortalFrontendUrl()
|
|
134
128
|
.then((portalUrl) => {
|
|
135
|
-
let loginUrl =
|
|
136
|
-
portalUrl +
|
|
137
|
-
'#/login?systemPath=' +
|
|
138
|
-
systemPath +
|
|
139
|
-
'&routerPath=' +
|
|
140
|
-
routerPath
|
|
129
|
+
let loginUrl = portalUrl + '#/login?systemPath=' + systemPath + '&routerPath=' + routerPath
|
|
141
130
|
if (param) {
|
|
142
131
|
loginUrl += '&' + param
|
|
143
132
|
}
|
|
@@ -171,8 +160,7 @@ export function isShowSystemMenu() {
|
|
|
171
160
|
export function getSystemFrontendUrl(frontendUrl) {
|
|
172
161
|
if (
|
|
173
162
|
window.$vueApp.config.globalProperties.projectModel &&
|
|
174
|
-
window.$vueApp.config.globalProperties.projectModel ===
|
|
175
|
-
'developing.model' &&
|
|
163
|
+
window.$vueApp.config.globalProperties.projectModel === 'developing.model' &&
|
|
176
164
|
window.$vueApp.config.globalProperties.frontUrl
|
|
177
165
|
) {
|
|
178
166
|
return window.$vueApp.config.globalProperties.frontUrl
|
|
@@ -184,8 +172,7 @@ export function getSystemFrontendUrl(frontendUrl) {
|
|
|
184
172
|
export function getSystemBackendUrl(backendUrl) {
|
|
185
173
|
if (
|
|
186
174
|
window.$vueApp.config.globalProperties.projectModel &&
|
|
187
|
-
window.$vueApp.config.globalProperties.projectModel ===
|
|
188
|
-
'developing.model' &&
|
|
175
|
+
window.$vueApp.config.globalProperties.projectModel === 'developing.model' &&
|
|
189
176
|
window.$vueApp.config.globalProperties.baseURL
|
|
190
177
|
) {
|
|
191
178
|
return window.$vueApp.config.globalProperties.baseURL
|
|
@@ -263,16 +250,12 @@ export function getTimeZone() {
|
|
|
263
250
|
const dateStr = new Date() + ''
|
|
264
251
|
let timeZone = ''
|
|
265
252
|
if (dateStr.indexOf('GMT') > 0) {
|
|
266
|
-
const timeZoneSuffix = dateStr
|
|
267
|
-
.substring(dateStr.indexOf('GMT') + 3, dateStr.indexOf('('))
|
|
268
|
-
.trim()
|
|
253
|
+
const timeZoneSuffix = dateStr.substring(dateStr.indexOf('GMT') + 3, dateStr.indexOf('(')).trim()
|
|
269
254
|
const partPrefix = timeZoneSuffix.substring(0, timeZoneSuffix.length - 2)
|
|
270
255
|
const partSuffix = timeZoneSuffix.substring(timeZoneSuffix.length - 2)
|
|
271
256
|
timeZone = 'UTC' + partPrefix + ':' + partSuffix
|
|
272
257
|
} else if (dateStr.indexOf('UTC') > 0) {
|
|
273
|
-
timeZone =
|
|
274
|
-
'UTC' +
|
|
275
|
-
dateStr.substring(dateStr.indexOf('UTC') + 3, dateStr.indexOf('(')).trim()
|
|
258
|
+
timeZone = 'UTC' + dateStr.substring(dateStr.indexOf('UTC') + 3, dateStr.indexOf('(')).trim()
|
|
276
259
|
}
|
|
277
260
|
return timeZone
|
|
278
261
|
}
|
|
@@ -286,8 +269,7 @@ export function setCustomSystemBackendUrl(customSystem) {
|
|
|
286
269
|
// 表示是生产环境时,需要根据数据库配置获得对应的后端地址
|
|
287
270
|
const backendUrl = window.$authApi.getSystemCacheUrlByCode(customSystem)
|
|
288
271
|
if (backendUrl) {
|
|
289
|
-
window.$vueApp.config.globalProperties.baseURL =
|
|
290
|
-
getRelativeBaseUrl(backendUrl)
|
|
272
|
+
window.$vueApp.config.globalProperties.baseURL = getRelativeBaseUrl(backendUrl)
|
|
291
273
|
}
|
|
292
274
|
}
|
|
293
275
|
}
|
|
@@ -305,13 +287,13 @@ export function pushCustomControlValidatorRef(pageCode, refName, ref) {
|
|
|
305
287
|
pageCustomControlRef.set(refName, ref)
|
|
306
288
|
}
|
|
307
289
|
|
|
308
|
-
export function removeCustomControlValidatorRef
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
290
|
+
export function removeCustomControlValidatorRef(pageCode, refName) {
|
|
291
|
+
if (window.customValidatorRef) {
|
|
292
|
+
const pageCustomControlRef = window.customValidatorRef.get(pageCode)
|
|
293
|
+
if (pageCustomControlRef) {
|
|
294
|
+
pageCustomControlRef.delete(refName)
|
|
295
|
+
}
|
|
296
|
+
}
|
|
315
297
|
}
|
|
316
298
|
|
|
317
299
|
export function isMobileBrowser() {
|
|
@@ -379,33 +361,28 @@ export function cacheAllLanguagesUtil(http) {
|
|
|
379
361
|
setAllLanguages(cookieCacheLangs)
|
|
380
362
|
resolve()
|
|
381
363
|
} else {
|
|
382
|
-
http
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
})
|
|
405
|
-
}
|
|
406
|
-
cacheLangs(langResult)
|
|
407
|
-
resolve()
|
|
408
|
-
})
|
|
364
|
+
http.get(window.$vueApp.config.globalProperties.baseAPI + '/component/all-languages').then((langList) => {
|
|
365
|
+
const langResult = {}
|
|
366
|
+
if (langList) {
|
|
367
|
+
langList.forEach((item) => {
|
|
368
|
+
// 例如:zh_CN、en_US
|
|
369
|
+
const lang = item.value
|
|
370
|
+
let langShort
|
|
371
|
+
if (lang.indexOf('_') > 0) {
|
|
372
|
+
langShort = lang.substring(0, lang.indexOf('_'))
|
|
373
|
+
}
|
|
374
|
+
if (langShort && langShort === 'zh') {
|
|
375
|
+
// 中文处理,为了兼容历史逻辑
|
|
376
|
+
langShort = 'cn'
|
|
377
|
+
}
|
|
378
|
+
if (langShort) {
|
|
379
|
+
langResult[langShort] = lang
|
|
380
|
+
}
|
|
381
|
+
})
|
|
382
|
+
}
|
|
383
|
+
cacheLangs(langResult)
|
|
384
|
+
resolve()
|
|
385
|
+
})
|
|
409
386
|
}
|
|
410
387
|
} else {
|
|
411
388
|
resolve()
|
|
@@ -437,8 +414,8 @@ export function windowOpenUrl(url, projectModel) {
|
|
|
437
414
|
// _systemName_参数用于设置浏览器页签名的,国际化使用,在imatrix ui的beforeEach中有使用这个参数
|
|
438
415
|
if (param) {
|
|
439
416
|
jumpUrl += '&' + param
|
|
440
|
-
|
|
441
|
-
|
|
417
|
+
}
|
|
418
|
+
if (jumpUrl.indexOf('_systemName_=') === -1) {
|
|
442
419
|
jumpUrl += '&_systemName_=' + systemName
|
|
443
420
|
}
|
|
444
421
|
window.open(jumpUrl)
|
|
@@ -455,14 +432,13 @@ export function windowOpenUrl(url, projectModel) {
|
|
|
455
432
|
}
|
|
456
433
|
}
|
|
457
434
|
|
|
458
|
-
|
|
459
435
|
// 首次加载业务系统时,缓存当前用户语言
|
|
460
436
|
export function cacheCurrentLanguageUtil(http) {
|
|
461
437
|
return new Promise((resolve, reject) => {
|
|
462
438
|
const token = getToken()
|
|
463
439
|
if (token) {
|
|
464
440
|
const currentLanguage = getLanguage()
|
|
465
|
-
if (currentLanguage && currentLanguage!=='undefined') {
|
|
441
|
+
if (currentLanguage && currentLanguage !== 'undefined') {
|
|
466
442
|
resolve(currentLanguage)
|
|
467
443
|
} else {
|
|
468
444
|
http.get(window.$vueApp.config.globalProperties.baseAPI + '/acs/user-languages').then((currentLanguage) => {
|
|
@@ -476,63 +452,118 @@ export function cacheCurrentLanguageUtil(http) {
|
|
|
476
452
|
})
|
|
477
453
|
}
|
|
478
454
|
export function setProjectSetting() {
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
455
|
+
const projectSettingCache = Cookies.get('PROJECT_SETTINGS')
|
|
456
|
+
let projectSettings = null
|
|
457
|
+
if (projectSettingCache) {
|
|
458
|
+
projectSettings = JSON.parse(projectSettingCache)
|
|
459
|
+
this.setLogoUrl(projectSettings)
|
|
460
|
+
} else {
|
|
461
|
+
this.$http.get(window.$vueApp.config.globalProperties.baseAPI + '/cfg/project-settings').then((data) => {
|
|
462
|
+
Cookies.set('PROJECT_SETTINGS', JSON.stringify(data))
|
|
463
|
+
projectSettings = data
|
|
464
|
+
})
|
|
465
|
+
}
|
|
466
|
+
if (projectSettings.browserImageUuid) {
|
|
467
|
+
const linkElement = document.getElementById('ambBrowserIcon')
|
|
468
|
+
if (linkElement) {
|
|
469
|
+
linkElement.href = window.$vueApp.config.globalProperties.baseAPI + '/cfg/project/icon/browserIcon'
|
|
470
|
+
}
|
|
471
|
+
}
|
|
496
472
|
}
|
|
497
473
|
|
|
498
474
|
// 动态加载css
|
|
499
475
|
export function loadCSS() {
|
|
500
476
|
var theme
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
}
|
|
517
|
-
cssLink.rel = "stylesheet";
|
|
518
|
-
cssLink.type = "text/css";
|
|
519
|
-
cssLink.id="_loadTheme_"
|
|
520
|
-
cssLink.href = href;
|
|
521
|
-
if(!isHasLink){
|
|
522
|
-
document.getElementsByTagName("head")[0].appendChild(cssLink)
|
|
523
|
-
}
|
|
477
|
+
if (!theme) {
|
|
478
|
+
theme = localStorage.getItem('CURRENT_THEME')
|
|
479
|
+
}
|
|
480
|
+
if (!theme) {
|
|
481
|
+
console.error('皮肤主题为空!')
|
|
482
|
+
return
|
|
483
|
+
}
|
|
484
|
+
const baseAPI = localStorage.getItem('_baseAPI_')
|
|
485
|
+
if (baseAPI) {
|
|
486
|
+
const href = replacePrefix(baseAPI) + '/component/theme/load-theme?theme=' + theme + '&_t_=' + new Date().getTime()
|
|
487
|
+
let isHasLink = true
|
|
488
|
+
let cssLink = document.getElementById('_loadTheme_')
|
|
489
|
+
if (!cssLink) {
|
|
490
|
+
cssLink = document.createElement('link')
|
|
491
|
+
isHasLink = false
|
|
524
492
|
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
493
|
+
cssLink.rel = 'stylesheet'
|
|
494
|
+
cssLink.type = 'text/css'
|
|
495
|
+
cssLink.id = '_loadTheme_'
|
|
496
|
+
cssLink.href = href
|
|
497
|
+
if (!isHasLink) {
|
|
498
|
+
document.getElementsByTagName('head')[0].appendChild(cssLink)
|
|
528
499
|
}
|
|
529
500
|
}
|
|
501
|
+
const body = document.querySelector('body')
|
|
502
|
+
if (body) {
|
|
503
|
+
body.setAttribute('class', theme)
|
|
504
|
+
}
|
|
505
|
+
}
|
|
530
506
|
|
|
531
|
-
|
|
532
|
-
/**
|
|
507
|
+
/**
|
|
533
508
|
* 获取UUID,去掉破折号
|
|
534
509
|
* @returns
|
|
535
510
|
*/
|
|
536
511
|
export function getUuidv4() {
|
|
537
512
|
return uuidv4().replace(/-/g, '')
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
export function replacePlaceholders(template, ...args) {
|
|
516
|
+
return template.replace(/{(\d+)}/g, (match, index) => {
|
|
517
|
+
return typeof args[index] !== 'undefined' ? args[index] : match
|
|
518
|
+
})
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
function isOpenMobileGateway () {
|
|
523
|
+
// 系统参数设置中配置的是否开启移动网关,没有配置默认是开启的
|
|
524
|
+
let isOpenMobileGatewayCache = getCookieCache('IS_OPEN_MOBILE_GATEWAY')
|
|
525
|
+
if (isOpenMobileGatewayCache === undefined || isOpenMobileGatewayCache === null) {
|
|
526
|
+
isOpenMobileGatewayCache = 'true'
|
|
527
|
+
}
|
|
528
|
+
return isOpenMobileGatewayCache
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* 获得替换域名后的url
|
|
532
|
+
* @param {*} url
|
|
533
|
+
* @returns
|
|
534
|
+
*/
|
|
535
|
+
export function getReplaceUrlDomain (url) {
|
|
536
|
+
const isOpenMobileGatewayCache = isOpenMobileGateway()
|
|
537
|
+
console.log('===getReplaceUrlDomain==isOpenMobileGatewayCache=', isOpenMobileGatewayCache)
|
|
538
|
+
if (isOpenMobileGatewayCache === 'true' && url !== undefined && Vue.prototype.replaceUrl) {
|
|
539
|
+
// 表示需要替换url中的"https://域名"
|
|
540
|
+
const baseApi = Vue.prototype.baseAPI
|
|
541
|
+
if ((url + '').indexOf(Vue.prototype.replaceUrl + '/') < 0 && (url + '').indexOf('://') > 0) {
|
|
542
|
+
// 表示路径还未替换
|
|
543
|
+
console.log('===getReplaceUrlDomain==url.indexOf(Vue.prototype.replaceUrl) !== 0')
|
|
544
|
+
const prefixUrl1 = baseApi.substring(0, baseApi.indexOf('://'))
|
|
545
|
+
const urlSuffix1 = baseApi.substring(baseApi.indexOf('://') + 3)
|
|
546
|
+
const domainUrl1 = urlSuffix1.substring(0, urlSuffix1.indexOf('/'))
|
|
547
|
+
const prefixUrlBase = prefixUrl1 + '://' + domainUrl1
|
|
548
|
+
const prefixUrl2 = baseApi.substring(0, baseApi.indexOf('://'))
|
|
549
|
+
let urlSuffix = url.substring(url.indexOf('://') + 3)
|
|
550
|
+
const domainUrl2 = urlSuffix.substring(0, urlSuffix.indexOf('/'))
|
|
551
|
+
const prefixUrl = prefixUrl2 + '://' + domainUrl2
|
|
552
|
+
if (prefixUrl === prefixUrlBase) {
|
|
553
|
+
urlSuffix = urlSuffix.substring(urlSuffix.indexOf('/'))
|
|
554
|
+
url = Vue.prototype.replaceUrl + urlSuffix
|
|
555
|
+
console.log('===getReplaceUrlDomain==url=', url)
|
|
556
|
+
}
|
|
557
|
+
} else {
|
|
558
|
+
console.log('===getReplaceUrlDomain==has-replace-url=', url)
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
return url
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
export function formatFileName (fileName) {
|
|
565
|
+
if (fileName) {
|
|
566
|
+
fileName = fileName.replace('#', '~~').replace('?', '~$').replace('&', '$')
|
|
567
|
+
}
|
|
568
|
+
return fileName
|
|
538
569
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getEntityFieldValue,
|
|
6
6
|
setEntityFieldValue,
|
|
7
7
|
} from './util'
|
|
8
|
-
import { getSystemFrontendUrl, getUuidv4 } from './common-util'
|
|
8
|
+
import { getSystemFrontendUrl, getUuidv4, isMobileBrowser } from './common-util'
|
|
9
9
|
// 解析初始化条件,api方法;additionalParamMap是上个页面传过来的附加参数集合
|
|
10
10
|
export function initialization(
|
|
11
11
|
jumpPage,
|
|
@@ -365,6 +365,7 @@ function jumpToPageTwo(
|
|
|
365
365
|
if (!jumpPageUrl) {
|
|
366
366
|
return
|
|
367
367
|
}
|
|
368
|
+
const isMobile = isMobileBrowser()
|
|
368
369
|
if (jumpPageUrl.indexOf('page:') === 0) {
|
|
369
370
|
// 表示是自定义系统跳转页面编码
|
|
370
371
|
jumpWithSuperPage(
|
|
@@ -374,7 +375,8 @@ function jumpToPageTwo(
|
|
|
374
375
|
jumpPageSetting,
|
|
375
376
|
ids,
|
|
376
377
|
buttonCode,
|
|
377
|
-
isHasIdParam
|
|
378
|
+
isHasIdParam,
|
|
379
|
+
isMobile
|
|
378
380
|
).then((openPageParams) => {
|
|
379
381
|
resolve(openPageParams)
|
|
380
382
|
})
|
|
@@ -398,7 +400,8 @@ function jumpToPageTwo(
|
|
|
398
400
|
path = frontendUrl + '/#' + path
|
|
399
401
|
}
|
|
400
402
|
const systemName = getSystemNameWithLanguage(system)
|
|
401
|
-
|
|
403
|
+
// 移动端时会有返回值
|
|
404
|
+
const fullPath = jumpToPageWithFullPath(
|
|
402
405
|
dataId,
|
|
403
406
|
path,
|
|
404
407
|
additionalParameterStr,
|
|
@@ -406,9 +409,14 @@ function jumpToPageTwo(
|
|
|
406
409
|
ids,
|
|
407
410
|
buttonCode,
|
|
408
411
|
isHasIdParam,
|
|
409
|
-
systemName
|
|
412
|
+
systemName,
|
|
413
|
+
isMobile
|
|
410
414
|
)
|
|
411
|
-
|
|
415
|
+
if(fullPath){
|
|
416
|
+
// 移动端时返回的全路径
|
|
417
|
+
jumpPageSetting._path = fullPath
|
|
418
|
+
}
|
|
419
|
+
resolve(jumpPageSetting)
|
|
412
420
|
}
|
|
413
421
|
})
|
|
414
422
|
}
|
|
@@ -427,7 +435,8 @@ function jumpToPageWithFullPath(
|
|
|
427
435
|
ids,
|
|
428
436
|
buttonCode,
|
|
429
437
|
isHasIdParam,
|
|
430
|
-
systemName
|
|
438
|
+
systemName,
|
|
439
|
+
isMobile
|
|
431
440
|
) {
|
|
432
441
|
path = packagePathParams(
|
|
433
442
|
dataId,
|
|
@@ -451,6 +460,10 @@ function jumpToPageWithFullPath(
|
|
|
451
460
|
path += additionalParameterStr + systemNameParam
|
|
452
461
|
}
|
|
453
462
|
}
|
|
463
|
+
if(isMobile){
|
|
464
|
+
// 如果是移动端返回全路径即可
|
|
465
|
+
return path
|
|
466
|
+
}
|
|
454
467
|
let jumpMode = 'refresh'
|
|
455
468
|
if (jumpPage) {
|
|
456
469
|
if (jumpPage.jumpPageOpenMode) {
|
|
@@ -574,7 +587,8 @@ function jumpWithSuperPage(
|
|
|
574
587
|
jumpPageSetting,
|
|
575
588
|
ids,
|
|
576
589
|
buttonCode,
|
|
577
|
-
isHasIdParam
|
|
590
|
+
isHasIdParam,
|
|
591
|
+
isMobile
|
|
578
592
|
) {
|
|
579
593
|
return new Promise((resolve, reject) => {
|
|
580
594
|
// 表示是自定义系统跳转页面编码
|
|
@@ -587,10 +601,8 @@ function jumpWithSuperPage(
|
|
|
587
601
|
)
|
|
588
602
|
const pageCode = getPageCode(jumpPageUrl)
|
|
589
603
|
let jumpMode = 'refresh'
|
|
590
|
-
if (jumpPageSetting) {
|
|
591
|
-
if (jumpPageSetting.jumpPageOpenMode) {
|
|
604
|
+
if (jumpPageSetting && jumpPageSetting.jumpPageOpenMode) {
|
|
592
605
|
jumpMode = jumpPageSetting.jumpPageOpenMode
|
|
593
|
-
}
|
|
594
606
|
}
|
|
595
607
|
const jumpJsonData = {
|
|
596
608
|
jumpMode: jumpMode,
|
|
@@ -626,6 +638,7 @@ function jumpWithSuperPage(
|
|
|
626
638
|
popPageSetting.isRefreshWhenClosePopup = jumpPageSetting.isRefreshWhenClosePopup
|
|
627
639
|
}
|
|
628
640
|
popPageSetting._path = path
|
|
641
|
+
popPageSetting.customSystem = system.code
|
|
629
642
|
resolve(popPageSetting)
|
|
630
643
|
} else if (jumpMode === 'newTab') {
|
|
631
644
|
// 新页签打开
|
|
@@ -642,8 +655,16 @@ function jumpWithSuperPage(
|
|
|
642
655
|
) +
|
|
643
656
|
'&_t_=' +
|
|
644
657
|
new Date().getTime()
|
|
645
|
-
|
|
646
|
-
|
|
658
|
+
const popPageSetting = {
|
|
659
|
+
_path: path,
|
|
660
|
+
pageCode: pageCode,
|
|
661
|
+
customSystem: system.code
|
|
662
|
+
}
|
|
663
|
+
if(!isMobile){
|
|
664
|
+
// 不是移动端时直接open打开pc新页签
|
|
665
|
+
window.open(path)
|
|
666
|
+
}
|
|
667
|
+
resolve(popPageSetting)
|
|
647
668
|
} else {
|
|
648
669
|
// 刷新页面
|
|
649
670
|
const queryParam = {
|
|
@@ -651,7 +672,7 @@ function jumpWithSuperPage(
|
|
|
651
672
|
customSystem: system.code,
|
|
652
673
|
jumpMode: jumpMode,
|
|
653
674
|
buttonCode: buttonCode,
|
|
654
|
-
ids: ids ? ids.join(',') : ''
|
|
675
|
+
ids: ids ? ids.join(',') : ''
|
|
655
676
|
}
|
|
656
677
|
if (
|
|
657
678
|
jumpPageSetting.isNeedId === undefined ||
|