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.
Files changed (54) hide show
  1. package/package.json +2 -2
  2. package/src/assets/css/cl-statis.scss +0 -13
  3. package/src/assets/css/el-table.scss +13 -0
  4. package/src/assets/iconFont/demo_index.html +1190 -1321
  5. package/src/assets/iconFont/iconfont.css +11 -3
  6. package/src/assets/iconFont/iconfont.js +1 -1
  7. package/src/assets/iconFont/iconfont.json +14 -0
  8. package/src/assets/iconFont/iconfont.ttf +0 -0
  9. package/src/assets/iconFont/iconfont.woff +0 -0
  10. package/src/assets/iconFont/iconfont.woff2 +0 -0
  11. package/src/components/ApprovalButtons/index.vue +22 -6
  12. package/src/components/Expandable/index.vue +3 -46
  13. package/src/components/Layout/HeaderWrap/indexN.vue +2 -7
  14. package/src/components/LoginSetting/img-none.png +0 -0
  15. package/src/components/LoginSetting/indexN.vue +1 -1
  16. package/src/components/LoginSetting/setItem.vue +196 -131
  17. package/src/components/LoginTemporary/button-next.png +0 -0
  18. package/src/components/LoginTemporary/button-prev.png +0 -0
  19. package/src/components/LoginTemporary/form.vue +16 -3
  20. package/src/components/LoginTemporary/indexN.vue +92 -37
  21. package/src/components/LoginTemporary/item1-active.png +0 -0
  22. package/src/components/LoginTemporary/item1-light-active.png +0 -0
  23. package/src/components/LoginTemporary/item2-active.png +0 -0
  24. package/src/components/LoginTemporary/item2-light-active.png +0 -0
  25. package/src/components/LoginTemporary/item2-light.png +0 -0
  26. package/src/components/LoginTemporary/item2.png +0 -0
  27. package/src/components/Statis/statisPopover.vue +17 -1
  28. package/src/components/Upload/uploadMsg.vue +77 -68
  29. package/src/index.js +2 -0
  30. package/src/utils/axios.js +3 -3
  31. package/src/utils/imgLoad.js +47 -0
  32. package/src/utils/tableheaderFilterpanel.vue +4 -5
  33. package/src/utils/urlToGo.js +1 -1
  34. package/style/fonts/iconfont.e6bdbf43.woff2 +0 -0
  35. package/style/fonts/iconfont.f1777a50.woff +0 -0
  36. package/{theme/fonts/iconfont.a9febaa2.ttf → style/fonts/iconfont.fbdd69b3.ttf} +0 -0
  37. package/style/index.css +3 -3
  38. package/style/index.css.map +1 -1
  39. package/theme/blue.css +3 -3
  40. package/theme/cctcRed.css +3 -3
  41. package/theme/fonts/iconfont.e6bdbf43.woff2 +0 -0
  42. package/theme/fonts/iconfont.f1777a50.woff +0 -0
  43. package/{style/fonts/iconfont.a9febaa2.ttf → theme/fonts/iconfont.fbdd69b3.ttf} +0 -0
  44. package/theme/green.css +3 -3
  45. package/theme/lightBlue.css +3 -3
  46. package/theme/orange.css +3 -3
  47. package/theme/purple.css +3 -3
  48. package/theme/red.css +3 -3
  49. package/theme/yellow.css +3 -3
  50. package/style/fonts/iconfont.022f36c4.woff2 +0 -0
  51. package/style/fonts/iconfont.4a1b2c93.woff +0 -0
  52. package/theme/fonts/iconfont.022f36c4.woff2 +0 -0
  53. package/theme/fonts/iconfont.4a1b2c93.woff +0 -0
  54. 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 v-if="loginLogo" :src="loginLogo" :style="{ width: loginLogoWidth, height: loginLogoHeight }" />
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
- loginBg() {
277
- if (this.form.LOGIN_BG) {
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) => (s.NO = NO))
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
- width: 300px;
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
- position: absolute;
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(153, 165, 186, 0.53), rgba(96, 108, 133, 0.15));
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: linear-gradient(180deg, rgba(49, 82, 244, 0.53), rgba(96, 108, 133, 0.15));
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
- width: 349px;
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
- position: absolute;
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% + 12px);
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;
@@ -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="rotating-icon n20-icon-nianfenqiehuan-youce"></i>
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
- <template v-if="!hidePercent">
11
- <p v-if="!percentType">{{ '系统处理中,请稍等......' | $lc }}</p>
12
- <div v-else>
13
- <div v-if="validateResult" class="m-b"><span class="m-r-m">导入文件</span>{{ validateResult.name }}</div>
14
- <div class="flex-box">
15
- <div class="m-r-m">{{ '导入进度' | $lc }}</div>
16
- <div class="flex-item">
17
- <el-progress
18
- class="m-b"
19
- :percentage="percent"
20
- :status="percentType !== 'loading' ? percentType : undefined"
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
- <span slot="footer">
57
- <div v-if="footerBtn">
58
- <el-button
59
- type="primary"
60
- @click="
61
- () => {
62
- footerBtn.confirm.click()
63
- progressV = false
64
- }
65
- "
66
- >{{ footerBtn.confirm.text | $lc }}</el-button
67
- >
68
- <el-button
69
- plain
70
- @click="
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
- <el-button v-else type="primary" @click="confirmFn">{{ '确认' | $lc }}</el-button>
80
- </span>
81
- </template>
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,
@@ -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="flex-column" style="max-height: 226px; overflow: auto">
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="text-ellipsis align-bottom" style="display: inline-block; max-width: 12em">{{
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-m">
36
+ <div class="flex-box flex-c m-t-s">
38
37
  <el-button
39
38
  type="primary"
40
39
  size="mini"
@@ -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.href)
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 || ''