@lambo-design/pro-layout 1.0.0-beta.193 → 1.0.0-beta.196

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.
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
- {
2
- "name": "@lambo-design/pro-layout",
3
- "version": "1.0.0-beta.193",
4
- "description": "",
5
- "main": "index.js",
6
- "author": "lambo",
7
- "license": "ISC",
8
- "publishConfig": {
9
- "access": "public",
10
- "registry": "https://registry.npmjs.org/"
11
- },
12
- "devDependencies": {
13
- "@lambo-design/core": "^4.7.1-beta.114",
14
- "@lambo-design/shared": "^1.0.0-beta.101"
15
- },
16
- "scripts": {}
17
- }
1
+ {
2
+ "name": "@lambo-design/pro-layout",
3
+ "version": "1.0.0-beta.196",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {},
7
+ "author": "lambo",
8
+ "license": "ISC",
9
+ "publishConfig": {
10
+ "access": "public",
11
+ "registry": "https://registry.npmjs.org/"
12
+ },
13
+ "devDependencies": {
14
+ "@lambo-design/core": "workspace:^",
15
+ "@lambo-design/shared": "workspace:^"
16
+ }
17
+ }
@@ -325,7 +325,10 @@ export default {
325
325
  // margin-top: -1000px;
326
326
  //}
327
327
  .search-fast-con-modal .ivu-modal{
328
- margin-right: 100px;
328
+ width: 350px;
329
+ height: 200px;
330
+ margin-right: 800px;
331
+ margin-left: 500px;
329
332
  }
330
333
  .search-fast-con-side-modal .ivu-modal{
331
334
  padding-top: 1px;
@@ -339,7 +342,7 @@ export default {
339
342
  height: 270px;
340
343
  }
341
344
  .search-fast-con-modal .ivu-modal-content{
342
- width: 290px;
345
+ width: 350px;
343
346
  height: 200px;
344
347
  margin-right: 1px;
345
348
  }
@@ -376,7 +379,7 @@ export default {
376
379
  border: none;
377
380
  background-color: var(--legend-color ,@legend-color);//修改这里
378
381
  text-align:left; /* 确保文本默认左对齐 */
379
- color: var(--head-bg ,@head-bg );
382
+ color: var(--avatar-color ,@avatar-color );
380
383
  padding-right: 90px;
381
384
  padding-left: 50px;
382
385
  }
@@ -395,21 +398,41 @@ export default {
395
398
  .search-fast-con-side-modal .ivu-modal-body .modal1-content::-webkit-scrollbar {
396
399
  display: none; /* Chrome, Safari 和 Opera */
397
400
  }
401
+
402
+
398
403
  .search-fast-con-modal .ivu-modal-body{
399
404
  height: 280px;
400
405
  padding: 16px;
401
406
  font-size: var(--font-size-base, 14px);
402
407
  line-height: 1.5;
403
- margin-top: -2px;
408
+ margin-top: 55px;
404
409
  background-color: white;
410
+ overflow: hidden !important;
411
+ scrollbar-width: none !important;
405
412
  }
406
- search-fast-con-modal .ivu-modal-body .modal-content {
413
+ .search-fast-con-modal .ivu-modal-body .modal-content {
407
414
  padding-top: 6px;
408
- height: 270px;
409
- width: 200px;
415
+ height: 200px;
416
+ width: 350px;
417
+ margin-right: 400px;
410
418
  overflow-x: hidden;
411
419
  overflow-y: auto;
412
420
  background-color: white;
421
+ -ms-overflow-style: none !important; /* Internet Explorer 10+ */
422
+ scrollbar-width: none !important; /* Firefox */
423
+ }
424
+ .search-fast-con-modal .ivu-modal-body ::-webkit-scrollbar {
425
+ display: none !important; /* Chrome, Safari 和 Opera */
426
+ }
427
+
428
+ .v-transfer-dom ::-webkit-scrollbar {
429
+ display: none; /* Chrome, Safari 和 Opera */
430
+ overflow: hidden !important;
431
+ }
432
+ .v-transfer-dom{
433
+ -ms-overflow-style: none; /* Internet Explorer 10+ */
434
+ scrollbar-width: none; /* Firefox */
435
+ overflow: hidden !important;
413
436
  }
414
437
 
415
438
 
@@ -428,7 +451,7 @@ search-fast-con-side-modal .ivu-modal-body{
428
451
  .search-fast-con-side .ivu-icon-ios-search:before {
429
452
  margin-right: -50px; /* 向右移动10像素 */
430
453
  //color: rgba(42, 97 ,200);
431
- color: var(--head-bg ,@head-bg );
454
+ color: var(--avatar-color ,@avatar-color );
432
455
  line-height: 1.6
433
456
  }
434
457
  .search-fast-con-top .ivu-icon-ios-search-outline:before {
@@ -447,7 +470,7 @@ search-fast-con-side-modal .ivu-modal-body{
447
470
  font-family: Microsoft YaHei;
448
471
  font-weight: 400;
449
472
  // color: rgba(42, 97 ,200)!important;
450
- color: var(--head-bg ,@head-bg ) !important;;
473
+ color: var(--avatar-color ,@avatar-color ) !important;;
451
474
 
452
475
  }
453
476
  .search-fast-con-top .ivu-input {
@@ -0,0 +1,477 @@
1
+ <template>
2
+ <div class="search-fast-con">
3
+ <div class="search-fast-con-top" >
4
+ <div class="topInput" id="modalTopInput" @click="handleTopClick">
5
+ <Input v-if="searchType === 1" v-model="searchTopText" clearable placeholder="搜索菜单" font-size="8px" ref="topInput"
6
+ :border="false" @on-change="handleTopInput" @on-blur="handleTopBlur">
7
+ <template #prefix>
8
+ <Icon type="ios-search" size="23"/>
9
+ </template>
10
+ </Input>
11
+ </div>
12
+ <Modal
13
+ v-model="searchTopModal" class="search-fast-con-modal" footer-hide :closable="false" :mask="false" scrollable id="TopModalId"
14
+ :styles="{top: '55px',width: '350px'}">
15
+ <div class="sideCloseIcon" @click="handleCloseTopModal" style="text-align: right;margin-right: -6px;margin-top: -2px;padding-bottom: 3px">
16
+ <Icon type="ios-close-circle" size="18" />
17
+ </div>
18
+ <div class="modal-block1">
19
+ <div class="modal-title">
20
+ <Icon type="ios-apps-outline" size="19" color="red"/>
21
+ <span style="margin-left: 3px;font-size: 18px">菜单</span>
22
+ </div>
23
+ <div v-if="spinShowTop1">
24
+ <Spin size="large" v-if="spinShowTop1" :show="spinShowTop1">
25
+ <Icon type="ios-loading" size=18 class="demo-spin-icon-load"></Icon>
26
+ <div>加载中</div>
27
+ </Spin>
28
+ </div>
29
+ <div v-else class="modal-content">
30
+ <div v-for="(item,index) in menuData1" :key="index" >
31
+ <div class="menu-side-style1" @click="handleSelect1(item)" @mouseenter="handleMouseEnter(index)" @mouseleave="handleMouseLeave(index)">
32
+ <div :style="getScrollingStyle(item.label)" class="text" :class="{ 'scrolling': isHovered[index] && shouldScroll(item.label) }">
33
+ <Icon :type="item.icon" />
34
+ <span style="margin-left: 3px">{{ item.label }}</span>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div v-if="menuData1.length === 0">
39
+ <span style="display: flex;justify-content: center;align-items: center;color: black">暂无数据</span>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </Modal>
44
+ </div>
45
+ </div>
46
+ </template>
47
+ <script>
48
+
49
+ import SearchMenu from "./search-list";
50
+ import SearchList from "./search-list";
51
+ import Bus from "@lambo-design/shared/utils/bus";
52
+ import {deepCopy} from "@lambo-design/shared/utils/assist";
53
+ import config from "@lambo-design/shared/config/config";
54
+ import { mapActions } from 'vuex'
55
+ import { debounce } from 'lodash';
56
+ //import {getSessionStorage} from '@/libs/platformUtil';
57
+ export default {
58
+ name: "Searchmenu",
59
+ components: {SearchList, SearchMenu},
60
+ props: {
61
+ searchType: '',
62
+ menuList: {
63
+ type: Array,
64
+ default: () => []
65
+ },
66
+ },
67
+ data () {
68
+ return {
69
+ searchText:'',
70
+ appId:'',
71
+ searchTopText:'',
72
+ showTopInput:false,
73
+ option: [],
74
+ menuData:[],
75
+ menuData1:[],
76
+ noticeData:[],
77
+ isHovered: [],
78
+ select:'',
79
+ searchTopModal:false,
80
+ searchSideModal:false,
81
+ showSearchIcon:true,
82
+ maxWidth: 190,
83
+ spinShow:false,
84
+ spinShowTop1:false,
85
+ spinShowTop2:false,
86
+ originMenuList: [],
87
+ originMenuList1: []
88
+ }
89
+ },
90
+ // mounted() {
91
+ // window.addEventListener("click", this.handleOutsideClick);
92
+ // },
93
+ // beforeDestroy() {
94
+ // window.removeEventListener("click", this.handleOutsideClick);
95
+ // },
96
+ methods:{
97
+ initListener(){
98
+ // Bus.$on('menu-list',(data)=>{
99
+ this.initMenu(this.menuList)
100
+ // });
101
+ },
102
+ destroyListener(){
103
+ Bus.$off('menu-list')
104
+ },
105
+ initMenu(data){
106
+ this.originMenuList = deepCopy(data);
107
+ this.originMenuList1 = this.originMenuList.filter(function(menuItem) {
108
+ return menuItem.type === 1|| menuItem.type === 2 && menuItem.uri !=='';
109
+ });
110
+ this.menuData1=this.originMenuList1;
111
+ },
112
+
113
+ handleSelect(item){
114
+ console.log('search-handleSelect',item.name)
115
+ console.log('search-handleSelect',item.uri)
116
+ console.log('search-handleSelect',item.pid)
117
+ this.$emit('on-select', item.name,item.uri,item.pid)
118
+ this.searchSideModal = false
119
+ },
120
+ handleSelect1(item){
121
+ this.$emit('on-select', item.name,item.uri,item.pid)
122
+ this.searchTopModal = false
123
+ this.showTopInput = false
124
+ this.showSearchIcon = true
125
+ },
126
+ handleNoticeSelect(e,f){
127
+ let self = this
128
+ self.$router.replace({
129
+ name: '消息通知预览',
130
+ query: {noticeId: e, confirmed: f,homeFlag:true}
131
+ })
132
+ self.searchTopModal = false
133
+ },
134
+
135
+ handleTopInput() {
136
+ let self = this;
137
+ self.searchTopModal = true
138
+ // 使用 filter 方法找到所有匹配的菜单项
139
+ const regex = new RegExp(this.searchTopText, "i");
140
+ self.menuData1 = self.originMenuList1.filter(menuItem => {
141
+ return menuItem.label.match(regex);
142
+ });
143
+ //console.log('menuData:', self.menuData);
144
+ },
145
+ handleSideClick(){
146
+ let self= this
147
+ // console.log('searchText:'+self.searchText)
148
+ if(self.searchText){
149
+ self.searchSideModal = true
150
+ }
151
+ self.handleInput()
152
+ //self.handleSelect(self.menuData[0])
153
+ },
154
+ handleIconClick(){
155
+ let self = this
156
+ self.showTopInput = true
157
+ self.showSearchIcon = false
158
+ self.searchTopModal = false
159
+ },
160
+ handleTopClick(){
161
+ let self= this
162
+ if(self.searchTopText){
163
+ self.searchTopModal = true
164
+ }
165
+ self.handleTopInput()
166
+ self.showTopInput=true
167
+ //self.handleSelect(self.menuData[0])
168
+ },
169
+ handleTopBlur(){
170
+ let self = this
171
+ self.searchTopModal = false
172
+ self.showTopInput = true;
173
+ self.showSearchIcon = true
174
+
175
+ },
176
+ handleMouseEnter(index) {
177
+ this.$set(this.isHovered, index, true); // 将当前菜单项设置为被悬停状态
178
+ },
179
+ handleMouseLeave(index) {
180
+ this.$set(this.isHovered, index, false); // 将当前菜单项设置为非悬停状态
181
+ },
182
+ shouldScroll(text) {
183
+ const span = document.createElement("span");
184
+ span.style.fontSize = "15px"; // 根据实际情况设置字体大小
185
+ span.textContent = text;
186
+ document.body.appendChild(span);
187
+ const shouldScroll = span.offsetWidth > this.maxWidth;
188
+ document.body.removeChild(span);
189
+ return shouldScroll;
190
+ },
191
+ getScrollingStyle(text) {
192
+ const span = document.createElement("span");
193
+ span.style.fontSize = "15px"; // 根据实际情况设置字体大小
194
+ span.textContent = text;
195
+ document.body.appendChild(span);
196
+ let scrollDistance = span.offsetWidth - this.maxWidth;
197
+ document.body.removeChild(span);
198
+ if (scrollDistance > 0) {
199
+ scrollDistance += 15
200
+ return {
201
+ "--scroll-distance": `-${scrollDistance}px`,
202
+ };
203
+ }
204
+ else{
205
+ return{
206
+ "--scroll-duration": `0s`,
207
+ }
208
+ }
209
+ },
210
+ handleCloseModal(){
211
+ let self = this
212
+ this.searchSideModal = false
213
+ },
214
+ handleCloseTopModal(){
215
+ let self = this
216
+ this.searchTopModal = false
217
+ }
218
+ },
219
+ created(){
220
+ this.initListener();
221
+ },
222
+ beforeDestroy(){
223
+ this.destroyListener();
224
+ }
225
+ }
226
+ </script>
227
+
228
+ <style lang="less" >
229
+ @import "@lambo-design/shared/config/themes/blue/blue.less";
230
+ @import "@lambo-design/shared/config/themes/default/default.less";
231
+ @import "@lambo-design/shared/config/themes/gold/gold.less";
232
+ @import "@lambo-design/shared/config/themes/atrovirens/atrovirens.less";
233
+ @import "@lambo-design/shared/config/themes/eap/eap.less";
234
+ @import "@lambo-design/shared/config/themes/lime/lime.less";
235
+ @import "@lambo-design/shared/config/themes/orange/orange.less";
236
+ @import "@lambo-design/shared/config/themes/red/red.less";
237
+ .search-fast-con-top .ivu-tooltip-rel {
238
+ float: left;
239
+ height: 64px;
240
+ line-height: 56px;
241
+ margin-top: 3px;
242
+ margin-right: -1000px;
243
+ i {
244
+ cursor: pointer;
245
+ }
246
+ }
247
+ .ivu-tooltip-popper[x-placement^="bottom"]{
248
+ margin-top: -1000px;
249
+ }
250
+ .search-fast-con-modal .ivu-modal{
251
+ margin-right: 500px;
252
+ }
253
+ .search-fast-con-side-modal .ivu-modal{
254
+ padding-top: 1px;
255
+ margin-left: 0px;
256
+ margin-top: 1px;
257
+ }
258
+ .search-fast-con-side-modal .ivu-modal-content{
259
+ background-color: var(--menu-dark-active-bg ,@menu-dark-active-bg );
260
+ width: 218px;
261
+ margin-top: -18px;
262
+ height: 270px;
263
+ }
264
+ .search-fast-con-modal .ivu-modal-content{
265
+ width: 290px;
266
+ height: 200px;
267
+ margin-right: 1px;
268
+ }
269
+
270
+ .modal-title{
271
+ font-family: Microsoft YaHei;
272
+ font-weight: 400;
273
+ color: #333333;
274
+ font-size: 17px;
275
+ }
276
+ //.line{
277
+ // border-top: 1px solid lightgray;
278
+ // margin:10px
279
+ //}
280
+ .more-content{
281
+ margin-left: 140px;
282
+ margin-top: 15px;
283
+ a{font-size:14px;color:#999;font-family: Microsoft YaHei-Regular, Microsoft YaHei;}
284
+ }
285
+ .search-fast-con-side{
286
+ width: 97%;
287
+ position: absolute;
288
+ top: 0px;
289
+ z-index: 2000;
290
+ //background: #22262f;
291
+ }
292
+ .search-fast-con-side .ivu-input{
293
+ font-size: 13px;
294
+ margin-top: -4px;
295
+ width: 228.5px;
296
+ height: 40px;
297
+ font-family: Microsoft YaHei;
298
+ font-weight: 400;
299
+ border: none;
300
+ background-color: var(--legend-color ,@legend-color);//修改这里
301
+ text-align:left; /* 确保文本默认左对齐 */
302
+ color: var(--head-bg ,@head-bg );
303
+ padding-right: 90px;
304
+ padding-left: 50px;
305
+ }
306
+ .search-fast-con-side-modal .ivu-modal-body .modal1-content {
307
+ padding-top: 6px;
308
+ padding-left: 10px;
309
+ height: 270px;
310
+ width: 211px;
311
+ margin-left: -13px;
312
+ overflow-x: hidden;
313
+ overflow-y: auto;
314
+ background-color: var(--menu-dark-active-bg ,@menu-dark-active-bg );
315
+ }
316
+ .search-fast-con-modal .ivu-modal-body{
317
+ height: 280px;
318
+ padding: 16px;
319
+ font-size: var(--font-size-base, 14px);
320
+ line-height: 1.5;
321
+ margin-top: -2px;
322
+ background-color: white;
323
+ }
324
+ search-fast-con-modal .ivu-modal-body .modal-content {
325
+ padding-top: 6px;
326
+ height: 270px;
327
+ width: 200px;
328
+ overflow-x: hidden;
329
+ overflow-y: auto;
330
+ background-color: white;
331
+ }
332
+
333
+
334
+ search-fast-con-side-modal .ivu-modal-body{
335
+ height: 250px;
336
+ padding: 16px;
337
+ font-size: var(--font-size-base, 14px);
338
+ line-height: 1.5;
339
+ margin-top: -2px;
340
+ //background-color: white;
341
+
342
+ }
343
+ .search-fast-con-side .ivu-icon-ios-search:before {
344
+ margin-right: -33px; /* 向右移动10像素 */
345
+ //color: rgba(42, 97 ,200);
346
+ color: var(--head-bg ,@head-bg );
347
+ line-height: 1.6
348
+ }
349
+ .search-fast-con-top .ivu-icon-ios-search-outline:before {
350
+ //margin-right: -1000px;
351
+ color: rgba(255, 255, 255,0.7);
352
+ position: fixed; /* 使用fixed定位 */
353
+ right: 180px; /* 设置距离浏览器窗口右侧边缘的距离 */
354
+ margin-right: 0;
355
+ top:15px;
356
+ }
357
+ .search-fast-con-top .ivu-icon-ios-search:before {
358
+ color: rgba(255, 255, 255,0.7);
359
+ }
360
+ .search-fast-con-side .ivu-input::placeholder{
361
+ font-size: 13px;
362
+ font-family: Microsoft YaHei;
363
+ font-weight: 400;
364
+ // color: rgba(42, 97 ,200)!important;
365
+ color: var(--head-bg ,@head-bg ) !important;;
366
+
367
+ }
368
+ .search-fast-con-top .ivu-input {
369
+ font-size: 15px;
370
+ font-family: Microsoft YaHei;
371
+ font-weight: 400;
372
+ color: rgba(255, 255, 255,0.7);
373
+ border: none;
374
+ background-color: transparent;
375
+ }
376
+ .search-fast-con-top .ivu-input::placeholder{
377
+ font-size: 15px;
378
+ font-family: Microsoft YaHei;
379
+ font-weight: 400;
380
+ color: rgba(255, 255, 255,0.7)!important;
381
+ }
382
+ //.modal1-content {
383
+ // overflow-x: hidden;
384
+ // overflow-y: auto;
385
+ // height: 270px;
386
+ //}
387
+ .modal-content {
388
+ overflow-x: hidden;
389
+ overflow-y: auto;
390
+ height: 210px;
391
+ background-color: white;
392
+ width: 273px;
393
+ }
394
+ .menu-side-style{
395
+ font-size: 15px;
396
+ font-family: Microsoft YaHei;
397
+ font-weight: 400;
398
+ width: 200px;
399
+ color:#EBEBEB;
400
+ margin-top: 8px;
401
+ white-space: nowrap;
402
+ text-overflow: ellipsis;
403
+ }
404
+
405
+ .menu-side-style1{
406
+ font-size: 16px;
407
+ font-family: Microsoft YaHei;
408
+ font-weight: 400;
409
+ width: 200px;
410
+ color:black;
411
+ margin-top: 10px;
412
+ white-space: nowrap;
413
+ text-overflow: ellipsis;
414
+ }
415
+
416
+ .menu-side-style:hover {
417
+ overflow: visible;
418
+ cursor: pointer;
419
+ color: red;
420
+ }
421
+ .menu-side-style1:hover {
422
+ overflow: visible;
423
+ cursor: pointer;
424
+ color: red;
425
+ }
426
+ .sideInput{
427
+ width: 221px;
428
+ transform: translateX(-13px);
429
+ }
430
+ .topInput{
431
+ float: right;
432
+ position: relative;
433
+ z-index: 1000;
434
+ width: 1000px;
435
+ margin-top: 80px;
436
+ margin-left: 4000px;
437
+ margin-bottom: 30px;
438
+ }
439
+ .slide-enter-active,
440
+ .slide-leave-active{
441
+ transition: transform 0.5s;
442
+ }
443
+ .slide-enter{
444
+ transform: translateX(100%);
445
+ }
446
+ .slide-leave-to{
447
+ transform: translateX(175px);
448
+ }
449
+ .text {
450
+ display: inline-block;
451
+ }
452
+ .text.scrolling {
453
+ animation: scrollText linear infinite;
454
+ animation-duration: 2s; /* 调整滚动速度和持续时间 */
455
+ }
456
+
457
+ @keyframes scrollText {
458
+ 0% {
459
+ transform: translateX(0);
460
+ }
461
+ 100% {
462
+ transform: translateX(var(--scroll-distance, 0)); /* 调整滚动的距离 */
463
+ }
464
+ }
465
+
466
+ .menu-side-style:hover .text {
467
+ animation-play-state: running;
468
+ }
469
+ .demo-spin-icon-load{
470
+ animation: ani-demo-spin 1s linear infinite;
471
+ }
472
+ @keyframes ani-demo-spin {
473
+ from { transform: rotate(0deg);}
474
+ 50% { transform: rotate(180deg);}
475
+ to { transform: rotate(360deg);}
476
+ }
477
+ </style>