meixioacomponent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +19 -0
  2. package/babel.config.js +5 -0
  3. package/lib/demo.html +10 -0
  4. package/lib/meixicomponent.common.js +40065 -0
  5. package/lib/meixicomponent.common.js.map +1 -0
  6. package/lib/meixicomponent.css +1 -0
  7. package/lib/meixicomponent.umd.js +40075 -0
  8. package/lib/meixicomponent.umd.js.map +1 -0
  9. package/lib/meixicomponent.umd.min.js +20 -0
  10. package/lib/meixicomponent.umd.min.js.map +1 -0
  11. package/package.json +37 -0
  12. package/packages/components/base/baseAnchor/baseAnchor.vue +156 -0
  13. package/packages/components/base/baseAnchor/index.js +6 -0
  14. package/packages/components/base/baseAppendix/baseAppendix.vue +78 -0
  15. package/packages/components/base/baseAppendix/index.js +7 -0
  16. package/packages/components/base/baseArea/area.js +14978 -0
  17. package/packages/components/base/baseArea/areaConfig.js +6 -0
  18. package/packages/components/base/baseArea/baseArea.vue +531 -0
  19. package/packages/components/base/baseArea/index.js +7 -0
  20. package/packages/components/base/baseAvatar/baseAvatar.vue +101 -0
  21. package/packages/components/base/baseAvatar/index.js +6 -0
  22. package/packages/components/base/baseButtonHandle/baseButtonHandle.vue +64 -0
  23. package/packages/components/base/baseButtonHandle/index.js +6 -0
  24. package/packages/components/base/baseDefaultSvg/baseDefaultSvg.vue +52 -0
  25. package/packages/components/base/baseDefaultSvg/index.js +7 -0
  26. package/packages/components/base/baseDialog/index.js +7 -0
  27. package/packages/components/base/baseDialog/index.vue +146 -0
  28. package/packages/components/base/baseDialogTable/dialogTable.vue +186 -0
  29. package/packages/components/base/baseDialogTable/index.js +7 -0
  30. package/packages/components/base/baseDrawer/index.js +8 -0
  31. package/packages/components/base/baseDrawer/index.vue +196 -0
  32. package/packages/components/base/baseEdito/baseEdito.vue +202 -0
  33. package/packages/components/base/baseEdito/index.js +6 -0
  34. package/packages/components/base/baseFixedHeader/baseFixedHeader.vue +168 -0
  35. package/packages/components/base/baseFixedHeader/index.js +6 -0
  36. package/packages/components/base/baseIcon/index.js +6 -0
  37. package/packages/components/base/baseIcon/index.vue +146 -0
  38. package/packages/components/base/baseImageViewer/image-viewer.vue +348 -0
  39. package/packages/components/base/baseImageViewer/index.js +7 -0
  40. package/packages/components/base/baseImg/baseImg.vue +160 -0
  41. package/packages/components/base/baseImg/index.js +6 -0
  42. package/packages/components/base/baseInforWrap/baseInforWrap.vue +66 -0
  43. package/packages/components/base/baseInforWrap/index.js +6 -0
  44. package/packages/components/base/baseLineInfoGroup/baseLineInfoGroup.vue +93 -0
  45. package/packages/components/base/baseLineInfoGroup/index.js +6 -0
  46. package/packages/components/base/baseLineInfoItem/baseLineInfoItem.vue +173 -0
  47. package/packages/components/base/baseLineInfoItem/index.js +6 -0
  48. package/packages/components/base/basePageHeader/basePageHeader.vue +55 -0
  49. package/packages/components/base/basePageHeader/index.js +6 -0
  50. package/packages/components/base/basePagination/index.js +6 -0
  51. package/packages/components/base/basePagination/index.vue +75 -0
  52. package/packages/components/base/basePlainTable/basePlainTable.vue +90 -0
  53. package/packages/components/base/basePlainTable/index.js +6 -0
  54. package/packages/components/base/baseSection/baseSection.vue +121 -0
  55. package/packages/components/base/baseSection/index.js +6 -0
  56. package/packages/components/base/baseSkeleton/baseSkeleton.vue +147 -0
  57. package/packages/components/base/baseSkeleton/index.js +6 -0
  58. package/packages/components/base/baseSvg/index.js +7 -0
  59. package/packages/components/base/baseSvg/index.vue +66 -0
  60. package/packages/components/base/baseTimeTypeSelect/base_time_type_select.vue +293 -0
  61. package/packages/components/base/baseTimeTypeSelect/config.js +47 -0
  62. package/packages/components/base/baseTimeTypeSelect/index.js +6 -0
  63. package/packages/components/base/baseToggle/index.js +7 -0
  64. package/packages/components/base/baseToggle/toggle.vue +131 -0
  65. package/packages/components/base/baseUpload/baseUpload.js +6 -0
  66. package/packages/components/base/baseUpload/baseUpload.vue +111 -0
  67. package/packages/components/base/baseUpload/baseUploadItem.js +6 -0
  68. package/packages/components/base/baseUpload/baseUploadItem.vue +205 -0
  69. package/packages/components/base/baseUpload/mixins.js +46 -0
  70. package/packages/components/base/brieflyItem.vue +198 -0
  71. package/packages/components/base/upload/index.js +6 -0
  72. package/packages/components/base/upload/upload.vue +245 -0
  73. package/packages/components/base/upload/uploadItem.vue +157 -0
  74. package/packages/components/dynamicmount/DynamicMount.js +55 -0
  75. package/packages/components/dynamicmount/dynamicMount.vue +95 -0
  76. package/packages/components/dynamicmount/index.js +46 -0
  77. package/packages/components/index.js +114 -0
  78. package/packages/components/proForm/dialogForm/baseDialogForm.vue +163 -0
  79. package/packages/components/proForm/dialogForm/dialogFormIndex.js +6 -0
  80. package/packages/components/proForm/proForm/index.js +6 -0
  81. package/packages/components/proForm/proForm/pro_form.vue +279 -0
  82. package/packages/components/proForm/proForm/pro_form_item.vue +459 -0
  83. package/packages/components/proForm/proFormWrap/index.js +6 -0
  84. package/packages/components/proForm/proFormWrap/pro_form_wrap.vue +83 -0
  85. package/packages/components/proPageTable/index.js +6 -0
  86. package/packages/components/proPageTable/oa_pro-table-search.vue +190 -0
  87. package/packages/components/proPageTable/oa_pro_colum_config.vue +219 -0
  88. package/packages/components/proPageTable/oa_pro_footer.vue +104 -0
  89. package/packages/components/proPageTable/oa_pro_header.vue +31 -0
  90. package/packages/components/proPageTable/oa_pro_screen.vue +81 -0
  91. package/packages/components/proPageTable/oa_pro_screen_item.vue +174 -0
  92. package/packages/components/proPageTable/oa_pro_table-header.vue +150 -0
  93. package/packages/components/proPageTable/oa_pro_table.vue +804 -0
  94. package/packages/components/proPageTable/oa_pro_table_skeleton.vue +33 -0
  95. package/packages/components/searchHeader/searchHeader.vue +118 -0
  96. package/packages/config/selectStore/SelectStore.js +24 -0
  97. package/packages/config/selectStore/UseSelectStoreClass.js +27 -0
  98. package/packages/config/selectStore/testSelectStore.js +40 -0
  99. package/packages/config/uploadRequest.js +66 -0
  100. package/packages/config/use/UseImg.js +39 -0
  101. package/packages/config/use/UseSelectStore.js +2 -0
  102. package/packages/config/use/UseUpload.js +47 -0
  103. package/packages/config/use/useFixedHeader.js +36 -0
  104. package/packages/utils/upload.js +35 -0
  105. package/packages/utils/uploadRequest.js +66 -0
  106. package/packages/utils/utils.js +186 -0
  107. package/public/favicon.ico +0 -0
  108. package/public/img/icons/android-chrome-192x192.png +0 -0
  109. package/public/img/icons/android-chrome-512x512.png +0 -0
  110. package/public/img/icons/android-chrome-maskable-192x192.png +0 -0
  111. package/public/img/icons/android-chrome-maskable-512x512.png +0 -0
  112. package/public/img/icons/apple-touch-icon-120x120.png +0 -0
  113. package/public/img/icons/apple-touch-icon-152x152.png +0 -0
  114. package/public/img/icons/apple-touch-icon-180x180.png +0 -0
  115. package/public/img/icons/apple-touch-icon-60x60.png +0 -0
  116. package/public/img/icons/apple-touch-icon-76x76.png +0 -0
  117. package/public/img/icons/apple-touch-icon.png +0 -0
  118. package/public/img/icons/favicon-16x16.png +0 -0
  119. package/public/img/icons/favicon-32x32.png +0 -0
  120. package/public/img/icons/msapplication-icon-144x144.png +0 -0
  121. package/public/img/icons/mstile-150x150.png +0 -0
  122. package/public/img/icons/safari-pinned-tab.svg +3 -0
  123. package/public/index.html +17 -0
  124. package/public/robots.txt +2 -0
  125. package/src/assets/logo.png +0 -0
  126. package/src/main.js +9 -0
  127. package/src/router/index.js +29 -0
  128. package/src/store/index.js +15 -0
@@ -0,0 +1,157 @@
1
+ <template>
2
+ <div class="item-wrap" :class="[type]">
3
+ <div class="item-type">
4
+ <svg-icon class="svg" :icon-class="`${svgKey}`"></svg-icon>
5
+ </div>
6
+ <div class="item-content">
7
+ <div class="item-info">
8
+ <span class="item-name">{{ fileName }}</span>
9
+ <span class="item-size">({{ fileSize }})</span>
10
+ </div>
11
+ <div class="item-process-wrap" v-if="type == 'upload'">
12
+ <div class="item-process-bar" :style="barStyle"></div>
13
+ </div>
14
+ </div>
15
+ <div class="item-status">
16
+ <base-icon
17
+ :size="`l`"
18
+ :active="true"
19
+ v-if="zhengqueShow"
20
+ :name="`icon-zhengque`"
21
+ ></base-icon>
22
+ <base-icon
23
+ :size="`l`"
24
+ :event="true"
25
+ :name="`icon-lajixiang`"
26
+ v-if="type == 'appendix'"
27
+ @iconClick="deleteAppendixItem"
28
+ ></base-icon>
29
+ </div>
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ import {
35
+ fileSuffix,
36
+ filterFileSize,
37
+ jugeFileTypeKey,
38
+ } from "../../../utils/utils";
39
+ export default {
40
+ data() {
41
+ return {};
42
+ },
43
+ props: {
44
+ item: {
45
+ type: Object,
46
+ require: true,
47
+ },
48
+
49
+ type: {
50
+ type: String,
51
+ default: "upload",
52
+ },
53
+ },
54
+ computed: {
55
+ zhengqueShow() {
56
+ return this.process == 100 && this.$props.type == "upload";
57
+ },
58
+ fileName() {
59
+ return this.item.file.name;
60
+ },
61
+ svgKey() {
62
+ return jugeFileTypeKey(fileSuffix(this.fileName));
63
+ },
64
+ process() {
65
+ return this.$props.item.process;
66
+ },
67
+ fileSize() {
68
+ return filterFileSize(this.$props.item.file.size);
69
+ },
70
+ barStyle() {
71
+ return {
72
+ width: `${this.process}%`,
73
+ };
74
+ },
75
+ },
76
+ methods: {
77
+ deleteAppendixItem() {
78
+ this.$emit("deleteAppendixItem");
79
+ },
80
+ },
81
+ };
82
+ </script>
83
+
84
+ <style lang="less" scoped>
85
+ .item-wrap {
86
+ width: 100%;
87
+ height: 43px;
88
+ display: flex;
89
+ align-items: center;
90
+ flex-flow: row nowrap;
91
+ justify-content: flex-start;
92
+ margin: var(--margin-4) 0px;
93
+ border-radius: calc(var(--radius) * 2);
94
+ .item-type,
95
+ .item-status {
96
+ width: 40px;
97
+ height: 100%;
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ flex-flow: row nowrap;
102
+ }
103
+ .item-content {
104
+ width: auto;
105
+ height: 100%;
106
+ display: flex;
107
+ flex-flow: column nowrap;
108
+ align-items: flex-start;
109
+ justify-content: center;
110
+ .item-info {
111
+ width: 100%;
112
+ height: auto;
113
+ // margin-bottom: var(--margin-2);
114
+ .item-name,
115
+ .item-size {
116
+ overflow: hidden;
117
+ white-space: nowrap;
118
+ text-overflow: ellipsis;
119
+ display: inline-block;
120
+ }
121
+ .item-name {
122
+ width: auto;
123
+ color: var(--font-color-m);
124
+ font-size: var(--font-size-base);
125
+ }
126
+ .item-size {
127
+ width: auto;
128
+ color: var(--font-color-s);
129
+ font-size: var(--font-size-base);
130
+ }
131
+ }
132
+ .item-process-wrap {
133
+ width: 100%;
134
+ height: 4px;
135
+ position: relative;
136
+ background: var(--color-gray-m);
137
+ .item-process-bar {
138
+ height: 100%;
139
+ transition: all 0.3s ease;
140
+ background: var(--color-primary);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ .upload {
146
+ background: var(--color-gray-m);
147
+ .item-content {
148
+ width: calc(100% - 80px) !important;
149
+ .item-name {
150
+ max-width: 80%;
151
+ }
152
+ .item-size {
153
+ max-width: 20%;
154
+ }
155
+ }
156
+ }
157
+ </style>
@@ -0,0 +1,55 @@
1
+ import Vue from "vue";
2
+ class DynamicMount {
3
+ constructor(dynamicMount) {
4
+ this.constructor = dynamicMount;
5
+ this.domComponent = null;
6
+ this.refComponent = null;
7
+ this.mountdCb = null;
8
+ this.destroyCb = null;
9
+ }
10
+
11
+ init() {
12
+ this.domComponent = Vue.prototype.$dynmaicMount({
13
+ mountedDom: this.constructor.mountedDom,
14
+ vueComponent: this.constructor.vueComponent,
15
+ componentProps: this.constructor.componentProps,
16
+ });
17
+ this.refComponent = this.domComponent.componentMounted;
18
+ this.refComponent.$on("hook:destroyed", () => {
19
+ this.destroy();
20
+ });
21
+ this.refComponent.$on("hook:mounted", () => {
22
+ this.mounted();
23
+ });
24
+
25
+ }
26
+
27
+ getComponent() {
28
+ return this.refComponent;
29
+ }
30
+ on(type, cb) {
31
+ switch (type) {
32
+ case "mounted":
33
+ this.mountdCb = cb;
34
+ break;
35
+ case "destroyed":
36
+ this.destroyCb = cb;
37
+ break;
38
+ default:
39
+ break;
40
+ }
41
+ }
42
+
43
+ mounted() {
44
+ if (this.mountdCb) {
45
+ this.mountdCb(this.refComponent);
46
+ }
47
+ }
48
+ destroy() {
49
+ if (this.destroyCb) {
50
+ this.destroyCb(this.refComponent);
51
+ }
52
+ }
53
+ }
54
+
55
+ export default DynamicMount;
@@ -0,0 +1,95 @@
1
+ <template>
2
+ <div ref="dynamicMount" class="dynamic-mount-wrap"></div>
3
+ </template>
4
+
5
+ <script>
6
+ import Vue from "vue";
7
+ import store from "../../store";
8
+ import router from "../../router";
9
+ export default {
10
+ name: "dynamicMount",
11
+ data() {
12
+ return {
13
+ id: null,
14
+ //该组件被挂载的那个dom上
15
+ mountedDom: null,
16
+ //实例化组件被挂载之后
17
+ componentMounted: null,
18
+ //需要被挂载的组件
19
+ vueComponent: null,
20
+ //传递给被挂载的组件的props值
21
+ componentProps: null,
22
+ };
23
+ },
24
+ mounted() {
25
+ console.log("dyMounted");
26
+ this.$nextTick(() => {
27
+ console.log(this.componentMounted);
28
+ });
29
+ },
30
+
31
+ computed: {},
32
+
33
+ methods: {
34
+ init() {
35
+ // 初始化并且赋予需要挂载的组件props值
36
+ let props = this.vueComponent.props;
37
+
38
+ if (props) {
39
+ if (typeof props == "Array") {
40
+ for (const key in this.componentProps) {
41
+ this.vueComponent.props.push(`${key}`);
42
+ }
43
+ } else {
44
+ for (const key in this.componentProps) {
45
+ if (!props.hasOwnProperty(`${key}`)) {
46
+ Vue.set(props, `${key}`, null);
47
+ }
48
+ }
49
+ }
50
+ }
51
+
52
+ const components = Vue.extend(this.vueComponent);
53
+ this.componentMounted = new components({
54
+ propsData: {
55
+ ...this.componentProps,
56
+ },
57
+ store: store,
58
+ parent: this,
59
+ router: router,
60
+ });
61
+ this.registerListen();
62
+ this.$children.push(this.componentMounted);
63
+ this.$nextTick(() => {
64
+ this.componentMounted.$mount();
65
+ this.$refs.dynamicMount.appendChild(this.componentMounted.$el);
66
+ });
67
+ },
68
+ registerListen() {
69
+ this.componentMounted.$on("hook:mounted", () => {});
70
+ this.componentMounted.$on("hook:destroyed", () => {
71
+ this.mountedDom = null;
72
+ console.log("destroyed");
73
+ this.close();
74
+ });
75
+ },
76
+
77
+ close() {
78
+ this.$destroy();
79
+ if (this.mountedDom) {
80
+ this.mountedDom.$destroy();
81
+ }
82
+ let dom = document.getElementById(`dynamic-${this.id}`);
83
+ if (dom) {
84
+ dom.remove();
85
+ }
86
+ },
87
+ },
88
+ };
89
+ </script>
90
+
91
+ <style lang="less" scoped>
92
+ .dynamic-mount-wrap {
93
+ animation: to-visible 0.7s forwards ease-in-out;
94
+ }
95
+ </style>
@@ -0,0 +1,46 @@
1
+ import Vue from "vue";
2
+ import store from "../../store/index";
3
+ import dynamicMountComponent from "./dynamicMount.vue";
4
+ const ComponentInsertConstructor = Vue.extend(dynamicMountComponent);
5
+
6
+ //使用方法
7
+ // this.$dynmaicMount({
8
+ // mountedDom: "",
9
+ // vueComponent: "",
10
+ // componentProps: "",
11
+ // });
12
+
13
+ const Insert = (options) => {
14
+ store.commit("component/SET_DYNAMICID");
15
+ let id = store.getters.dynamicId;
16
+ const componentInsertConstructor = new ComponentInsertConstructor();
17
+ componentInsertConstructor.vm = componentInsertConstructor.$mount();
18
+ componentInsertConstructor.dom = componentInsertConstructor.vm.$el;
19
+ componentInsertConstructor.mountedDom = options.mountedDom;
20
+ componentInsertConstructor.vm.id = id;
21
+ componentInsertConstructor.vm.vueComponent = options.vueComponent;
22
+ componentInsertConstructor.componentProps = options.componentProps;
23
+ componentInsertConstructor.vm.init();
24
+ let ele = document.createElement("div");
25
+ ele.setAttribute("id", `dynamic-${id}`);
26
+ if (options.mountedDom) {
27
+ ele.style.height = "100%";
28
+ componentInsertConstructor.vm.$el.style.height = "100%";
29
+ } else {
30
+ ele.style.position = `fixed`;
31
+ ele.style.zIndex = 9999;
32
+ }
33
+ ele.appendChild(componentInsertConstructor.dom);
34
+ if (options.mountedDom) {
35
+ options.mountedDom.appendChild(ele);
36
+ } else {
37
+ document.body.appendChild(ele);
38
+ }
39
+ return componentInsertConstructor.vm;
40
+ };
41
+
42
+ export default {
43
+ install(Vue, options = {}) {
44
+ Vue.prototype.$dynmaicMount = Insert;
45
+ },
46
+ };
@@ -0,0 +1,114 @@
1
+ import baseAnchor from "./base/baseAnchor";
2
+ import baseAppendix from "./base/baseAppendix";
3
+ import baseArea from "./base/baseArea";
4
+ import baseAvatar from "./base/baseAvatar";
5
+ import baseButtonHandle from "./base/baseButtonHandle";
6
+ import baseDefaultSvg from "./base/baseDefaultSvg";
7
+ import baseDialog from "./base/baseDialog";
8
+ import baseDialogTable from "./base/baseDialogTable";
9
+ import baseDrawer from "./base/baseDrawer";
10
+ import baseEdito from "./base/baseEdito";
11
+ import baseFixedHeader from "./base/baseFixedHeader";
12
+ import baseIcon from "./base/baseIcon";
13
+ import baseImageViewer from "./base/baseImageViewer";
14
+ import baseImg from "./base/baseImg";
15
+ import baseInforWrap from "./base/baseInforWrap";
16
+ import baseLineInfoGroup from "./base/baseLineInfoGroup";
17
+ import baseLineInfoItem from "./base/baseLineInfoItem";
18
+ import basePageHeader from "./base/basePageHeader";
19
+ import basePagination from "./base/basePagination";
20
+ import basePlainTable from "./base/basePlainTable";
21
+ import baseSection from "./base/baseSection";
22
+ import baseSkeleton from "./base/baseSkeleton";
23
+ import baseSvg from "./base/baseSvg";
24
+ import baseTimeTypeSelect from "./base/baseTimeTypeSelect";
25
+ import baseToggle from "./base/baseToggle";
26
+ import baseUploadItem from "./base/baseUpload/baseUploadItem";
27
+ import baseUpload from "./base/baseUpload/baseUpload";
28
+ import upload from "./base/upload";
29
+ import baseDialogForm from "./proForm/dialogForm/dialogFormIndex";
30
+ import baseForm from "./proForm/proForm/index";
31
+ import baseFormWrap from "./proForm/proFormWrap/index";
32
+ import baseProTable from "./proPageTable/index";
33
+
34
+ const meixicomponents = [
35
+ baseAnchor,
36
+ baseAppendix,
37
+ baseArea,
38
+ baseAvatar,
39
+ baseButtonHandle,
40
+ baseDefaultSvg,
41
+ baseDialog,
42
+ baseDialogTable,
43
+ baseDrawer,
44
+ baseEdito,
45
+ baseFixedHeader,
46
+ baseIcon,
47
+ baseImageViewer,
48
+ baseImg,
49
+ baseInforWrap,
50
+ baseLineInfoGroup,
51
+ baseLineInfoItem,
52
+ basePageHeader,
53
+ basePagination,
54
+ basePlainTable,
55
+ baseSection,
56
+ baseSkeleton,
57
+ baseSvg,
58
+ baseTimeTypeSelect,
59
+ baseToggle,
60
+ baseUploadItem,
61
+ baseUpload,
62
+ upload,
63
+ baseDialogForm,
64
+ baseForm,
65
+ baseFormWrap,
66
+ baseProTable,
67
+ ];
68
+
69
+ const install = (Vue) => {
70
+ meixicomponents.forEach((component) => {
71
+ Vue.component(component.name, component);
72
+ });
73
+ };
74
+
75
+ if (typeof window !== "undefined" && window.Vue) {
76
+ install(window.Vue);
77
+ }
78
+
79
+ export default {
80
+ install,
81
+ meixicomponents,
82
+ baseAnchor,
83
+ baseAppendix,
84
+ baseArea,
85
+ baseAvatar,
86
+ baseButtonHandle,
87
+ baseDefaultSvg,
88
+ baseDialog,
89
+ baseDialogTable,
90
+ baseDrawer,
91
+ baseEdito,
92
+ baseFixedHeader,
93
+ baseIcon,
94
+ baseImageViewer,
95
+ baseImg,
96
+ baseInforWrap,
97
+ baseLineInfoGroup,
98
+ baseLineInfoItem,
99
+ basePageHeader,
100
+ basePagination,
101
+ basePlainTable,
102
+ baseSection,
103
+ baseSkeleton,
104
+ baseSvg,
105
+ baseTimeTypeSelect,
106
+ baseToggle,
107
+ baseUploadItem,
108
+ baseUpload,
109
+ upload,
110
+ baseDialogForm,
111
+ baseForm,
112
+ baseFormWrap,
113
+ baseProTable,
114
+ };
@@ -0,0 +1,163 @@
1
+ <template>
2
+ <base-dialog
3
+ :title="title"
4
+ ref="dialog"
5
+ :width="`1000px`"
6
+ :isDestroy="true"
7
+ :contentHeight="`50vh`"
8
+ >
9
+ <div class="dialog-form-content" slot="dialog-content">
10
+ <div
11
+ :key="item.key"
12
+ v-for="item in formArray"
13
+ class="dialog-form-content-item"
14
+ >
15
+ <div class="content-item-header">
16
+ <span class="header-text">{{ item.formTitle }}</span>
17
+ </div>
18
+ <div class="content-item-form">
19
+ <pro_formVue
20
+ :form="true"
21
+ :footer="false"
22
+ :formConfig="item"
23
+ :labelWidth="labelWidth"
24
+ :formList="item.formList"
25
+ :rules="returnRules(item.key)"
26
+ :labelPosition="setLabelPosition(item.formType)"
27
+ :formType="item.formType ? item.formType : 'default'"
28
+ ref="proFormVue"
29
+ ></pro_formVue>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <baseButtonHandleVue
34
+ slot="dialog-footer"
35
+ :config="footerHandleConfig"
36
+ ></baseButtonHandleVue>
37
+ </base-dialog>
38
+ </template>
39
+
40
+ <script>
41
+ import pro_formVue from "../proForm/pro_form.vue";
42
+ import baseButtonHandleVue from "../../base/baseButtonHandle/baseButtonHandle.vue";
43
+ export default {
44
+ name: "baseDialogForm",
45
+ data() {
46
+ return {};
47
+ },
48
+ props: {
49
+ // 弹窗的标题
50
+ title: {
51
+ type: String,
52
+ require: true,
53
+ },
54
+ // 需要渲染的数据
55
+ formArray: {
56
+ type: Array,
57
+ require: true,
58
+ },
59
+ // 每一个itemlabel的宽度
60
+ labelWidth: {
61
+ type: String,
62
+ default: "100px",
63
+ },
64
+ // 弹框尾部
65
+ footerHandleConfig: {
66
+ type: Array,
67
+ require: true,
68
+ },
69
+ // 表单的验证
70
+ rulesList: {
71
+ type: Object,
72
+ },
73
+ },
74
+ components: {
75
+ pro_formVue,
76
+ baseButtonHandleVue,
77
+ },
78
+ methods: {
79
+ setLabelPosition(type) {
80
+ if (!type) {
81
+ return "right";
82
+ } else if (type == "upload") {
83
+ return "top";
84
+ }
85
+ },
86
+ returnRules(key) {
87
+ let rulesList = this.$props.rulesList;
88
+ if (!rulesList) return null;
89
+ let listItem = rulesList[`${key}`] ? rulesList[`${key}`] : null;
90
+ if (listItem) {
91
+ return listItem;
92
+ }
93
+ return null;
94
+ },
95
+ showDialog() {
96
+ this.$refs.dialog.showDialog();
97
+ },
98
+ closeDialog() {
99
+ this.$refs.dialog.closeDialog();
100
+ },
101
+
102
+ getFormValue() {
103
+ let obj = {};
104
+ for (let i = 0; i < this.formArray.length; i++) {
105
+ let result = this.$refs.proFormVue[i].returnFormValue();
106
+ obj[`${this.formArray[i].key}`] = result;
107
+ }
108
+ return obj;
109
+ },
110
+ async checkValidate() {
111
+ let refs = this.$refs.proFormVue;
112
+ let result = true;
113
+ for (let i = 0; i < refs.length; i++) {
114
+ result = await refs[i].checkValidate();
115
+ console.log(result);
116
+ if (!result) {
117
+ return result;
118
+ }
119
+ }
120
+ return result;
121
+ },
122
+ },
123
+ };
124
+ </script>
125
+
126
+ <style lang="less" scoped>
127
+ .dialog-form-content {
128
+ width: 100%;
129
+ height: 100%;
130
+ overflow-y: auto;
131
+ .dialog-form-content-item {
132
+ width: 100%;
133
+ height: auto;
134
+ .content-item-header {
135
+ width: 100%;
136
+ height: auto;
137
+ display: flex;
138
+ position: relative;
139
+ align-items: center;
140
+ flex-flow: row nowrap;
141
+ justify-content: flex-start;
142
+ margin-bottom: var(--margin-4);
143
+ &::before {
144
+ content: "";
145
+ top: 0px;
146
+ width: 4px;
147
+ height: 100%;
148
+ left: var(--margin-2);
149
+ position: absolute;
150
+ display: inline-block;
151
+ background: var(--color-primary);
152
+ border-radius: calc(var(--radius) * 2);
153
+ }
154
+ .header-text {
155
+ color: var(--font-color-d);
156
+ font-size: var(--font-size-base);
157
+ font-weight: var(--font-weight-kg);
158
+ margin-left: calc(var(--margin-5) * 2);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseDialogForm from "./baseDialogForm.vue";
2
+
3
+ baseDialogForm.install = function (Vue) {
4
+ Vue.component(baseDialogForm.name, baseDialogForm);
5
+ };
6
+ export default baseDialogForm;
@@ -0,0 +1,6 @@
1
+ import baseForm from "./pro_form.vue";
2
+
3
+ baseForm.install = function (Vue) {
4
+ Vue.component(baseForm.name, baseForm);
5
+ };
6
+ export default baseForm;