eoss-ui 0.6.67 → 0.6.68

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 (244) hide show
  1. package/lib/calogin.js +663 -254
  2. package/lib/eoss-ui.common.js +1317 -902
  3. package/lib/flow-list.js +158 -175
  4. package/lib/flow.js +280 -280
  5. package/lib/index.js +1 -1
  6. package/lib/login.js +58 -35
  7. package/lib/main.js +132 -132
  8. package/lib/qr-code.js +13 -13
  9. package/lib/theme-chalk/index.css +1 -1
  10. package/lib/theme-chalk/login.css +1 -1
  11. package/package.json +160 -160
  12. package/packages/.DS_Store +0 -0
  13. package/packages/autocomplete/.DS_Store +0 -0
  14. package/packages/button/index.js +5 -5
  15. package/packages/button/src/main.vue +418 -418
  16. package/packages/button-group/index.js +5 -5
  17. package/packages/button-group/src/main.vue +298 -298
  18. package/packages/calendar/index.js +5 -5
  19. package/packages/calogin/.DS_Store +0 -0
  20. package/packages/calogin/index.js +5 -5
  21. package/packages/calogin/src/main.vue +368 -131
  22. package/packages/calogin/src/plugin.js +915 -748
  23. package/packages/card/index.js +5 -5
  24. package/packages/card/src/main.vue +156 -156
  25. package/packages/cascader/index.js +5 -5
  26. package/packages/cascader/src/main.vue +168 -168
  27. package/packages/checkbox-group/index.js +5 -5
  28. package/packages/checkbox-group/src/main.vue +333 -333
  29. package/packages/clients/index.js +5 -5
  30. package/packages/clients/src/main.vue +151 -151
  31. package/packages/data-table/index.js +5 -5
  32. package/packages/data-table/src/children.vue +39 -39
  33. package/packages/data-table/src/column.vue +989 -989
  34. package/packages/data-table/src/main.vue +1822 -1822
  35. package/packages/data-table/src/sizer.vue +195 -195
  36. package/packages/data-table-form/index.js +5 -5
  37. package/packages/data-table-form/src/checkbox.vue +101 -101
  38. package/packages/data-table-form/src/colgroup.vue +17 -17
  39. package/packages/data-table-form/src/main.vue +181 -181
  40. package/packages/data-table-form/src/radio.vue +65 -65
  41. package/packages/data-table-form/src/table.vue +233 -233
  42. package/packages/data-table-form/src/tbody.vue +336 -336
  43. package/packages/data-table-form/src/thead.vue +68 -68
  44. package/packages/date-picker/.DS_Store +0 -0
  45. package/packages/date-picker/index.js +5 -5
  46. package/packages/date-picker/src/.DS_Store +0 -0
  47. package/packages/date-picker/src/main.vue +236 -236
  48. package/packages/dialog/index.js +5 -5
  49. package/packages/enable-drag/index.js +5 -5
  50. package/packages/enterprise/index.js +5 -5
  51. package/packages/enterprise/src/main.vue +66 -66
  52. package/packages/error-page/index.js +5 -5
  53. package/packages/error-page/src/main.vue +44 -44
  54. package/packages/flow/.DS_Store +0 -0
  55. package/packages/flow/index.js +5 -5
  56. package/packages/flow/src/component/Circulate.vue +351 -351
  57. package/packages/flow/src/component/CommonOpinions.vue +346 -346
  58. package/packages/flow/src/component/CustomPreset.vue +322 -322
  59. package/packages/flow/src/component/FileList.vue +99 -99
  60. package/packages/flow/src/component/Preset.vue +255 -255
  61. package/packages/flow/src/component/SendMsg.vue +241 -241
  62. package/packages/flow/src/component/TimeLimit.vue +190 -190
  63. package/packages/flow/src/component/taskUnionExamine.vue +619 -619
  64. package/packages/flow/src/form.vue +121 -121
  65. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  66. package/packages/flow/src/main.vue +3367 -3367
  67. package/packages/flow/src/processForm.vue +1091 -1091
  68. package/packages/flow/src/processReject.vue +294 -294
  69. package/packages/flow/src/reset.vue +905 -905
  70. package/packages/flow/src/startTaskRead.vue +659 -659
  71. package/packages/flow/src/supervise.vue +149 -149
  72. package/packages/flow/src/table.vue +58 -58
  73. package/packages/flow-group/index.js +5 -5
  74. package/packages/flow-group/src/main.vue +688 -688
  75. package/packages/flow-list/.DS_Store +0 -0
  76. package/packages/flow-list/index.js +5 -5
  77. package/packages/flow-list/src/main.vue +1738 -1757
  78. package/packages/form/index.js +5 -5
  79. package/packages/form/src/main.vue +3581 -3581
  80. package/packages/form/src/table.vue +1426 -1426
  81. package/packages/handle-user/index.js +5 -5
  82. package/packages/handle-user/src/main.vue +138 -138
  83. package/packages/handler/index.js +5 -5
  84. package/packages/handler/src/main.vue +493 -493
  85. package/packages/icon/index.js +5 -5
  86. package/packages/icon/src/main.vue +101 -101
  87. package/packages/icons/index.js +5 -5
  88. package/packages/icons/src/main.vue +81 -81
  89. package/packages/input/index.js +5 -5
  90. package/packages/input/src/main.vue +356 -356
  91. package/packages/input-number/index.js +5 -5
  92. package/packages/input-number/src/main.vue +106 -106
  93. package/packages/label/index.js +5 -5
  94. package/packages/label/src/main.vue +457 -457
  95. package/packages/layout/index.js +5 -5
  96. package/packages/layout/src/item.vue +152 -152
  97. package/packages/layout/src/main.vue +31 -31
  98. package/packages/login/.DS_Store +0 -0
  99. package/packages/login/index.js +5 -5
  100. package/packages/login/src/main.vue +2009 -1988
  101. package/packages/login/src/resetPassword.vue +562 -562
  102. package/packages/main/.DS_Store +0 -0
  103. package/packages/main/index.js +5 -5
  104. package/packages/main/src/.DS_Store +0 -0
  105. package/packages/main/src/default/message.vue +249 -249
  106. package/packages/main/src/default/notice.vue +157 -157
  107. package/packages/main/src/default/userinfo.vue +503 -503
  108. package/packages/main/src/public/online.vue +89 -89
  109. package/packages/main/src/public/search.vue +462 -462
  110. package/packages/main/src/public/settings.vue +221 -221
  111. package/packages/main/src/simplicity/apps.vue +388 -388
  112. package/packages/main/src/simplicity/avatar.vue +83 -83
  113. package/packages/main/src/simplicity/handler.vue +259 -259
  114. package/packages/main/src/simplicity/index.vue +2089 -2089
  115. package/packages/main/src/simplicity/lists.vue +84 -84
  116. package/packages/main/src/simplicity/menu-list.vue +135 -135
  117. package/packages/main/src/simplicity/message.vue +259 -259
  118. package/packages/main/src/simplicity/notice.vue +190 -190
  119. package/packages/main/src/simplicity/router-page.vue +45 -45
  120. package/packages/main/src/simplicity/sub-menu.vue +264 -264
  121. package/packages/main/src/simplicity/user.vue +257 -257
  122. package/packages/main/src/simplicity/userinfo.vue +312 -312
  123. package/packages/menu/.DS_Store +0 -0
  124. package/packages/menu/index.js +5 -5
  125. package/packages/menu/src/main.vue +584 -584
  126. package/packages/nav/index.js +5 -5
  127. package/packages/nav/src/main.vue +351 -351
  128. package/packages/notify/index.js +5 -5
  129. package/packages/notify/src/main.vue +538 -538
  130. package/packages/page/index.js +5 -5
  131. package/packages/page/src/main.vue +167 -167
  132. package/packages/pagination/index.js +5 -5
  133. package/packages/pagination/src/main.vue +96 -96
  134. package/packages/player/index.js +5 -5
  135. package/packages/player/src/main.vue +194 -194
  136. package/packages/qr-code/index.js +5 -5
  137. package/packages/qr-code/src/main.vue +170 -170
  138. package/packages/radio-group/index.js +6 -6
  139. package/packages/radio-group/src/main.vue +319 -319
  140. package/packages/retrial-auth/index.js +5 -5
  141. package/packages/retrial-auth/src/main.vue +280 -280
  142. package/packages/scrollbar/.DS_Store +0 -0
  143. package/packages/select/.DS_Store +0 -0
  144. package/packages/select/index.js +5 -5
  145. package/packages/select/src/main.vue +778 -778
  146. package/packages/select-ganged/index.js +5 -5
  147. package/packages/select-ganged/src/main.vue +724 -724
  148. package/packages/selector/index.js +5 -5
  149. package/packages/selector/src/main.vue +687 -687
  150. package/packages/selector-panel/index.js +5 -5
  151. package/packages/selector-panel/src/main.vue +1027 -1027
  152. package/packages/selector-panel/src/selection.vue +177 -177
  153. package/packages/selector-panel/src/tree.vue +129 -129
  154. package/packages/sizer/index.js +5 -5
  155. package/packages/sizer/src/main.vue +254 -254
  156. package/packages/steps/index.js +5 -5
  157. package/packages/steps/src/main.vue +181 -181
  158. package/packages/switch/index.js +5 -5
  159. package/packages/switch/src/main.vue +154 -154
  160. package/packages/table-form/index.js +5 -5
  161. package/packages/tabs/index.js +5 -5
  162. package/packages/tabs/src/main.vue +788 -788
  163. package/packages/tabs-panel/index.js +5 -5
  164. package/packages/tabs-panel/src/main.vue +29 -29
  165. package/packages/theme-chalk/lib/index.css +1 -1
  166. package/packages/theme-chalk/lib/login.css +1 -1
  167. package/packages/theme-chalk/src/.DS_Store +0 -0
  168. package/packages/theme-chalk/src/base.scss +261 -261
  169. package/packages/theme-chalk/src/button-group.scss +176 -176
  170. package/packages/theme-chalk/src/button.scss +24 -24
  171. package/packages/theme-chalk/src/calendar.scss +113 -113
  172. package/packages/theme-chalk/src/card.scss +99 -99
  173. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  174. package/packages/theme-chalk/src/clients.scss +87 -87
  175. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  176. package/packages/theme-chalk/src/data-table.scss +293 -293
  177. package/packages/theme-chalk/src/date-picker.scss +7 -7
  178. package/packages/theme-chalk/src/dialog.scss +77 -77
  179. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  180. package/packages/theme-chalk/src/enterprise.scss +5 -5
  181. package/packages/theme-chalk/src/error-page.scss +18 -18
  182. package/packages/theme-chalk/src/flow-group.scss +110 -110
  183. package/packages/theme-chalk/src/flow-list.scss +39 -39
  184. package/packages/theme-chalk/src/flow.scss +343 -343
  185. package/packages/theme-chalk/src/form.scss +496 -496
  186. package/packages/theme-chalk/src/handle-user.scss +40 -40
  187. package/packages/theme-chalk/src/handler.scss +143 -143
  188. package/packages/theme-chalk/src/icon.scss +1792 -1792
  189. package/packages/theme-chalk/src/icons.scss +99 -99
  190. package/packages/theme-chalk/src/input.scss +9 -9
  191. package/packages/theme-chalk/src/label.scss +24 -24
  192. package/packages/theme-chalk/src/layout.scss +46 -46
  193. package/packages/theme-chalk/src/login.scss +981 -981
  194. package/packages/theme-chalk/src/main.scss +663 -663
  195. package/packages/theme-chalk/src/menu.scss +222 -222
  196. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  197. package/packages/theme-chalk/src/nav.scss +111 -111
  198. package/packages/theme-chalk/src/page.scss +3 -3
  199. package/packages/theme-chalk/src/pagination.scss +29 -29
  200. package/packages/theme-chalk/src/player.scss +9 -9
  201. package/packages/theme-chalk/src/qr-code.scss +17 -17
  202. package/packages/theme-chalk/src/radio-group.scss +9 -9
  203. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  204. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  205. package/packages/theme-chalk/src/select.scss +8 -8
  206. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  207. package/packages/theme-chalk/src/selector.scss +91 -91
  208. package/packages/theme-chalk/src/simplicity.scss +1355 -1355
  209. package/packages/theme-chalk/src/sizer.scss +36 -36
  210. package/packages/theme-chalk/src/steps.scss +88 -88
  211. package/packages/theme-chalk/src/switch.scss +3 -3
  212. package/packages/theme-chalk/src/table-form.scss +1 -1
  213. package/packages/theme-chalk/src/tabs.scss +87 -87
  214. package/packages/theme-chalk/src/tips.scss +7 -7
  215. package/packages/theme-chalk/src/toolbar.scss +179 -179
  216. package/packages/theme-chalk/src/tree-group.scss +72 -72
  217. package/packages/theme-chalk/src/tree.scss +165 -165
  218. package/packages/theme-chalk/src/upload.scss +168 -168
  219. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  220. package/packages/tips/index.js +5 -5
  221. package/packages/tips/src/main.vue +141 -141
  222. package/packages/toolbar/index.js +5 -5
  223. package/packages/toolbar/src/main.vue +430 -430
  224. package/packages/tree/index.js +5 -5
  225. package/packages/tree-group/index.js +5 -5
  226. package/packages/upload/.DS_Store +0 -0
  227. package/packages/upload/index.js +5 -5
  228. package/packages/upload/src/main.vue +1347 -1347
  229. package/packages/upload/src/picture.js +15 -15
  230. package/packages/wujie/index.js +5 -5
  231. package/packages/wujie/src/main.vue +145 -145
  232. package/packages/wxlogin/index.js +5 -5
  233. package/packages/wxlogin/src/main.vue +128 -128
  234. package/src/.DS_Store +0 -0
  235. package/src/config/api.js +291 -291
  236. package/src/config/image.js +2 -2
  237. package/src/index.js +163 -163
  238. package/src/utils/.DS_Store +0 -0
  239. package/src/utils/bus.js +3 -3
  240. package/src/utils/date-util.js +312 -312
  241. package/src/utils/http.js +50 -50
  242. package/src/utils/rules.js +18 -18
  243. package/src/utils/store.js +21 -21
  244. package/src/utils/webSocket.js +107 -107
@@ -1,131 +1,368 @@
1
- <template>
2
- <span @click="getCertificate">
3
- <slot></slot>
4
- </span>
5
- </template>
6
-
7
- <script>
8
- import util from 'eoss-ui/src/utils/util';
9
- import caPlugin from './plugin.js';
10
-
11
- export default {
12
- name: 'EsCaLogin',
13
- props: {
14
- identifyingId: {
15
- type: String,
16
- default() {
17
- return util.uuid(12);
18
- }
19
- },
20
- dllnames: {
21
- type: Array,
22
- default: () => [
23
- 'L3Vzci9saWI2NC9saWJTS0ZBUEkuc28=',
24
- 'bGliU0tGQVBJLWFybTY0LnNv',
25
- 'L3Vzci9saWIvYWFyY2g2NC1saW51eC1nbnUvbGliU0tGQVBJLWFybTY0LnNv',
26
- 'L3Vzci9saWIvbGliU0tGQVBJLnNv',
27
- 'U0tGQVBJMzAwOTIuZGxs',
28
- 'bGliU0tGQVBJLnNv',
29
- 'L29wdC9oYWl0YWkvbGliL2xpYlNLRkFQSS5zbw==',
30
- 'U0tGQVBJNDAwOTcuZGxs'
31
- ]
32
- },
33
- dllname: {
34
- type: Array,
35
- default: () => []
36
- },
37
- success: Function
38
- },
39
- data() {
40
- return {
41
- signedData: ''
42
- };
43
- },
44
- computed: {
45
- param() {
46
- // 生成不重复的 DLL 名称列表
47
- const dllnames = [...new Set(this.dllnames.concat(this.dllname))];
48
-
49
- return `<?xml version="1.0" encoding="utf-8"?>
50
- <authinfo>
51
- <liblist>
52
- ${dllnames
53
- .map(
54
- (dllname) =>
55
- `<lib type="SKF" version="1.0" dllname="${dllname}"><algid val="SHA1" sm2_hashalg="SM3" /></lib>`
56
- )
57
- .join('')}
58
- </liblist>
59
- </authinfo>`;
60
- }
61
- },
62
- created() {
63
- this.init();
64
- },
65
- mounted() {},
66
- methods: {
67
- init() {
68
- if (!window.PNXClient) {
69
- const parser = new DOMParser();
70
- const doc = parser.parseFromString(
71
- "<object classid='clsid:9DD991F7-6FB0-4004-95A4-0A55006A8C42' width='0' height='0' id='PNXClient' style='position: absolute;'></object>",
72
- 'text/html'
73
- );
74
- const pnxClientElement = doc.querySelector('object');
75
- if (pnxClientElement) {
76
- document.body.appendChild(pnxClientElement);
77
- }
78
- }
79
- },
80
- getCertificate() {
81
- // 检查 PNXClient 是否存在
82
- if (!window.PNXClient) {
83
- this.$message.error('控件加载失败,请刷新页面重试!');
84
- return;
85
- }
86
- try {
87
- caPlugin.getVersion();
88
- } catch (e) {
89
- this.$message.error('未安装控件,请进行安装控件!');
90
- return;
91
- }
92
- try {
93
- // 清除之前的过滤器
94
- caPlugin.clearFilter();
95
- // 初始化vctk控件
96
- caPlugin.initialize('', this.param);
97
- // 控制证书为一个时,不弹出证书选择框
98
- caPlugin.setChooseSingleCert(1);
99
-
100
- // 生成签名信息
101
- this.signedData = caPlugin.p7SignString(this.identifyingId, true, true);
102
-
103
- //获取错误码
104
- const errorCode = Number(caPlugin.getLastError());
105
- if (errorCode !== 0) {
106
- if (errorCode === 3758096386 || errorCode === 2148532334) {
107
- this.$message.error('用户取消操作!');
108
- return;
109
- } else if (errorCode === -536870815 || errorCode === 3758096481) {
110
- this.$message.error(
111
- '没有找到有效的证书,如果使用的是KEY,请确认已经插入key!'
112
- );
113
- return;
114
- } else {
115
- this.$message.error(caPlugin.getLastErrorMessage());
116
- return;
117
- }
118
- }
119
- console.log('签名数据:', this.signedData);
120
- this.success && this.success(this.signedData);
121
- return this.signedData;
122
- } catch (error) {
123
- // 捕获其他可能的异常
124
- this.$message.error(`操作失败: ${error.message}`);
125
- }
126
- }
127
- }
128
- };
129
- </script>
130
-
131
- <style scoped></style>
1
+ <template>
2
+ <span>
3
+ <span @click="getCertificate">
4
+ <slot></slot>
5
+ </span>
6
+ </span>
7
+ </template>
8
+
9
+ <script>
10
+ import util from 'eoss-ui/src/utils/util';
11
+ import caPlugin from './plugin.js';
12
+
13
+ export default {
14
+ name: 'EsCaLogin',
15
+ props: {
16
+ caModel: {
17
+ type: String,
18
+ required: true
19
+ }, // CA登录方式,JIDA-吉大正元,SHU_GUANG-曙光,SICHUAN-四川
20
+ identifyingId: {
21
+ type: String,
22
+ default() {
23
+ return util.uuid(12);
24
+ }
25
+ },
26
+ dllnames: {
27
+ type: Array,
28
+ default: () => [
29
+ 'L3Vzci9saWI2NC9saWJTS0ZBUEkuc28=',
30
+ 'bGliU0tGQVBJLWFybTY0LnNv',
31
+ 'L3Vzci9saWIvYWFyY2g2NC1saW51eC1nbnUvbGliU0tGQVBJLWFybTY0LnNv',
32
+ 'L3Vzci9saWIvbGliU0tGQVBJLnNv',
33
+ 'U0tGQVBJMzAwOTIuZGxs',
34
+ 'bGliU0tGQVBJLnNv',
35
+ 'L29wdC9oYWl0YWkvbGliL2xpYlNLRkFQSS5zbw==',
36
+ 'U0tGQVBJNDAwOTcuZGxs'
37
+ ]
38
+ },
39
+ dllname: {
40
+ type: Array,
41
+ default: () => []
42
+ },
43
+ success: Function
44
+ },
45
+ data() {
46
+ return {
47
+ userList: [],
48
+ signedData: '', //证书原文
49
+ b64originData: '', //签名原文
50
+ b64SignData: '', //签名结果
51
+ idCard: '',
52
+ certId: ''
53
+ };
54
+ },
55
+ computed: {
56
+ param() {
57
+ // 生成不重复的 DLL 名称列表
58
+ const dllnames = [...new Set(this.dllnames.concat(this.dllname))];
59
+
60
+ return `<?xml version="1.0" encoding="utf-8"?>
61
+ <authinfo>
62
+ <liblist>
63
+ ${dllnames
64
+ .map(
65
+ (dllname) =>
66
+ `<lib type="SKF" version="1.0" dllname="${dllname}"><algid val="SHA1" sm2_hashalg="SM3" /></lib>`
67
+ )
68
+ .join('')}
69
+ </liblist>
70
+ </authinfo>`;
71
+ }
72
+ },
73
+ created() {
74
+ this.init();
75
+ },
76
+ mounted() {},
77
+ methods: {
78
+ init() {
79
+ if (!window.PNXClient) {
80
+ // 创建 object 元素
81
+ const pnxClientElement = document.createElement('object');
82
+ pnxClientElement.classid = 'clsid:9DD991F7-6FB0-4004-95A4-0A55006A8C42';
83
+ pnxClientElement.width = '0';
84
+ pnxClientElement.height = '0';
85
+ pnxClientElement.id = 'PNXClient';
86
+ pnxClientElement.style.position = 'absolute';
87
+ document.body.appendChild(pnxClientElement);
88
+ }
89
+ },
90
+ getCertificate() {
91
+ this.$emit('click');
92
+ // 检查 PNXClient 是否存在
93
+ if (!window.PNXClient) {
94
+ this.$message.error('控件加载失败,请刷新页面重试!');
95
+ this.$emit('error');
96
+ return;
97
+ }
98
+ switch (this.caModel) {
99
+ //吉大正元:
100
+ case 'JIDA':
101
+ try {
102
+ caPlugin.getVersion();
103
+ } catch (e) {
104
+ this.$message.error('未安装控件,请进行安装控件!');
105
+ this.$emit('error');
106
+ return;
107
+ }
108
+ try {
109
+ // 清除之前的过滤器
110
+ caPlugin.clearFilter();
111
+ // 初始化vctk控件
112
+ caPlugin.initialize('', this.param);
113
+ // 控制证书为一个时,不弹出证书选择框
114
+ caPlugin.setChooseSingleCert(1);
115
+
116
+ // 生成签名信息
117
+ this.signedData = caPlugin.p7SignString(
118
+ this.identifyingId,
119
+ true,
120
+ true
121
+ );
122
+
123
+ //获取错误码
124
+ const errorCode = Number(caPlugin.getLastError());
125
+ if (errorCode !== 0) {
126
+ if (errorCode === 3758096386 || errorCode === 2148532334) {
127
+ this.$message.error('用户取消操作!');
128
+ this.$emit('error');
129
+ return;
130
+ } else if (errorCode === -536870815 || errorCode === 3758096481) {
131
+ this.$message.error(
132
+ '没有找到有效的证书,如果使用的是KEY,请确认已经插入key!'
133
+ );
134
+ this.$emit('error');
135
+ return;
136
+ } else {
137
+ this.$message.error(caPlugin.getLastErrorMessage());
138
+ this.$emit('error');
139
+ return;
140
+ }
141
+ }
142
+ this.success && this.success(this.signedData);
143
+ return this.signedData;
144
+ } catch (error) {
145
+ // 捕获其他可能的异常
146
+ this.$message.error(`操作失败: ${error.message}`);
147
+ this.$emit('error');
148
+ }
149
+ break;
150
+ //曙光:
151
+ case 'SHU_GUANG':
152
+ caPlugin
153
+ .getMessage({ action: 'SOF_GetUserList' })
154
+ .then((res) => {
155
+ const { retCode, retMsg, retValue } = res;
156
+ if (!retValue || retCode !== 0) {
157
+ this.$message.error(
158
+ retCode !== 0 ? retMsg : '未找到证书,请插入证书UKEY!'
159
+ );
160
+ this.$emit('error');
161
+ return;
162
+ }
163
+ const userList = retValue.split('&&&');
164
+ if (userList.length === 1) {
165
+ //如果只有一个证书,直接获取证书信息
166
+ this.certId = userList[0].split('||')[1];
167
+ this.getCertInfo(this.certId);
168
+ } else {
169
+ // 如果有多个证书,弹出选择框
170
+ this.userList = userList.map((item) => {
171
+ const [name, certId] = item.split('||');
172
+ return { label: name, value: certId };
173
+ });
174
+ this.$prompt('', '证书选择', {
175
+ confirmButtonText: '确定',
176
+ cancelButtonText: '取消',
177
+ inputPattern: /^.+$/,
178
+ inputErrorMessage: '请选择证书!',
179
+ selectData: this.userList
180
+ })
181
+ .then((res) => {
182
+ this.certId = res.value;
183
+ this.getCertInfo(this.certId);
184
+ })
185
+ .catch(() => {
186
+ this.$emit('error');
187
+ });
188
+ }
189
+ })
190
+ .catch((err) => {
191
+ this.$message.error('请检查是否安装并启用证书助手控件!');
192
+ this.$emit('error');
193
+ });
194
+ break;
195
+ //四川:
196
+ case 'SICHUAN':
197
+ this.$message.warning('四川CA登录方式对接中!');
198
+ this.$emit('error');
199
+ break;
200
+ }
201
+ },
202
+ getCertInfo(name) {
203
+ caPlugin
204
+ .getMessage({ action: 'SOF_ExportUserCert', params: [name] })
205
+ .then((res) => {
206
+ const { retCode, retMsg, retValue } = res;
207
+ if (retCode !== 0) {
208
+ this.$message.error(retMsg);
209
+ this.$emit('error');
210
+ return;
211
+ }
212
+ //设置证书原文
213
+ this.signedData = retValue
214
+ .replace('-----BEGIN CERTIFICATE-----', '')
215
+ .replace('-----END CERTIFICATE-----', '');
216
+ caPlugin
217
+ .getMessage({
218
+ action: 'SOF_GetCertInfo',
219
+ params: [retValue, 'SGD_CERT_SUBJECT_SN']
220
+ })
221
+ .then((res) => {
222
+ const { retCode, retMsg, retValue } = res;
223
+ if (retCode !== 0) {
224
+ this.$message.error(retMsg);
225
+ this.$emit('error');
226
+ return;
227
+ }
228
+ this.idCard = caPlugin.base64Decode(retValue);
229
+ caPlugin
230
+ .getMessage({
231
+ action: 'SOF_GenRandom',
232
+ params: [16]
233
+ })
234
+ .then((res) => {
235
+ const { retCode, retMsg, retValue } = res;
236
+ if (retCode !== 0) {
237
+ this.$message.error(retMsg);
238
+ this.$emit('error');
239
+ return;
240
+ }
241
+ this.b64originData = retValue + this.identifyingId;
242
+ caPlugin
243
+ .getMessage({
244
+ action: 'SOF_SignData',
245
+ params: [
246
+ this.certId,
247
+ caPlugin.base64Encode(this.b64originData)
248
+ ]
249
+ })
250
+ .then((res) => {
251
+ const { retCode, retMsg, retValue } = res;
252
+ if (retCode !== 0) {
253
+ if (retCode === 184550659) {
254
+ this.cerLogin();
255
+ } else {
256
+ this.$message.error(retMsg);
257
+ this.$emit('error');
258
+ }
259
+ return;
260
+ }
261
+ this.b64SignData = retValue;
262
+ this.success &&
263
+ this.success({
264
+ identifyingId: this.identifyingId,
265
+ signedData: this.signedData, //证书原文
266
+ b64originData: this.b64originData, //签名原文
267
+ b64SignData: this.b64SignData, //签名结果
268
+ idCard: this.idCard,
269
+ certId: this.certId
270
+ });
271
+ })
272
+ .catch((err) => {
273
+ this.$emit('error');
274
+ });
275
+ })
276
+ .catch((err) => {
277
+ this.$emit('error');
278
+ });
279
+ })
280
+ .catch((err) => {
281
+ this.$emit('error');
282
+ });
283
+ })
284
+ .catch((err) => {
285
+ this.$emit('error');
286
+ });
287
+ },
288
+ cerLogin(title = '提示') {
289
+ this.$prompt('输入密码', title, {
290
+ confirmButtonText: '确定',
291
+ cancelButtonText: '取消',
292
+ inputPattern: /^[[\x21-\x7E]{6,16}$/,
293
+ inputErrorMessage: '请输入密码'
294
+ })
295
+ .then(({ value }) => {
296
+ caPlugin
297
+ .getMessage({
298
+ action: 'SOF_Login',
299
+ params: [this.certId, value]
300
+ })
301
+ .then((res) => {
302
+ const { retCode, retMsg, retValue } = res;
303
+ if (retCode !== 0 || retValue === false) {
304
+ if (retValue === false) {
305
+ caPlugin
306
+ .getMessage({
307
+ action: 'SOF_GetPinRetryCount',
308
+ params: [this.certId]
309
+ })
310
+ .then((res) => {
311
+ const { retValue } = res;
312
+ this.cerLogin(
313
+ `登录失败!剩余口令重试次数:${retValue}次`
314
+ );
315
+ });
316
+ return;
317
+ }
318
+ this.$message.error(retMsg);
319
+ this.$emit('error');
320
+ return;
321
+ }
322
+ caPlugin
323
+ .getMessage({
324
+ action: 'SOF_SignData',
325
+ params: [
326
+ this.certId,
327
+ caPlugin.base64Encode(this.b64originData)
328
+ ]
329
+ })
330
+ .then((res) => {
331
+ const { retCode, retMsg, retValue } = res;
332
+ if (retCode !== 0) {
333
+ if (retCode === 184550659) {
334
+ this.cerLogin();
335
+ } else {
336
+ this.$message.error(retMsg);
337
+ this.$emit('error');
338
+ }
339
+ return;
340
+ }
341
+ this.b64SignData = retValue;
342
+ this.success &&
343
+ this.success({
344
+ identifyingId: this.identifyingId,
345
+ signedData: this.signedData, //证书原文
346
+ b64originData: this.b64originData, //签名原文
347
+ b64SignData: this.b64SignData, //签名结果
348
+ idCard: this.idCard,
349
+ certId: this.certId
350
+ });
351
+ })
352
+ .catch((err) => {
353
+ this.$emit('error');
354
+ });
355
+ })
356
+ .catch(() => {
357
+ this.$emit('error');
358
+ });
359
+ })
360
+ .catch(() => {
361
+ this.$emit('error');
362
+ });
363
+ }
364
+ }
365
+ };
366
+ </script>
367
+
368
+ <style scoped></style>