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,6 @@
1
+ const areaConfig = [
2
+ { value: "province" },
3
+ { value: "city" },
4
+ { value: "district" },
5
+ ];
6
+ export default areaConfig;
@@ -0,0 +1,531 @@
1
+ <template>
2
+ <div class="base-area-select-wrap">
3
+ <el-popover
4
+ ref="popover"
5
+ trigger="click"
6
+ :disabled="disable"
7
+ placement="bottom"
8
+ @show="eventShow"
9
+ @hide="eventHide"
10
+ >
11
+ <!-- 内容 -->
12
+ <template>
13
+ <div class="area-select-content">
14
+ <div class="content-title">
15
+ <div class="title-left">
16
+ <span>地区选择器</span>
17
+ </div>
18
+ <div class="title-right">
19
+ <base-icon
20
+ :size="`l`"
21
+ :color="`s`"
22
+ :event="true"
23
+ @iconClick="backArea"
24
+ v-show="activeIndex > 1"
25
+ :name="`icon-icon-arrow-left`"
26
+ ></base-icon>
27
+ </div>
28
+ </div>
29
+ <div class="content-middle">
30
+ <div class="middle-left" ref="middleLeft">
31
+ <div
32
+ class="province-item"
33
+ :class="{ active: item.label == activeProvince }"
34
+ @click="checkProvince(item)"
35
+ v-for="(item, index) in areaJson"
36
+ :key="index"
37
+ >
38
+ <span>{{ item.label }}</span>
39
+ </div>
40
+ </div>
41
+ <div class="middle-right">
42
+ <div class="middle-right-title">
43
+ <div
44
+ :key="index"
45
+ class="area-item"
46
+ @click="checkArea(item)"
47
+ :class="{ active: item.label == activeArea }"
48
+ v-for="(item, index) in areaList"
49
+ >
50
+ <base-icon
51
+ :size="`s`"
52
+ :color="`d`"
53
+ :event="true"
54
+ :plain="true"
55
+ class="delete-icon"
56
+ :name="`icon-close`"
57
+ @iconClick="deleteCheck"
58
+ v-if="item.label == activeArea"
59
+ ></base-icon>
60
+ <span :title="item.label">{{ item.label }}</span>
61
+ </div>
62
+ </div>
63
+ <div class="middle-right-bottom">
64
+ <baseButtonHandleVue
65
+ :config="handleConfig"
66
+ ></baseButtonHandleVue>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </template>
72
+ <div
73
+ :class="{
74
+ 'is-open': isOpen,
75
+ }"
76
+ slot="reference"
77
+ class="area-select-input"
78
+ @click="openSelectWrap"
79
+ >
80
+ <el-input
81
+ size="small"
82
+ :disabled="disable"
83
+ :readonly="true"
84
+ v-model="showModule"
85
+ placeholder="请选择地区"
86
+ :suffix-icon="suffixIcon"
87
+ >
88
+ </el-input>
89
+ </div>
90
+ </el-popover>
91
+ </div>
92
+ </template>
93
+
94
+ <script>
95
+ import baseButtonHandleVue from "../baseButtonHandle/baseButtonHandle.vue";
96
+ //
97
+ import areaJson from "./area";
98
+ import areaConfig from "./areaConfig";
99
+ export default {
100
+ name: "baseArea",
101
+ data() {
102
+ return {
103
+ // 是否打开了选择器
104
+ isOpen: false,
105
+ // 按钮的配置
106
+ handleConfig: null,
107
+ // 被选中的目标
108
+ activeObj: null,
109
+ // 需要返回的值
110
+ areaValue: [],
111
+ // 记录点击的次数
112
+ activeIndex: 0,
113
+ // 是否回显过数据
114
+ isReview: false,
115
+ };
116
+ },
117
+ created() {
118
+ this.init();
119
+ this.handleConfig = [
120
+ {
121
+ type: "info",
122
+ text: this.module ? "取消" : "清空",
123
+ plain: false,
124
+ click: () => {
125
+ this.cancelValue();
126
+ },
127
+ },
128
+ {
129
+ type: "primary",
130
+ text: "确定",
131
+ click: () => {
132
+ this.confirmValue();
133
+ },
134
+ },
135
+ ];
136
+ },
137
+
138
+ props: {
139
+ value: {
140
+ default: null,
141
+ },
142
+ disable: {
143
+ type: Boolean,
144
+ default: false,
145
+ },
146
+ },
147
+
148
+ components: {
149
+ baseButtonHandleVue,
150
+ },
151
+ computed: {
152
+ module: {
153
+ set(val) {
154
+ console.log(val);
155
+ this.$emit("input", val);
156
+ },
157
+ get() {
158
+ return this.$props.value;
159
+ },
160
+ },
161
+ suffixIcon() {
162
+ if (this.isOpen) {
163
+ return "el-icon-arrow-up";
164
+ } else {
165
+ return "el-icon-arrow-down";
166
+ }
167
+ },
168
+ baseTimeTypeConfig() {
169
+ return baseTimeTypeConfig;
170
+ },
171
+ showModule() {
172
+ if (this.areaValue.length > 0) {
173
+ let text = "";
174
+ this.areaValue.forEach((item) => {
175
+ if (item.label) {
176
+ let value = text ? ` / ${item.label}` : item.label;
177
+ text += `${value}`;
178
+ }
179
+ });
180
+ return text;
181
+ }
182
+ return null;
183
+ },
184
+ areaJson() {
185
+ return areaJson;
186
+ },
187
+ activeProvince() {
188
+ if (this.areaValue.length > 0) {
189
+ return this.areaValue[0].label;
190
+ }
191
+ return null;
192
+ },
193
+ activeArea() {
194
+ if (this.areaValue.length > 1) {
195
+ return this.areaValue[this.activeIndex]?.label;
196
+ }
197
+ return null;
198
+ },
199
+ areaList() {
200
+ if (this.activeObj && this.activeObj.children.length > 0) {
201
+ return this.activeObj.children;
202
+ }
203
+ return [];
204
+ },
205
+ },
206
+ methods: {
207
+ init() {
208
+ console.log("start");
209
+ if (this.module && this.module instanceof Object) {
210
+ console.log("end");
211
+ for (let i = 0; i < areaConfig.length; i++) {
212
+ let item = areaConfig[i];
213
+ let value = this.module[`${item.value}`];
214
+ this.$set(this.areaValue, i, {
215
+ label: value,
216
+ pre: null,
217
+ });
218
+ }
219
+ }
220
+ },
221
+ eventShow() {
222
+ this.isOpen = true;
223
+ if (!this.isReview) {
224
+ this.review();
225
+ }
226
+ this.scrollToProvince();
227
+ },
228
+
229
+ review() {
230
+ // let provice = areaJson.findIndex((item) => {});
231
+
232
+ this.areaValue.forEach((item, index) => {
233
+ if (index == 0) {
234
+ let cindex = areaJson.findIndex((citem) => {
235
+ return citem.label == item.label;
236
+ });
237
+
238
+ this.checkProvince(areaJson[cindex]);
239
+ } else {
240
+ console.log("else");
241
+ console.log(this.activeObj);
242
+ if (this.activeObj && this.activeObj.children.length > 0) {
243
+ let cindex = this.activeObj.children.findIndex((citem) => {
244
+ return item.label == citem.label;
245
+ });
246
+
247
+ this.checkArea(this.activeObj.children[cindex]);
248
+ }
249
+ }
250
+ });
251
+
252
+ this.isReview = true;
253
+ },
254
+
255
+ eventHide() {
256
+ this.isOpen = false;
257
+ this.cancelValue();
258
+ },
259
+
260
+ openSelectWrap() {
261
+ if (this.$props.disable) return;
262
+ this.isOpen = !this.isOpen;
263
+ },
264
+ // 选择省份
265
+ checkProvince(province) {
266
+ this.activeIndex = 0;
267
+ this.areaValue = [];
268
+ this.$set(this.areaValue, 0, { label: province.label, pre: null });
269
+
270
+ if (province.children.length > 0) {
271
+ this.activeObj = province;
272
+ this.activeIndex += 1;
273
+ }
274
+ this.isReview = true;
275
+ },
276
+ // 选择地区
277
+ checkArea(area) {
278
+ if (!area) {
279
+ this.isReview = true;
280
+ return;
281
+ }
282
+ let pre = this.areaValue[this.activeIndex];
283
+ if (!pre) {
284
+ this.$set(this.areaValue, this.activeIndex, {
285
+ label: area.label,
286
+ pre: this.activeObj,
287
+ });
288
+ } else {
289
+ pre.label = area.label;
290
+ }
291
+
292
+ if (area.children) {
293
+ this.activeObj = area;
294
+ this.activeIndex += 1;
295
+ }
296
+ this.isReview = true;
297
+ },
298
+
299
+ // 返回
300
+ backArea() {
301
+ console.log(this.activeIndex);
302
+ console.log(this.areaValue);
303
+ let currentArea = this.areaValue[this.activeIndex - 1];
304
+ this.areaValue.splice(this.activeIndex, 1);
305
+ this.activeIndex -= 1;
306
+ if (currentArea.pre) {
307
+ this.activeObj = currentArea.pre;
308
+ }
309
+ },
310
+
311
+ deleteCheck() {
312
+ if (this.activeIndex == 1) {
313
+ this.areaValue.splice(this.activeIndex, 1);
314
+ } else {
315
+ this.backArea();
316
+ }
317
+ },
318
+
319
+ cancelValue() {
320
+ if (!this.module) {
321
+ this.areaValue = [];
322
+ } else {
323
+ this.init();
324
+ this.isReview = false;
325
+ }
326
+ this.$refs.popover.doClose();
327
+ },
328
+
329
+ confirmValue() {
330
+ let value = {};
331
+ for (let i = 0; i < this.areaValue.length; i++) {
332
+ value[`${areaConfig[i].value}`] = this.areaValue[i].label;
333
+ // if (this.module instanceof Object) {
334
+ // this.module[`${areaConfig[i].value}`] = this.areaValue[i].label;
335
+ // } else if (this.$props.value != null && !this.module) {
336
+ // this.$emit("changeValue", {});
337
+ // console.log(this.value);
338
+ // this.module[`${areaConfig[i].value}`] = this.areaValue[i].label;
339
+ // // let obj = {};
340
+ // // obj[`${areaConfig[i].value}`] = this.areaValue[i].label;
341
+ // // this.module = obj;
342
+ // }
343
+ }
344
+
345
+ this.module = value;
346
+
347
+ this.$emit("confirmAreaValue", value);
348
+ console.log(this.module);
349
+ this.$refs.popover.doClose();
350
+ },
351
+
352
+ // 滚动到指定位置
353
+ scrollToProvince() {
354
+ if (this.areaValue.length > 0) {
355
+ let index = 0;
356
+ let label = this.areaValue[0].label;
357
+ for (let i = 0; i < areaJson.length; i++) {
358
+ let item = areaJson[i];
359
+ if (item.label == label) {
360
+ index = i;
361
+ break;
362
+ }
363
+ }
364
+ let refs = this.$refs.middleLeft;
365
+ this.$nextTick(() => {
366
+ refs.scrollTop = refs.childNodes[index].offsetTop - refs.clientHeight;
367
+ });
368
+ }
369
+ },
370
+ },
371
+ };
372
+ </script>
373
+
374
+ <style lang="less" scoped>
375
+ .base-area-select-wrap {
376
+ width: auto;
377
+ height: auto;
378
+ overflow: hidden;
379
+ border-radius: calc(var(--radius) * 2);
380
+ .area-select-input {
381
+ background: var(--color-gray-m);
382
+ }
383
+ /deep/ .el-input__inner {
384
+ font-weight: var(--font-weight-kg);
385
+ border-color: transparent;
386
+ }
387
+ .is-open {
388
+ background: var(--color-primary);
389
+ /deep/ .el-input__inner {
390
+ color: white !important;
391
+ &::placeholder {
392
+ color: var(--color-error) !important;
393
+ }
394
+ }
395
+ /deep/ .el-icon-arrow-up {
396
+ color: white !important;
397
+ }
398
+ }
399
+ }
400
+ .area-select-content {
401
+ width: 400px;
402
+ height: 300px;
403
+ background: var(--bg-white);
404
+ .content-title {
405
+ width: 100%;
406
+ height: 40px;
407
+ display: flex;
408
+ flex-flow: row nowrap;
409
+ justify-content: space-between;
410
+ border-bottom: 2px solid var(--color-border);
411
+ .title-left {
412
+ span {
413
+ line-height: 40px;
414
+ color: var(--font-color-d);
415
+ font-size: var(--font-size-base);
416
+ font-weight: var(--font-weight-kg);
417
+ }
418
+ }
419
+ .title-right {
420
+ width: auto;
421
+ display: flex;
422
+ align-items: center;
423
+ }
424
+ }
425
+ .content-middle {
426
+ width: 100%;
427
+ display: flex;
428
+ height: calc(100% - 40px);
429
+ .middle-left {
430
+ width: 145px;
431
+ height: 100%;
432
+ overflow-y: auto;
433
+ padding: calc(var(--padding-3) * 2);
434
+ padding-left: 0px;
435
+ box-sizing: border-box;
436
+ border-right: 2px solid var(--color-gray-m);
437
+
438
+ .province-item {
439
+ width: 100%;
440
+ height: 28px;
441
+ cursor: pointer;
442
+ background: inherit;
443
+ box-sizing: border-box;
444
+ padding: 0px var(--padding-4);
445
+ margin-bottom: var(--margin-5);
446
+ border-radius: calc(var(--radius) * 2);
447
+ span {
448
+ line-height: 28px;
449
+ text-align: left;
450
+ color: var(--font-color-s);
451
+ font-size: var(--font-size-s);
452
+ }
453
+ &:hover {
454
+ background: var(--bg-gray);
455
+ }
456
+ }
457
+ .active {
458
+ cursor: default;
459
+ background: var(--bg-gray);
460
+ span {
461
+ color: var(--font-color-d);
462
+ }
463
+ }
464
+ }
465
+ .middle-right {
466
+ height: 100%;
467
+ width: calc(100% - 145px);
468
+ padding-left: calc(var(--padding-3) * 2);
469
+ .middle-right-title {
470
+ width: 100%;
471
+ display: flex;
472
+ overflow-y: auto;
473
+ flex-flow: row wrap;
474
+ height: calc(100% - 38px);
475
+ align-content: flex-start;
476
+ justify-content: flex-start;
477
+ margin-bottom: var(--margin-4);
478
+ border-bottom: 2px solid var(--color-gray-m);
479
+ .area-item {
480
+ height: 24px;
481
+ display: flex;
482
+ cursor: pointer;
483
+ position: relative;
484
+ background: inherit;
485
+ width: calc(33% - 8px);
486
+ margin: var(--margin-4);
487
+ margin-left: 0px;
488
+ justify-content: center;
489
+ border-radius: calc(var(--radius) * 2);
490
+ span {
491
+ max-width: 100%;
492
+ line-height: 24px;
493
+ color: var(--font-color-s);
494
+ font-size: var(--font-size-s);
495
+ overflow: hidden;
496
+ white-space: nowrap;
497
+ text-overflow: ellipsis;
498
+ }
499
+ .delete-icon {
500
+ top: 0px;
501
+ right: 0px;
502
+ display: none;
503
+ position: absolute;
504
+ transform: translateY(-50%);
505
+ }
506
+ &:hover {
507
+ background: var(--bg-gray);
508
+ .delete-icon {
509
+ display: flex;
510
+ }
511
+ }
512
+ }
513
+ .active {
514
+ background: var(--bg-gray);
515
+ span {
516
+ color: var(--font-color-d);
517
+ }
518
+ }
519
+ }
520
+ .middle-right-bottom {
521
+ width: 100%;
522
+ height: 30px;
523
+ display: flex;
524
+ flex-flow: row nowrap;
525
+ align-items: center;
526
+ justify-content: flex-end;
527
+ }
528
+ }
529
+ }
530
+ }
531
+ </style>
@@ -0,0 +1,7 @@
1
+ import baseArea from "./baseArea.vue";
2
+
3
+ baseArea.install = function (Vue) {
4
+ Vue.component(baseArea.name, baseArea);
5
+ };
6
+
7
+ export default baseArea;
@@ -0,0 +1,101 @@
1
+ <template>
2
+ <el-badge :value="module" :hidden="module ? false : true">
3
+ <div class="base-avatar-wrap" :class="[size, shape]">
4
+ <baseImgVue v-if="type == 'img'" :src="source" :event="view"></baseImgVue>
5
+ <span v-else-if="type == 'text'">{{ source }}</span>
6
+ <base-icon
7
+ :size="`l`"
8
+ :color="`d`"
9
+ :plain="true"
10
+ :name="source"
11
+ v-else-if="type == 'icon'"
12
+ >
13
+ </base-icon>
14
+ </div>
15
+ </el-badge>
16
+ </template>
17
+
18
+ <script>
19
+ import baseImgVue from "../baseImg/baseImg.vue";
20
+ export default {
21
+ name: "baseAvatar",
22
+ data() {
23
+ return {};
24
+ },
25
+ components: { baseImgVue },
26
+ props: {
27
+ type: {
28
+ type: String,
29
+ default: "icon",
30
+ },
31
+ source: {
32
+ type: String,
33
+ default: "icon-user",
34
+ },
35
+ size: {
36
+ type: String,
37
+ default: "m",
38
+ },
39
+ shape: {
40
+ type: String,
41
+ default: "cir",
42
+ },
43
+ view: {
44
+ type: Boolean,
45
+ default: false,
46
+ },
47
+ value: {},
48
+ },
49
+ computed: {
50
+ module: {
51
+ set(val) {
52
+ this.$emit("input", val);
53
+ },
54
+ get() {
55
+ return this.$props.value;
56
+ },
57
+ },
58
+ },
59
+ };
60
+ </script>
61
+
62
+ <style lang="less" scoped>
63
+ .base-avatar-wrap {
64
+ display: flex;
65
+ overflow: hidden;
66
+ align-items: center;
67
+ flex-flow: row nowrap;
68
+ justify-content: center;
69
+ background: var(--color-gray-m);
70
+ span {
71
+ color: var(--font-color-d);
72
+ font-weight: var(--font-weight-kg);
73
+ }
74
+ }
75
+ .l {
76
+ width: 50px;
77
+ height: 50px;
78
+ font-size: var(--font-size-l);
79
+ }
80
+ .m {
81
+ width: 42px;
82
+ height: 42px;
83
+ span {
84
+ font-size: var(--font-size-base);
85
+ }
86
+ }
87
+
88
+ .s {
89
+ width: 36px;
90
+ height: 36px;
91
+ span {
92
+ font-size: var(--font-size-s);
93
+ }
94
+ }
95
+ .cir {
96
+ border-radius: 50%;
97
+ }
98
+ .squ {
99
+ border-radius: calc(var(--radius) * 2);
100
+ }
101
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseAvatar from "./baseAvatar.vue";
2
+
3
+ baseAvatar.install = function (Vue) {
4
+ Vue.component(baseAvatar.name, baseAvatar);
5
+ };
6
+ export default baseAvatar;
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <div class="footer-handle-wrap" :style="footerHandleClick">
3
+ <el-button
4
+ :key="index"
5
+ :size="size"
6
+ :type="item.type"
7
+ :plain="item.plain"
8
+ @click="handleClick(item)"
9
+ v-for="(item, index) in config"
10
+ >
11
+ <i v-if="item.icon" :class="item.icon"></i> {{ item.text }}</el-button
12
+ >
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ export default {
18
+ name:'baseButtonHandle',
19
+ data() {
20
+ return {};
21
+ },
22
+ computed: {
23
+ footerHandleClick() {
24
+ let _align = this.$props.align;
25
+ return {
26
+ "justify-content": _align == "center" ? "center" : `flex-${_align}`,
27
+ };
28
+ },
29
+ },
30
+ props: {
31
+ /* button按钮的大小 */
32
+ size: {
33
+ type: String,
34
+ default: "mini",
35
+ },
36
+ /* 按钮的方向 左,右,中间 */
37
+ align: {
38
+ type: String,
39
+ default: "end",
40
+ },
41
+
42
+ config: {
43
+ type: Array,
44
+ require: true,
45
+ },
46
+ },
47
+ methods: {
48
+ handleClick(item) {
49
+ if (item.click) {
50
+ item.click();
51
+ }
52
+ },
53
+ },
54
+ };
55
+ </script>
56
+
57
+ <style lang="less" scoped>
58
+ .footer-handle-wrap {
59
+ width: 100%;
60
+ height: 100%;
61
+ display: flex;
62
+ align-items: center;
63
+ }
64
+ </style>