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,66 @@
1
+ <template>
2
+ <div
3
+ v-if="isExternal"
4
+ :style="styleExternalIcon"
5
+ class="svg-external-icon svg-icon"
6
+ v-on="$listeners"
7
+ />
8
+ <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
9
+ <use :xlink:href="iconName" />
10
+ </svg>
11
+ </template>
12
+
13
+ <script>
14
+ // doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
15
+ import { isExternal } from "../../../utils/utils";
16
+
17
+ export default {
18
+ name: "baseSvg",
19
+ props: {
20
+ iconClass: {
21
+ type: String,
22
+ required: true,
23
+ },
24
+ className: {
25
+ type: String,
26
+ default: "",
27
+ },
28
+ },
29
+ computed: {
30
+ isExternal() {
31
+ return isExternal(this.iconClass);
32
+ },
33
+ iconName() {
34
+ return `#icon-${this.iconClass}`;
35
+ },
36
+ svgClass() {
37
+ if (this.className) {
38
+ return "svg-icon " + this.className;
39
+ } else {
40
+ return "svg-icon";
41
+ }
42
+ },
43
+ styleExternalIcon() {
44
+ return {
45
+ mask: `url(${this.iconClass}) no-repeat 50% 50%`,
46
+ "-webkit-mask": `url(${this.iconClass}) no-repeat 50% 50%`,
47
+ };
48
+ },
49
+ },
50
+ };
51
+ </script>
52
+
53
+ <style scoped>
54
+ .svg-icon {
55
+ width: 1em;
56
+ height: 1em;
57
+ fill: currentColor;
58
+ overflow: hidden;
59
+ }
60
+
61
+ .svg-external-icon {
62
+ background-color: currentColor;
63
+ mask-size: cover !important;
64
+ display: inline-block;
65
+ }
66
+ </style>
@@ -0,0 +1,293 @@
1
+ <template>
2
+ <div class="base-time-type-select-wrap">
3
+ <el-popover
4
+ ref="popover"
5
+ trigger="click"
6
+ placement="bottom"
7
+ @show="eventShow"
8
+ @hide="eventHide"
9
+ >
10
+ <!-- 内容 -->
11
+ <template>
12
+ <div class="time-type-select-content">
13
+ <div class="content-line-wrap">
14
+ <div
15
+ class="content-line"
16
+ :key="index"
17
+ v-for="(item, index) in baseTimeTypeConfig"
18
+ >
19
+ <div class="type-des">{{ item.text }}</div>
20
+ <div class="line-item-wrap">
21
+ <div
22
+ class="line-item"
23
+ @click="selectLineItem = citem.key"
24
+ :class="{
25
+ select: selectLineItem
26
+ ? selectLineItem == citem.key
27
+ : citem.key == module,
28
+ }"
29
+ :key="cindex"
30
+ v-for="(citem, cindex) in item.list"
31
+ >
32
+ <span>{{ citem.text }}</span>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ <div class="time-type-custom-wrap">
38
+ <div class="type-des"><span>自定义</span></div>
39
+ <el-date-picker
40
+ size="small"
41
+ type="daterange"
42
+ v-model="timeModule"
43
+ range-separator="至"
44
+ value-format="timestamp"
45
+ end-placeholder="结束日期"
46
+ start-placeholder="开始日期"
47
+ style="width: 100%; margin-top: var(--margin-5)"
48
+ >
49
+ </el-date-picker>
50
+ </div>
51
+ <baseButtonHandleVue
52
+ :config="handleConfig"
53
+ class="button-handle-wrap"
54
+ ></baseButtonHandleVue>
55
+ </div>
56
+ </template>
57
+ <div
58
+ :class="{
59
+ 'is-open': isOpen,
60
+ }"
61
+ slot="reference"
62
+ class="time-type-select-input"
63
+ @click="openSelectWrap"
64
+ >
65
+ <el-input
66
+ size="small"
67
+ v-model="showModule"
68
+ :readonly="true"
69
+ placeholder="请选择时间"
70
+ :suffix-icon="suffixIcon"
71
+ >
72
+ </el-input>
73
+ </div>
74
+ </el-popover>
75
+ </div>
76
+ </template>
77
+
78
+ <script>
79
+ import baseButtonHandle from "../baseButtonHandle/baseButtonHandle.vue";
80
+ //
81
+ import { baseTimeTypeConfig } from "./config";
82
+ import { FilterTime } from "../../../utils/utils";
83
+ export default {
84
+ name: "baseTimeTypeSelect",
85
+ data() {
86
+ return {
87
+ // 是否打开了选择器
88
+ isOpen: false,
89
+ // 内部是否选择了自定义时间
90
+ timeModule: null,
91
+ // 内部是否选择了某一个单项
92
+ selectLineItem: null,
93
+ // 按钮的配置
94
+ handleConfig: null,
95
+ };
96
+ },
97
+ created() {
98
+ this.handleConfig = [
99
+ {
100
+ text: "确定",
101
+ type: "primary",
102
+ plain: false,
103
+ click: () => {
104
+ this.confirm();
105
+ },
106
+ },
107
+ ];
108
+ },
109
+ props: {
110
+ value: {},
111
+ },
112
+ components: {
113
+ baseButtonHandleVue,
114
+ },
115
+ computed: {
116
+ module: {
117
+ set(val) {
118
+ console.log(val);
119
+ this.$emit("input", val);
120
+ },
121
+ get() {
122
+ return this.$props.value;
123
+ },
124
+ },
125
+ suffixIcon() {
126
+ if (this.isOpen) {
127
+ return "el-icon-arrow-up";
128
+ } else {
129
+ return "el-icon-arrow-down";
130
+ }
131
+ },
132
+ baseTimeTypeConfig() {
133
+ return baseTimeTypeConfig;
134
+ },
135
+ showModule() {
136
+ if (this.module) {
137
+ console.log(typeof this.module);
138
+ if (typeof this.module == "string") {
139
+ let text = null;
140
+ this.baseTimeTypeConfig.forEach((item) => {
141
+ item.list.forEach((citem) => {
142
+ if (citem.key == this.module) {
143
+ text = citem.text;
144
+ }
145
+ });
146
+ });
147
+
148
+ return text;
149
+ } else if (typeof this.module == "object") {
150
+ let start = FilterTime(
151
+ parseInt(this.module[0].toFixed(0)),
152
+ "YYYY-MM-DD"
153
+ );
154
+ let end = FilterTime(
155
+ parseInt(this.module[1].toFixed(0)),
156
+ "YYYY-MM-DD"
157
+ );
158
+ return `${start}-${end}`;
159
+ }
160
+ }
161
+ return null;
162
+ },
163
+ },
164
+ methods: {
165
+ eventShow() {
166
+ this.isOpen = true;
167
+ this.timeModule = null;
168
+ this.selectLineItem = null;
169
+ },
170
+
171
+ eventHide() {
172
+ this.isOpen = false;
173
+ },
174
+
175
+ openSelectWrap() {
176
+ this.isOpen = !this.isOpen;
177
+ },
178
+
179
+ confirm() {
180
+ let _timeModule = this.timeModule;
181
+ let _selectLineItem = this.selectLineItem;
182
+ if (_timeModule) {
183
+ this.module = _timeModule;
184
+ }
185
+ if (_selectLineItem) {
186
+ this.module = _selectLineItem;
187
+ }
188
+ this.$emit("selectConfirm", _timeModule ? _timeModule : _selectLineItem);
189
+ this.$refs.popover.doClose();
190
+ },
191
+ },
192
+ };
193
+ </script>
194
+
195
+ <style lang="less" scoped>
196
+ .base-time-type-select-wrap {
197
+ width: auto;
198
+ height: auto;
199
+ overflow: hidden;
200
+ border-radius: calc(var(--radius) * 2);
201
+ .time-type-select-input {
202
+ background: var(--color-gray-m);
203
+ }
204
+ /deep/ .el-input__inner {
205
+ font-weight: var(--font-weight-kg);
206
+ border-color: transparent;
207
+ }
208
+ .is-open {
209
+ background: var(--color-primary);
210
+ /deep/ .el-input__inner {
211
+ color: white !important;
212
+ }
213
+ /deep/ .el-icon-arrow-up {
214
+ color: white !important;
215
+ }
216
+ }
217
+ }
218
+ .time-type-select-content {
219
+ width: 348px;
220
+ height: 348px;
221
+ background: var(--bg-white);
222
+ .content-line-wrap {
223
+ box-sizing: border-box;
224
+ padding: var(--padding-5) 0px;
225
+ .content-line {
226
+ width: 100%;
227
+ height: auto;
228
+ display: flex;
229
+ align-items: center;
230
+ flex-flow: row nowrap;
231
+ margin-bottom: var(--margin-2);
232
+ justify-content: space-between;
233
+ .line-item-wrap {
234
+ height: auto;
235
+ display: flex;
236
+ align-items: center;
237
+ flex-flow: row nowrap;
238
+ width: calc(100% - 60px);
239
+ justify-content: space-between;
240
+ .line-item {
241
+ width: 30%;
242
+ height: 34px;
243
+ cursor: pointer;
244
+ line-height: 34px;
245
+ text-align: center;
246
+ border-radius: calc(var(--radius) * 2);
247
+ &:hover {
248
+ background: var(--color-gray-m);
249
+ }
250
+ span {
251
+ color: var(--font-color-d);
252
+ font-size: var(--font-size-base);
253
+ }
254
+ }
255
+ .select {
256
+ background: var(--color-primary);
257
+ span {
258
+ color: white;
259
+ }
260
+ &:hover {
261
+ background: var(--color-primary);
262
+ span {
263
+ color: white;
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }
270
+
271
+ .type-des {
272
+ width: 60px;
273
+ text-align: center;
274
+ color: var(--font-color-s);
275
+ font-size: var(--font-size-s);
276
+ }
277
+
278
+ .time-type-custom-wrap,
279
+ .button-handle-wrap {
280
+ height: auto;
281
+ box-sizing: border-box;
282
+ padding: calc(var(--padding-5) * 1) 0px;
283
+ border-top: 2px solid var(--color-border);
284
+ }
285
+ .time-type-custom-wrap {
286
+ display: flex;
287
+ flex-flow: column;
288
+ align-items: flex-start;
289
+ justify-content: center;
290
+ height: calc(100% - 260px);
291
+ }
292
+ }
293
+ </style>
@@ -0,0 +1,47 @@
1
+ export const baseTimeTypeConfig = [
2
+ {
3
+ key: "day",
4
+ text: "天",
5
+ list: [
6
+ { key: "today", text: "今天" },
7
+ { key: "preay", text: "昨天" },
8
+ { key: "nextday", text: "明天" },
9
+ ],
10
+ },
11
+ {
12
+ key: "week",
13
+ text: "周",
14
+ list: [
15
+ { key: "toweek", text: "本周" },
16
+ { key: "preweek", text: "上周" },
17
+ { key: "nextweek", text: "下周" },
18
+ ],
19
+ },
20
+ {
21
+ key: "month",
22
+ text: "月",
23
+ list: [
24
+ { key: "tomonth", text: "本月" },
25
+ { key: "premonth", text: "上月" },
26
+ { key: "nextmonth", text: "下月" },
27
+ ],
28
+ },
29
+ {
30
+ key: "session",
31
+ text: "季度",
32
+ list: [
33
+ { key: "tosession", text: "本季度" },
34
+ { key: "presession", text: "上季度" },
35
+ { key: "nextsession", text: "下季度" },
36
+ ],
37
+ },
38
+ {
39
+ key: "year",
40
+ text: "年",
41
+ list: [
42
+ { key: "toyear", text: "今年" },
43
+ { key: "preyear", text: "去年" },
44
+ { key: "nextyear", text: "明年" },
45
+ ],
46
+ },
47
+ ];
@@ -0,0 +1,6 @@
1
+ import baseTimeTypeSelect from "./base_time_type_select.vue";
2
+
3
+ baseTimeTypeSelect.install = function (Vue) {
4
+ Vue.component(baseTimeTypeSelect.name, baseTimeTypeSelect);
5
+ };
6
+ export default baseTimeTypeSelect;
@@ -0,0 +1,7 @@
1
+ import baseToggle from "./toggle.vue";
2
+
3
+ baseToggle.install = function (Vue) {
4
+ Vue.component(baseToggle.name, baseToggle);
5
+ };
6
+
7
+ export default baseToggle;
@@ -0,0 +1,131 @@
1
+ <template>
2
+ <div class="toggle-wrap" :class="[size]">
3
+ <div
4
+ :key="index"
5
+ @click="handletoggle(item)"
6
+ class="toggle-item-wrap"
7
+ :class="{
8
+ selected: item.value == module,
9
+ }"
10
+ v-for="(item, index) in toggleList"
11
+ >
12
+ <base-icon
13
+ :size="`l`"
14
+ :color="`s`"
15
+ :event="true"
16
+ v-if="item.icon"
17
+ :name="item.icon"
18
+ @iconClick="handletoggle(item)"
19
+ ></base-icon>
20
+ <span v-else> {{ item.label }}</span>
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+ export default {
27
+ name: "baseToggle",
28
+ data() {
29
+ return {};
30
+ },
31
+ props: {
32
+ value: {
33
+ type: [String, Boolean, Number],
34
+ require: true,
35
+ },
36
+ toggleList: {
37
+ require: true,
38
+ },
39
+ size: {
40
+ type: String,
41
+ default: "min",
42
+ },
43
+ },
44
+ computed: {
45
+ module: {
46
+ set(val) {
47
+ this.$emit("input", val);
48
+ },
49
+ get() {
50
+ return this.$props.value;
51
+ },
52
+ },
53
+ },
54
+ methods: {
55
+ handletoggle(item) {
56
+ this.module = item.value;
57
+ this.$emit("handletoggle", item);
58
+ },
59
+ },
60
+ };
61
+ </script>
62
+
63
+ <style lang="less" scoped>
64
+ .toggle-wrap {
65
+ height: auto;
66
+ display: inline-block;
67
+ width: auto !important;
68
+ padding: var(--padding-2);
69
+ background: var(--bg-gray);
70
+ border-radius: calc(var(--radius) * 1);
71
+ .toggle-item-wrap {
72
+ cursor: pointer;
73
+ display: inline-block;
74
+ border-radius: calc(var(--radius) * 1);
75
+ span {
76
+ color: var(--font-color-m);
77
+ font-size: var(--font-size-s);
78
+ }
79
+ &:not(.selected) {
80
+ &:hover {
81
+ background: var(--color-gray-d);
82
+ span {
83
+ color: var(--font-color-d);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ .toggle-item-wrap + .toggle-item-wrap {
89
+ margin-left: var(--margin-2);
90
+ }
91
+ .selected {
92
+ background: var(--bg-white);
93
+ box-shadow: 0 3px 5px rgba(13, 20, 36, 0.18), 0 0 1px rgba(13, 20, 36, 0.29);
94
+ }
95
+ }
96
+ .min {
97
+ .toggle-item-wrap {
98
+ line-height: 24px;
99
+ padding: 0px var(--padding-3);
100
+ }
101
+ }
102
+
103
+ .middle {
104
+ .toggle-item-wrap {
105
+ line-height: 36px;
106
+ padding: 0px calc(var(--padding-3) * 2);
107
+ span {
108
+ font-size: var(--font-size-base);
109
+ }
110
+ }
111
+ }
112
+
113
+ .big {
114
+ .toggle-item-wrap {
115
+ line-height: 48px;
116
+ padding: 0px calc(var(--padding-3) * 3);
117
+ span {
118
+ font-size: var(--font-size-l);
119
+ }
120
+ }
121
+ }
122
+ /deep/.base-icon-wrap {
123
+ width: 24px !important;
124
+ height: 24px !important;
125
+ cursor: pointer !important;
126
+ }
127
+ /deep/ .event {
128
+ color: inherit;
129
+ background: inherit !important;
130
+ }
131
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseUpload from "./baseUpload.vue";
2
+
3
+ baseUpload.install = function (Vue) {
4
+ Vue.component(baseUpload.name, baseUpload);
5
+ };
6
+ export default baseUpload;
@@ -0,0 +1,111 @@
1
+ <template>
2
+ <div class="base-upload-wrap" v-loading="uploadLoading">
3
+ <div class="base-upload-content">
4
+ <baseUploadItemVue
5
+ :key="index"
6
+ :type="`img`"
7
+ :uploadItem="item"
8
+ v-for="(item, index) in module"
9
+ @handleDeleteUploadItem="handleDeleteUploadItem(index)"
10
+ ></baseUploadItemVue>
11
+ <baseUploadItemVue
12
+ :type="`upload`"
13
+ v-show="!isMax"
14
+ ref="itemUpload"
15
+ :fileType="fileType"
16
+ :uploadType="`multiple`"
17
+ @inputChange="inputChange"
18
+ ></baseUploadItemVue>
19
+ </div>
20
+ <div class="base-upload-footer">
21
+ <span>{{ textNotic }}(最大{{ max }}张)</span>
22
+ </div>
23
+ </div>
24
+ </template>
25
+
26
+ <script>
27
+ import baseSkeletonVue from "../baseSkeleton/baseSkeleton.vue";
28
+ import baseUploadItemVue from "./baseUploadItem.vue";
29
+ //
30
+ import { baseUploadMixins } from "./mixins";
31
+ export default {
32
+ name: "baseUpload",
33
+ data() {
34
+ return {
35
+ uploadLoading: false,
36
+ };
37
+ },
38
+ beforeDestroy() {
39
+ if (this.dynamicmount) {
40
+ this.uploadEd();
41
+ }
42
+ },
43
+ mixins: [baseUploadMixins],
44
+ components: {
45
+ baseSkeletonVue,
46
+ baseUploadItemVue,
47
+ },
48
+ props: {
49
+ textNotic: {
50
+ type: String,
51
+ default: "点击+上传图片",
52
+ },
53
+ max: {
54
+ type: Number,
55
+ default: 99,
56
+ },
57
+ value: {
58
+ type: Array,
59
+ require: true,
60
+ },
61
+ fileType: {
62
+ type: String,
63
+ default: "img",
64
+ },
65
+ },
66
+ computed: {
67
+ module: {
68
+ set(val) {
69
+ this.$emit("input", val);
70
+ },
71
+ get() {
72
+ return this.$props.value;
73
+ },
74
+ },
75
+ },
76
+ methods: {
77
+ handleDeleteUploadItem(index) {
78
+ this.module.splice(index, 1);
79
+ },
80
+ },
81
+ };
82
+ </script>
83
+
84
+ <style lang="less" scoped>
85
+ .base-upload-wrap {
86
+ width: 100%;
87
+ height: auto;
88
+ .base-upload-content {
89
+ width: 100%;
90
+ height: auto;
91
+ display: flex;
92
+ flex-flow: row wrap;
93
+ align-items: flex-start;
94
+ justify-content: flex-start;
95
+ }
96
+ .base-upload-footer {
97
+ width: 100%;
98
+ height: auto;
99
+ text-align: left;
100
+ margin-top: calc(var(--margin-5) * 2);
101
+ span {
102
+ color: var(--font-color-s);
103
+ font-size: var(--font-size-s);
104
+ }
105
+ }
106
+
107
+ /deep/ .el-loading-mask {
108
+ z-index: 1 !important;
109
+ }
110
+ }
111
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseUploadItem from "./baseUploadItem.vue";
2
+
3
+ baseUploadItem.install = function (Vue) {
4
+ Vue.component(baseUploadItem.name, baseUploadItem);
5
+ };
6
+ export default baseUploadItem;