@dhccmobile/vue3-lo-form 2.0.0 → 2.0.2
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/README.md +77 -70
- package/dist/demo.html +1 -10
- package/dist/vue3-lo-form.common.js +8704 -6939
- package/dist/vue3-lo-form.common.js.map +1 -1
- package/dist/vue3-lo-form.css +1 -1
- package/dist/vue3-lo-form.umd.js +8715 -6949
- package/dist/vue3-lo-form.umd.js.map +1 -1
- package/dist/vue3-lo-form.umd.min.js +1 -1
- package/dist/vue3-lo-form.umd.min.js.map +1 -1
- package/package.json +72 -65
- package/src/App.vue +741 -741
- package/src/components/form/DvForm.vue +642 -642
- package/src/components/form/DvFormLayout.vue +1592 -1569
- package/src/components/form/StretchText.vue +90 -90
- package/src/components/index.ts +3 -3
- package/src/constants/config/form-template.config.ts +32 -32
- package/src/constants/config/form.config.ts +4 -4
- package/src/constants/config/storage.config.ts +4 -4
- package/src/constants/encode-assets/svg.ts +11 -11
- package/src/constants/enum/builtIn-label.enum.ts +5 -5
- package/src/constants/enum/cache-type.enum.ts +7 -7
- package/src/constants/enum/control-format-type.enum.ts +9 -9
- package/src/constants/enum/dynamic-option-type.enum.ts +6 -6
- package/src/constants/enum/form-bus-attr.enum.ts +8 -8
- package/src/constants/enum/form-field-class.enum.ts +7 -7
- package/src/constants/enum/form-field-type.enum.ts +25 -25
- package/src/constants/enum/form-type.enum.ts +5 -5
- package/src/constants/enum/index.ts +19 -19
- package/src/constants/enum/lateral-arrangement.enum.ts +9 -9
- package/src/constants/enum/money-unit.enum.ts +6 -6
- package/src/constants/enum/option-type.enum.ts +5 -5
- package/src/constants/enum/submitted-type.enum.ts +32 -32
- package/src/constants/enum/support-upload-type.enum.ts +5 -5
- package/src/constants/enum/switch.enum.ts +5 -5
- package/src/constants/enum/upload-type.enum.ts +17 -17
- package/src/constants/enum/validate-rules.enum.ts +25 -25
- package/src/constants/enum/validate-status.enum.ts +8 -8
- package/src/constants/enum/vertical-arrangement.enum.ts +7 -7
- package/src/constants/enum/zoom-type.ts +6 -6
- package/src/constants/index.ts +3 -3
- package/src/core/FormApi.ts +1238 -1238
- package/src/core/index.ts +1 -1
- package/src/domain/AbstractControl.ts +6 -6
- package/src/domain/Control.ts +14 -14
- package/src/domain/CustomFormat.ts +6 -6
- package/src/domain/DesForm.ts +48 -48
- package/src/domain/DesFormControl.ts +241 -241
- package/src/domain/DesFormLayout.ts +51 -51
- package/src/domain/FieldChangeHistory.ts +9 -9
- package/src/domain/FormConfig.ts +16 -15
- package/src/domain/FormControl.ts +125 -125
- package/src/domain/FormEnum.ts +9 -9
- package/src/domain/FormGroup.ts +42 -42
- package/src/domain/FormRestfulResponse.ts +6 -6
- package/src/domain/ProvideInjectData.ts +10 -10
- package/src/domain/SysDictDetail.ts +38 -38
- package/src/domain/SysDictInfo.ts +40 -40
- package/src/domain/SysDictTreeDetail.ts +52 -52
- package/src/domain/index.ts +12 -12
- package/src/filtres/amount-capitalization.filter.ts +154 -154
- package/src/filtres/extract-options.filter.ts +53 -53
- package/src/filtres/generate-grid-column-end.filter.ts +22 -22
- package/src/filtres/generate-grid-template-columns.filter.ts +24 -24
- package/src/filtres/switch-enum-convert.filter.ts +18 -18
- package/src/filtres/zoom-multiple.filter.ts +32 -32
- package/src/index.ts +74 -73
- package/src/main.ts +17 -17
- package/src/services/api.service.ts +73 -73
- package/src/services/clean-local-forage.service.ts +58 -58
- package/src/services/date-format.service.ts +74 -74
- package/src/services/dict-local-forage.service.ts +58 -58
- package/src/services/form-bean-utils.service.ts +41 -41
- package/src/services/form-local-forage.service.ts +59 -59
- package/src/services/form-tools.service.ts +739 -739
- package/src/services/form-tree-node-convert.service.ts +240 -240
- package/src/services/form-validate.service.ts +103 -103
- package/src/services/index.ts +9 -9
- package/src/services/router.service.ts +96 -96
- package/src/services/validate-generator.service.ts +710 -710
- package/src/shims-vue.d.ts +6 -6
- package/src/store/dict.store.ts +63 -63
- package/src/store/form.store.ts +32 -32
- package/src/store/index.ts +2 -2
- package/src/styles/datePicker.scss +125 -125
- package/src/styles/index.scss +195 -195
- package/src/styles/theme1.scss +277 -277
- package/src/styles/theme2.scss +376 -376
- package/src/styles/themes.scss +9 -9
- package/src/types/vfForm.ts +11 -11
- package/types/components/index.d.ts +3 -3
- package/types/constants/config/form-template.config.d.ts +30 -30
- package/types/constants/config/form.config.d.ts +4 -4
- package/types/constants/config/storage.config.d.ts +4 -4
- package/types/constants/encode-assets/svg.d.ts +5 -5
- package/types/constants/enum/builtIn-label.enum.d.ts +7 -7
- package/types/constants/enum/cache-type.enum.d.ts +15 -15
- package/types/constants/enum/control-format-type.enum.d.ts +23 -23
- package/types/constants/enum/dynamic-option-type.enum.d.ts +11 -11
- package/types/constants/enum/form-bus-attr.enum.d.ts +19 -19
- package/types/constants/enum/form-field-class.enum.d.ts +18 -18
- package/types/constants/enum/form-field-type.enum.d.ts +111 -111
- package/types/constants/enum/form-type.enum.d.ts +11 -11
- package/types/constants/enum/index.d.ts +19 -19
- package/types/constants/enum/lateral-arrangement.enum.d.ts +23 -23
- package/types/constants/enum/money-unit.enum.d.ts +15 -15
- package/types/constants/enum/option-type.enum.d.ts +11 -11
- package/types/constants/enum/submitted-type.enum.d.ts +115 -115
- package/types/constants/enum/support-upload-type.enum.d.ts +11 -11
- package/types/constants/enum/switch.enum.d.ts +11 -11
- package/types/constants/enum/upload-type.enum.d.ts +59 -59
- package/types/constants/enum/validate-rules.enum.d.ts +2 -2
- package/types/constants/enum/validate-status.enum.d.ts +2 -2
- package/types/constants/enum/vertical-arrangement.enum.d.ts +21 -21
- package/types/constants/enum/zoom-type.d.ts +15 -15
- package/types/constants/index.d.ts +3 -3
- package/types/core/FormApi.d.ts +376 -376
- package/types/core/index.d.ts +1 -1
- package/types/domain/AbstractControl.d.ts +5 -5
- package/types/domain/Control.d.ts +13 -13
- package/types/domain/CustomFormat.d.ts +5 -5
- package/types/domain/DesForm.d.ts +32 -32
- package/types/domain/DesFormControl.d.ts +160 -160
- package/types/domain/DesFormLayout.d.ts +33 -33
- package/types/domain/FieldChangeHistory.d.ts +9 -9
- package/types/domain/FormConfig.d.ts +16 -15
- package/types/domain/FormControl.d.ts +60 -60
- package/types/domain/FormEnum.d.ts +10 -10
- package/types/domain/FormGroup.d.ts +27 -27
- package/types/domain/FormRestfulResponse.d.ts +6 -6
- package/types/domain/ProvideInjectData.d.ts +10 -10
- package/types/domain/SysDictDetail.d.ts +24 -24
- package/types/domain/SysDictInfo.d.ts +26 -26
- package/types/domain/SysDictTreeDetail.d.ts +34 -34
- package/types/domain/index.d.ts +12 -12
- package/types/filtres/amount-capitalization.filter.d.ts +7 -7
- package/types/filtres/extract-options.filter.d.ts +13 -13
- package/types/filtres/generate-grid-column-end.filter.d.ts +11 -11
- package/types/filtres/generate-grid-template-columns.filter.d.ts +11 -11
- package/types/filtres/switch-enum-convert.filter.d.ts +2 -2
- package/types/filtres/zoom-multiple.filter.d.ts +3 -3
- package/types/index.d.ts +13 -13
- package/types/main.d.ts +2 -2
- package/types/services/api.service.d.ts +25 -25
- package/types/services/clean-local-forage.service.d.ts +28 -28
- package/types/services/date-format.service.d.ts +21 -21
- package/types/services/dict-local-forage.service.d.ts +28 -28
- package/types/services/form-bean-utils.service.d.ts +23 -23
- package/types/services/form-local-forage.service.d.ts +28 -28
- package/types/services/form-tools.service.d.ts +153 -153
- package/types/services/form-tree-node-convert.service.d.ts +104 -104
- package/types/services/form-validate.service.d.ts +32 -32
- package/types/services/index.d.ts +9 -9
- package/types/services/router.service.d.ts +40 -40
- package/types/services/validate-generator.service.d.ts +154 -154
- package/types/store/dict.store.d.ts +29 -29
- package/types/store/form.store.d.ts +17 -17
- package/types/store/index.d.ts +2 -2
- package/types/types/vfForm.d.ts +10 -10
- package/.env.local.bak +0 -6
- package/.eslintrc.js +0 -28
- package/babel.config.js +0 -3
- package/public/favicon.ico +0 -0
- package/public/index.html +0 -17
- package/public/js/pinyin.ts +0 -101
- package/tsconfig.json +0 -40
- package/vue.config.js +0 -38
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
import { FormApi } from "../core/FormApi";
|
|
2
|
-
import { ValidateReport } from "../domain/FormControl";
|
|
3
|
-
import { Modal } from "ant-design-vue";
|
|
4
|
-
import { FORM_ERROR_MODAL_SVG_XML } from "../constants/encode-assets/svg";
|
|
5
|
-
import { h, createVNode } from "vue";
|
|
6
|
-
/**
|
|
7
|
-
* @description: 表单校验窗口提示
|
|
8
|
-
* @author ChenRui
|
|
9
|
-
* @date 2021/8/19 12:58
|
|
10
|
-
*/
|
|
11
|
-
class FormValidateService {
|
|
12
|
-
/**
|
|
13
|
-
* @description: 校验并进行窗口提示
|
|
14
|
-
* @author ChenRui
|
|
15
|
-
* @date 2021/8/19 12:58
|
|
16
|
-
*/
|
|
17
|
-
validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {
|
|
18
|
-
if (formApis != null) {
|
|
19
|
-
if (!Array.isArray(formApis)) {
|
|
20
|
-
formApis = [formApis];
|
|
21
|
-
}
|
|
22
|
-
const actualFormApis: FormApi[] = [];
|
|
23
|
-
let allError: ValidateReport[] = [];
|
|
24
|
-
let errMessage = "";
|
|
25
|
-
formApis.forEach((formApi) => {
|
|
26
|
-
const errors: ValidateReport[] = formApi.validateReport(); // 获取校验报告
|
|
27
|
-
if (errors && errors.length > 0) {
|
|
28
|
-
actualFormApis.push(formApi);
|
|
29
|
-
allError = allError.concat(errors);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
if (allError && allError.length > 0) {
|
|
33
|
-
// 显示错误的输入框
|
|
34
|
-
allError.forEach((err) => {
|
|
35
|
-
console.log(err);
|
|
36
|
-
errMessage += `<div class="lo-error-item d-flex"><div class="lo-error-describe">${err.name}</div> ${err.errorMsg};</div>`;
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
Modal.confirm({
|
|
40
|
-
width: 380,
|
|
41
|
-
title: h("div", { class: "d-flex", innerHTML: `<img src="${FORM_ERROR_MODAL_SVG_XML}" /><div style="font-size: 18px">校验提示</div>` }),
|
|
42
|
-
content: h("div", { innerHTML: errMessage }),
|
|
43
|
-
onOk: () => {
|
|
44
|
-
this.showErrorModal(actualFormApis as any, allError, scrollView);
|
|
45
|
-
},
|
|
46
|
-
okText: "确认",
|
|
47
|
-
cancelText: "取消",
|
|
48
|
-
class: "lo-form-error-modal",
|
|
49
|
-
});
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* @Description: 滚动到错误位置-闪烁提示
|
|
58
|
-
* @author LiuBo
|
|
59
|
-
* @date 2021/2/25
|
|
60
|
-
* @time 21:35
|
|
61
|
-
*/
|
|
62
|
-
public showErrorModal(formApis: FormApi[], allError: ValidateReport[], scrollView?: any) {
|
|
63
|
-
const errorEl: any = formApis[0]?.getControlEl(allError[0]?.key);
|
|
64
|
-
if (errorEl != null) {
|
|
65
|
-
if (scrollView && typeof scrollView === "string") {
|
|
66
|
-
scrollView = document.getElementById(scrollView);
|
|
67
|
-
}
|
|
68
|
-
if (scrollView) {
|
|
69
|
-
scrollView.scrollTo({ top: errorEl.offsetTop, behavior: "smooth" });
|
|
70
|
-
const running = (event: any) => {
|
|
71
|
-
const scrollTop = scrollView.window != null && scrollView.window === scrollView.window.window ? document.documentElement.scrollTop || document.body.scrollTop : scrollView.scrollTop;
|
|
72
|
-
const calculationError = errorEl.offsetTop - scrollTop;
|
|
73
|
-
if (calculationError > -20 && calculationError < 20) {
|
|
74
|
-
scrollView.removeEventListener("scroll", running);
|
|
75
|
-
this.showErrInput(errorEl);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
scrollView.addEventListener("scroll", running, false);
|
|
79
|
-
} else {
|
|
80
|
-
this.showErrInput(errorEl);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* @Description: 闪烁显示校验不通过的输入框
|
|
87
|
-
* @author LiuBo
|
|
88
|
-
* @date 2019/6/3
|
|
89
|
-
* @time 22:01
|
|
90
|
-
* @param el 出错的输入框html对象
|
|
91
|
-
*/
|
|
92
|
-
private showErrInput(el: any) {
|
|
93
|
-
let count = 0;
|
|
94
|
-
const interval = setInterval(() => {
|
|
95
|
-
el.style.opacity = count++ % 2 === 0 ? ".3" : "1";
|
|
96
|
-
if (count > 5) {
|
|
97
|
-
clearInterval(interval);
|
|
98
|
-
}
|
|
99
|
-
}, 400);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
const formValidateService = new FormValidateService();
|
|
103
|
-
export { formValidateService };
|
|
1
|
+
import { FormApi } from "../core/FormApi";
|
|
2
|
+
import { ValidateReport } from "../domain/FormControl";
|
|
3
|
+
import { Modal } from "ant-design-vue";
|
|
4
|
+
import { FORM_ERROR_MODAL_SVG_XML } from "../constants/encode-assets/svg";
|
|
5
|
+
import { h, createVNode } from "vue";
|
|
6
|
+
/**
|
|
7
|
+
* @description: 表单校验窗口提示
|
|
8
|
+
* @author ChenRui
|
|
9
|
+
* @date 2021/8/19 12:58
|
|
10
|
+
*/
|
|
11
|
+
class FormValidateService {
|
|
12
|
+
/**
|
|
13
|
+
* @description: 校验并进行窗口提示
|
|
14
|
+
* @author ChenRui
|
|
15
|
+
* @date 2021/8/19 12:58
|
|
16
|
+
*/
|
|
17
|
+
validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {
|
|
18
|
+
if (formApis != null) {
|
|
19
|
+
if (!Array.isArray(formApis)) {
|
|
20
|
+
formApis = [formApis];
|
|
21
|
+
}
|
|
22
|
+
const actualFormApis: FormApi[] = [];
|
|
23
|
+
let allError: ValidateReport[] = [];
|
|
24
|
+
let errMessage = "";
|
|
25
|
+
formApis.forEach((formApi) => {
|
|
26
|
+
const errors: ValidateReport[] = formApi.validateReport(); // 获取校验报告
|
|
27
|
+
if (errors && errors.length > 0) {
|
|
28
|
+
actualFormApis.push(formApi);
|
|
29
|
+
allError = allError.concat(errors);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
if (allError && allError.length > 0) {
|
|
33
|
+
// 显示错误的输入框
|
|
34
|
+
allError.forEach((err) => {
|
|
35
|
+
console.log(err);
|
|
36
|
+
errMessage += `<div class="lo-error-item d-flex"><div class="lo-error-describe">${err.name}</div> ${err.errorMsg};</div>`;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
Modal.confirm({
|
|
40
|
+
width: 380,
|
|
41
|
+
title: h("div", { class: "d-flex", innerHTML: `<img src="${FORM_ERROR_MODAL_SVG_XML}" /><div style="font-size: 18px">校验提示</div>` }),
|
|
42
|
+
content: h("div", { innerHTML: errMessage }),
|
|
43
|
+
onOk: () => {
|
|
44
|
+
this.showErrorModal(actualFormApis as any, allError, scrollView);
|
|
45
|
+
},
|
|
46
|
+
okText: "确认",
|
|
47
|
+
cancelText: "取消",
|
|
48
|
+
class: "lo-form-error-modal",
|
|
49
|
+
});
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @Description: 滚动到错误位置-闪烁提示
|
|
58
|
+
* @author LiuBo
|
|
59
|
+
* @date 2021/2/25
|
|
60
|
+
* @time 21:35
|
|
61
|
+
*/
|
|
62
|
+
public showErrorModal(formApis: FormApi[], allError: ValidateReport[], scrollView?: any) {
|
|
63
|
+
const errorEl: any = formApis[0]?.getControlEl(allError[0]?.key);
|
|
64
|
+
if (errorEl != null) {
|
|
65
|
+
if (scrollView && typeof scrollView === "string") {
|
|
66
|
+
scrollView = document.getElementById(scrollView);
|
|
67
|
+
}
|
|
68
|
+
if (scrollView) {
|
|
69
|
+
scrollView.scrollTo({ top: errorEl.offsetTop, behavior: "smooth" });
|
|
70
|
+
const running = (event: any) => {
|
|
71
|
+
const scrollTop = scrollView.window != null && scrollView.window === scrollView.window.window ? document.documentElement.scrollTop || document.body.scrollTop : scrollView.scrollTop;
|
|
72
|
+
const calculationError = errorEl.offsetTop - scrollTop;
|
|
73
|
+
if (calculationError > -20 && calculationError < 20) {
|
|
74
|
+
scrollView.removeEventListener("scroll", running);
|
|
75
|
+
this.showErrInput(errorEl);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
scrollView.addEventListener("scroll", running, false);
|
|
79
|
+
} else {
|
|
80
|
+
this.showErrInput(errorEl);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @Description: 闪烁显示校验不通过的输入框
|
|
87
|
+
* @author LiuBo
|
|
88
|
+
* @date 2019/6/3
|
|
89
|
+
* @time 22:01
|
|
90
|
+
* @param el 出错的输入框html对象
|
|
91
|
+
*/
|
|
92
|
+
private showErrInput(el: any) {
|
|
93
|
+
let count = 0;
|
|
94
|
+
const interval = setInterval(() => {
|
|
95
|
+
el.style.opacity = count++ % 2 === 0 ? ".3" : "1";
|
|
96
|
+
if (count > 5) {
|
|
97
|
+
clearInterval(interval);
|
|
98
|
+
}
|
|
99
|
+
}, 400);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const formValidateService = new FormValidateService();
|
|
103
|
+
export { formValidateService };
|
package/src/services/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from "./api.service";
|
|
2
|
-
export * from "./clean-local-forage.service";
|
|
3
|
-
export * from "./dict-local-forage.service";
|
|
4
|
-
export * from "./form-bean-utils.service";
|
|
5
|
-
export * from "./form-local-forage.service";
|
|
6
|
-
export * from "./form-tools.service";
|
|
7
|
-
export * from "./form-tree-node-convert.service";
|
|
8
|
-
export * from "./form-validate.service";
|
|
9
|
-
export * from "./validate-generator.service";
|
|
1
|
+
export * from "./api.service";
|
|
2
|
+
export * from "./clean-local-forage.service";
|
|
3
|
+
export * from "./dict-local-forage.service";
|
|
4
|
+
export * from "./form-bean-utils.service";
|
|
5
|
+
export * from "./form-local-forage.service";
|
|
6
|
+
export * from "./form-tools.service";
|
|
7
|
+
export * from "./form-tree-node-convert.service";
|
|
8
|
+
export * from "./form-validate.service";
|
|
9
|
+
export * from "./validate-generator.service";
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
interface Params {
|
|
2
|
-
[key: string]: any;
|
|
3
|
-
}
|
|
4
|
-
export class RouterService {
|
|
5
|
-
constructor() {}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @description: 跨应用跳转
|
|
9
|
-
* @author ChenRui
|
|
10
|
-
* @date 2020/9/28 14:23
|
|
11
|
-
*/
|
|
12
|
-
push(subapp: string): void {
|
|
13
|
-
history.pushState(null, subapp, subapp);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @description: 获取纯路劲
|
|
18
|
-
* @author ChenRui
|
|
19
|
-
* @date 2020/10/12 21:06
|
|
20
|
-
*/
|
|
21
|
-
getPathFromUrl(url: string): string {
|
|
22
|
-
let path = url;
|
|
23
|
-
if (url.indexOf("?") !== -1) {
|
|
24
|
-
path = url.split("?")[0];
|
|
25
|
-
}
|
|
26
|
-
return path;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @description: 获取请求参数
|
|
31
|
-
* @author ChenRui
|
|
32
|
-
* @date 2020/10/12 21:06
|
|
33
|
-
*/
|
|
34
|
-
getParamsFromUrl(url: string): Params | undefined {
|
|
35
|
-
let parameter: Params | undefined;
|
|
36
|
-
if (url.indexOf("?") !== -1) {
|
|
37
|
-
parameter = this.urlParameterToParams(url.split("?")[1]);
|
|
38
|
-
}
|
|
39
|
-
return parameter;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @description: url地址参数转换成路由参数对象
|
|
44
|
-
* @author ChenRui
|
|
45
|
-
* @date 2020/10/12 21:07
|
|
46
|
-
*/
|
|
47
|
-
urlParameterToParams(parameter: string): Params | undefined {
|
|
48
|
-
const params: Params = {};
|
|
49
|
-
const arr: string[] = parameter.split("&");
|
|
50
|
-
arr.forEach((val, idx, array) => {
|
|
51
|
-
const kv: string[] = val.split("=");
|
|
52
|
-
if (kv.length > 1) {
|
|
53
|
-
params[kv[0]] = decodeURIComponent(kv[1]);
|
|
54
|
-
} else {
|
|
55
|
-
params[kv[0]] = "";
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return params;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @description: 地址参数拼接
|
|
63
|
-
* @author ChenRui
|
|
64
|
-
* @date 2021/2/19 11:40
|
|
65
|
-
*/
|
|
66
|
-
getParameterOfUrl(url: string, parameter?: { [key: string]: any }): string {
|
|
67
|
-
let connectiveSymbol = "";
|
|
68
|
-
if (url.indexOf("?") !== -1) {
|
|
69
|
-
connectiveSymbol = "&";
|
|
70
|
-
} else {
|
|
71
|
-
connectiveSymbol = "?";
|
|
72
|
-
}
|
|
73
|
-
if (parameter && Object.keys(parameter).length > 0) {
|
|
74
|
-
let mark = 0;
|
|
75
|
-
Object.keys(parameter).forEach((item) => {
|
|
76
|
-
if (mark === 0) {
|
|
77
|
-
if (parameter[item] != null && parameter[item] !== "null" && parameter[item] !== "undefined") {
|
|
78
|
-
url += connectiveSymbol + item + "=" + parameter[item];
|
|
79
|
-
} else {
|
|
80
|
-
url += connectiveSymbol + item + "=";
|
|
81
|
-
}
|
|
82
|
-
} else {
|
|
83
|
-
if (parameter[item] != null && parameter[item] !== "null" && parameter[item] !== "undefined") {
|
|
84
|
-
url += "&" + item + "=" + parameter[item];
|
|
85
|
-
} else {
|
|
86
|
-
url += "&" + item + "=";
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
mark++;
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
return url;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const routerService: RouterService = new RouterService();
|
|
96
|
-
export { routerService, Params };
|
|
1
|
+
interface Params {
|
|
2
|
+
[key: string]: any;
|
|
3
|
+
}
|
|
4
|
+
export class RouterService {
|
|
5
|
+
constructor() {}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @description: 跨应用跳转
|
|
9
|
+
* @author ChenRui
|
|
10
|
+
* @date 2020/9/28 14:23
|
|
11
|
+
*/
|
|
12
|
+
push(subapp: string): void {
|
|
13
|
+
history.pushState(null, subapp, subapp);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @description: 获取纯路劲
|
|
18
|
+
* @author ChenRui
|
|
19
|
+
* @date 2020/10/12 21:06
|
|
20
|
+
*/
|
|
21
|
+
getPathFromUrl(url: string): string {
|
|
22
|
+
let path = url;
|
|
23
|
+
if (url.indexOf("?") !== -1) {
|
|
24
|
+
path = url.split("?")[0];
|
|
25
|
+
}
|
|
26
|
+
return path;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @description: 获取请求参数
|
|
31
|
+
* @author ChenRui
|
|
32
|
+
* @date 2020/10/12 21:06
|
|
33
|
+
*/
|
|
34
|
+
getParamsFromUrl(url: string): Params | undefined {
|
|
35
|
+
let parameter: Params | undefined;
|
|
36
|
+
if (url.indexOf("?") !== -1) {
|
|
37
|
+
parameter = this.urlParameterToParams(url.split("?")[1]);
|
|
38
|
+
}
|
|
39
|
+
return parameter;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @description: url地址参数转换成路由参数对象
|
|
44
|
+
* @author ChenRui
|
|
45
|
+
* @date 2020/10/12 21:07
|
|
46
|
+
*/
|
|
47
|
+
urlParameterToParams(parameter: string): Params | undefined {
|
|
48
|
+
const params: Params = {};
|
|
49
|
+
const arr: string[] = parameter.split("&");
|
|
50
|
+
arr.forEach((val, idx, array) => {
|
|
51
|
+
const kv: string[] = val.split("=");
|
|
52
|
+
if (kv.length > 1) {
|
|
53
|
+
params[kv[0]] = decodeURIComponent(kv[1]);
|
|
54
|
+
} else {
|
|
55
|
+
params[kv[0]] = "";
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return params;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @description: 地址参数拼接
|
|
63
|
+
* @author ChenRui
|
|
64
|
+
* @date 2021/2/19 11:40
|
|
65
|
+
*/
|
|
66
|
+
getParameterOfUrl(url: string, parameter?: { [key: string]: any }): string {
|
|
67
|
+
let connectiveSymbol = "";
|
|
68
|
+
if (url.indexOf("?") !== -1) {
|
|
69
|
+
connectiveSymbol = "&";
|
|
70
|
+
} else {
|
|
71
|
+
connectiveSymbol = "?";
|
|
72
|
+
}
|
|
73
|
+
if (parameter && Object.keys(parameter).length > 0) {
|
|
74
|
+
let mark = 0;
|
|
75
|
+
Object.keys(parameter).forEach((item) => {
|
|
76
|
+
if (mark === 0) {
|
|
77
|
+
if (parameter[item] != null && parameter[item] !== "null" && parameter[item] !== "undefined") {
|
|
78
|
+
url += connectiveSymbol + item + "=" + parameter[item];
|
|
79
|
+
} else {
|
|
80
|
+
url += connectiveSymbol + item + "=";
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
if (parameter[item] != null && parameter[item] !== "null" && parameter[item] !== "undefined") {
|
|
84
|
+
url += "&" + item + "=" + parameter[item];
|
|
85
|
+
} else {
|
|
86
|
+
url += "&" + item + "=";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
mark++;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return url;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const routerService: RouterService = new RouterService();
|
|
96
|
+
export { routerService, Params };
|