@bdsoft/element 1.1.13 → 1.1.15

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 (157) hide show
  1. package/index.html +13 -0
  2. package/index.js +12 -12
  3. package/package.json +19 -23
  4. package/src/App.vue +28 -0
  5. package/src/assets/css/element.scss +196 -0
  6. package/src/assets/css/layout.scss +215 -0
  7. package/src/assets/css/tailwind.scss +67 -0
  8. package/src/assets/images/banner.gif +0 -0
  9. package/src/assets/images/banner.png +0 -0
  10. package/src/assets/images/bg1.svg +22 -0
  11. package/src/assets/images/bg2.png +0 -0
  12. package/src/assets/images/ff.png +0 -0
  13. package/src/assets/images/home-file1.png +0 -0
  14. package/src/assets/images/ky.png +0 -0
  15. package/src/assets/images/menu/add.png +0 -0
  16. package/src/assets/images/menu/del.png +0 -0
  17. package/src/assets/images/menu/down.png +0 -0
  18. package/src/assets/images/menu/dr.png +0 -0
  19. package/src/assets/images/menu/edit.png +0 -0
  20. package/src/assets/images/menu/kx.png +0 -0
  21. package/src/assets/images/menu/mb.png +0 -0
  22. package/src/assets/images/menu/pz.png +0 -0
  23. package/src/assets/images/menu/save.png +0 -0
  24. package/src/assets/images/menu/sj.png +0 -0
  25. package/src/assets/images/menu/sjk.png +0 -0
  26. package/src/assets/images/menu/up.png +0 -0
  27. package/src/assets/images/po-i.png +0 -0
  28. package/src/assets/images/po1-i1.png +0 -0
  29. package/src/assets/images/po1-i2.png +0 -0
  30. package/src/assets/images/po1-i3.png +0 -0
  31. package/src/assets/images/po1-i4.png +0 -0
  32. package/src/assets/images/po1-i5.png +0 -0
  33. package/src/assets/images/po1-i6.png +0 -0
  34. package/src/assets/images/po1-i7.png +0 -0
  35. package/src/assets/images/po1-i8.png +0 -0
  36. package/src/assets/images/po2-i1.png +0 -0
  37. package/src/assets/images/po2-i2.png +0 -0
  38. package/src/assets/images/po3-i1.png +0 -0
  39. package/src/assets/images/po4-i1.png +0 -0
  40. package/src/assets/images/po5-i1.png +0 -0
  41. package/src/assets/images/po6-i1.png +0 -0
  42. package/src/assets/images/po6-i2.png +0 -0
  43. package/src/assets/images/po7-i1.png +0 -0
  44. package/src/assets/images/tj1.png +0 -0
  45. package/src/assets/images/tj2.png +0 -0
  46. package/src/assets/images/tj3.png +0 -0
  47. package/src/components/3dcloudwords/index.js +346 -0
  48. package/src/components/3dcloudwords/index.vue +99 -0
  49. package/src/components/3dcloudwords/readme.md +66 -0
  50. package/src/components/badge/index.js +167 -0
  51. package/src/components/badge/index.scss +166 -0
  52. package/src/components/badge/index.vue +98 -0
  53. package/src/components/badge/readme.md +18 -0
  54. package/src/components/basic/Finish.vue +107 -0
  55. package/src/components/basic/button.vue +19 -0
  56. package/src/components/basic/readme.md +7 -0
  57. package/src/components/button/index.vue +48 -0
  58. package/src/components/button/readme.md +62 -0
  59. package/src/components/carousel/index.vue +104 -0
  60. package/src/components/carousel/readme.md +12 -0
  61. package/src/components/chartconfig/index.vue +141 -0
  62. package/src/components/chartconfig/readme.md +25 -0
  63. package/src/components/contextMenu/hookContxtMenu.js +41 -0
  64. package/src/components/contextMenu/index.vue +245 -0
  65. package/src/components/contextMenu/readme.md +55 -0
  66. package/src/components/contextMenu/useElementBounding.js +40 -0
  67. package/src/components/countup/countUp.js +196 -0
  68. package/src/components/countup/index.vue +114 -0
  69. package/src/components/countup/readme.md +9 -0
  70. package/src/components/empty/assets/build.png +0 -0
  71. package/src/components/empty/assets/emptybg.gif +0 -0
  72. package/src/components/empty/assets/emptybg.png +0 -0
  73. package/src/components/empty/assets/emptybg2.jpg +0 -0
  74. package/src/components/empty/assets/emptybg3.jpg +0 -0
  75. package/src/components/empty/assets/wuxiao.png +0 -0
  76. package/src/components/empty/assets/wuxiao.webp +0 -0
  77. package/src/components/empty/building.vue +117 -0
  78. package/src/components/empty/empty.vue +120 -0
  79. package/src/components/empty/index.js +12 -0
  80. package/src/components/empty/invalid.vue +56 -0
  81. package/src/components/error/Error.vue +79 -0
  82. package/src/components/error/readme.md +20 -0
  83. package/src/components/form/Form.vue +84 -0
  84. package/src/components/form/FormItem.vue +143 -0
  85. package/src/components/form/data.js +52 -0
  86. package/src/components/form/readme.md +69 -0
  87. package/src/components/layout/banner.vue +412 -0
  88. package/src/components/layout/bar.vue +43 -0
  89. package/src/components/layout/layout1.vue +60 -0
  90. package/src/components/layout/layout2.vue +134 -0
  91. package/src/components/layout/layout3.vue +107 -0
  92. package/src/components/layout/layout4.vue +66 -0
  93. package/src/components/layout/nav.vue +333 -0
  94. package/src/components/layout/readme.md +61 -0
  95. package/src/components/loading/index.vue +122 -0
  96. package/src/components/loading/readme.md +6 -0
  97. package/src/components/notice/NoticeList.vue +198 -0
  98. package/src/components/notice/NoticeListPaging.vue +281 -0
  99. package/src/components/notice/NoticeView.vue +92 -0
  100. package/src/components/notice/readme.md +1 -0
  101. package/src/components/pagination/index.vue +100 -0
  102. package/src/components/pagination/readme.md +19 -0
  103. package/src/components/pagination/scroll-to.js +51 -0
  104. package/src/components/progress/bar.vue +72 -0
  105. package/src/components/progress/progress.vue +58 -0
  106. package/src/components/screenfull/index.js +3 -0
  107. package/src/components/screenfull/index.vue +65 -0
  108. package/src/components/screenfull/package.json +15 -0
  109. package/src/components/screenfull/readme.md +6 -0
  110. package/src/components/statisticalCount/index.vue +80 -0
  111. package/src/components/statisticalCount/readme.md +21 -0
  112. package/src/components/username/index.vue +79 -0
  113. package/src/components/username/readme.md +22 -0
  114. package/src/components/username//346/225/210/346/236/234/345/233/276.png +0 -0
  115. package/src/global/index.ts +6 -0
  116. package/src/global/register-properties.ts +10 -0
  117. package/src/index.js +88 -0
  118. package/src/utils/coms/load.jsx +10 -0
  119. package/src/utils/func.js +62 -0
  120. package/src/utils/hookDialog.js +38 -0
  121. package/src/utils/hookPage.js +49 -0
  122. package/src/utils/index.js +5 -0
  123. package/src/utils/lib/console.js +39 -0
  124. package/src/utils/lib/debounce.js +19 -0
  125. package/src/utils/lib/deepextend.js +51 -0
  126. package/src/utils/lib/deepset.js +14 -0
  127. package/src/utils/lib/extend.js +28 -0
  128. package/src/utils/lib/index.js +13 -0
  129. package/src/utils/lib/json.js +90 -0
  130. package/src/utils/lib/mergeprops.js +62 -0
  131. package/src/utils/lib/mitt.js +43 -0
  132. package/src/utils/lib/modify.js +8 -0
  133. package/src/utils/lib/slot.js +19 -0
  134. package/src/utils/lib/toarray.js +5 -0
  135. package/src/utils/lib/tocase.js +11 -0
  136. package/src/utils/lib/todate.js +10 -0
  137. package/src/utils/lib/toline.js +10 -0
  138. package/src/utils/lib/tostring.js +7 -0
  139. package/src/utils/lib/type.js +45 -0
  140. package/src/utils/lib/unique.js +6 -0
  141. package/src/utils/message.js +164 -0
  142. package/src/utils/type.js +45 -0
  143. package/src/xm_components/HeadSearch/hook/hookSearch.js +96 -0
  144. package/src/xm_components/HeadSearch/index.vue +206 -0
  145. package/src/xm_components/HeadSearch/readme.md +12 -0
  146. package/src/xm_components/HeadSearch//346/220/234/347/264/242/345/210/227/350/241/250.png +0 -0
  147. package/src/xm_components/Milestone/index.vue +213 -0
  148. package/src/xm_components/Milestone/readme.md +15 -0
  149. package/src/xm_components/MultiStatisticalCard/image.png +0 -0
  150. package/src/xm_components/MultiStatisticalCard/index.vue +114 -0
  151. package/src/xm_components/MultiStatisticalCard/readme.md +29 -0
  152. package/src/xm_components/StatisticalCard/image.png +0 -0
  153. package/src/xm_components/StatisticalCard/index.vue +196 -0
  154. package/src/xm_components/StatisticalCard/readme.md +41 -0
  155. package/src/xm_components/readme.md +1 -0
  156. package/vite.config.js +58 -0
  157. package/dist/BdElement.js +0 -23432
@@ -0,0 +1,412 @@
1
+ <!--
2
+ * @FileDescription: 首页大banner展示
3
+ * @Author: 李兵泉
4
+ * @Date: 2021-06-08 09 时
5
+ * @LastEditors: 最后更新作者
6
+ * @LastEditTime: 最后更新时间
7
+ -->
8
+ <script setup>
9
+ import { ref, reactive, computed, watch, onMounted } from "vue";
10
+ const props = defineProps({
11
+ waprstyle: {
12
+ type: Object,
13
+ default: () => { }
14
+ },
15
+ title1: {
16
+ type: String,
17
+ default: '综合研究成果管理平台'
18
+ },
19
+ title2: {
20
+ type: String,
21
+ default: '面向勘探开发研究院的成果管理及共享平台'
22
+ },
23
+ })
24
+ </script>
25
+ <template>
26
+ <div class="banner" :style="waprstyle">
27
+ <div class="banner-center">
28
+ <div class="banner-text">
29
+ <h3>{{ title1 }}</h3>
30
+ <h4>{{ title2 }}</h4>
31
+
32
+ </div>
33
+ <div class="banner-img">
34
+ <img src="../../assets/images/po-i.png" alt="" class="pos">
35
+ <span class="po1">
36
+ <img src="../../assets/images/po1-i1.png" alt="" class="po1-i1">
37
+ <img src="../../assets/images/po1-i2.png" alt="" class="po1-i2">
38
+ <img src="../../assets/images/po1-i3.png" alt="" class="po1-i3">
39
+ <img src="../../assets/images/po1-i4.png" alt="" class="po1-i4">
40
+ <img src="../../assets/images/po1-i5.png" alt="" class="po1-i5">
41
+ <img src="../../assets/images/po1-i6.png" alt="" class="po1-i6">
42
+ <img src="../../assets/images/po1-i7.png" alt="" class="po1-i7">
43
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i1">
44
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i2">
45
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i3">
46
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i4">
47
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i5">
48
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i6">
49
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i7">
50
+ <img src="../../assets/images/po1-i8.png" alt="" class="po1-i8 i8">
51
+ </span>
52
+ <span class="po2">
53
+ <img src="../../assets/images/po2-i1.png" alt="" class="po2-i1">
54
+ <img src="../../assets/images/po2-i2.png" alt="" class="po2-i2">
55
+ </span>
56
+ <img src="../../assets/images/po3-i1.png" alt="" class="po3">
57
+ <span class="po4">
58
+ <img src="../../assets/images/po4-i1.png" alt="" class="po4-i1">
59
+ <img src="../../assets/images/po4-i2.png" alt="" class="po4-i2">
60
+ </span>
61
+ <img src="../../assets/images/po5-i1.png" alt="" class="po5">
62
+ <span class="po6">
63
+ <img src="../../assets/images/po6-i2.png" alt="" class="po6-i2">
64
+ <img src="../../assets/images/po6-i1.png" alt="" class="po6-i1">
65
+ </span>
66
+ <span class="po6 po62">
67
+ <img src="../../assets/images/po6-i2.png" alt="" class="po6-i2">
68
+ <img src="../../assets/images/po6-i1.png" alt="" class="po6-i1">
69
+ </span>
70
+ <img src="../../assets/images/po7-i1.png" alt="" class="po7">
71
+ </div>
72
+ </div>
73
+ </div>
74
+ </template>
75
+
76
+ <style lang="scss" scoped>
77
+ .banner {
78
+ background: url(../../assets/images/images/banner.png);
79
+ background-position: center center;
80
+ background-repeat: no-repeat;
81
+ background-color: #3186FB;
82
+ height: 574px;
83
+
84
+ .banner-center {
85
+ position: relative;
86
+ margin: 0 auto;
87
+ max-width: 1200px;
88
+ height: 100%;
89
+ // clear: both;
90
+
91
+ .banner-text {
92
+ position: absolute;
93
+ width: 43%;
94
+ color: #fff;
95
+ left: 30px;
96
+ top: 50%;
97
+ transform: translate(0, -50%);
98
+
99
+ h3 {
100
+ font-size: 24px;
101
+ margin-bottom: 25px;
102
+ }
103
+
104
+ h4 {
105
+ font-size: 19px;
106
+ margin-bottom: 17px;
107
+ font-weight: normal;
108
+ }
109
+ }
110
+
111
+ .banner-img {
112
+ width: 540px;
113
+ height: 335px;
114
+ position: absolute;
115
+ right: 30px;
116
+ top: 50%;
117
+ transform: translate(0, -50%);
118
+
119
+ img,
120
+ span {
121
+ position: absolute;
122
+ }
123
+
124
+ .pos {
125
+ width: 100%;
126
+ height: 91.77%;
127
+ bottom: 0;
128
+ right: 0;
129
+ }
130
+
131
+ .po1 {
132
+ width: 12.55%;
133
+ height: 32.94%;
134
+ left: 41%;
135
+ top: 8%;
136
+
137
+ .po1-i1 {
138
+ width: 79.07%;
139
+ height: 28.57%;
140
+ left: 15%;
141
+ bottom: 0;
142
+ animation: topOp2 2s linear infinite;
143
+ opacity: 0;
144
+ }
145
+
146
+ .po1-i2 {
147
+ width: 61.62%;
148
+ height: 22.14%;
149
+ left: 23%;
150
+ bottom: 19%;
151
+ animation: topOp2 2s linear infinite;
152
+ opacity: 0;
153
+ }
154
+
155
+ .po1-i3 {
156
+ width: 45.45%;
157
+ height: 16.43%;
158
+ left: 31%;
159
+ bottom: 33%;
160
+ animation: topOp2 2s linear infinite;
161
+ opacity: 0;
162
+ }
163
+
164
+ .po1-i4 {
165
+ width: 36.05%;
166
+ height: 12.86%;
167
+ left: 36%;
168
+ bottom: 45%;
169
+ animation: topOp2 2s linear infinite;
170
+ opacity: 0;
171
+ }
172
+
173
+ .po1-i5 {
174
+ width: 4.65%;
175
+ height: 2.86%;
176
+ left: 15%;
177
+ bottom: 35%;
178
+ }
179
+
180
+ .po1-i6 {
181
+ width: 10.46%;
182
+ height: 6.43%;
183
+ left: 27%;
184
+ bottom: -2%;
185
+ }
186
+
187
+ .po1-i7 {
188
+ width: 8.14%;
189
+ height: 5%;
190
+ left: 91%;
191
+ bottom: 24%;
192
+ }
193
+
194
+ .po1-i8 {
195
+ width: 3.49%;
196
+ height: 20.71%;
197
+ }
198
+
199
+ .po1-i8.i1 {
200
+ left: 85%;
201
+ top: 28%;
202
+ animation: topOp 1s linear infinite;
203
+ opacity: 0;
204
+ }
205
+
206
+ .po1-i8.i2 {
207
+ left: 54%;
208
+ top: 48%;
209
+ animation: topOp 1s linear 0.2s infinite;
210
+ opacity: 0;
211
+ }
212
+
213
+ .po1-i8.i3 {
214
+ left: 38%;
215
+ top: 23%;
216
+ animation: topOp 1s linear 0.6s infinite;
217
+ opacity: 0;
218
+ }
219
+
220
+ .po1-i8.i4 {
221
+ left: 49%;
222
+ top: 11%;
223
+ animation: topOp 1s linear 0.3s infinite;
224
+ opacity: 0;
225
+ }
226
+
227
+ .po1-i8.i5 {
228
+ left: 43%;
229
+ top: 57%;
230
+ animation: topOp 1s linear 0.1s infinite;
231
+ opacity: 0;
232
+ }
233
+
234
+ .po1-i8.i6 {
235
+ left: 23%;
236
+ top: 34%;
237
+ animation: topOp 1s linear 0.7s infinite;
238
+ opacity: 0;
239
+ }
240
+
241
+ .po1-i8.i7 {
242
+ left: 68%;
243
+ top: 7%;
244
+ animation: topOp 1s linear 0.4s infinite;
245
+ opacity: 0;
246
+ }
247
+
248
+ .po1-i8.i8 {
249
+ left: 64%;
250
+ top: 32%;
251
+ animation: topOp 1s linear 0.5s infinite;
252
+ opacity: 0;
253
+ }
254
+ }
255
+
256
+ .po2 {
257
+ width: 18.98%;
258
+ height: 22.82%;
259
+ left: 3%;
260
+ top: 45%;
261
+
262
+ .po2-i1 {
263
+ width: 46.15%;
264
+ height: 100%;
265
+ left: 0;
266
+ top: 0;
267
+ animation: topDown1 3s linear infinite;
268
+ }
269
+
270
+ .po2-i2 {
271
+ width: 22.31%;
272
+ height: 42.27%;
273
+ right: 0;
274
+ top: 21%;
275
+ }
276
+ }
277
+
278
+ .po3 {
279
+ width: 15.33%;
280
+ height: 27.53%;
281
+ left: 14%;
282
+ top: 15%;
283
+ animation: topDown1 3.5s linear infinite;
284
+ }
285
+
286
+ .po4 {
287
+ width: 18.1%;
288
+ height: 20.7%;
289
+ right: 13%;
290
+ top: 14%;
291
+
292
+ .po4-i1 {
293
+ width: 43.6%;
294
+ height: 100%;
295
+ right: 0;
296
+ top: 0;
297
+ animation: topDown1 2.1s linear infinite;
298
+ }
299
+
300
+ .po4-i2 {
301
+ width: 23%;
302
+ height: 46.6%;
303
+ left: 0;
304
+ top: 36%;
305
+ }
306
+ }
307
+
308
+ .po5 {
309
+ width: 9.05%;
310
+ height: 22.89%;
311
+ right: 22.8%;
312
+ top: 49%;
313
+ }
314
+
315
+ .po6,
316
+ .po62 {
317
+ width: 4.53%;
318
+ height: 15.29%;
319
+ right: 39%;
320
+ top: -1%;
321
+
322
+ .po6-i1 {
323
+ width: 100%;
324
+ height: 90.77%;
325
+ left: 0;
326
+ bottom: 0;
327
+ animation: huoMiao2 2s linear infinite;
328
+ }
329
+
330
+ .po6-i2 {
331
+ width: 83.87%;
332
+ height: 80%;
333
+ left: 8%;
334
+ top: 0%;
335
+ animation: topDown1 2.5s linear infinite;
336
+ }
337
+ }
338
+
339
+ .po62 {
340
+ right: 49.5%;
341
+ top: 68%;
342
+ }
343
+
344
+ .po7 {
345
+ width: 8.75%;
346
+ height: 16.71%;
347
+ left: -22.8%;
348
+ bottom: 0;
349
+ }
350
+ }
351
+ }
352
+ }
353
+
354
+ @keyframes topOp {
355
+ 0% {
356
+ transform: translate(0px, 0px);
357
+ -webkit-transform: translate(0px, 0px);
358
+ opacity: 1;
359
+ }
360
+
361
+ 100% {
362
+ transform: translate(0, -35px);
363
+ -webkit-transform: translate(0, -35px);
364
+ opacity: 0;
365
+ }
366
+ }
367
+
368
+ @keyframes topOp2 {
369
+ 0% {
370
+ transform: translate(0px, 0px);
371
+ -webkit-transform: translate(0px, 0px);
372
+ opacity: 0;
373
+ }
374
+
375
+ 100% {
376
+ transform: translate(0, -10px);
377
+ -webkit-transform: translate(0, -10px);
378
+ opacity: 1;
379
+ }
380
+ }
381
+
382
+ @keyframes topDown1 {
383
+ 0% {
384
+ transform: translate(0px, 0px);
385
+ -webkit-transform: translate(0px, 0px);
386
+ }
387
+
388
+ 50% {
389
+ transform: translate(0, -8px);
390
+ -webkit-transform: translate(0, -8px);
391
+ }
392
+
393
+ 100% {
394
+ transform: translate(0px, 0px);
395
+ -webkit-transform: translate(0px, 0px);
396
+ }
397
+ }
398
+
399
+ @keyframes huoMiao2 {
400
+ 0% {
401
+ height: 75%;
402
+ }
403
+
404
+ 50% {
405
+ height: 100%;
406
+ }
407
+
408
+ 100% {
409
+ height: 75%;
410
+ }
411
+ }
412
+ </style>
@@ -0,0 +1,43 @@
1
+ <!--
2
+ * @FileDescription:
3
+ * @Author: 李兵泉
4
+ * @Date: 2021-06-08 09 时
5
+ * @LastEditors: 最后更新作者
6
+ * @LastEditTime: 最后更新时间
7
+ -->
8
+ <script setup>
9
+ import { ref, useAttrs, computed, watch, onMounted } from "vue";
10
+ const props = defineProps({
11
+ innerHeight: {
12
+ type: String,
13
+ default: '50px'
14
+ },
15
+ paddingTop: {
16
+ type: String,
17
+ default: '15px'
18
+ },
19
+ paddingLeft: {
20
+ type: String,
21
+ default: '0px'
22
+ }
23
+ });
24
+ let attrs = useAttrs();
25
+ const style = attrs.style;
26
+
27
+ </script>
28
+ <template>
29
+ <div class="headwarp" :style="{ style }">
30
+ <div class="headwarp-top" :style="{ height: innerHeight }">
31
+ <div class="headwarp-bottom" :style="{ paddingTop: paddingTop,paddingLeft: paddingLeft }">
32
+ <slot></slot>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </template>
37
+
38
+ <style lang="scss" scoped>
39
+ .headwarp-bottom {
40
+ line-height: 100% !important;
41
+ height: 100% !important;
42
+ }
43
+ </style>
@@ -0,0 +1,60 @@
1
+ <script setup>
2
+ import { computed } from 'vue';
3
+
4
+ // 项目中引入base.scss文件(去掉下面的样式)或者 不引入公共文件 添加下面的style样式
5
+ // 左右布局
6
+ const props = defineProps({
7
+ title: {
8
+ type: String,
9
+ default: '左侧菜单栏'
10
+ },
11
+ // 左侧宽度
12
+ leftWidth: {
13
+ type: String,
14
+ default: '200px'
15
+ },
16
+ // 左侧样式配置
17
+ leftStyles: {
18
+ type: Object,
19
+ default: () => {
20
+ return {
21
+ padding: '0px',
22
+ margin: '0px 10px 0px 0px'
23
+ }
24
+ }
25
+ },
26
+ // 右侧样式配置
27
+ rightStyles: {
28
+ type: Object,
29
+ default: () => {
30
+ return {
31
+ padding: '0px',
32
+ margin: '10px 10px 0px 0px'
33
+ }
34
+ }
35
+ }
36
+
37
+ });
38
+ // 是否显示标题栏
39
+ const showLeftTop = computed(() => {
40
+ return props.title ? true : false
41
+ })
42
+ </script>
43
+
44
+ <template>
45
+ <el-container class="containerBg">
46
+ <el-aside :width="leftWidth" :style="{ ...leftStyles }">
47
+ <div class="top" v-if="showLeftTop">
48
+ <div class="topin">{{ title }}</div>
49
+ </div>
50
+ <!-- 左侧区域 -->
51
+ <slot name="left"></slot>
52
+ </el-aside>
53
+ <el-main class="containerRight" :style="{ ...rightStyles }">
54
+ <!-- 侧区域 -->
55
+ <slot></slot>
56
+ </el-main>
57
+ </el-container>
58
+ </template>
59
+
60
+ <style scoped></style>
@@ -0,0 +1,134 @@
1
+ <script setup>
2
+ import { ref,computed } from 'vue'
3
+ // 项目中引入base.scss文件(去掉下面的样式)或者 不引入公共文件 添加下面的style样式
4
+ import { Search } from '@element-plus/icons-vue'
5
+ const emits = defineEmits(['searchTable'])
6
+ const props = defineProps({
7
+ title: {
8
+ type: String,
9
+ default: '左侧菜单栏'
10
+ },
11
+ leftWidth: {
12
+ type: String,
13
+ default: '200px'
14
+ },
15
+ leftStyles: {
16
+ type: Object,
17
+ default: () => {
18
+ return {
19
+ padding: '0px',
20
+ margin: '0px 10px 0px 0px'
21
+ }
22
+ }
23
+ },
24
+ // 右侧样式配置
25
+ rightStyles: {
26
+ type: Object,
27
+ default: () => {
28
+ return {
29
+ padding: '0px',
30
+ margin: '0px 0px 10px 0px'
31
+ }
32
+ }
33
+ }
34
+ })
35
+ const searchValue = ref('')
36
+
37
+ // 是否显示标题栏
38
+ const showLeftTop = computed(() => {
39
+ return props.title ? true : false
40
+ })
41
+ // 搜索
42
+ const getTableData = () => {
43
+ emits('searchTable', searchValue.value)
44
+ }
45
+ </script>
46
+
47
+ <template>
48
+ <el-container class="containerBg">
49
+ <el-aside :width="leftWidth" :style="{ ...leftStyles }">
50
+ <div class="top" v-if="showLeftTop">
51
+ <div class="topin">{{ title }}</div>
52
+ </div>
53
+ <slot name="left"></slot>
54
+ </el-aside>
55
+ <el-container
56
+ style="background-color: #fff; margin: 10px 10px 10px 0; height: calc(100% - 20px); border-radius: 4px">
57
+ <el-header height="50px" class="headwarp" style="border-bottom: 1px solid #e6e6e6; border-radius: 4px 4px 0 0">
58
+ <div class="headwarp-top" style="border-radius: 4px">
59
+ <div class="headwarp-bottom" style="padding-left: 0px;">
60
+ <slot name="lefttop">
61
+ <span class="warpmenu" @click="addTable" title="添加">
62
+ <img class="menuimg" src="../../assets/images/menu/add.png" />
63
+ 添加
64
+ </span>
65
+ <span class="warpmenu" @click="editTable" title="编辑"> <img class="menuimg"
66
+ src="../../assets/images/menu/edit.png" /> 编辑 </span>
67
+ <span class="warpmenu" @click="delTable" title="删除"> <img class="menuimg"
68
+ src="../../assets/images/menu/del.png" /> 删除</span>
69
+ <el-divider direction="vertical" />
70
+ </slot>
71
+ </div>
72
+ <div class="top_right" style="width: 200px">
73
+ <slot name="righttop2">
74
+ <!-- 报表搜索 righttop-->
75
+ <el-input v-model="searchValue" placeholder="全局搜索" size="default" @keyup.enter="getTableData(true, true)"
76
+ clearable @clear="getTableData()" :prefix-icon="Search" class="top_search"> </el-input>
77
+ </slot>
78
+ </div>
79
+ </div>
80
+ </el-header>
81
+ <el-main class="main-container" :style="{ ...rightStyles }">
82
+ <slot></slot>
83
+ </el-main>
84
+ </el-container>
85
+ </el-container>
86
+ </template>
87
+
88
+ <style lang="scss" scoped>
89
+ .headwarp{
90
+ padding: 0 10px !important ;
91
+ }
92
+ .headwarp-top{
93
+
94
+ }
95
+ .headwarp-bottom {
96
+ display: flex;
97
+ height: 100%;
98
+ .warpmenu{
99
+ display: flex;
100
+ justify-content: center;
101
+ align-items: center;
102
+ }
103
+ }
104
+
105
+ // 右侧用户信息
106
+ .top_right {
107
+ position: absolute;
108
+ right: 10px;
109
+ top: 0px;
110
+ height: 100%;
111
+ /*width:400px;*/
112
+ color: #fff; // #8c8c8c;
113
+ font-size: 14px;
114
+ margin-right: 10px;
115
+
116
+ a {
117
+ color: #fff; // #8c8c8c;
118
+ margin: 10px 8px 0 5px;
119
+ cursor: pointer;
120
+ }
121
+ }
122
+
123
+ .top_search {
124
+ border-radius: 30px;
125
+ width: 180px;
126
+ float: right;
127
+ padding-top: 10px;
128
+ padding-right: 20px;
129
+
130
+ :deep(.el-input__wrapper) {
131
+ border-radius: 20px;
132
+ }
133
+ }
134
+ </style>