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,348 @@
1
+ <!-- element 源码 勿动 -->
2
+ <template>
3
+ <transition name="viewer-fade">
4
+ <div
5
+ tabindex="-1"
6
+ ref="el-image-viewer__wrapper"
7
+ class="el-image-viewer__wrapper"
8
+ :style="{ 'z-index': viewerZIndex }"
9
+ >
10
+ <div class="el-image-viewer__mask" @click.self="handleMaskClick"></div>
11
+ <!-- CLOSE -->
12
+ <span class="el-image-viewer__btn el-image-viewer__close" @click="hide">
13
+ <i class="el-icon-close"></i>
14
+ </span>
15
+ <!-- ARROW -->
16
+ <template v-if="!isSingle">
17
+ <span
18
+ class="el-image-viewer__btn el-image-viewer__prev"
19
+ :class="{ 'is-disabled': !infinite && isFirst }"
20
+ @click="prev"
21
+ >
22
+ <i class="el-icon-arrow-left" />
23
+ </span>
24
+ <span
25
+ class="el-image-viewer__btn el-image-viewer__next"
26
+ :class="{ 'is-disabled': !infinite && isLast }"
27
+ @click="next"
28
+ >
29
+ <i class="el-icon-arrow-right" />
30
+ </span>
31
+ </template>
32
+ <!-- ACTIONS -->
33
+ <div class="el-image-viewer__btn el-image-viewer__actions">
34
+ <div class="el-image-viewer__actions__inner">
35
+ <i class="el-icon-zoom-out" @click="handleActions('zoomOut')"></i>
36
+ <i class="el-icon-zoom-in" @click="handleActions('zoomIn')"></i>
37
+ <i class="el-image-viewer__actions__divider"></i>
38
+ <i :class="mode.icon" @click="toggleMode"></i>
39
+ <i class="el-image-viewer__actions__divider"></i>
40
+ <i
41
+ class="el-icon-refresh-left"
42
+ @click="handleActions('anticlocelise')"
43
+ ></i>
44
+ <i
45
+ class="el-icon-refresh-right"
46
+ @click="handleActions('clocelise')"
47
+ ></i>
48
+ </div>
49
+ </div>
50
+ <!-- CANVAS -->
51
+ <div class="el-image-viewer__canvas">
52
+ <div v-for="(url, i) in urlList" :key="url">
53
+ <img
54
+ v-if="i === index"
55
+ ref="img"
56
+ class="el-image-viewer__img"
57
+ :key="url"
58
+ :src="currentImg"
59
+ :style="imgStyle"
60
+ @load="handleImgLoad"
61
+ @error="handleImgError"
62
+ @mousedown="handleMouseDown"
63
+ />
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </transition>
68
+ </template>
69
+
70
+ <script>
71
+ import { on, off } from "element-ui/src/utils/dom";
72
+ import { rafThrottle, isFirefox } from "element-ui/src/utils/util";
73
+ import { PopupManager } from "element-ui/src/utils/popup";
74
+
75
+ const Mode = {
76
+ CONTAIN: {
77
+ name: "contain",
78
+ icon: "el-icon-full-screen",
79
+ },
80
+ ORIGINAL: {
81
+ name: "original",
82
+ icon: "el-icon-c-scale-to-original",
83
+ },
84
+ };
85
+
86
+ const mousewheelEventName = isFirefox() ? "DOMMouseScroll" : "mousewheel";
87
+
88
+ export default {
89
+ name: "imageViewer",
90
+
91
+ props: {
92
+ urlList: {
93
+ type: Array,
94
+ default: () => [],
95
+ },
96
+ zIndex: {
97
+ type: Number,
98
+ default: 2000,
99
+ },
100
+ onSwitch: {
101
+ type: Function,
102
+ default: () => {},
103
+ },
104
+ onClose: {
105
+ type: Function,
106
+ default: () => {},
107
+ },
108
+ initialIndex: {
109
+ type: Number,
110
+ default: 0,
111
+ },
112
+ appendToBody: {
113
+ type: Boolean,
114
+ default: true,
115
+ },
116
+ maskClosable: {
117
+ type: Boolean,
118
+ default: true,
119
+ },
120
+ },
121
+
122
+ data() {
123
+ return {
124
+ index: this.initialIndex,
125
+ isShow: false,
126
+ infinite: true,
127
+ loading: false,
128
+ mode: Mode.CONTAIN,
129
+ transform: {
130
+ scale: 1,
131
+ deg: 0,
132
+ offsetX: 0,
133
+ offsetY: 0,
134
+ enableTransition: false,
135
+ },
136
+ };
137
+ },
138
+ computed: {
139
+ isSingle() {
140
+ return this.urlList.length <= 1;
141
+ },
142
+ isFirst() {
143
+ return this.index === 0;
144
+ },
145
+ isLast() {
146
+ return this.index === this.urlList.length - 1;
147
+ },
148
+ currentImg() {
149
+ return this.urlList[this.index];
150
+ },
151
+ imgStyle() {
152
+ const { scale, deg, offsetX, offsetY, enableTransition } = this.transform;
153
+ const style = {
154
+ transform: `scale(${scale}) rotate(${deg}deg)`,
155
+ transition: enableTransition ? "transform .3s" : "",
156
+ "margin-left": `${offsetX}px`,
157
+ "margin-top": `${offsetY}px`,
158
+ };
159
+ if (this.mode === Mode.CONTAIN) {
160
+ style.maxWidth = style.maxHeight = "100%";
161
+ }
162
+ return style;
163
+ },
164
+ viewerZIndex() {
165
+ const nextZIndex = PopupManager.nextZIndex();
166
+ return this.zIndex > nextZIndex ? this.zIndex : nextZIndex;
167
+ },
168
+ },
169
+ watch: {
170
+ index: {
171
+ handler: function (val) {
172
+ this.reset();
173
+ this.onSwitch(val);
174
+ },
175
+ },
176
+ currentImg(val) {
177
+ this.$nextTick((_) => {
178
+ const $img = this.$refs.img[0];
179
+ if (!$img.complete) {
180
+ this.loading = true;
181
+ }
182
+ });
183
+ },
184
+ },
185
+ methods: {
186
+ hide() {
187
+ this.deviceSupportUninstall();
188
+ this.onClose();
189
+ },
190
+ deviceSupportInstall() {
191
+ this._keyDownHandler = (e) => {
192
+ e.stopPropagation();
193
+ const keyCode = e.keyCode;
194
+ switch (keyCode) {
195
+ // ESC
196
+ case 27:
197
+ this.hide();
198
+ break;
199
+ // SPACE
200
+ case 32:
201
+ this.toggleMode();
202
+ break;
203
+ // LEFT_ARROW
204
+ case 37:
205
+ this.prev();
206
+ break;
207
+ // UP_ARROW
208
+ case 38:
209
+ this.handleActions("zoomIn");
210
+ break;
211
+ // RIGHT_ARROW
212
+ case 39:
213
+ this.next();
214
+ break;
215
+ // DOWN_ARROW
216
+ case 40:
217
+ this.handleActions("zoomOut");
218
+ break;
219
+ }
220
+ };
221
+ this._mouseWheelHandler = rafThrottle((e) => {
222
+ const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
223
+ if (delta > 0) {
224
+ this.handleActions("zoomIn", {
225
+ zoomRate: 0.015,
226
+ enableTransition: false,
227
+ });
228
+ } else {
229
+ this.handleActions("zoomOut", {
230
+ zoomRate: 0.015,
231
+ enableTransition: false,
232
+ });
233
+ }
234
+ });
235
+ on(document, "keydown", this._keyDownHandler);
236
+ on(document, mousewheelEventName, this._mouseWheelHandler);
237
+ },
238
+ deviceSupportUninstall() {
239
+ off(document, "keydown", this._keyDownHandler);
240
+ off(document, mousewheelEventName, this._mouseWheelHandler);
241
+ this._keyDownHandler = null;
242
+ this._mouseWheelHandler = null;
243
+ },
244
+ handleImgLoad(e) {
245
+ this.loading = false;
246
+ },
247
+ handleImgError(e) {
248
+ this.loading = false;
249
+ e.target.alt = "加载失败";
250
+ },
251
+ handleMouseDown(e) {
252
+ if (this.loading || e.button !== 0) return;
253
+
254
+ const { offsetX, offsetY } = this.transform;
255
+ const startX = e.pageX;
256
+ const startY = e.pageY;
257
+ this._dragHandler = rafThrottle((ev) => {
258
+ this.transform.offsetX = offsetX + ev.pageX - startX;
259
+ this.transform.offsetY = offsetY + ev.pageY - startY;
260
+ });
261
+ on(document, "mousemove", this._dragHandler);
262
+ on(document, "mouseup", (ev) => {
263
+ off(document, "mousemove", this._dragHandler);
264
+ });
265
+
266
+ e.preventDefault();
267
+ },
268
+ handleMaskClick() {
269
+ if (this.maskClosable) {
270
+ this.hide();
271
+ }
272
+ },
273
+ reset() {
274
+ this.transform = {
275
+ scale: 1,
276
+ deg: 0,
277
+ offsetX: 0,
278
+ offsetY: 0,
279
+ enableTransition: false,
280
+ };
281
+ },
282
+ toggleMode() {
283
+ if (this.loading) return;
284
+
285
+ const modeNames = Object.keys(Mode);
286
+ const modeValues = Object.values(Mode);
287
+ const index = modeValues.indexOf(this.mode);
288
+ const nextIndex = (index + 1) % modeNames.length;
289
+ this.mode = Mode[modeNames[nextIndex]];
290
+ this.reset();
291
+ },
292
+ prev() {
293
+ if (this.isFirst && !this.infinite) return;
294
+ const len = this.urlList.length;
295
+ this.index = (this.index - 1 + len) % len;
296
+ },
297
+ next() {
298
+ if (this.isLast && !this.infinite) return;
299
+ const len = this.urlList.length;
300
+ this.index = (this.index + 1) % len;
301
+ },
302
+ handleActions(action, options = {}) {
303
+ if (this.loading) return;
304
+ const { zoomRate, rotateDeg, enableTransition } = {
305
+ zoomRate: 0.2,
306
+ rotateDeg: 90,
307
+ enableTransition: true,
308
+ ...options,
309
+ };
310
+ const { transform } = this;
311
+ switch (action) {
312
+ case "zoomOut":
313
+ if (transform.scale > 0.2) {
314
+ transform.scale = parseFloat(
315
+ (transform.scale - zoomRate).toFixed(3)
316
+ );
317
+ }
318
+ break;
319
+ case "zoomIn":
320
+ transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3));
321
+ break;
322
+ case "clocelise":
323
+ transform.deg += rotateDeg;
324
+ break;
325
+ case "anticlocelise":
326
+ transform.deg -= rotateDeg;
327
+ break;
328
+ }
329
+ transform.enableTransition = enableTransition;
330
+ },
331
+ },
332
+ mounted() {
333
+ this.deviceSupportInstall();
334
+ if (this.appendToBody) {
335
+ document.body.appendChild(this.$el);
336
+ }
337
+ // add tabindex then wrapper can be focusable via Javascript
338
+ // focus wrapper so arrow key can't cause inner scroll behavior underneath
339
+ this.$refs["el-image-viewer__wrapper"].focus();
340
+ },
341
+ destroyed() {
342
+ // if appendToBody is true, remove DOM node after destroy
343
+ if (this.appendToBody && this.$el && this.$el.parentNode) {
344
+ this.$el.parentNode.removeChild(this.$el);
345
+ }
346
+ },
347
+ };
348
+ </script>
@@ -0,0 +1,7 @@
1
+ import imageViewer from "./image-viewer.vue";
2
+
3
+ imageViewer.install = function (Vue) {
4
+ Vue.component(imageViewer.name, imageViewer);
5
+ };
6
+
7
+ export default imageViewer;
@@ -0,0 +1,160 @@
1
+ <template>
2
+ <div class="base-img-wrap">
3
+ <img
4
+ alt=""
5
+ :src="src"
6
+ @load="loadEd"
7
+ @error="errorEd"
8
+ @click="viewImg"
9
+ v-if="imgShow"
10
+ v-show="!isError && !loading"
11
+ :style="imgStyle"
12
+ />
13
+ <baseSkeletonVue
14
+ v-if="loading"
15
+ :lines="[1]"
16
+ :shape="`rect`"
17
+ ></baseSkeletonVue>
18
+ <div class="img-error-wrap" v-if="isError">
19
+ <base-icon
20
+ :name="`icon-tupiancuowu`"
21
+ :size="`l`"
22
+ :color="`s`"
23
+ ></base-icon>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ import useImg from "../../../config/use/UseImg";
30
+ import baseSkeletonVue from "../baseSkeleton/baseSkeleton.vue";
31
+ export default {
32
+ name: "baseImg",
33
+ data() {
34
+ return {
35
+ isError: false,
36
+ loading: true,
37
+ };
38
+ },
39
+ created() {
40
+ this.init();
41
+ },
42
+ components: {
43
+ baseSkeletonVue,
44
+ },
45
+ props: {
46
+ // cover,fill,contain,
47
+ fit: {
48
+ type: String,
49
+ default: "cover",
50
+ },
51
+ src: {
52
+ type: String,
53
+ },
54
+ error: {
55
+ type: String,
56
+ default: "图片加载失败",
57
+ },
58
+ event: {
59
+ type: Boolean,
60
+ default: false,
61
+ },
62
+ },
63
+ computed: {
64
+ imgStyle() {
65
+ return {
66
+ objectFit: this.$props.fit,
67
+ cursor: this.$props.event ? "zoom-in" : "default",
68
+ };
69
+ },
70
+ imgShow() {
71
+ if (this.$props.src) {
72
+ return true;
73
+ }
74
+ return false;
75
+ },
76
+ },
77
+ methods: {
78
+ init() {
79
+ if (!this.$props.src) {
80
+ this.loading = true;
81
+ }
82
+ },
83
+ loadEd() {
84
+ this.loading = false;
85
+ },
86
+ errorEd() {
87
+ console.log(this.$props.src)
88
+ console.log("imgError");
89
+ this.loading = false;
90
+ this.isError = true;
91
+ },
92
+ viewImg() {
93
+ if (!this.$props.event || this.loading || this.isError) return;
94
+ let parent = this.$parent;
95
+ if (!parent) {
96
+ useImg.toView([this.$props.src]);
97
+ return;
98
+ }
99
+ let tags = parent.$options._componentTag;
100
+ if (tags == "baseUploadItemVue") {
101
+ useImg.toView([this.$props.src]);
102
+ } else {
103
+ let parentChildrenList = parent.$children;
104
+ let name = this.$options.name;
105
+ let filterList = parentChildrenList.filter((item) => {
106
+ return item.$options.name == name;
107
+ });
108
+ let imgList = [];
109
+ let thisIndex = null;
110
+ let thisSrc = this.$props.src;
111
+ filterList.forEach((item, index) => {
112
+ let itemSrc = item.$props.src;
113
+ if (itemSrc == thisSrc) {
114
+ thisIndex = index;
115
+ }
116
+ imgList.push(itemSrc);
117
+ });
118
+ this.viewListImg(thisIndex, imgList);
119
+ }
120
+ },
121
+
122
+ viewListImg(index, imgList) {
123
+ let templateList = [...imgList];
124
+ if (index == 0) {
125
+ useImg.toView(templateList);
126
+ return;
127
+ }
128
+ let start = templateList.splice(index);
129
+ let remain = templateList.splice(0, index);
130
+ useImg.toView(start.concat(remain));
131
+ },
132
+ },
133
+
134
+ watch: {
135
+ src: function (newVal, oldVal) {
136
+ this.isError = false;
137
+ this.loading = true;
138
+ },
139
+ },
140
+ };
141
+ </script>
142
+
143
+ <style lang="less" scoped>
144
+ .base-img-wrap {
145
+ width: 100%;
146
+ height: 100%;
147
+ img {
148
+ width: 100%;
149
+ height: 100%;
150
+ }
151
+ .img-error-wrap {
152
+ width: 100%;
153
+ height: 100%;
154
+ display: flex;
155
+ align-items: center;
156
+ flex-flow: row nowrap;
157
+ justify-content: center;
158
+ }
159
+ }
160
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseImg from "./baseImg.vue";
2
+
3
+ baseImg.install = function (Vue) {
4
+ Vue.component(baseImg.name, baseImg);
5
+ };
6
+ export default baseImg;
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div class="base-text-wrap">
3
+ <div class="base-title">
4
+ <span>{{ label }}</span>
5
+ </div>
6
+ <div class="base-value">
7
+ <el-tooltip
8
+ effect="dark"
9
+ placement="top"
10
+ :visible-arrow="false"
11
+ :content="`${value}`"
12
+ >
13
+ <span>{{ value }}</span>
14
+ </el-tooltip>
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <script>
20
+ export default {
21
+ name: "baseInforWrap",
22
+ data() {
23
+ return {};
24
+ },
25
+ props: {
26
+ label: {
27
+ type: String,
28
+ },
29
+ value: {},
30
+ },
31
+ };
32
+ </script>
33
+
34
+ <style lang="less" scoped>
35
+ .base-text-wrap {
36
+ // width: 100%;
37
+ height: 100%;
38
+ overflow: hidden;
39
+ background: inherit;
40
+ box-sizing: border-box;
41
+ .base-title {
42
+ span {
43
+ color: var(--font-color-s);
44
+ font-size: var(--font-size-base);
45
+ }
46
+ }
47
+ .base-value {
48
+ width: 100%;
49
+ span {
50
+ width: 100%;
51
+ text-align: left;
52
+ overflow: hidden;
53
+ white-space: nowrap;
54
+ display: inline-block;
55
+ text-overflow: ellipsis;
56
+ color: var(--font-color-d);
57
+ font-weight: var(--font-weight-g);
58
+ font-size: var(--font-size-base);
59
+ }
60
+ }
61
+ }
62
+ .base-text-wrap + .base-text-wrap {
63
+ padding-left: calc(var(--padding-5) * 1.5);
64
+ border-left: 1px solid var(--color-border);
65
+ }
66
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseInforWrap from "./baseInforWrap.vue";
2
+
3
+ baseInforWrap.install = function (Vue) {
4
+ Vue.component(baseInforWrap.name, baseInforWrap);
5
+ };
6
+ export default baseInforWrap;
@@ -0,0 +1,93 @@
1
+ <template>
2
+ <div class="base-line-info-group">
3
+ <div
4
+ :key="index"
5
+ class="line-group-wrap"
6
+ v-for="(item, index) in mountedList"
7
+ >
8
+ <div
9
+ class="line-wrap"
10
+ :key="cindex"
11
+ v-for="(citem, cindex) in item"
12
+ :style="{ width: `${100 / item.length}%` }"
13
+ >
14
+ <baseLineInfoItemVue
15
+ :icon="citem.icon"
16
+ :label="citem.label"
17
+ :value="citem.value"
18
+ :event="citem.event"
19
+ :labelWidth="labelWidth"
20
+ :valueAlign="valueAlign"
21
+ @infoclickicon="infoclickicon(citem)"
22
+ ></baseLineInfoItemVue>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ import baseLineInfoItemVue from "../baseLineInfoItem/baseLineInfoItem.vue";
30
+ //
31
+ import { ArrayChunk } from "../../../utils/utils";
32
+ export default {
33
+ name: "baseLineInfoGroup",
34
+ data() {
35
+ return {
36
+ labelWidth: null,
37
+ };
38
+ },
39
+ created() {
40
+ this.init();
41
+ },
42
+ components: {
43
+ baseLineInfoItemVue,
44
+ },
45
+ props: {
46
+ valueAlign: {
47
+ type: String,
48
+ default: "left",
49
+ },
50
+ lineNumber: {
51
+ type: Number,
52
+ default: 1,
53
+ },
54
+ infoList: {
55
+ type: Array,
56
+ require: true,
57
+ },
58
+ },
59
+ computed: {
60
+ mountedList() {
61
+ return ArrayChunk(this.$props.infoList, this.$props.lineNumber);
62
+ },
63
+ },
64
+ methods: {
65
+ init() {
66
+ let _inforList = this.$props.infoList;
67
+ _inforList.forEach((item, index) => {
68
+ let width = item.label.length * 14 + (item.icon ? 42 : 0);
69
+ if (this.labelWidth < width) {
70
+ this.labelWidth = width;
71
+ }
72
+ });
73
+ console.log(this.labelWidth);
74
+ },
75
+ infoclickicon(item) {
76
+ this.$emit("infoclickicon", item);
77
+ },
78
+ },
79
+ };
80
+ </script>
81
+
82
+ <style lang="less" scoped>
83
+ .base-line-info-group {
84
+ box-sizing: border-box;
85
+ padding: var(--padding-5);
86
+ .line-group-wrap {
87
+ display: flex;
88
+ align-items: center;
89
+ flex-flow: row nowrap;
90
+ justify-content: flex-start;
91
+ }
92
+ }
93
+ </style>
@@ -0,0 +1,6 @@
1
+ import baseLineInfoGroup from "./baseLineInfoGroup.vue";
2
+
3
+ baseLineInfoGroup.install = function (Vue) {
4
+ Vue.component(baseLineInfoGroup.name, baseLineInfoGroup);
5
+ };
6
+ export default baseLineInfoGroup;