n20-common-lib 2.9.13 → 2.9.14

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 (130) hide show
  1. package/nstc-g6/components/NstcCharts/NstcCharts.vue +16 -8
  2. package/package.json +8 -5
  3. package/src/assets/css/approve-card.scss +1 -1
  4. package/src/assets/css/date-quarter.scss +8 -0
  5. package/src/assets/css/expandable-pane.scss +7 -0
  6. package/src/assets/css/file-upload-table.scss +2 -3
  7. package/src/assets/css/font-icon.scss +3 -1
  8. package/src/assets/css/message.scss +6 -6
  9. package/src/assets/css/normalize.scss +4 -1
  10. package/src/assets/css/table.scss +16 -11
  11. package/src/assets/iconFont/SIMSUN.ttf +0 -0
  12. package/src/assets/iconFont/font.css +4 -0
  13. package/src/components/AIButton/index.vue +101 -0
  14. package/src/components/AdvancedFilter/formItemRender.vue +7 -4
  15. package/src/components/AdvancedFilter/index.vue +6 -7
  16. package/src/components/Anchor/index.vue +1 -0
  17. package/src/components/ApprovalButtons/index.vue +404 -82
  18. package/src/components/ApprovalButtons/indexApp.vue +1102 -0
  19. package/src/components/ApprovalButtons/selectSpr.vue +128 -0
  20. package/src/components/ApprovalButtons/setCarboncopyProp.vue +1 -1
  21. package/src/components/ApprovalButtons/setRejectToProp.vue +45 -5
  22. package/src/components/ApprovalButtons/showAppOpi.vue +265 -8
  23. package/src/components/ApprovalButtons/showOtherAttrNew.vue +161 -0
  24. package/src/components/ApprovalCard/index.vue +190 -44
  25. package/src/components/ApprovalCard/indexApp.vue +592 -0
  26. package/src/components/ApprovalRecord/approvalImgPro/child.vue +1 -1
  27. package/src/components/ApprovalRecord/approvalImgPro/index.vue +42 -5
  28. package/src/components/ApprovalRecord/index.vue +23 -6
  29. package/src/components/ApprovalRecord/indexApp.vue +79 -0
  30. package/src/components/AttachmentPass/index.vue +286 -0
  31. package/src/components/Button/button-group.vue +3 -1
  32. package/src/components/CascaderArea/index.vue +5 -6
  33. package/src/components/DatePicker/por.vue +31 -1
  34. package/src/components/DateSelect/quarterDatePicker.vue +23 -1
  35. package/src/components/Descriptions/index.vue +7 -3
  36. package/src/components/Dialog/index.vue +4 -0
  37. package/src/components/Diff/index.vue +4 -2
  38. package/src/components/DynamicField/DynamicField.vue +29 -6
  39. package/src/components/DynamicField/DynamicFieldMixin.js +13 -5
  40. package/src/components/DynamicField/DynamicFieldOptions.vue +135 -62
  41. package/src/components/DynamicField/DynamicTable.vue +11 -1
  42. package/src/components/DynamicField/contentPop.vue +110 -0
  43. package/src/components/DynamicField/tableList.vue +5 -1
  44. package/src/components/DynamicField/tableView.vue +143 -0
  45. package/src/components/ECharts/index.vue +15 -9
  46. package/src/components/Expandable/main.vue +17 -2
  47. package/src/components/FileImport/index.vue +4 -5
  48. package/src/components/FileUploadTable/FileUploadTableV3.vue +937 -0
  49. package/src/components/FileUploadTable/aiCheckDialog.vue +139 -0
  50. package/src/components/FileUploadTable/index.vue +251 -33
  51. package/src/components/FileUploadTable/jytg.svg +6 -0
  52. package/src/components/FileUploadTable/wsc.svg +3 -0
  53. package/src/components/FileUploadTable/ysc.svg +3 -0
  54. package/src/components/HandlingAdvice/index.vue +191 -0
  55. package/src/components/InputAccount/index.vue +105 -0
  56. package/src/components/InputNumber/index.vue +16 -4
  57. package/src/components/InputNumber/numberRange.vue +14 -0
  58. package/src/components/InputSearch/index.vue +8 -0
  59. package/src/components/Layout/HeaderWrap/changePwd.vue +50 -23
  60. package/src/components/Layout/HeaderWrap/index.vue +2 -2
  61. package/src/components/Layout/HeaderWrap/indexN.vue +296 -119
  62. package/src/components/Layout/SubContent/index.vue +45 -14
  63. package/src/components/Layout/indexN.vue +26 -5
  64. package/src/components/LoginTemporary/form.vue +126 -34
  65. package/src/components/LoginTemporary/index.vue +14 -3
  66. package/src/components/LoginTemporary/indexN.vue +35 -13
  67. package/src/components/Preview/index.vue +199 -0
  68. package/src/components/SelectDatePickerPro/customDatePicker.vue +7 -0
  69. package/src/components/SelectDatePickerPro/halfYearPicker.vue +165 -0
  70. package/src/components/SelectDatePickerPro/index.vue +44 -4
  71. package/src/components/SelectDatePickerPro/quarterDatePicker.vue +32 -10
  72. package/src/components/SelectTree/index.vue +10 -4
  73. package/src/components/SelectTree/pro.vue +3 -0
  74. package/src/components/ShowColumn/index copy 2.vue +545 -0
  75. package/src/components/ShowColumn/index copy.vue +566 -0
  76. package/src/components/ShowColumn/index.vue +11 -7
  77. package/src/components/Statis/statisItem.vue +8 -7
  78. package/src/components/Table/filters.js +13 -0
  79. package/src/components/Table/index.vue +4 -4
  80. package/src/components/TablePro/filterContent.vue +18 -8
  81. package/src/components/TablePro/index.js +41 -1
  82. package/src/components/TablePro/index.vue +117 -6
  83. package/src/components/TableProOperateColumn/OperateBtns.vue +11 -53
  84. package/src/components/TableProOperateColumn/OperateBtns_copy.vue +141 -0
  85. package/src/components/TableProOperateColumn/childrenOperateBtn.vue +108 -0
  86. package/src/components/TableProOperateColumn/index.vue +3 -6
  87. package/src/components/TableSetSize/index.vue +1 -1
  88. package/src/components/Tree/index.vue +21 -5
  89. package/src/components/Upload/index.vue +25 -10
  90. package/src/components/Upload/uploadMsg.vue +30 -25
  91. package/src/components/operatingStatus/index.vue +3 -4
  92. package/src/directives/VTitle/index.js +15 -5
  93. package/src/directives/watermark/index.js +140 -56
  94. package/src/i18n.json +146 -18
  95. package/src/index.js +31 -3
  96. package/src/plugins/Sign/CaMap.js +47 -8
  97. package/src/plugins/Sign/Itrus/index.js +1 -1
  98. package/src/plugins/Sign/Itrus/sign_3720.js +2 -1
  99. package/src/plugins/Sign/NetSM3/index.js +20 -11
  100. package/src/plugins/Sign/NetV3/index.js +163 -22
  101. package/src/plugins/Sign/SkfSign/index.js +55 -52
  102. package/src/plugins/Sign/bjca/index.js +229 -9
  103. package/src/plugins/Sign/hnca/index.js +5064 -0
  104. package/src/plugins/Sign/index.js +155 -103
  105. package/src/plugins/Sign/kySign/base64.js +160 -0
  106. package/src/plugins/Sign/kySign/hex.js +92 -0
  107. package/src/plugins/Sign/kySign/index.js +186 -0
  108. package/src/plugins/Sign/kySign/skf.js +937 -0
  109. package/src/plugins/Sign/kySign/test.html +463 -0
  110. package/src/plugins/Sign/sdca/index.js +73 -0
  111. package/src/plugins/Sign/sign.js +72 -52
  112. package/src/plugins/Sign/signV3/InfosecNetSignCNGAgent.min.js +1 -0
  113. package/src/plugins/Sign/signV3/sign.js +187 -0
  114. package/src/plugins/Sign/sign_back.js +172 -0
  115. package/src/utils/accountFormat.js +7 -0
  116. package/src/utils/asyncGetRelaNos.js +79 -46
  117. package/src/utils/axios.js +3 -5
  118. package/src/utils/i18n/index.js +1 -1
  119. package/src/utils/importGlobal.js +23 -12
  120. package/style/fonts/SIMSUN.5e0c362c.ttf +0 -0
  121. package/style/index.css +2 -2
  122. package/theme/blue.css +2 -2
  123. package/theme/cctcRed.css +2 -2
  124. package/theme/fonts/SIMSUN.5e0c362c.ttf +0 -0
  125. package/theme/green.css +2 -2
  126. package/theme/lightBlue.css +2 -2
  127. package/theme/orange.css +2 -2
  128. package/theme/purple.css +2 -2
  129. package/theme/red.css +2 -2
  130. package/theme/yellow.css +2 -2
@@ -1,9 +1,18 @@
1
1
  <template>
2
2
  <div>
3
3
  <keep-alive v-if="dnsKey" :max="32">
4
- <router-view v-if="!$route.meta.noCache" ref="content-cache" :key="$route | keyF" class="content-box" />
4
+ <router-view
5
+ v-if="!$route.meta.noCache"
6
+ ref="content-cache"
7
+ :key="$route | keyF"
8
+ class="content-box"
9
+ />
5
10
  </keep-alive>
6
- <router-view v-if="!dnsKey || $route.meta.noCache" :key="$route | keyF" class="content-box" />
11
+ <router-view
12
+ v-if="!dnsKey || $route.meta.noCache"
13
+ :key="$route | keyF"
14
+ class="content-box"
15
+ />
7
16
  </div>
8
17
  </template>
9
18
 
@@ -16,7 +25,13 @@ export default {
16
25
  filters: {
17
26
  keyF({ path, query = {} }) {
18
27
  path = path.replace(/^\//, routerBase)
19
- return path + '^' + JSON.stringify({ ...query, _fromNo: undefined }) + '^' + window._tab_route_key[path]
28
+ return (
29
+ path +
30
+ '^' +
31
+ JSON.stringify({ ...query, _fromNo: undefined }) +
32
+ '^' +
33
+ window._tab_route_key[path]
34
+ )
20
35
  }
21
36
  },
22
37
  props: {
@@ -27,10 +42,6 @@ export default {
27
42
  isTest: {
28
43
  type: Boolean,
29
44
  default: false
30
- },
31
- isCache: {
32
- type: Boolean,
33
- default: false
34
45
  }
35
46
  },
36
47
  data() {
@@ -38,7 +49,8 @@ export default {
38
49
  dnsKey:
39
50
  this.isCache ||
40
51
  this.isTest ||
41
- (process.env.NODE_ENV === 'production' && process.env.VUE_APP_KEEP_ALIVE === 'true')
52
+ (process.env.NODE_ENV === 'production' &&
53
+ process.env.VUE_APP_KEEP_ALIVE === 'true')
42
54
  }
43
55
  },
44
56
  beforeCreate() {
@@ -70,11 +82,26 @@ export default {
70
82
  },
71
83
  methods: {
72
84
  watchMessage(ev) {
73
- const { updateActiveCache, originName, targetName, activatedMicroRouter } = ev.data
74
- if (updateActiveCache && originName === 'main' && targetName === '*' && this.$router.mode !== 'abstract') {
85
+ const {
86
+ updateActiveCache,
87
+ originName,
88
+ targetName,
89
+ activatedMicroRouter
90
+ } = ev.data
91
+ if (
92
+ updateActiveCache &&
93
+ originName === 'main' &&
94
+ targetName === '*' &&
95
+ this.$router.mode !== 'abstract'
96
+ ) {
75
97
  this.updateActiveCache()
76
- } else if (activatedMicroRouter && activatedMicroRouter === this.$route.path.replace(/^\//, routerBase)) {
77
- window._tab_route_key[activatedMicroRouter] = window._tab_route_key[activatedMicroRouter]
98
+ } else if (
99
+ activatedMicroRouter &&
100
+ activatedMicroRouter === this.$route.path.replace(/^\//, routerBase)
101
+ ) {
102
+ window._tab_route_key[activatedMicroRouter] = window._tab_route_key[
103
+ activatedMicroRouter
104
+ ]
78
105
  ? window._tab_route_key[activatedMicroRouter] + 1
79
106
  : 1
80
107
  this.updateActiveCache()
@@ -86,13 +113,17 @@ export default {
86
113
  removeCacheTimerFn() {
87
114
  this.removeCacheTimer = setInterval(() => {
88
115
  if (this.$refs['content-cache']) {
89
- let cache = this.$refs['content-cache'].$vnode.parent.componentInstance.cache
116
+ let cache =
117
+ this.$refs['content-cache'].$vnode.parent.componentInstance.cache
90
118
  for (let k in cache) {
91
119
  if (cache[k]) {
92
120
  let kM = k.split('^')
93
121
  let _K = kM[0]
94
122
  let _V = kM[2]
95
- if (window._tab_route_key[_K] && window._tab_route_key[_K] !== Number(_V)) {
123
+ if (
124
+ window._tab_route_key[_K] &&
125
+ window._tab_route_key[_K] !== Number(_V)
126
+ ) {
96
127
  cache[k].componentInstance.destroy?.()
97
128
  cache[k] = null
98
129
  }
@@ -1,27 +1,36 @@
1
1
  <template>
2
2
  <div class="layout-wrap">
3
3
  <headerWrap
4
+ v-if="!isMobile"
4
5
  class="header-wrap"
5
6
  :ectad="ectad"
6
7
  :system-change="systemChange"
7
8
  :operation-status="operationStatus"
8
9
  :before-logout="beforeLogout"
9
10
  :after-logout="afterLogout"
10
- :drawerVisible.sync="showDrawerBox"
11
+ :drawer-visible.sync="showDrawerBox"
11
12
  @clickSystem="clickSystem"
12
13
  @custom-event="(par) => $emit('custom-event', par)"
13
14
  >
14
15
  <slot slot="header-ectad" name="header-ectad"></slot>
15
16
  <slot slot="header-dropdown" name="header-dropdown"></slot>
16
17
  </headerWrap>
17
- <div v-if="showDrawerBox" class="wrapper-mask" @click="showDrawerBox = false"></div>
18
+ <div v-if="showDrawerBox && !isMobile" class="wrapper-mask" @click="showDrawerBox = false"></div>
18
19
  <menuDrawer
20
+ v-if="!isMobile"
19
21
  :class="showDrawerBox ? 'show_drawer' : ''"
20
22
  :menus="systemMenu"
21
23
  @clickMenu="(row) => (this.showDrawerBox = row)"
22
- ></menuDrawer>
23
- <asideNav :menus="menusC" :active-nav="activeNavC" :collapse.sync="collapse" @menu-click="menuClick" />
24
+ />
25
+ <asideNav
26
+ v-if="!isMobile"
27
+ :menus="menusC"
28
+ :active-nav="activeNavC"
29
+ :collapse.sync="collapse"
30
+ @menu-click="menuClick"
31
+ />
24
32
  <tabsNav
33
+ v-if="!isMobile"
25
34
  class="tabs-nav-wrap"
26
35
  :tab-list="tabList"
27
36
  :active-nav="activeNav"
@@ -31,7 +40,7 @@
31
40
  @tab-close-others="tabCloseOthers"
32
41
  @tab-refresh="tabRefresh"
33
42
  />
34
- <div ref="content-wrap" class="content-wrap">
43
+ <div ref="content-wrap" class="content-wrap" :class="{ isMobile: isMobile }">
35
44
  <keep-alive v-if="dnsKey" :max="32">
36
45
  <router-view v-if="!$route.meta.noCache" ref="content-cache" :key="$route | keyF" class="content-box" />
37
46
  </keep-alive>
@@ -131,6 +140,9 @@ export default {
131
140
  }
132
141
  },
133
142
  computed: {
143
+ isMobile() {
144
+ return window.innerWidth <= 768
145
+ },
134
146
  activeNavC() {
135
147
  let acTab = this.tabList.find((t) => t.uuid === this.activeNav)
136
148
  let acNav = acTab?.query?.startPath || this.activeNav
@@ -532,3 +544,12 @@ function getShowUuid(uuid, list) {
532
544
  return '/'
533
545
  }
534
546
  </script>
547
+ <style>
548
+ .isMobile {
549
+ left: 0 !important;
550
+ top: 8px !important;
551
+ }
552
+ .isMobile .content-box {
553
+ height: calc(100vh - 16px) !important;
554
+ }
555
+ </style>
@@ -3,7 +3,12 @@
3
3
  <div v-loading="!!loadingN" class="login-form-wrap flex-column p-a">
4
4
  <slot name="header"></slot>
5
5
  <svg v-if="loginTypes.includes('qrcode')" class="cut-qrcode-h">
6
- <image v-if="theType === 'qrcode'" width="52" height="52" xlink:href="./qrt.png" />
6
+ <image
7
+ v-if="theType === 'qrcode'"
8
+ width="52"
9
+ height="52"
10
+ xlink:href="./qrt.png"
11
+ />
7
12
  <image v-else width="52" height="52" xlink:href="./qr.png" />
8
13
  <path d="M0,0L52,0L52,52Z" @click="cutQrcode" />
9
14
  </svg>
@@ -20,7 +25,11 @@
20
25
  <el-input v-model="form.username" :placeholder="'请输入账号' | $lc" />
21
26
  </el-form-item>
22
27
  <el-form-item class="m-b" :label="'密码' | $lc" prop="password">
23
- <el-input v-model="form.password" :placeholder="'请输入密码' | $lc" show-password />
28
+ <el-input
29
+ v-model="form.password"
30
+ :placeholder="'请输入密码' | $lc"
31
+ show-password
32
+ />
24
33
  <!-- 不自动填充密码
25
34
  <input
26
35
  :value="fakePwd"
@@ -43,16 +52,35 @@
43
52
  </el-input>
44
53
  不自动填充密码End -->
45
54
  </el-form-item>
46
- <el-form-item v-if="showImageCode" class="m-b" :label="'图形验证码' | $lc" prop="imageCode">
55
+ <el-form-item
56
+ v-if="showImageCode"
57
+ class="m-b"
58
+ :label="'图形验证码' | $lc"
59
+ prop="imageCode"
60
+ >
47
61
  <br />
48
62
  <div class="flex-box">
49
- <el-input v-model="form.imageCode" class="flex-item m-r-s" :placeholder="'请输入图形验证码' | $lc" />
63
+ <el-input
64
+ v-model="form.imageCode"
65
+ class="flex-item m-r-s"
66
+ :placeholder="'请输入图形验证码' | $lc"
67
+ />
50
68
  <el-button plain class="p-a-0" @click="getImgCode">
51
- <img v-if="imageUrl" :src="imageUrl" style="width: 80px; height: 30px; margin-bottom: -2px" />
69
+ <img
70
+ v-if="imageUrl"
71
+ :src="imageUrl"
72
+ style="width: 80px; height: 30px; margin-bottom: -2px"
73
+ />
52
74
  </el-button>
53
75
  </div>
54
76
  </el-form-item>
55
- <el-button class="m-t" type="primary" native-type="submit" style="width: 100%">{{ '登 录' | $lc }}</el-button>
77
+ <el-button
78
+ class="m-t"
79
+ type="primary"
80
+ native-type="submit"
81
+ style="width: 100%"
82
+ >{{ '登 录' | $lc }}</el-button
83
+ >
56
84
  </el-form>
57
85
  </div>
58
86
  <!-- 二维码扫码登录 -->
@@ -72,17 +100,26 @@
72
100
  <el-form-item class="m-b" :label="'验证码' | $lc" prop="code">
73
101
  <br />
74
102
  <div class="flex-box">
75
- <el-input v-model="form.code" class="flex-item m-r-s" :placeholder="'请输入验证码' | $lc" />
103
+ <el-input
104
+ v-model="form.code"
105
+ class="flex-item m-r-s"
106
+ :placeholder="'请输入验证码' | $lc"
107
+ />
76
108
  <el-button
77
109
  plain
78
- style="4em"
79
110
  :disabled="!form.phone || codeNum !== $lc('验证码')"
80
111
  @click="sendMsg('phone', $lc('手机号'))"
81
112
  >{{ codeNum }}</el-button
82
113
  >
83
114
  </div>
84
115
  </el-form-item>
85
- <el-button class="m-t" type="primary" native-type="submit" style="width: 100%">{{ '登 录' | $lc }}</el-button>
116
+ <el-button
117
+ class="m-t"
118
+ type="primary"
119
+ native-type="submit"
120
+ style="width: 100%"
121
+ >{{ '登 录' | $lc }}</el-button
122
+ >
86
123
  </el-form>
87
124
  </div>
88
125
  <!-- 账户密码验证码登录 -->
@@ -98,33 +135,54 @@
98
135
  <el-input v-model="form.username" :placeholder="'请输入账号' | $lc" />
99
136
  </el-form-item>
100
137
  <el-form-item class="m-b" :label="'密码' | $lc" prop="password">
101
- <el-input v-model="form.password" :placeholder="'请输入密码' | $lc" show-password />
138
+ <el-input
139
+ v-model="form.password"
140
+ :placeholder="'请输入密码' | $lc"
141
+ show-password
142
+ />
102
143
  </el-form-item>
103
144
  <el-form-item class="m-b" :label="'验证码' | $lc" prop="code">
104
145
  <br />
105
146
  <div class="flex-box">
106
- <el-input v-model="form.code" class="flex-item m-r-s" :placeholder="'请输入验证码' | $lc" />
147
+ <el-input
148
+ v-model="form.code"
149
+ class="flex-item m-r-s"
150
+ :placeholder="'请输入验证码' | $lc"
151
+ />
107
152
  <el-button
108
153
  plain
109
- style="4em"
110
154
  :disabled="!form.username || codeNum !== $lc('验证码')"
111
155
  @click="sendMsg('username', $lc('账户'))"
112
156
  >{{ codeNum }}</el-button
113
157
  >
114
158
  </div>
115
159
  </el-form-item>
116
- <el-button class="m-t" type="primary" native-type="submit" style="width: 100%">{{ '登 录' | $lc }}</el-button>
160
+ <el-button
161
+ class="m-t"
162
+ type="primary"
163
+ native-type="submit"
164
+ style="width: 100%"
165
+ >{{ '登 录' | $lc }}</el-button
166
+ >
117
167
  </el-form>
118
168
  </div>
119
169
  <!-- -->
120
170
  <div v-if="theType !== 'qrcode'" class="flex-box m-t-s m-b-s">
121
- <el-dropdown v-if="loginTypes.length > 1" size="mini" placement="bottom-start" @command="changeLoginType">
171
+ <el-dropdown
172
+ v-if="loginTypes.length > 1"
173
+ size="mini"
174
+ placement="bottom-start"
175
+ @command="changeLoginType"
176
+ >
122
177
  <span>{{ '其他登录方式' | $lc }}</span>
123
178
  <el-dropdown-menu slot="dropdown">
124
179
  <template v-for="item in loginTypes">
125
- <el-dropdown-item v-if="item !== theType" :key="item" :command="item">{{
126
- loginTypeMap[item]
127
- }}</el-dropdown-item>
180
+ <el-dropdown-item
181
+ v-if="item !== theType"
182
+ :key="item"
183
+ :command="item"
184
+ >{{ loginTypeMap[item] }}</el-dropdown-item
185
+ >
128
186
  </template>
129
187
  <el-dropdown-item command="account">
130
188
  <slot name="other"></slot>
@@ -132,9 +190,13 @@
132
190
  </el-dropdown-menu>
133
191
  </el-dropdown>
134
192
 
135
- <el-link v-if="showForgetBtn" class="m-l-auto" :underline="false" @click="forgetPw">{{
136
- '忘记密码' | $lc
137
- }}</el-link>
193
+ <el-link
194
+ v-if="showForgetBtn"
195
+ class="m-l-auto"
196
+ :underline="false"
197
+ @click="forgetPw"
198
+ >{{ '忘记密码' | $lc }}</el-link
199
+ >
138
200
  </div>
139
201
  <slot name="footer"></slot>
140
202
  </div>
@@ -154,7 +216,9 @@ function encode(pwd = '', key = 0) {
154
216
  if (pwd === '') return ''
155
217
 
156
218
  let pwdArr = pwd.trim().split('')
157
- let resultArr = pwdArr.map((oPwd) => String.fromCharCode(oPwd.charCodeAt() ^ key))
219
+ let resultArr = pwdArr.map((oPwd) =>
220
+ String.fromCharCode(oPwd.charCodeAt() ^ key)
221
+ )
158
222
  let result = resultArr.join('')
159
223
 
160
224
  return window.btoa(window.unescape(window.encodeURIComponent(result)))
@@ -224,10 +288,18 @@ export default {
224
288
  },
225
289
  pwd: '',
226
290
  rules: {
227
- username: [{ required: true, message: $lc('请输入账号!'), trigger: 'blur' }],
228
- password: [{ required: true, message: $lc('请输入密码!'), trigger: 'blur' }],
229
- code: [{ required: true, message: $lc('请输入验证码!'), trigger: 'blur' }],
230
- imageCode: [{ required: true, message: $lc('请输入图形验证码!'), trigger: 'blur' }],
291
+ username: [
292
+ { required: true, message: $lc('请输入账号!'), trigger: 'blur' }
293
+ ],
294
+ password: [
295
+ { required: true, message: $lc('请输入密码!'), trigger: 'blur' }
296
+ ],
297
+ code: [
298
+ { required: true, message: $lc('请输入验证码!'), trigger: 'blur' }
299
+ ],
300
+ imageCode: [
301
+ { required: true, message: $lc('请输入图形验证码!'), trigger: 'blur' }
302
+ ],
231
303
  phone: [
232
304
  { required: true, message: $lc('请输入手机号!'), trigger: 'blur' },
233
305
  {
@@ -331,7 +403,9 @@ export default {
331
403
  { loading: this.loadingSub }
332
404
  )
333
405
  .then(() => {
334
- this.$message.success(`${typeName}: ${this.form[type]} 验证码发送成功`)
406
+ this.$message.success(
407
+ `${typeName}: ${this.form[type]} 验证码发送成功`
408
+ )
335
409
  })
336
410
  .catch(() => {
337
411
  clearTimeout(this.setTimeNum)
@@ -375,7 +449,11 @@ export default {
375
449
  if (this.getAzCount <= 3) {
376
450
  this.loadingAdd()
377
451
  axios
378
- .get('/bems/prod_1.0/uas/api/authorization/authorizationCode', {}, { loading: this.loadingSub })
452
+ .get(
453
+ '/bems/prod_1.0/uas/api/authorization/authorizationCode',
454
+ {},
455
+ { loading: this.loadingSub }
456
+ )
379
457
  .then(({ data = {} }) => {
380
458
  try {
381
459
  pwd = encode(pwd, data.authorizationValue)
@@ -430,9 +508,13 @@ export default {
430
508
  } else if (cL.data === false /* 签名验签 */) {
431
509
  // 获取线上签名uDn
432
510
  this.loadingAdd()
433
- let uDnPro = axios.get(`/bems/prod_1.0/dssc/sign/getUserDn/${username}/password`, null, {
434
- loading: this.loadingSub
435
- })
511
+ let uDnPro = axios.get(
512
+ `/bems/prod_1.0/dssc/sign/getUserDn/${username}/password`,
513
+ null,
514
+ {
515
+ loading: this.loadingSub
516
+ }
517
+ )
436
518
 
437
519
  uDnPro.catch(this.getImgCode)
438
520
  let uDn = await uDnPro
@@ -442,13 +524,17 @@ export default {
442
524
  let sign = undefined
443
525
  let certDn = undefined
444
526
  if (supplier) {
445
- let CaItem = Object.values(CaMap).find((item) => item.supplier === supplier) || CaMap['null']
527
+ let CaItem =
528
+ Object.values(CaMap).find((item) => item.supplier === supplier) ||
529
+ CaMap['null']
446
530
  window.sessionStorage.setItem('signType', CaItem.type)
447
531
  }
448
532
  if (checkCert) {
449
533
  this.loadingAdd()
450
534
  let { getSign } = await import('../../plugins/Sign')
451
- let signVersion = process.env.VUE_APP_NetSign_VERSION || window.VUE_APP_NetSign_VERSION
535
+ let signVersion =
536
+ process.env.VUE_APP_NetSign_VERSION ||
537
+ window.VUE_APP_NetSign_VERSION
452
538
  let signPro = getSign(username + userDn, userDn, signVersion)
453
539
 
454
540
  uDnPro.catch(this.getImgCode)
@@ -566,7 +652,9 @@ export default {
566
652
  this.loadingAdd()
567
653
  try {
568
654
  let { default: decode } = await importG('jsonwebtoken/decode', () =>
569
- import(/*webpackChunkName: "jsonwebtoken_decode"*/ 'jsonwebtoken/decode')
655
+ import(
656
+ /*webpackChunkName: "jsonwebtoken_decode"*/ 'jsonwebtoken/decode'
657
+ )
570
658
  )
571
659
 
572
660
  let tokenObj = decode(data.accessToken)
@@ -578,7 +666,11 @@ export default {
578
666
  }
579
667
  this.loadingSub()
580
668
 
581
- Promise.all([this.getUserInfo(), this.getMicroAppsInfo(), this.getCltRelaNos()]).then(() => {
669
+ Promise.all([
670
+ this.getUserInfo(),
671
+ this.getMicroAppsInfo(),
672
+ this.getCltRelaNos()
673
+ ]).then(() => {
582
674
  if (this.loginThen) {
583
675
  this.loginThen().then(() => {
584
676
  this.$router.replace('/')
@@ -6,7 +6,7 @@
6
6
  :before-login="beforeLogin"
7
7
  :login-types="loginTypes"
8
8
  :login-then="loginThen"
9
- :syncRelated="syncRelated"
9
+ :sync-related="syncRelated"
10
10
  :async-rela-nos="asyncRelaNos"
11
11
  :show-forget-btn="showForgetBtn"
12
12
  style="display: none"
@@ -26,7 +26,7 @@
26
26
  :before-login="beforeLogin"
27
27
  :login-types="loginTypes"
28
28
  :login-then="loginThen"
29
- :syncRelated="syncRelated"
29
+ :sync-related="syncRelated"
30
30
  :async-rela-nos="asyncRelaNos"
31
31
  :show-image-code="showImageCode"
32
32
  :show-forget-btn="showForgetBtn"
@@ -165,7 +165,18 @@ export default {
165
165
  return this.pageData.MAIN_PAGE_TEXT?.pmValue || this.jsonData.loginCopyright || ''
166
166
  },
167
167
  loginSloganHtml() {
168
- return this.jsonData.loginSloganHtml || ''
168
+ switch (this._lang) {
169
+ case 'zh':
170
+ return this.jsonData.loginSloganHtml || ''
171
+ case 'en':
172
+ return this.jsonData.loginSloganHtmlEn || ''
173
+ case 'th':
174
+ return this.jsonData.loginSloganHtmlTh || ''
175
+ case 'vi':
176
+ return this.jsonData.loginSloganHtmlVi || ''
177
+ default:
178
+ return this.jsonData.loginSloganHtml || ''
179
+ }
169
180
  }
170
181
  },
171
182
  created() {
@@ -7,7 +7,7 @@
7
7
  :login-types="loginTypes"
8
8
  :login-then="loginThen"
9
9
  :async-rela-nos="asyncRelaNos"
10
- :syncRelated="syncRelated"
10
+ :sync-related="syncRelated"
11
11
  :show-forget-btn="showForgetBtn"
12
12
  :extra-form="extraForm"
13
13
  style="display: none"
@@ -82,13 +82,13 @@
82
82
 
83
83
  <loginForm
84
84
  v-if="operateType === 'login'"
85
- class="login-form"
86
85
  ref="simpleLogin"
86
+ class="login-form"
87
87
  :before-login="beforeLogin"
88
88
  :login-types="loginTypes"
89
89
  :login-then="loginThenT"
90
90
  :async-rela-nos="asyncRelaNos"
91
- :syncRelated="syncRelated"
91
+ :sync-related="syncRelated"
92
92
  :extra-form="extraForm"
93
93
  :show-image-code="imgCode"
94
94
  :show-forget-btn="showForgetBtn"
@@ -96,21 +96,21 @@
96
96
  >
97
97
  <div slot="header" class="login-form-header m-b text-c">
98
98
  <el-dropdown
99
- v-if="!jsonData.hideLang && jsonData.lang.length > 1"
99
+ v-if="!langConf.hideLang && langConf.lang && langConf.lang.length > 1"
100
100
  class="m-l-lg login-language-box"
101
101
  @command="setLang"
102
102
  >
103
103
  <span>{{ langMap[langVal] | $lc }}<i class="el-icon-arrow-down el-icon--right"></i></span>
104
104
  <el-dropdown-menu slot="dropdown">
105
- <el-dropdown-item v-if="jsonData.lang.includes('zh-cn')" command="zh-cn">{{
105
+ <el-dropdown-item v-if="langConf.lang.includes('zh-cn')" command="zh-cn">{{
106
106
  '简体中文' | $lc
107
107
  }}</el-dropdown-item>
108
- <el-dropdown-item v-if="jsonData.lang.includes('zh-hk')" command="zh-hk">{{
108
+ <el-dropdown-item v-if="langConf.lang.includes('zh-hk')" command="zh-hk">{{
109
109
  '繁体中文' | $lc
110
110
  }}</el-dropdown-item>
111
- <el-dropdown-item v-if="jsonData.lang.includes('en')" command="en">{{ '英文' | $lc }}</el-dropdown-item>
112
- <el-dropdown-item v-if="jsonData.lang.includes('th')" command="th">{{ '泰文' | $lc }}</el-dropdown-item>
113
- <el-dropdown-item v-if="jsonData.lang.includes('vi')" command="vi">{{ '越南语' | $lc }}</el-dropdown-item>
111
+ <el-dropdown-item v-if="langConf.lang.includes('en')" command="en">{{ '英文' | $lc }}</el-dropdown-item>
112
+ <el-dropdown-item v-if="langConf.lang.includes('th')" command="th">{{ '泰文' | $lc }}</el-dropdown-item>
113
+ <el-dropdown-item v-if="langConf.lang.includes('vi')" command="vi">{{ '越南语' | $lc }}</el-dropdown-item>
114
114
  </el-dropdown-menu>
115
115
  </el-dropdown>
116
116
  <slot name="header">{{ '欢 迎 登 录' | $lc }}</slot>
@@ -240,6 +240,10 @@ export default {
240
240
  hideLang: undefined,
241
241
  lang: []
242
242
  },
243
+ langConf: {
244
+ hideLang: false,
245
+ lang: ['zh-cn', 'zh-hk', 'en']
246
+ },
243
247
  langVal: window.localStorage.getItem('pageLang') || 'zh-cn',
244
248
  operateType: 'login',
245
249
  alV: false,
@@ -355,7 +359,18 @@ export default {
355
359
  return this.jsonData.showSystem ?? true
356
360
  },
357
361
  loginSloganHtml() {
358
- return this.form.LOGIN_SLOGAN || this.jsonData.loginSloganHtml || ''
362
+ switch (this._lang) {
363
+ case 'zh':
364
+ return this.form.LOGIN_SLOGAN || this.jsonData.loginSloganHtml || ''
365
+ case 'en':
366
+ return this.form.LOGIN_SLOGAN || this.jsonData.loginSloganHtmlEn || ''
367
+ case 'th':
368
+ return this.form.LOGIN_SLOGAN || this.jsonData.loginSloganHtmlTh || ''
369
+ case 'vi':
370
+ return this.form.LOGIN_SLOGAN || this.jsonData.loginSloganHtmlVi || ''
371
+ default:
372
+ return this.form.LOGIN_SLOGAN || this.jsonData.loginSloganHtml || ''
373
+ }
359
374
  },
360
375
  systemList() {
361
376
  return this.form.SYSTEM_LIST.filter((d) => d.OPEN)
@@ -456,11 +471,18 @@ export default {
456
471
  this.$refs.simpleLogin.loginAfter(data)
457
472
  },
458
473
  async init() {
459
- const { _layoutData = {}, loginSetting, screenInspect } = await getJsonc('/server-config.jsonc')
474
+ const { _layoutData = {}, langConf = {}, loginSetting, screenInspect } = await getJsonc('/server-config.jsonc')
460
475
  let _loginSetting = loginSetting || _layoutData.loginSetting
461
476
  this.jsonData = _layoutData
462
- if (this.jsonData?.lang?.length) {
463
- window.localStorage.setItem('pageLang', this.jsonData?.lang[0])
477
+ // 兼容旧的配置项 先取_layoutData中的配置没有再取langConf中的配置
478
+ langConf.hideLang = (this.jsonData?.hideLang || langConf?.hideLang) ?? false
479
+ langConf.lang = this.jsonData?.lang || langConf?.lang || ['zh-cn', 'zh-hk', 'en']
480
+ this.langConf = langConf
481
+ if (!langConf.hideLang && langConf?.lang?.length) {
482
+ window.localStorage.setItem('pageLang', langConf.lang[0])
483
+ Cookies.set('language', ['zh-cn', 'zh-hk'].includes(langConf.lang[0]) ? 'zh' : langConf.lang[0], {
484
+ expires: 365
485
+ })
464
486
  }
465
487
  if (_loginSetting !== 'JSON' && this.jsonData.showSystem) {
466
488
  await this.getSysSet()