eoss 0.1.0-alpha.37 → 0.1.0-alpha.39
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/account-login.js +3729 -3725
- package/lib/ca-login.js +18 -8
- package/lib/checkbox-group.js +4329 -4329
- package/lib/data-table.js +3582 -3584
- package/lib/email-login.js +3525 -3522
- package/lib/eoss.common.js +468 -352
- package/lib/flow.js +27361 -27357
- package/lib/flows.js +5612 -5612
- package/lib/form.js +8 -8
- package/lib/index.js +1 -1
- package/lib/login.js +5982 -5978
- package/lib/lowcode-view.js +5263 -5258
- package/lib/lowcode.js +16885 -16884
- package/lib/main.js +129 -61
- package/lib/menu-item-group.js +4 -4
- package/lib/menu.js +10 -10
- package/lib/phone-login.js +3542 -3538
- package/lib/process-config.js +4105 -4080
- package/lib/process-module.js +3555 -3541
- package/lib/process-rule.js +4707 -4688
- package/lib/qrcode-login.js +3290 -3290
- package/lib/radio-group.js +3466 -3466
- package/lib/retrial-auth.js +3516 -3516
- package/lib/select.js +9354 -9354
- package/lib/selector-panel.js +6280 -6280
- package/lib/selector.js +5320 -5320
- package/lib/submenu.js +4 -4
- package/lib/table.js +16094 -16094
- package/lib/tips.js +3309 -3309
- package/lib/tree.js +6666 -6661
- package/lib/upload.js +7994 -7989
- package/lib/wujie.js +9 -3
- package/package.json +1 -1
- package/packages/account-login/src/account-login.vue +9 -15
- package/packages/ca-login/src/ca-login.vue +5 -6
- package/packages/data-table/src/data-table.vue +1 -3
- package/packages/email-login/src/email-login.vue +10 -11
- package/packages/flow/src/form.vue +2 -2
- package/packages/login/src/download.vue +2 -2
- package/packages/login/src/login.vue +3 -4
- package/packages/login/src/resetPassword.vue +3 -3
- package/packages/lowcode/src/attribute.vue +10 -9
- package/packages/lowcode-view/src/view.vue +3 -2
- package/packages/main/src/components/message.vue +7 -7
- package/packages/main/src/components/notice.vue +3 -2
- package/packages/main/src/components/pages.vue +63 -6
- package/packages/main/src/components/router-page.vue +6 -1
- package/packages/main/src/minxs.js +14 -10
- package/packages/menu/src/menu.vue +1 -1
- package/packages/menu/src/mixins.js +4 -4
- package/packages/phone-login/src/phone-login.vue +4 -4
- package/packages/process-config/src/FormList.vue +14 -8
- package/packages/process-config/src/NodeConfig.vue +50 -37
- package/packages/process-config/src/NodeForm.vue +37 -32
- package/packages/process-config/src/main.vue +50 -37
- package/packages/process-module/src/FormList.vue +16 -11
- package/packages/process-module/src/main.vue +52 -39
- package/packages/process-rule/src/FormList.vue +120 -105
- package/packages/process-rule/src/companyReportDetail.vue +13 -8
- package/packages/process-rule/src/main.vue +71 -52
- package/packages/tree/src/tree.vue +6 -5
- package/packages/upload/src/index.vue +3 -2
- package/packages/wujie/src/wujie.vue +7 -1
- package/src/index.js +1 -1
package/lib/wujie.js
CHANGED
|
@@ -3549,7 +3549,7 @@ __webpack_require__.d(__webpack_exports__, "preloadApp", function() { return /*
|
|
|
3549
3549
|
__webpack_require__.d(__webpack_exports__, "destroyApp", function() { return /* reexport */ destroyApp; });
|
|
3550
3550
|
__webpack_require__.d(__webpack_exports__, "refreshApp", function() { return /* reexport */ refreshApp; });
|
|
3551
3551
|
|
|
3552
|
-
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/wujie/src/wujie.vue?vue&type=template&id=
|
|
3552
|
+
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/wujie/src/wujie.vue?vue&type=template&id=416c748e&
|
|
3553
3553
|
var render = function () {
|
|
3554
3554
|
var _vm = this
|
|
3555
3555
|
var _h = _vm.$createElement
|
|
@@ -3601,7 +3601,7 @@ var staticRenderFns = []
|
|
|
3601
3601
|
render._withStripped = true
|
|
3602
3602
|
|
|
3603
3603
|
|
|
3604
|
-
// CONCATENATED MODULE: ./packages/wujie/src/wujie.vue?vue&type=template&id=
|
|
3604
|
+
// CONCATENATED MODULE: ./packages/wujie/src/wujie.vue?vue&type=template&id=416c748e&
|
|
3605
3605
|
|
|
3606
3606
|
// EXTERNAL MODULE: external "vue"
|
|
3607
3607
|
var external_vue_ = __webpack_require__(2);
|
|
@@ -3769,7 +3769,9 @@ var bus = external_wujie_vue2_default.a.bus,
|
|
|
3769
3769
|
|
|
3770
3770
|
watch: {
|
|
3771
3771
|
/**
|
|
3772
|
-
* 监听 keys
|
|
3772
|
+
* 监听 keys 变化,重建子应用实现刷新(点菜单/刷新按钮的统一通道);
|
|
3773
|
+
* url 变化不单独触发重建:换地址场景(如 fourthTabs)由调用方同时更新 keys,
|
|
3774
|
+
* 避免 url+keys 同变时重建两次
|
|
3773
3775
|
*/
|
|
3774
3776
|
keys: function keys() {
|
|
3775
3777
|
this.refresh();
|
|
@@ -3782,6 +3784,10 @@ var bus = external_wujie_vue2_default.a.bus,
|
|
|
3782
3784
|
bus.$off(this.name);
|
|
3783
3785
|
}
|
|
3784
3786
|
this._clearTimer();
|
|
3787
|
+
// 保活模式下沙箱不随组件卸载回收,页签关闭时主动销毁,避免沙箱常驻内存
|
|
3788
|
+
if (this.alive) {
|
|
3789
|
+
this.destroy();
|
|
3790
|
+
}
|
|
3785
3791
|
},
|
|
3786
3792
|
|
|
3787
3793
|
|
package/package.json
CHANGED
|
@@ -104,13 +104,7 @@
|
|
|
104
104
|
</template>
|
|
105
105
|
|
|
106
106
|
<script>
|
|
107
|
-
import {
|
|
108
|
-
queryParams,
|
|
109
|
-
encode,
|
|
110
|
-
decode,
|
|
111
|
-
loading,
|
|
112
|
-
error
|
|
113
|
-
} from 'eoss/src/utils/util';
|
|
107
|
+
import { queryParams, encode, decode, loading } from 'eoss/src/utils/util';
|
|
114
108
|
import { getStorage } from 'eoss/src/utils/storage';
|
|
115
109
|
import { changeImg } from 'eoss/src/config/api';
|
|
116
110
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
@@ -119,6 +113,8 @@ import EsCheckbox from 'eoss/packages/checkbox';
|
|
|
119
113
|
import EsForm from 'eoss/packages/form';
|
|
120
114
|
import EsFormItem from 'eoss/packages/form-item';
|
|
121
115
|
import EsInput from 'eoss/packages/input';
|
|
116
|
+
import Message from 'eoss/packages/message';
|
|
117
|
+
|
|
122
118
|
export default {
|
|
123
119
|
name: 'EsAccountLogin',
|
|
124
120
|
components: { EsButton, EsCheckbox, EsForm, EsFormItem, EsInput },
|
|
@@ -385,10 +381,9 @@ export default {
|
|
|
385
381
|
if (rCode === 0) {
|
|
386
382
|
const { statusCode, msg } = results;
|
|
387
383
|
if (statusCode === 1) {
|
|
388
|
-
error(msg || '登录失败!'
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
});
|
|
384
|
+
Message.error(msg || '登录失败!');
|
|
385
|
+
this.$emit('error', res);
|
|
386
|
+
this.resetCode();
|
|
392
387
|
} else {
|
|
393
388
|
if (this.checked) {
|
|
394
389
|
this.$set(
|
|
@@ -404,10 +399,9 @@ export default {
|
|
|
404
399
|
this.$emit('success', results);
|
|
405
400
|
}
|
|
406
401
|
} else {
|
|
407
|
-
error(res.msg || '登录失败!'
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
});
|
|
402
|
+
Message.error(res.msg || '登录失败!');
|
|
403
|
+
this.$emit('error', res);
|
|
404
|
+
this.resetCode();
|
|
411
405
|
}
|
|
412
406
|
loadingInstance.close();
|
|
413
407
|
})
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
<script>
|
|
26
26
|
import MessageBox from 'eoss/packages/message-box';
|
|
27
|
+
import Message from 'eoss/packages/message';
|
|
27
28
|
import EsButton from 'eoss/packages/button';
|
|
28
29
|
import {
|
|
29
30
|
uuid,
|
|
@@ -493,18 +494,16 @@ export default {
|
|
|
493
494
|
if (res.rCode == 0) {
|
|
494
495
|
const { statusCode, msg } = results;
|
|
495
496
|
if (statusCode === 1) {
|
|
496
|
-
error(msg || '登录失败!'
|
|
497
|
-
|
|
498
|
-
});
|
|
497
|
+
Message.error(msg || '登录失败!');
|
|
498
|
+
this.$emit('error', res);
|
|
499
499
|
} else {
|
|
500
500
|
this.$emit('success', results);
|
|
501
501
|
}
|
|
502
502
|
} else {
|
|
503
503
|
const msg =
|
|
504
504
|
res.results && res.results.msg ? res.results.msg : res.msg;
|
|
505
|
-
error(msg || '系统错误,请联系管理员!'
|
|
506
|
-
|
|
507
|
-
});
|
|
505
|
+
Message.error(msg || '系统错误,请联系管理员!');
|
|
506
|
+
this.$emit('error', res);
|
|
508
507
|
}
|
|
509
508
|
loadingInstance.close();
|
|
510
509
|
})
|
|
@@ -312,9 +312,7 @@ export default {
|
|
|
312
312
|
this.$set(this.pages, 'total', results.totalCount);
|
|
313
313
|
this.datas = results.records || results.data || [];
|
|
314
314
|
})
|
|
315
|
-
.catch((
|
|
316
|
-
error(res.message || '数据获取失败');
|
|
317
|
-
});
|
|
315
|
+
.catch(() => {});
|
|
318
316
|
}
|
|
319
317
|
return this.datas;
|
|
320
318
|
},
|
|
@@ -66,12 +66,13 @@
|
|
|
66
66
|
<script>
|
|
67
67
|
import { getLoginCode } from 'eoss/src/config/api';
|
|
68
68
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
69
|
-
import {
|
|
69
|
+
import { loading } from 'eoss/src/utils/util';
|
|
70
70
|
|
|
71
71
|
import EsButton from 'eoss/packages/button';
|
|
72
72
|
import EsForm from 'eoss/packages/form';
|
|
73
73
|
import EsFormItem from 'eoss/packages/form-item';
|
|
74
74
|
import EsInput from 'eoss/packages/input';
|
|
75
|
+
import Message from 'eoss/packages/message';
|
|
75
76
|
/**
|
|
76
77
|
* 邮箱验证码登录组件
|
|
77
78
|
* 功能说明:提供邮箱验证码登录功能,包括邮箱输入、验证码获取和登录提交
|
|
@@ -221,9 +222,9 @@ export default {
|
|
|
221
222
|
.then((res) => {
|
|
222
223
|
const { rCode, msg } = res;
|
|
223
224
|
if (rCode === 0) {
|
|
224
|
-
|
|
225
|
+
Message.success(msg || '验证码已发送!');
|
|
225
226
|
} else {
|
|
226
|
-
|
|
227
|
+
Message({
|
|
227
228
|
message: res.msg || '验证码获取失败!',
|
|
228
229
|
type: 'error',
|
|
229
230
|
onClose: () => {
|
|
@@ -273,18 +274,16 @@ export default {
|
|
|
273
274
|
if (rCode === 0) {
|
|
274
275
|
const { statusCode, msg } = results;
|
|
275
276
|
if (statusCode === 1) {
|
|
276
|
-
error(msg || '登录失败!'
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
});
|
|
277
|
+
Message.error(msg || '登录失败!');
|
|
278
|
+
this.$emit('error', res);
|
|
279
|
+
this.resetCode();
|
|
280
280
|
} else {
|
|
281
281
|
this.$emit('success', results);
|
|
282
282
|
}
|
|
283
283
|
} else {
|
|
284
|
-
error(res.msg || '登录失败!'
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
});
|
|
284
|
+
Message.error(res.msg || '登录失败!');
|
|
285
|
+
this.$emit('error', res);
|
|
286
|
+
this.resetCode();
|
|
288
287
|
}
|
|
289
288
|
})
|
|
290
289
|
.catch(() => {
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
<script>
|
|
49
49
|
import { addCommonOpion, editCommonOpion } from 'eoss/src/config/api';
|
|
50
50
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
51
|
-
import { error } from 'eoss/src/utils/util';
|
|
52
51
|
import EsButton from 'eoss/packages/button';
|
|
53
52
|
import EsForm from 'eoss/packages/form';
|
|
54
53
|
import EsFormItem from 'eoss/packages/form-item';
|
|
55
54
|
import EsInput from 'eoss/packages/input';
|
|
55
|
+
import Message from 'eoss/packages/message';
|
|
56
56
|
export default {
|
|
57
57
|
name: 'ideas',
|
|
58
58
|
componentName: 'ideas',
|
|
@@ -111,7 +111,7 @@ export default {
|
|
|
111
111
|
if (status == 'success') {
|
|
112
112
|
this.newData = data.bean;
|
|
113
113
|
} else {
|
|
114
|
-
error(message || '系统错误,请联系管理员!');
|
|
114
|
+
Message.error(message || '系统错误,请联系管理员!');
|
|
115
115
|
}
|
|
116
116
|
this.loading = false;
|
|
117
117
|
})
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</div>
|
|
29
29
|
</template>
|
|
30
30
|
<script>
|
|
31
|
-
import
|
|
31
|
+
import Message from 'eoss/packages/message';
|
|
32
32
|
import EsIcon from 'eoss/packages/icon';
|
|
33
33
|
import EsQrCode from 'eoss/packages/qr-code';
|
|
34
34
|
export default {
|
|
@@ -75,7 +75,7 @@ export default {
|
|
|
75
75
|
if (url) {
|
|
76
76
|
window.open(url);
|
|
77
77
|
} else {
|
|
78
|
-
error('下载地址不存在!');
|
|
78
|
+
Message.error('下载地址不存在!');
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -227,9 +227,7 @@ import {
|
|
|
227
227
|
setFavicon,
|
|
228
228
|
delUrlParam,
|
|
229
229
|
urlJoinParams,
|
|
230
|
-
|
|
231
|
-
warning,
|
|
232
|
-
error
|
|
230
|
+
warning
|
|
233
231
|
} from 'eoss/src/utils/util';
|
|
234
232
|
import { isObject } from 'eoss/src/utils/types';
|
|
235
233
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
@@ -246,6 +244,7 @@ import {
|
|
|
246
244
|
getTwoFactorLoginCode,
|
|
247
245
|
doAssistanceQrLogin
|
|
248
246
|
} from 'eoss/src/config/api';
|
|
247
|
+
import Message from 'eoss/packages/message';
|
|
249
248
|
const DEFAULT_SIZE = {
|
|
250
249
|
xxl: 'large',
|
|
251
250
|
xl: undefined,
|
|
@@ -678,7 +677,7 @@ export default {
|
|
|
678
677
|
this.setConfig(res.results);
|
|
679
678
|
this.$emit('initLogin', res.results);
|
|
680
679
|
} else {
|
|
681
|
-
error(res.msg || '系统错误,请联系管理员!');
|
|
680
|
+
Message.error(res.msg || '系统错误,请联系管理员!');
|
|
682
681
|
}
|
|
683
682
|
})
|
|
684
683
|
.catch((err) => {});
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
import { encryptFormData } from 'eoss/src/utils/helpers';
|
|
48
48
|
import rules from 'eoss/src/utils/rules.js';
|
|
49
49
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
50
|
-
import
|
|
50
|
+
import Message from 'eoss/packages/message';
|
|
51
51
|
import EsForm from 'eoss/packages/form';
|
|
52
52
|
import EsMenu from 'eoss/packages/menu';
|
|
53
53
|
import EsMenuItem from 'eoss/packages/menu-item';
|
|
@@ -411,7 +411,7 @@ export default {
|
|
|
411
411
|
}
|
|
412
412
|
} else {
|
|
413
413
|
let msg = res.msg || '系统错误,请联系管理员!';
|
|
414
|
-
error(msg);
|
|
414
|
+
Message.error(msg);
|
|
415
415
|
}
|
|
416
416
|
})
|
|
417
417
|
.catch((err) => {});
|
|
@@ -479,7 +479,7 @@ export default {
|
|
|
479
479
|
},
|
|
480
480
|
handleSubmit() {
|
|
481
481
|
this.submit = true;
|
|
482
|
-
let { repassword, ...data } = this.formData
|
|
482
|
+
let { repassword, ...data } = this.formData;
|
|
483
483
|
debugger;
|
|
484
484
|
// 使用工具函数加密数据
|
|
485
485
|
data = encryptFormData(data, this.secret, this.isEncrypt);
|
|
@@ -67,6 +67,7 @@ import { parseTemplateNodes } from './util/source-parser';
|
|
|
67
67
|
import EsDialog from 'eoss/packages/dialog';
|
|
68
68
|
import EsTabPane from 'eoss/packages/tab-pane';
|
|
69
69
|
import EsTabs from 'eoss/packages/tabs';
|
|
70
|
+
import Message from 'eoss/packages/message';
|
|
70
71
|
// 原生 HTML 元素标签名集合
|
|
71
72
|
const NATIVE_HTML_TAGS = new Set([
|
|
72
73
|
'a',
|
|
@@ -516,7 +517,7 @@ export default {
|
|
|
516
517
|
try {
|
|
517
518
|
updates[name] = JSON.parse(value);
|
|
518
519
|
} catch (e) {
|
|
519
|
-
|
|
520
|
+
Message.error('JSON 格式错误,请检查');
|
|
520
521
|
return;
|
|
521
522
|
}
|
|
522
523
|
} else {
|
|
@@ -596,7 +597,7 @@ export default {
|
|
|
596
597
|
// 提取 <script> 标签中的内容
|
|
597
598
|
const scriptMatch = source.match(/<script[^>]*>([\s\S]*?)<\/script>/);
|
|
598
599
|
if (!scriptMatch) {
|
|
599
|
-
|
|
600
|
+
Message.error('脚本格式错误,缺少 <script> 标签');
|
|
600
601
|
return null;
|
|
601
602
|
}
|
|
602
603
|
|
|
@@ -607,7 +608,7 @@ export default {
|
|
|
607
608
|
/export\s+default\s*\{([\s\S]*)\}/
|
|
608
609
|
);
|
|
609
610
|
if (!exportMatch) {
|
|
610
|
-
|
|
611
|
+
Message.error('脚本格式错误,缺少 export default');
|
|
611
612
|
return null;
|
|
612
613
|
}
|
|
613
614
|
|
|
@@ -670,7 +671,7 @@ export default {
|
|
|
670
671
|
try {
|
|
671
672
|
result.props = new Function(`return ${propsStr}`)();
|
|
672
673
|
} catch (e2) {
|
|
673
|
-
|
|
674
|
+
Message.error('props 格式错误');
|
|
674
675
|
return null;
|
|
675
676
|
}
|
|
676
677
|
}
|
|
@@ -708,7 +709,7 @@ export default {
|
|
|
708
709
|
try {
|
|
709
710
|
result.data = new Function(`return ${dataStr}`)();
|
|
710
711
|
} catch (e2) {
|
|
711
|
-
|
|
712
|
+
Message.error('data 格式错误');
|
|
712
713
|
return null;
|
|
713
714
|
}
|
|
714
715
|
}
|
|
@@ -725,7 +726,7 @@ export default {
|
|
|
725
726
|
try {
|
|
726
727
|
result.computed = new Function(`return ${computedStr}`)();
|
|
727
728
|
} catch (e) {
|
|
728
|
-
|
|
729
|
+
Message.error('computed 格式错误');
|
|
729
730
|
return null;
|
|
730
731
|
}
|
|
731
732
|
// 保存原始文本用于回显
|
|
@@ -738,7 +739,7 @@ export default {
|
|
|
738
739
|
try {
|
|
739
740
|
result.watch = new Function(`return ${watchStr}`)();
|
|
740
741
|
} catch (e) {
|
|
741
|
-
|
|
742
|
+
Message.error('watch 格式错误');
|
|
742
743
|
return null;
|
|
743
744
|
}
|
|
744
745
|
// 保存原始文本用于回显
|
|
@@ -751,7 +752,7 @@ export default {
|
|
|
751
752
|
try {
|
|
752
753
|
result.methods = new Function(`return ${methodsStr}`)();
|
|
753
754
|
} catch (e) {
|
|
754
|
-
|
|
755
|
+
Message.error('methods 格式错误');
|
|
755
756
|
return null;
|
|
756
757
|
}
|
|
757
758
|
// 保存原始文本用于回显
|
|
@@ -877,7 +878,7 @@ export default {
|
|
|
877
878
|
|
|
878
879
|
return result;
|
|
879
880
|
} catch (e) {
|
|
880
|
-
|
|
881
|
+
Message.error('脚本解析失败:' + e.message);
|
|
881
882
|
return null;
|
|
882
883
|
}
|
|
883
884
|
}
|
|
@@ -113,6 +113,7 @@ import EsDialog from 'eoss/packages/dialog';
|
|
|
113
113
|
import EsIcon from 'eoss/packages/icon';
|
|
114
114
|
import EsScrollbar from 'eoss/packages/scrollbar';
|
|
115
115
|
import { getStorage } from 'eoss/src/utils/storage';
|
|
116
|
+
import Message from 'eoss/packages/message';
|
|
116
117
|
// 编辑态下布局末尾预留的投放区域高度:masonry 计入容器高度,流式布局用 padding-bottom
|
|
117
118
|
const DROP_SPACE = 200;
|
|
118
119
|
export default {
|
|
@@ -444,7 +445,7 @@ export default {
|
|
|
444
445
|
})
|
|
445
446
|
.then((res) => {
|
|
446
447
|
if (res.rCode == 0 || res.status == 'success') {
|
|
447
|
-
|
|
448
|
+
Message.success('保存成功!');
|
|
448
449
|
// 保存成功后重新拉取页面配置,刷新渲染数据
|
|
449
450
|
this.getPagesMap();
|
|
450
451
|
this.edit = false;
|
|
@@ -454,7 +455,7 @@ export default {
|
|
|
454
455
|
}
|
|
455
456
|
})
|
|
456
457
|
.catch((err) => {
|
|
457
|
-
|
|
458
|
+
Message.error('系统错误!');
|
|
458
459
|
})
|
|
459
460
|
.finally(() => {
|
|
460
461
|
loadingInstance.close();
|
|
@@ -79,12 +79,13 @@ import {
|
|
|
79
79
|
ignoreSysMsg,
|
|
80
80
|
ignoreAllSysMsg
|
|
81
81
|
} from 'eoss/src/config/api.js';
|
|
82
|
-
import { busEmit
|
|
82
|
+
import { busEmit } from 'eoss/src/utils/util';
|
|
83
83
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
84
84
|
import { getStorage } from 'eoss/src/utils/storage';
|
|
85
85
|
import EsDialog from 'eoss/packages/dialog';
|
|
86
86
|
import EsDrawer from 'eoss/packages/drawer';
|
|
87
87
|
import EsScrollbar from 'eoss/packages/scrollbar';
|
|
88
|
+
import Message from 'eoss/packages/message';
|
|
88
89
|
export default {
|
|
89
90
|
name: 'Message',
|
|
90
91
|
provide() {
|
|
@@ -207,7 +208,7 @@ export default {
|
|
|
207
208
|
} else {
|
|
208
209
|
this.loading = false;
|
|
209
210
|
const msg = res.msg || '系统错误,请联系管理员!';
|
|
210
|
-
error(msg);
|
|
211
|
+
Message.error(msg);
|
|
211
212
|
}
|
|
212
213
|
})
|
|
213
214
|
.catch(() => {
|
|
@@ -233,7 +234,7 @@ export default {
|
|
|
233
234
|
this.msgs.splice(index, 1);
|
|
234
235
|
} else {
|
|
235
236
|
const msg = res.msg || '系统错误,请联系管理员!';
|
|
236
|
-
error(msg);
|
|
237
|
+
Message.error(msg);
|
|
237
238
|
}
|
|
238
239
|
});
|
|
239
240
|
},
|
|
@@ -317,7 +318,7 @@ export default {
|
|
|
317
318
|
const safeUrl = this.validateUrl(timestampUrl);
|
|
318
319
|
|
|
319
320
|
if (!safeUrl) {
|
|
320
|
-
error('无效的URL地址');
|
|
321
|
+
Message.error('无效的URL地址');
|
|
321
322
|
return;
|
|
322
323
|
}
|
|
323
324
|
|
|
@@ -346,7 +347,7 @@ export default {
|
|
|
346
347
|
const safeUrl = this.validateUrl(item.timestampUrl);
|
|
347
348
|
|
|
348
349
|
if (!safeUrl) {
|
|
349
|
-
error('无效的URL地址');
|
|
350
|
+
Message.error('无效的URL地址');
|
|
350
351
|
return;
|
|
351
352
|
}
|
|
352
353
|
|
|
@@ -370,8 +371,7 @@ export default {
|
|
|
370
371
|
this.windowIntervals.push(timer);
|
|
371
372
|
}
|
|
372
373
|
} catch (e) {
|
|
373
|
-
|
|
374
|
-
error('窗口打开失败');
|
|
374
|
+
Message.error('窗口打开失败');
|
|
375
375
|
}
|
|
376
376
|
} else {
|
|
377
377
|
this.dialog = {
|
|
@@ -62,11 +62,12 @@
|
|
|
62
62
|
</template>
|
|
63
63
|
<script>
|
|
64
64
|
import { ignoreSysMsg, ignoreAllSysMsg } from 'eoss/src/config/api.js';
|
|
65
|
-
import { busEmit
|
|
65
|
+
import { busEmit } from 'eoss/src/utils/util';
|
|
66
66
|
import { ajax } from 'eoss/src/utils/ajax';
|
|
67
67
|
import { getStorage } from 'eoss/src/utils/storage';
|
|
68
68
|
import EsDialog from 'eoss/packages/dialog';
|
|
69
69
|
import EsScrollbar from 'eoss/packages/scrollbar';
|
|
70
|
+
import Message from 'eoss/packages/message';
|
|
70
71
|
export default {
|
|
71
72
|
name: 'Notice',
|
|
72
73
|
provide() {
|
|
@@ -135,7 +136,7 @@ export default {
|
|
|
135
136
|
this.msgs.splice(i, 1);
|
|
136
137
|
} else {
|
|
137
138
|
let msg = res.msg || '系统错误,请联系管理员!';
|
|
138
|
-
error(msg);
|
|
139
|
+
Message.error(msg);
|
|
139
140
|
}
|
|
140
141
|
});
|
|
141
142
|
},
|
|
@@ -100,10 +100,11 @@
|
|
|
100
100
|
></router-page>
|
|
101
101
|
<wujie
|
|
102
102
|
v-else-if="item.method === 'wujie'"
|
|
103
|
-
:name="item
|
|
103
|
+
:name="wujieName(item)"
|
|
104
104
|
:host="host"
|
|
105
105
|
:url="item.url"
|
|
106
106
|
:keys="item.keys"
|
|
107
|
+
alive
|
|
107
108
|
@load-error="handleWujieLoadError(item)"
|
|
108
109
|
></wujie>
|
|
109
110
|
<iframe
|
|
@@ -125,7 +126,12 @@
|
|
|
125
126
|
|
|
126
127
|
<script>
|
|
127
128
|
import { getStorage } from 'eoss/src/utils/storage';
|
|
128
|
-
import {
|
|
129
|
+
import {
|
|
130
|
+
indexOfObj,
|
|
131
|
+
uuid,
|
|
132
|
+
timestampUrl,
|
|
133
|
+
escapeRegexpString
|
|
134
|
+
} from 'eoss/src/utils/util';
|
|
129
135
|
import RouterPage from './router-page.vue';
|
|
130
136
|
import Wujie from 'eoss/packages/wujie';
|
|
131
137
|
|
|
@@ -133,6 +139,20 @@ import EsCard from 'eoss/packages/card';
|
|
|
133
139
|
import EsMenu from 'eoss/packages/menu';
|
|
134
140
|
import EsTabPane from 'eoss/packages/tab-pane';
|
|
135
141
|
import EsTabs from 'eoss/packages/tabs';
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @desc: Unicode 安全的 base64 编码,兼容中文等非 Latin1 字符
|
|
145
|
+
* @param {any} val 任意值,null/undefined 返回空串
|
|
146
|
+
* @return {string}
|
|
147
|
+
**/
|
|
148
|
+
const base64 = (val) => {
|
|
149
|
+
if (val === null || val === undefined) return '';
|
|
150
|
+
try {
|
|
151
|
+
return window.btoa(unescape(encodeURIComponent(String(val))));
|
|
152
|
+
} catch (e) {
|
|
153
|
+
return '';
|
|
154
|
+
}
|
|
155
|
+
};
|
|
136
156
|
export default {
|
|
137
157
|
name: 'Pages',
|
|
138
158
|
|
|
@@ -264,13 +284,33 @@ export default {
|
|
|
264
284
|
* @date 2024年9月7日
|
|
265
285
|
**/
|
|
266
286
|
renderUrl(url) {
|
|
287
|
+
if (!url || typeof url !== 'string') return url;
|
|
267
288
|
const userInfo = this.$main.userInfo || this.$main.userModel || {};
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
289
|
+
Object.keys(userInfo).forEach((key) => {
|
|
290
|
+
const val = userInfo[key];
|
|
291
|
+
if (val === null || val === undefined) return;
|
|
292
|
+
const safeKey = escapeRegexpString(key);
|
|
293
|
+
const rawVal = String(val);
|
|
294
|
+
const b64Val = base64(rawVal);
|
|
295
|
+
// {base64-xxx} 与 {xxx} 两种占位符都要替换;
|
|
296
|
+
// 使用函数式 replacement,避免值中的 $& / $1 等被特殊解释
|
|
297
|
+
url = url.replace(
|
|
298
|
+
new RegExp(`\\{base64-${safeKey}\\}`, 'g'),
|
|
299
|
+
() => b64Val
|
|
300
|
+
);
|
|
301
|
+
url = url.replace(new RegExp(`\\{${safeKey}\\}`, 'g'), () => rawVal);
|
|
302
|
+
});
|
|
271
303
|
return url;
|
|
272
304
|
},
|
|
273
305
|
|
|
306
|
+
/**
|
|
307
|
+
* @desc:wujie 沙箱名按页签唯一,避免同一子应用多个菜单共用 name 时
|
|
308
|
+
* 互相 destroy/recreate 沙箱导致子应用重复启动
|
|
309
|
+
**/
|
|
310
|
+
wujieName(item) {
|
|
311
|
+
return `${item.appCode || item.code || item.id}__${item.id}`;
|
|
312
|
+
},
|
|
313
|
+
|
|
274
314
|
handleSelect(res, index) {
|
|
275
315
|
const { node } = res;
|
|
276
316
|
if (node.urlopenmode === 1 || node.openModel === 1) {
|
|
@@ -282,7 +322,15 @@ export default {
|
|
|
282
322
|
}
|
|
283
323
|
|
|
284
324
|
const updatedTabs = [...this.newTabs];
|
|
285
|
-
updatedTabs[index]
|
|
325
|
+
const tab = updatedTabs[index];
|
|
326
|
+
if (tab.method === 'iframe') {
|
|
327
|
+
// iframe 走 url 变化刷新:加时间戳保证重复点击同一菜单也会重载
|
|
328
|
+
tab.url = timestampUrl(node.url);
|
|
329
|
+
} else {
|
|
330
|
+
// router/wujie 走 keys 变化刷新(url 单独变化不触发重建)
|
|
331
|
+
tab.url = node.url;
|
|
332
|
+
this.$set(tab, 'keys', uuid());
|
|
333
|
+
}
|
|
286
334
|
this.$main.tabs = updatedTabs;
|
|
287
335
|
},
|
|
288
336
|
/**
|
|
@@ -377,10 +425,19 @@ export default {
|
|
|
377
425
|
},
|
|
378
426
|
/**
|
|
379
427
|
* @desc:wujie 加载失败,降级为 iframe 加载(重定向/登录跳转等服务端页面无法被 wujie 的 fetch 加载)
|
|
428
|
+
* 降级结果必须写回 $main.tabs 源页签对象:isFourthTabs 下 newTabs 是副本,
|
|
429
|
+
* 只改副本会在下次 tabs 同步时回滚成 wujie,造成 wujie/iframe 反复重建(页面加载两次)
|
|
380
430
|
**/
|
|
381
431
|
handleWujieLoadError(item) {
|
|
432
|
+
if (item.method === 'iframe') {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
382
435
|
this.$set(item, 'loading', true);
|
|
383
436
|
this.$set(item, 'method', 'iframe');
|
|
437
|
+
const source = (this.$main.tabs || []).find((t) => t.id === item.id);
|
|
438
|
+
if (source && source !== item) {
|
|
439
|
+
this.$set(source, 'method', 'iframe');
|
|
440
|
+
}
|
|
384
441
|
},
|
|
385
442
|
/**
|
|
386
443
|
* @desc:刷新iframe
|
|
@@ -54,8 +54,13 @@ export default {
|
|
|
54
54
|
},
|
|
55
55
|
|
|
56
56
|
computed: {
|
|
57
|
+
/**
|
|
58
|
+
* 组件 key 只由 appCode/path + refreshTrigger 组成,不包含 keys:
|
|
59
|
+
* keys 变化已由 watcher 走 doRefresh() 重建一次,
|
|
60
|
+
* 若再拼进 key 会导致同一次 keys 变化重建两次(页面加载两次)
|
|
61
|
+
*/
|
|
57
62
|
componentKey() {
|
|
58
|
-
return (this.
|
|
63
|
+
return (this.appCode || this.path) + (this.refreshTrigger ? '_r' : '');
|
|
59
64
|
}
|
|
60
65
|
},
|
|
61
66
|
|