n20-common-lib 2.1.26 → 2.1.28
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 +2 -2
- package/src/assets/css/cl-statis.scss +0 -13
- package/src/assets/css/el-table.scss +13 -0
- package/src/assets/iconFont/demo_index.html +1190 -1321
- package/src/assets/iconFont/iconfont.css +11 -3
- package/src/assets/iconFont/iconfont.js +1 -1
- package/src/assets/iconFont/iconfont.json +14 -0
- package/src/assets/iconFont/iconfont.ttf +0 -0
- package/src/assets/iconFont/iconfont.woff +0 -0
- package/src/assets/iconFont/iconfont.woff2 +0 -0
- package/src/components/ApprovalButtons/index.vue +22 -6
- package/src/components/Expandable/index.vue +3 -46
- package/src/components/Layout/HeaderWrap/indexN.vue +2 -7
- package/src/components/LoginSetting/img-none.png +0 -0
- package/src/components/LoginSetting/indexN.vue +1 -1
- package/src/components/LoginSetting/setItem.vue +196 -131
- package/src/components/LoginTemporary/button-next.png +0 -0
- package/src/components/LoginTemporary/button-prev.png +0 -0
- package/src/components/LoginTemporary/form.vue +16 -3
- package/src/components/LoginTemporary/indexN.vue +92 -37
- package/src/components/LoginTemporary/item1-active.png +0 -0
- package/src/components/LoginTemporary/item1-light-active.png +0 -0
- package/src/components/LoginTemporary/item2-active.png +0 -0
- package/src/components/LoginTemporary/item2-light-active.png +0 -0
- package/src/components/LoginTemporary/item2-light.png +0 -0
- package/src/components/LoginTemporary/item2.png +0 -0
- package/src/components/Statis/statisPopover.vue +17 -1
- package/src/components/Upload/uploadMsg.vue +77 -68
- package/src/index.js +2 -0
- package/src/utils/axios.js +3 -3
- package/src/utils/imgLoad.js +47 -0
- package/src/utils/tableheaderFilterpanel.vue +4 -5
- package/src/utils/urlToGo.js +1 -1
- package/style/fonts/iconfont.e6bdbf43.woff2 +0 -0
- package/style/fonts/iconfont.f1777a50.woff +0 -0
- package/{theme/fonts/iconfont.a9febaa2.ttf → style/fonts/iconfont.fbdd69b3.ttf} +0 -0
- package/style/index.css +3 -3
- package/style/index.css.map +1 -1
- package/theme/blue.css +3 -3
- package/theme/cctcRed.css +3 -3
- package/theme/fonts/iconfont.e6bdbf43.woff2 +0 -0
- package/theme/fonts/iconfont.f1777a50.woff +0 -0
- package/{style/fonts/iconfont.a9febaa2.ttf → theme/fonts/iconfont.fbdd69b3.ttf} +0 -0
- package/theme/green.css +3 -3
- package/theme/lightBlue.css +3 -3
- package/theme/orange.css +3 -3
- package/theme/purple.css +3 -3
- package/theme/red.css +3 -3
- package/theme/yellow.css +3 -3
- package/style/fonts/iconfont.022f36c4.woff2 +0 -0
- package/style/fonts/iconfont.4a1b2c93.woff +0 -0
- package/theme/fonts/iconfont.022f36c4.woff2 +0 -0
- package/theme/fonts/iconfont.4a1b2c93.woff +0 -0
- package/theme/fonts/iconfont.fa132ccf.ttf +0 -0
|
@@ -16,27 +16,32 @@
|
|
|
16
16
|
class="login-wrap"
|
|
17
17
|
:class="{
|
|
18
18
|
'login-wrap-1': form.LOGIN_TYPE === 'T1',
|
|
19
|
-
'login-wrap-2': form.LOGIN_TYPE === 'T2'
|
|
19
|
+
'login-wrap-2': form.LOGIN_TYPE === 'T2',
|
|
20
|
+
'login-bg-light': form.LOGIN_BG_TYPE === 'light'
|
|
20
21
|
}"
|
|
21
22
|
:style="{ backgroundImage: loginBg }"
|
|
22
23
|
>
|
|
23
24
|
<component :is="'style'">{{ wrapStyle }}</component>
|
|
24
25
|
|
|
25
26
|
<div class="login-logo-box flex-box flex-v">
|
|
26
|
-
<img
|
|
27
|
+
<img
|
|
28
|
+
v-if="loginLogo"
|
|
29
|
+
:src="loginLogo"
|
|
30
|
+
onerror="imgLoad(this)"
|
|
31
|
+
:style="{ width: loginLogoWidth, height: loginLogoHeight }"
|
|
32
|
+
/>
|
|
27
33
|
<h3 class="login-logo-text">{{ loginLogoText | $l }}</h3>
|
|
28
34
|
</div>
|
|
29
35
|
<div class="login-verify-box" @click="inspectionV = true">{{ '查验中心' | $lc }} ></div>
|
|
30
36
|
|
|
31
37
|
<template v-if="form.LOGIN_TYPE === 'T1'">
|
|
32
38
|
<div class="sys-title">{{ '系统选择区' | $lc }}</div>
|
|
33
|
-
|
|
34
39
|
<div class="sys-carousel">
|
|
35
40
|
<div class="swiper-wrapper">
|
|
36
41
|
<div v-for="(item, i) in systemListAs" :key="i" class="swiper-slide">
|
|
37
42
|
<div class="sys-item" :onclick="`loginSwiperSys(${i},'${item.NO}')`">
|
|
38
43
|
<div class="sys-item-icon">
|
|
39
|
-
<img :src="item | realUrl" />
|
|
44
|
+
<img :src="item | realUrl" onerror="imgLoad(this)" />
|
|
40
45
|
</div>
|
|
41
46
|
<div class="sys-item-title flex-box flex-v flex-c">
|
|
42
47
|
<span>{{ item.NAME }}</span>
|
|
@@ -64,7 +69,7 @@
|
|
|
64
69
|
@click="selSystem(item)"
|
|
65
70
|
>
|
|
66
71
|
<div class="sys-item-icon">
|
|
67
|
-
<img :src="item | realUrl" />
|
|
72
|
+
<img :src="item | realUrl" onerror="imgLoad(this)" />
|
|
68
73
|
</div>
|
|
69
74
|
<div class="sys-item-title flex-box flex-v flex-c">
|
|
70
75
|
<span>{{ item.NAME }}</span>
|
|
@@ -134,6 +139,9 @@ import Inspection from './inspection/index.vue'
|
|
|
134
139
|
import IconMap from './systemIconMap'
|
|
135
140
|
import OLogin from './index.vue'
|
|
136
141
|
|
|
142
|
+
import imgLoad from '../../utils/imgLoad'
|
|
143
|
+
window.imgLoad = imgLoad
|
|
144
|
+
|
|
137
145
|
export default {
|
|
138
146
|
name: 'Login',
|
|
139
147
|
components: {
|
|
@@ -198,6 +206,7 @@ export default {
|
|
|
198
206
|
GROUP_NAME: '',
|
|
199
207
|
LOGIN_SLOGAN: '',
|
|
200
208
|
LOGIN_BG: undefined,
|
|
209
|
+
LOGIN_BG_TYPE: 'dark',
|
|
201
210
|
LOGIN_LOGO: undefined,
|
|
202
211
|
LOGIN_TYPE: undefined,
|
|
203
212
|
SYSTEM_LIST: [
|
|
@@ -260,6 +269,7 @@ export default {
|
|
|
260
269
|
]
|
|
261
270
|
},
|
|
262
271
|
sltSys: {},
|
|
272
|
+
loginBg: 'none',
|
|
263
273
|
inspectionV: false
|
|
264
274
|
}
|
|
265
275
|
},
|
|
@@ -273,14 +283,8 @@ export default {
|
|
|
273
283
|
return this.jsonData.loginTypes || ['account']
|
|
274
284
|
}
|
|
275
285
|
},
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
return `url(${this.form.LOGIN_BG})`
|
|
279
|
-
} else if (this.jsonData.loginBg) {
|
|
280
|
-
return `url(${realUrl(this.jsonData.loginBg)})`
|
|
281
|
-
} else {
|
|
282
|
-
return 'none'
|
|
283
|
-
}
|
|
286
|
+
loginBgAs() {
|
|
287
|
+
return this.form.LOGIN_BG + '_' + this.jsonData.loginBg
|
|
284
288
|
},
|
|
285
289
|
loginLogo() {
|
|
286
290
|
return this.form.LOGIN_LOGO || (this.jsonData.loginLogo && realUrl(this.jsonData.loginLogo)) || undefined
|
|
@@ -321,6 +325,17 @@ export default {
|
|
|
321
325
|
return form
|
|
322
326
|
}
|
|
323
327
|
},
|
|
328
|
+
watch: {
|
|
329
|
+
loginBgAs() {
|
|
330
|
+
if (this.form.LOGIN_BG) {
|
|
331
|
+
imgLoad(this.form.LOGIN_BG).then((url) => {
|
|
332
|
+
this.loginBg = `url(${url})`
|
|
333
|
+
})
|
|
334
|
+
} else if (this.jsonData.loginBg) {
|
|
335
|
+
this.loginBg = `url(${realUrl(this.jsonData.loginBg)})`
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
},
|
|
324
339
|
created() {
|
|
325
340
|
if (this.autoLogin) return this.autoLoginSC()
|
|
326
341
|
if (window.sessionStorage.getItem('_auto_login_ing_')) return this.autoLoginSS()
|
|
@@ -410,6 +425,7 @@ export default {
|
|
|
410
425
|
}
|
|
411
426
|
|
|
412
427
|
this.$nextTick(() => {
|
|
428
|
+
sessionStorage.setItem('headerTitle', this.form.GROUP_NAME)
|
|
413
429
|
let systemNo = localStorage.getItem('pageInSystemNo')
|
|
414
430
|
let acSysI = this.systemList.findIndex((s) => s.NO === systemNo)
|
|
415
431
|
|
|
@@ -482,7 +498,7 @@ export default {
|
|
|
482
498
|
})
|
|
483
499
|
window.loginSwiperSys = (i, NO) => {
|
|
484
500
|
this.swiper.slideTo(i + 3)
|
|
485
|
-
let item = this.systemList.find((s) =>
|
|
501
|
+
let item = this.systemList.find((s) => s.NO === NO)
|
|
486
502
|
this.selSystem(item)
|
|
487
503
|
}
|
|
488
504
|
},
|
|
@@ -509,6 +525,9 @@ export default {
|
|
|
509
525
|
left: 116px;
|
|
510
526
|
color: #ffffff;
|
|
511
527
|
}
|
|
528
|
+
.login-bg-light .login-logo-box {
|
|
529
|
+
color: #333333;
|
|
530
|
+
}
|
|
512
531
|
|
|
513
532
|
.login-logo-text {
|
|
514
533
|
margin-left: 28px;
|
|
@@ -521,20 +540,22 @@ export default {
|
|
|
521
540
|
right: 103px;
|
|
522
541
|
top: 50%;
|
|
523
542
|
transform: translateY(-50%);
|
|
524
|
-
|
|
525
|
-
min-height: 340px;
|
|
526
|
-
padding: 30px !important;
|
|
543
|
+
padding: 30px 30px 18px !important;
|
|
527
544
|
background: #f7f6f6;
|
|
528
545
|
}
|
|
546
|
+
.login-bg-light .login-form {
|
|
547
|
+
background: #ffffff;
|
|
548
|
+
}
|
|
529
549
|
|
|
530
550
|
.login-verify-box {
|
|
531
551
|
box-sizing: border-box;
|
|
532
552
|
position: absolute;
|
|
533
553
|
top: 57px;
|
|
534
554
|
right: 103px;
|
|
535
|
-
width: 86px;
|
|
536
555
|
height: 28px;
|
|
537
556
|
line-height: 26px;
|
|
557
|
+
padding-left: 8px;
|
|
558
|
+
padding-right: 8px;
|
|
538
559
|
border: 1px solid #ffffff;
|
|
539
560
|
border-radius: 4px;
|
|
540
561
|
font-size: 14px;
|
|
@@ -542,16 +563,26 @@ export default {
|
|
|
542
563
|
color: #ffffff;
|
|
543
564
|
cursor: pointer;
|
|
544
565
|
}
|
|
566
|
+
.login-bg-light .login-verify-box {
|
|
567
|
+
color: #333333;
|
|
568
|
+
border-color: #333333;
|
|
569
|
+
}
|
|
545
570
|
|
|
546
571
|
.login-form-header {
|
|
547
572
|
font-size: 16px;
|
|
548
573
|
color: #3d4a57;
|
|
549
574
|
}
|
|
575
|
+
.login-bg-light .login-form {
|
|
576
|
+
color: #333333;
|
|
577
|
+
}
|
|
550
578
|
|
|
551
579
|
.login-form-footer {
|
|
552
580
|
font-size: 12px;
|
|
553
581
|
color: #3d4a57;
|
|
554
582
|
}
|
|
583
|
+
.login-bg-light .login-form-footer {
|
|
584
|
+
color: #333333;
|
|
585
|
+
}
|
|
555
586
|
|
|
556
587
|
.login-form-download {
|
|
557
588
|
text-decoration: none;
|
|
@@ -579,18 +610,15 @@ export default {
|
|
|
579
610
|
right: 103px;
|
|
580
611
|
top: calc(50% - 65px);
|
|
581
612
|
transform: translateY(-50%);
|
|
582
|
-
width: 300px;
|
|
583
|
-
min-height: 340px;
|
|
584
|
-
padding: 30px !important;
|
|
585
|
-
background: #f7f6f6;
|
|
586
613
|
}
|
|
587
614
|
.login-wrap-1 .sys-title {
|
|
588
|
-
|
|
615
|
+
display: none;
|
|
616
|
+
/* position: absolute;
|
|
589
617
|
left: 116px;
|
|
590
618
|
top: calc(50% - 248px);
|
|
591
619
|
line-height: 22px;
|
|
592
620
|
font-size: 16px;
|
|
593
|
-
color: #ffffff;
|
|
621
|
+
color: #ffffff; */
|
|
594
622
|
}
|
|
595
623
|
.login-wrap-1 .sys-carousel {
|
|
596
624
|
position: absolute;
|
|
@@ -609,16 +637,26 @@ export default {
|
|
|
609
637
|
width: 100%;
|
|
610
638
|
height: 281px;
|
|
611
639
|
border-radius: 8px;
|
|
612
|
-
background: linear-gradient(180deg, rgba(
|
|
640
|
+
background: linear-gradient(180deg, rgba(188, 188, 188, 0.6), rgba(124, 124, 124, 0.1));
|
|
613
641
|
cursor: pointer;
|
|
614
642
|
}
|
|
643
|
+
.login-bg-light.login-wrap-1 .swiper-slide .sys-item {
|
|
644
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0));
|
|
645
|
+
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
|
|
646
|
+
}
|
|
615
647
|
.login-wrap-1 .swiper-slide-active,
|
|
616
648
|
.login-wrap-1 .swiper-slide-duplicate-active {
|
|
617
649
|
transform: scale(1);
|
|
618
650
|
}
|
|
619
651
|
.login-wrap-1 .swiper-slide-active .sys-item,
|
|
620
652
|
.login-wrap-1 .swiper-slide-duplicate-active .sys-item {
|
|
621
|
-
background:
|
|
653
|
+
background-image: url('./item1-active.png');
|
|
654
|
+
background-size: 100% 100%;
|
|
655
|
+
}
|
|
656
|
+
.login-bg-light.login-wrap-1 .swiper-slide-active .sys-item,
|
|
657
|
+
.login-bg-light.login-wrap-1 .swiper-slide-duplicate-active .sys-item {
|
|
658
|
+
background-image: url('./item1-light-active.png');
|
|
659
|
+
background-size: 100% 100%;
|
|
622
660
|
}
|
|
623
661
|
.login-wrap-1 .swiper-button-prev,
|
|
624
662
|
.login-wrap-1 .swiper-button-next {
|
|
@@ -632,6 +670,10 @@ export default {
|
|
|
632
670
|
background-size: 100% 100%;
|
|
633
671
|
cursor: pointer;
|
|
634
672
|
}
|
|
673
|
+
.login-bg-light.login-wrap-1 .swiper-button-prev,
|
|
674
|
+
.login-bg-light.login-wrap-1 .swiper-button-next {
|
|
675
|
+
filter: brightness(0.7);
|
|
676
|
+
}
|
|
635
677
|
.login-wrap-1 .swiper-button-next {
|
|
636
678
|
left: 964px;
|
|
637
679
|
background-image: url('./button-next.png');
|
|
@@ -644,6 +686,9 @@ export default {
|
|
|
644
686
|
line-height: 25px;
|
|
645
687
|
user-select: none;
|
|
646
688
|
}
|
|
689
|
+
.login-bg-light.login-wrap-1 .sys-item-title {
|
|
690
|
+
color: #333333;
|
|
691
|
+
}
|
|
647
692
|
.login-wrap-1 .sys-item-icon {
|
|
648
693
|
padding-top: 36px;
|
|
649
694
|
text-align: center;
|
|
@@ -654,19 +699,20 @@ export default {
|
|
|
654
699
|
user-select: none;
|
|
655
700
|
}
|
|
656
701
|
.login-wrap-1 .sys-item-shadow {
|
|
657
|
-
|
|
702
|
+
display: none;
|
|
703
|
+
/* width: 349px;
|
|
658
704
|
height: 15px;
|
|
659
705
|
margin-top: 20px;
|
|
660
706
|
background: url('./sysShadow.png');
|
|
661
707
|
background-size: 100% 100%;
|
|
662
708
|
margin-left: -45px;
|
|
663
709
|
opacity: 0;
|
|
664
|
-
transition: 300ms;
|
|
710
|
+
transition: 300ms; */
|
|
665
711
|
}
|
|
666
|
-
.login-wrap-1 .swiper-slide-active .sys-item-shadow,
|
|
712
|
+
/* .login-wrap-1 .swiper-slide-active .sys-item-shadow,
|
|
667
713
|
.login-wrap-1 .swiper-slide-duplicate-active .sys-item-shadow {
|
|
668
714
|
opacity: 0.5;
|
|
669
|
-
}
|
|
715
|
+
} */
|
|
670
716
|
|
|
671
717
|
.login-wrap-2 .login-logo-box {
|
|
672
718
|
left: 116px;
|
|
@@ -677,24 +723,21 @@ export default {
|
|
|
677
723
|
right: 106px;
|
|
678
724
|
top: 50%;
|
|
679
725
|
transform: translateY(-50%);
|
|
680
|
-
width: 300px;
|
|
681
|
-
min-height: 340px;
|
|
682
|
-
padding: 30px !important;
|
|
683
|
-
background: #f7f6f6;
|
|
684
726
|
}
|
|
685
727
|
.login-wrap-2 .sys-title {
|
|
686
|
-
|
|
728
|
+
display: none;
|
|
729
|
+
/* position: absolute;
|
|
687
730
|
left: 116px;
|
|
688
731
|
top: calc(50% - 310px);
|
|
689
732
|
line-height: 22px;
|
|
690
733
|
font-size: 16px;
|
|
691
|
-
color: #ffffff;
|
|
734
|
+
color: #ffffff; */
|
|
692
735
|
}
|
|
693
736
|
.login-wrap-2 .sys-carousel {
|
|
694
737
|
width: 856px;
|
|
695
738
|
position: absolute;
|
|
696
739
|
left: 106px;
|
|
697
|
-
top: calc(50% +
|
|
740
|
+
top: calc(50% + 0px);
|
|
698
741
|
transform: translateY(-50%);
|
|
699
742
|
flex-wrap: wrap;
|
|
700
743
|
justify-content: space-between;
|
|
@@ -706,11 +749,20 @@ export default {
|
|
|
706
749
|
background: url('./item2.png');
|
|
707
750
|
background-size: 100% 100%;
|
|
708
751
|
}
|
|
752
|
+
.login-bg-light.login-wrap-2 .sys-item {
|
|
753
|
+
background-image: url('./item2-light.png');
|
|
754
|
+
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
|
|
755
|
+
}
|
|
709
756
|
.login-wrap-2 .sys-item:hover,
|
|
710
757
|
.login-wrap-2 .sys-item.active {
|
|
711
758
|
background: url('./item2-active.png');
|
|
712
759
|
background-size: 100% 100%;
|
|
713
760
|
}
|
|
761
|
+
.login-bg-light.login-wrap-2 .sys-item:hover,
|
|
762
|
+
.login-bg-light.login-wrap-2 .sys-item.active {
|
|
763
|
+
background-image: url('./item2-light-active.png');
|
|
764
|
+
background-size: 100% 100%;
|
|
765
|
+
}
|
|
714
766
|
.login-wrap-2 .sys-item-title {
|
|
715
767
|
height: 58px;
|
|
716
768
|
font-size: 14px;
|
|
@@ -718,6 +770,9 @@ export default {
|
|
|
718
770
|
line-height: 20px;
|
|
719
771
|
user-select: none;
|
|
720
772
|
}
|
|
773
|
+
.login-bg-light.login-wrap-2 .sys-item-title {
|
|
774
|
+
color: #333333;
|
|
775
|
+
}
|
|
721
776
|
.login-wrap-2 .sys-item-icon {
|
|
722
777
|
padding-top: 20px;
|
|
723
778
|
text-align: center;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
placement="bottom-start"
|
|
17
17
|
:visible-arrow="false"
|
|
18
18
|
popper-class="n20-statis-pop"
|
|
19
|
+
@show="show = true"
|
|
20
|
+
@hide="show = false"
|
|
19
21
|
>
|
|
20
22
|
<div slot="reference" class="flex-box p-t-s p-b-s">
|
|
21
23
|
<statisItem
|
|
@@ -26,7 +28,7 @@
|
|
|
26
28
|
:list="item.list"
|
|
27
29
|
:count-label="countLabel"
|
|
28
30
|
/>
|
|
29
|
-
<i class="
|
|
31
|
+
<i class="n20-icon-nianfenqiehuan-youce" :class="show ? 'rotating-icon-show' : 'rotating-icon'"></i>
|
|
30
32
|
</div>
|
|
31
33
|
|
|
32
34
|
<div>
|
|
@@ -59,6 +61,20 @@ export default {
|
|
|
59
61
|
type: Array,
|
|
60
62
|
default: undefined
|
|
61
63
|
}
|
|
64
|
+
},
|
|
65
|
+
data() {
|
|
66
|
+
return {
|
|
67
|
+
show: false
|
|
68
|
+
}
|
|
62
69
|
}
|
|
63
70
|
}
|
|
64
71
|
</script>
|
|
72
|
+
<style>
|
|
73
|
+
.rotating-icon {
|
|
74
|
+
transform: rotate(90deg);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.rotating-icon-show {
|
|
78
|
+
transform: rotate(270deg);
|
|
79
|
+
}
|
|
80
|
+
</style>
|
|
@@ -7,78 +7,87 @@
|
|
|
7
7
|
:close-on-click-modal="false"
|
|
8
8
|
:close-on-press-escape="false"
|
|
9
9
|
>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
<div v-
|
|
14
|
-
|
|
15
|
-
<div class="
|
|
16
|
-
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
10
|
+
<div style="min-height: 28px">
|
|
11
|
+
<template v-if="!hidePercent">
|
|
12
|
+
<p v-if="!percentType">{{ '系统处理中,请稍等......' | $lc }}</p>
|
|
13
|
+
<div v-else>
|
|
14
|
+
<div v-if="validateResult" class="m-b"><span class="m-r-m">导入文件</span>{{ validateResult.name }}</div>
|
|
15
|
+
<div class="flex-box">
|
|
16
|
+
<div class="m-r-m">{{ '导入进度' | $lc }}</div>
|
|
17
|
+
<div class="flex-item">
|
|
18
|
+
<el-progress
|
|
19
|
+
class="m-b"
|
|
20
|
+
:percentage="percent"
|
|
21
|
+
:status="percentType !== 'loading' ? percentType : undefined"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
22
24
|
</div>
|
|
23
25
|
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</template>
|
|
26
|
-
<!-- 错误数据行提示 -->
|
|
27
|
-
<template v-if="validateResult">
|
|
28
|
-
<div class="m-b">
|
|
29
|
-
<span class="m-r">{{ '导入统计' | $lc }}</span>
|
|
30
|
-
<span>{{ '共计导入' | $lc }}{{ validateResult.totalNum }}{{ '条,' | $lc }} </span>
|
|
31
|
-
<span class="m-r-s">
|
|
32
|
-
{{ '其中有效数据' | $lc }}
|
|
33
|
-
<span class="color-success">{{ validateResult.successNum }}</span
|
|
34
|
-
>{{ '条,' | $lc }}
|
|
35
|
-
</span>
|
|
36
|
-
<span>
|
|
37
|
-
{{ '无效数据' | $lc }}
|
|
38
|
-
<span class="color-danger">{{ validateResult.errorList.length }}</span
|
|
39
|
-
>{{ '条。' | $lc }}
|
|
40
|
-
</span>
|
|
41
|
-
</div>
|
|
42
|
-
<template v-if="validateResult.errorList.length">
|
|
43
|
-
<div class="bd-t bd-l bd-r">
|
|
44
|
-
<div class="m-t m-b p-l">{{ '无效数据详情' | $lc }}</div>
|
|
45
|
-
<el-table :data="errorList">
|
|
46
|
-
<el-table-column v-for="column in columnsList" :key="column.prop" :prop="column.prop" :label="column.label">
|
|
47
|
-
<template slot-scope="scope">
|
|
48
|
-
<!-- eslint-disable-next-line vue/no-v-html -->
|
|
49
|
-
<span v-html="scope.row[column.prop]"></span>
|
|
50
|
-
</template>
|
|
51
|
-
</el-table-column>
|
|
52
|
-
</el-table>
|
|
53
|
-
</div>
|
|
54
|
-
<div class="color-warning m-t-s">{{ '上述数据输入有误,请修改导入文件中相关信息!' | $lc }}</div>
|
|
55
26
|
</template>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
() => {
|
|
72
|
-
footerBtn.cancel.click()
|
|
73
|
-
progressV = false
|
|
74
|
-
}
|
|
75
|
-
"
|
|
76
|
-
>{{ footerBtn.cancel.text | $lc }}</el-button
|
|
77
|
-
>
|
|
27
|
+
<!-- 错误数据行提示 -->
|
|
28
|
+
<template v-if="validateResult">
|
|
29
|
+
<div class="m-b">
|
|
30
|
+
<span class="m-r">{{ '导入统计' | $lc }}</span>
|
|
31
|
+
<span>{{ '共计导入' | $lc }}{{ validateResult.totalNum }}{{ '条,' | $lc }} </span>
|
|
32
|
+
<span class="m-r-s">
|
|
33
|
+
{{ '其中有效数据' | $lc }}
|
|
34
|
+
<span class="color-success">{{ validateResult.successNum }}</span
|
|
35
|
+
>{{ '条,' | $lc }}
|
|
36
|
+
</span>
|
|
37
|
+
<span>
|
|
38
|
+
{{ '无效数据' | $lc }}
|
|
39
|
+
<span class="color-danger">{{ validateResult.errorList.length }}</span
|
|
40
|
+
>{{ '条。' | $lc }}
|
|
41
|
+
</span>
|
|
78
42
|
</div>
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
|
|
43
|
+
<template v-if="validateResult.errorList.length">
|
|
44
|
+
<div class="bd-t bd-l bd-r">
|
|
45
|
+
<div class="m-t m-b p-l">{{ '无效数据详情' | $lc }}</div>
|
|
46
|
+
<el-table :data="errorList">
|
|
47
|
+
<el-table-column
|
|
48
|
+
v-for="column in columnsList"
|
|
49
|
+
:key="column.prop"
|
|
50
|
+
:prop="column.prop"
|
|
51
|
+
:label="column.label"
|
|
52
|
+
>
|
|
53
|
+
<template slot-scope="scope">
|
|
54
|
+
<!-- eslint-disable-next-line vue/no-v-html -->
|
|
55
|
+
<span v-html="scope.row[column.prop]"></span>
|
|
56
|
+
</template>
|
|
57
|
+
</el-table-column>
|
|
58
|
+
</el-table>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="color-warning m-t-s">{{ '上述数据输入有误,请修改导入文件中相关信息!' | $lc }}</div>
|
|
61
|
+
</template>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div slot="footer" style="height: 32px">
|
|
65
|
+
<template v-if="validateResult && footerBtn">
|
|
66
|
+
<el-button
|
|
67
|
+
type="primary"
|
|
68
|
+
@click="
|
|
69
|
+
() => {
|
|
70
|
+
footerBtn.confirm.click()
|
|
71
|
+
progressV = false
|
|
72
|
+
}
|
|
73
|
+
"
|
|
74
|
+
>{{ footerBtn.confirm.text | $lc }}</el-button
|
|
75
|
+
>
|
|
76
|
+
<el-button
|
|
77
|
+
plain
|
|
78
|
+
@click="
|
|
79
|
+
() => {
|
|
80
|
+
footerBtn.cancel.click()
|
|
81
|
+
progressV = false
|
|
82
|
+
}
|
|
83
|
+
"
|
|
84
|
+
>{{ footerBtn.cancel.text | $lc }}</el-button
|
|
85
|
+
>
|
|
86
|
+
</template>
|
|
87
|
+
<el-button v-else-if="validateResult || percentType === 'success'" type="primary" @click="confirmFn">{{
|
|
88
|
+
'确认' | $lc
|
|
89
|
+
}}</el-button>
|
|
90
|
+
</div>
|
|
82
91
|
</el-dialog>
|
|
83
92
|
</template>
|
|
84
93
|
|
package/src/index.js
CHANGED
|
@@ -104,6 +104,7 @@ import { hasG as isHasG } from './directives/VHas/index.js'
|
|
|
104
104
|
import asyncGetRelaNos from './utils/asyncGetRelaNos.js'
|
|
105
105
|
import importG from './utils/importGlobal.js' // 联合加载组件保存位置
|
|
106
106
|
import N from './utils/numberPor.js' // 扩展Number
|
|
107
|
+
import imgLoad from './utils/imgLoad.js'
|
|
107
108
|
|
|
108
109
|
/** 国际化 */
|
|
109
110
|
import i18n, { $l } from './utils/i18n'
|
|
@@ -230,6 +231,7 @@ export {
|
|
|
230
231
|
downloadBlob,
|
|
231
232
|
forEachs,
|
|
232
233
|
list2tree,
|
|
234
|
+
imgLoad,
|
|
233
235
|
repairEl,
|
|
234
236
|
// 页签/路由
|
|
235
237
|
setTabs,
|
package/src/utils/axios.js
CHANGED
|
@@ -63,7 +63,7 @@ axios.interceptors.request.use((opt) => {
|
|
|
63
63
|
return opt
|
|
64
64
|
})
|
|
65
65
|
|
|
66
|
-
function errorFn(status, msg, noMsg, isErr) {
|
|
66
|
+
function errorFn(status, msg, noMsg, isErr, res) {
|
|
67
67
|
if (status === 401 || (isErr && msg.includes('401'))) {
|
|
68
68
|
noMsg || showMsg($lc('超时未操作,请重新登录!'))
|
|
69
69
|
setTimeout(() => {
|
|
@@ -90,7 +90,7 @@ function errorFn(status, msg, noMsg, isErr) {
|
|
|
90
90
|
} else {
|
|
91
91
|
// noMsg || showMsg(msg)
|
|
92
92
|
}
|
|
93
|
-
throw { code: status, msg: msg }
|
|
93
|
+
throw { code: status, msg: msg, response: res }
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
axios.interceptors.response.use(
|
|
@@ -102,7 +102,7 @@ axios.interceptors.response.use(
|
|
|
102
102
|
let msg = (res.data && (res.data.msg || res.data.message)) || ''
|
|
103
103
|
let noMsg = res.config && res.config.noMsg
|
|
104
104
|
|
|
105
|
-
return errorFn(status, msg, noMsg)
|
|
105
|
+
return errorFn(status, msg, noMsg, false, res)
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
(err) => {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import axios from './axios'
|
|
2
|
+
|
|
3
|
+
export default function imgLoad(el) {
|
|
4
|
+
if (el) {
|
|
5
|
+
if (el.tagName === 'IMG') {
|
|
6
|
+
let url = el.getAttribute('src')
|
|
7
|
+
let dataurl = el.getAttribute('data-url')
|
|
8
|
+
if (url && url !== dataurl) {
|
|
9
|
+
el.setAttribute('data-url', url)
|
|
10
|
+
|
|
11
|
+
let tA = document.createElement('a')
|
|
12
|
+
tA.href = url
|
|
13
|
+
let _url = tA.pathname + tA.search
|
|
14
|
+
tA = undefined
|
|
15
|
+
|
|
16
|
+
axios.get(_url, null, { loading: false, noMsg: true, responseType: 'blob' }).then((blob) => {
|
|
17
|
+
el.setAttribute('src', URL.createObjectURL(blob))
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
} else if (typeof el === 'string') {
|
|
21
|
+
let url = el
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
let tImg = document.createElement('img')
|
|
24
|
+
tImg.setAttribute('src', url)
|
|
25
|
+
tImg.onload = () => {
|
|
26
|
+
resolve(url)
|
|
27
|
+
tImg = undefined
|
|
28
|
+
}
|
|
29
|
+
tImg.onerror = () => {
|
|
30
|
+
let tA = document.createElement('a')
|
|
31
|
+
tA.href = url
|
|
32
|
+
let _url = tA.pathname + tA.search
|
|
33
|
+
tA = undefined
|
|
34
|
+
axios
|
|
35
|
+
.get(_url, null, { loading: false, noMsg: true, responseType: 'blob' })
|
|
36
|
+
.then((blob) => {
|
|
37
|
+
resolve(URL.createObjectURL(blob))
|
|
38
|
+
tImg = undefined
|
|
39
|
+
})
|
|
40
|
+
.catch(() => {
|
|
41
|
+
tImg = undefined
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -18,23 +18,22 @@
|
|
|
18
18
|
filters | alltextF
|
|
19
19
|
}}</el-checkbox>
|
|
20
20
|
</div>
|
|
21
|
-
<el-checkbox-group v-model="filteredValue" class="
|
|
21
|
+
<el-checkbox-group v-model="filteredValue" class="input-w p-b-s" style="max-height: 226px; overflow: auto">
|
|
22
22
|
<template v-for="filter in filters">
|
|
23
23
|
<el-checkbox
|
|
24
24
|
v-if="filter.text.includes(searchVal)"
|
|
25
25
|
:key="filter.value"
|
|
26
26
|
class="m-t-s m-r-0"
|
|
27
27
|
:label="filter.value"
|
|
28
|
+
style="display: block"
|
|
28
29
|
>
|
|
29
30
|
<!-- v-title="filter.text" :show-overflow-tooltip="true" -->
|
|
30
|
-
<span class="
|
|
31
|
-
filter.text
|
|
32
|
-
}}</span>
|
|
31
|
+
<span class="align-bottom">{{ filter.text }}</span>
|
|
33
32
|
<span>{{ filter | countF }}</span>
|
|
34
33
|
</el-checkbox>
|
|
35
34
|
</template>
|
|
36
35
|
</el-checkbox-group>
|
|
37
|
-
<div class="flex-box flex-c m-t-
|
|
36
|
+
<div class="flex-box flex-c m-t-s">
|
|
38
37
|
<el-button
|
|
39
38
|
type="primary"
|
|
40
39
|
size="mini"
|
package/src/utils/urlToGo.js
CHANGED
|
@@ -57,7 +57,7 @@ function buildURL(url, params) {
|
|
|
57
57
|
|
|
58
58
|
export function linkPush(url = '', query = {}, $router) {
|
|
59
59
|
query._fromNo = Date.now()
|
|
60
|
-
sessionStorage.setItem(query._fromNo, location.
|
|
60
|
+
sessionStorage.setItem(query._fromNo, location.pathname + location.search)
|
|
61
61
|
// 如果提供vue-router
|
|
62
62
|
if (process.env.NODE_ENV === 'development' && $router?.push) {
|
|
63
63
|
let base = $router.options.base || ''
|
|
Binary file
|
|
Binary file
|