n20-common-lib 1.2.24 → 1.2.25

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.
@@ -1,374 +1,374 @@
1
- <template>
2
- <div class="login-form-wrap p-a">
3
- <div>找回密码</div>
4
- <div v-if="type === 'phone'" key="phone">
5
- <el-form
6
- ref="update-form"
7
- :model="updateForm"
8
- :rules="updateRules"
9
- :hide-required-asterisk="true"
10
- >
11
- <el-form-item class="m-b" label="手机号" prop="phone">
12
- <el-input v-model="updateForm.phone" placeholder="请输入手机号" />
13
- </el-form-item>
14
- <el-form-item class="m-b" label="验证码" prop="code">
15
- <br />
16
- <div class="flex-box">
17
- <el-input
18
- v-model="updateForm.code"
19
- class="flex-item m-r-s"
20
- placeholder="请输入验证码"
21
- />
22
- <el-button
23
- plain
24
- style="4em"
25
- :disabled="!updateForm.phone || codeNum !== '验证码'"
26
- @click="sendMsg('phone', '手机号')"
27
- >{{ codeNum }}</el-button
28
- >
29
- </div>
30
- </el-form-item>
31
- <el-button
32
- class="m-t"
33
- type="primary"
34
- style="width: 100%"
35
- @click="getNext"
36
- >下一步</el-button
37
- >
38
- </el-form>
39
- <div class="flex-box flex-lr m-t-m m-b-s">
40
- <el-link :underline="false" @click="getBanck">返回</el-link>
41
- <el-link :underline="false" @click="changeUk('uk')">其他方式</el-link>
42
- </div>
43
- </div>
44
- <div v-if="type === 'uk'" key="uk">
45
- <el-form>
46
- <el-form-item class="m-b" label="账号">
47
- <el-input v-model="username" placeholder="请输入账号" />
48
- </el-form-item>
49
- <el-form-item class="m-b" label="uk验证" prop="code">
50
- <br />
51
- <div v-if="checkCert" class="filed-tips">该账号未开启UK校验!</div>
52
- <div v-if="ukCode !== 1">
53
- <div :class="ukCode ? 'success-tips' : 'filed-tips'">
54
- {{ ukCode ? '验证成功!' : '验证失败!' }}
55
- </div>
56
- <div v-show="!ukCode" class="filed-tips">
57
- 自助找回密码失败,请联系管理员
58
- </div>
59
- </div>
60
- </el-form-item>
61
- <el-button
62
- class="m-t"
63
- type="primary"
64
- :disabled="ukCode !== true"
65
- style="width: 100%"
66
- @click="getUkNext"
67
- >下一步</el-button
68
- >
69
- </el-form>
70
- <div class="flex-box flex-lr m-t-m m-b-s">
71
- <el-link :underline="false" @click="getBanck">返回</el-link>
72
- <el-link :underline="false" @click="changeUk('phone')"
73
- >其他方式</el-link
74
- >
75
- </div>
76
- </div>
77
- <div v-if="type === 'newPwd'" key="newPwd">
78
- <el-form
79
- ref="newPwdRef"
80
- :model="newPwdForm"
81
- :rules="newPwdRules"
82
- :hide-required-asterisk="true"
83
- >
84
- <el-form-item
85
- class="m-b"
86
- :label="confirmPwdData.resetType == 'mobile' ? '手机号' : '账号'"
87
- >
88
- <el-input v-model="isPhone" disabled />
89
- </el-form-item>
90
- <el-form-item class="m-b" label="新密码" prop="newPassword">
91
- <el-input
92
- v-model="newPwdForm.newPassword"
93
- placeholder="请输入新密码"
94
- show-password
95
- />
96
- </el-form-item>
97
- <el-form-item class="m-b" label="确认密码" prop="respwd">
98
- <el-input
99
- v-model="newPwdForm.respwd"
100
- show-password
101
- placeholder="请输入确认密码"
102
- />
103
- </el-form-item>
104
- <el-button
105
- class="m-t"
106
- type="primary"
107
- style="width: 100%"
108
- @click="confirm"
109
- >确认</el-button
110
- >
111
- <div class="m-t-s">
112
- <el-link :underline="false" @click="getBanck">返回</el-link>
113
- </div>
114
- </el-form>
115
- </div>
116
- </div>
117
- </template>
118
-
119
- <script>
120
- import axios from '../../utils/axios'
121
- import { getSign } from '../../plugins/Sign/sign'
122
- export default {
123
- data() {
124
- const lengthToFirstPassword = (rule, value, callback) => {
125
- if (value) {
126
- if (
127
- this.dataForm.maxLength < value.length ||
128
- this.dataForm.minLength > value.length
129
- ) {
130
- callback(
131
- new Error(
132
- `密码长度为${this.dataForm.minLength}-${this.dataForm.maxLength}!`
133
- )
134
- )
135
- } else if (
136
- this.dataForm.passwordStrength == 2 &&
137
- !/^(((?=.*[0-9])(?=.*[a-zA-Z])|(?=.*[0-9])(?=.*[^\s0-9a-zA-Z])|(?=.*[a-zA-Z])(?=.*[^\s0-9a-zA-Z]))[^\s]+)$/.test(
138
- value
139
- )
140
- ) {
141
- callback(new Error(`密码至少包括数字,字母,特殊符号其中两种`))
142
- } else if (
143
- this.dataForm.passwordStrength == 3 &&
144
- !/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{0,}$/.test(
145
- value
146
- )
147
- ) {
148
- callback(new Error(`密码同时包括包括数字,字母,特殊符号三种`))
149
- } else {
150
- callback()
151
- }
152
- } else {
153
- callback()
154
- }
155
- }
156
- const compareToFirstPassword = (rule, value, callback) => {
157
- if (value && value !== this.newPwdForm.newPassword) {
158
- callback('确认密码和新密码不一致!')
159
- return
160
- }
161
- callback()
162
- }
163
- return {
164
- updateForm: {
165
- phone: '',
166
- code: '',
167
- username: ''
168
- },
169
- checkCert: false,
170
- username: '',
171
- newPwdForm: {
172
- newPassword: '',
173
- respwd: ''
174
- },
175
- type: 'phone',
176
- bank: '',
177
- confirmPwdData: {},
178
- confirmPwd: false,
179
- updateRules: {
180
- phone: [
181
- { required: true, message: '请输入手机号!', trigger: 'blur' },
182
- {
183
- pattern: /^1\d{10}$/,
184
- message: '请输入正确手机号!',
185
- trigger: 'blur'
186
- }
187
- ],
188
- code: [{ required: true, message: '请输入验证码!', trigger: 'blur' }]
189
- },
190
- codeNum: '验证码',
191
- isPhone: '',
192
- dataForm: {},
193
- sign: '',
194
- certDn: '',
195
- signData: '',
196
- ukCode: 1,
197
- newPwdRules: {
198
- newPassword: [
199
- { required: true, message: '请输入新密码', trigger: 'blur' },
200
- {
201
- validator: lengthToFirstPassword,
202
- trigger: 'blur'
203
- }
204
- ],
205
- respwd: [
206
- { required: true, message: '请输入确认密码', trigger: 'blur' },
207
- {
208
- validator: compareToFirstPassword,
209
- trigger: 'blur'
210
- }
211
- ]
212
- }
213
- }
214
- },
215
- watch: {
216
- signData(val) {
217
- if (val === undefined) {
218
- this.ukCode = undefined
219
- }
220
- if (val) {
221
- this.ukCode = true
222
- }
223
- },
224
- username(newValue, oldValue) {
225
- this.checkCert = false
226
- if (newValue !== oldValue && newValue) {
227
- // 数据变化了,执行逻辑,这里做好防抖。
228
- this.ms = 1000
229
- clearTimeout(this.timeID)
230
- this.timeID = setTimeout(() => {
231
- axios
232
- .get(`/bems/prod_1.0/dssc/sign/getUserDn/${newValue}`)
233
- .then((res) => {
234
- if (!res.data.checkCert) {
235
- this.checkCert = true
236
- return
237
- }
238
- if (res.data.checkCert && res.data.userDn) {
239
- this.signData = getSign(newValue, res.data.userDn)
240
- this.certDn = res.data.userDn
241
- }
242
- })
243
- }, this.ms)
244
- }
245
- }
246
- },
247
- methods: {
248
- // 发送短信
249
- outTime(num) {
250
- clearTimeout(this.setTimeNum)
251
- if (num > 0) {
252
- num--
253
- this.codeNum = num + 'S'
254
-
255
- this.setTimeNum = setTimeout(() => {
256
- this.outTime(num)
257
- }, 1000)
258
- num--
259
- } else {
260
- clearTimeout(this.setTimeNum)
261
- this.codeNum = '验证码'
262
- }
263
- },
264
- sendMsg(type, typeName) {
265
- this.$refs['update-form'].validateField(type, (valid) => {
266
- if (!valid) {
267
- this.outTime(60)
268
- axios
269
- .get(
270
- `/bems/prod_1.0/uas/api/authorization/captcha/${this.updateForm[type]}/1`,
271
- null,
272
- { loading: false, noMsg: true }
273
- )
274
- .then(() => {
275
- this.$message.success(
276
- `${typeName}: ${this.updateForm[type]} 验证码发送成功`
277
- )
278
- })
279
- .catch(() => {
280
- console.log(123)
281
- clearTimeout(this.setTimeNum)
282
- this.codeNum = '验证码'
283
- this.$message.warning(
284
- `${typeName}: ${this.updateForm[type]} 验证码发送失败`
285
- )
286
- })
287
- }
288
- })
289
- },
290
- // 下一步
291
- getNext() {
292
- this.$refs['update-form'].validate((val) => {
293
- if (val) {
294
- this.confirmPwdData = {
295
- type: 'newPwd',
296
- username: this.updateForm.username,
297
- mobile: this.updateForm.phone,
298
- captcha: this.updateForm.code,
299
- resetType: 'mobile',
300
- phone: this.updateForm.phone,
301
- code: this.updateForm.code
302
- }
303
- this.isPhone =
304
- this.confirmPwdData.phone.substring(0, 3) +
305
- '****' +
306
- this.confirmPwdData.phone.substring(7, 11)
307
- this.type = 'newPwd'
308
- this.getUserRole()
309
- }
310
- })
311
- },
312
- getUkNext() {
313
- this.confirmPwdData = {
314
- type: 'newPwd',
315
- username: this.username,
316
- resetType: 'certificate'
317
- }
318
- this.type = 'newPwd'
319
- this.isPhone = this.confirmPwdData.username
320
- },
321
- async getUserRole() {
322
- let data = {
323
- userNo: this.confirmPwdData.username
324
- }
325
- let res = await axios.post(
326
- `/bems/prod_1.0/user/api/userController/use`,
327
- data
328
- )
329
- this.dataForm = res.data
330
- },
331
- // 确认
332
- confirm() {
333
- this.$refs.newPwdRef.validate((val) => {
334
- let data = this.confirmPwdData
335
- data.newPassword = this.newPwdForm.newPassword
336
- data.sign = this.sign
337
- data.certDn = this.certDn
338
- axios
339
- .post(`/bems/prod_1.0/uas/api/authorization/password/reset`, data)
340
- .then((res) => {
341
- if (res.code == 200) {
342
- this.$message.success(`密码更新成功!`)
343
- this.type = 'phone'
344
- }
345
- })
346
- })
347
- },
348
- changeUk(val) {
349
- this.type = val
350
- },
351
- getBanck() {
352
- this.$emit('changType', true)
353
- }
354
- }
355
- }
356
- </script>
357
-
358
- <style>
359
- .success-tips {
360
- font-size: 14px;
361
- text-align: left;
362
- color: #48d2a0;
363
- line-height: 22px;
364
- }
365
- .filed-tips {
366
- font-size: 14px;
367
- text-align: left;
368
- color: #fb5555;
369
- line-height: 22px;
370
- }
371
- .uk-tips {
372
- font-size: 24px;
373
- }
374
- </style>
1
+ <template>
2
+ <div class="login-form-wrap p-a">
3
+ <div>找回密码</div>
4
+ <div v-if="type === 'phone'" key="phone">
5
+ <el-form
6
+ ref="update-form"
7
+ :model="updateForm"
8
+ :rules="updateRules"
9
+ :hide-required-asterisk="true"
10
+ >
11
+ <el-form-item class="m-b" label="手机号" prop="phone">
12
+ <el-input v-model="updateForm.phone" placeholder="请输入手机号" />
13
+ </el-form-item>
14
+ <el-form-item class="m-b" label="验证码" prop="code">
15
+ <br />
16
+ <div class="flex-box">
17
+ <el-input
18
+ v-model="updateForm.code"
19
+ class="flex-item m-r-s"
20
+ placeholder="请输入验证码"
21
+ />
22
+ <el-button
23
+ plain
24
+ style="4em"
25
+ :disabled="!updateForm.phone || codeNum !== '验证码'"
26
+ @click="sendMsg('phone', '手机号')"
27
+ >{{ codeNum }}</el-button
28
+ >
29
+ </div>
30
+ </el-form-item>
31
+ <el-button
32
+ class="m-t"
33
+ type="primary"
34
+ style="width: 100%"
35
+ @click="getNext"
36
+ >下一步</el-button
37
+ >
38
+ </el-form>
39
+ <div class="flex-box flex-lr m-t-m m-b-s">
40
+ <el-link :underline="false" @click="getBanck">返回</el-link>
41
+ <el-link :underline="false" @click="changeUk('uk')">其他方式</el-link>
42
+ </div>
43
+ </div>
44
+ <div v-if="type === 'uk'" key="uk">
45
+ <el-form>
46
+ <el-form-item class="m-b" label="账号">
47
+ <el-input v-model="username" placeholder="请输入账号" />
48
+ </el-form-item>
49
+ <el-form-item class="m-b" label="uk验证" prop="code">
50
+ <br />
51
+ <div v-if="checkCert" class="filed-tips">该账号未开启UK校验!</div>
52
+ <div v-if="ukCode !== 1">
53
+ <div :class="ukCode ? 'success-tips' : 'filed-tips'">
54
+ {{ ukCode ? '验证成功!' : '验证失败!' }}
55
+ </div>
56
+ <div v-show="!ukCode" class="filed-tips">
57
+ 自助找回密码失败,请联系管理员
58
+ </div>
59
+ </div>
60
+ </el-form-item>
61
+ <el-button
62
+ class="m-t"
63
+ type="primary"
64
+ :disabled="ukCode !== true"
65
+ style="width: 100%"
66
+ @click="getUkNext"
67
+ >下一步</el-button
68
+ >
69
+ </el-form>
70
+ <div class="flex-box flex-lr m-t-m m-b-s">
71
+ <el-link :underline="false" @click="getBanck">返回</el-link>
72
+ <el-link :underline="false" @click="changeUk('phone')"
73
+ >其他方式</el-link
74
+ >
75
+ </div>
76
+ </div>
77
+ <div v-if="type === 'newPwd'" key="newPwd">
78
+ <el-form
79
+ ref="newPwdRef"
80
+ :model="newPwdForm"
81
+ :rules="newPwdRules"
82
+ :hide-required-asterisk="true"
83
+ >
84
+ <el-form-item
85
+ class="m-b"
86
+ :label="confirmPwdData.resetType == 'mobile' ? '手机号' : '账号'"
87
+ >
88
+ <el-input v-model="isPhone" disabled />
89
+ </el-form-item>
90
+ <el-form-item class="m-b" label="新密码" prop="newPassword">
91
+ <el-input
92
+ v-model="newPwdForm.newPassword"
93
+ placeholder="请输入新密码"
94
+ show-password
95
+ />
96
+ </el-form-item>
97
+ <el-form-item class="m-b" label="确认密码" prop="respwd">
98
+ <el-input
99
+ v-model="newPwdForm.respwd"
100
+ show-password
101
+ placeholder="请输入确认密码"
102
+ />
103
+ </el-form-item>
104
+ <el-button
105
+ class="m-t"
106
+ type="primary"
107
+ style="width: 100%"
108
+ @click="confirm"
109
+ >确认</el-button
110
+ >
111
+ <div class="m-t-s">
112
+ <el-link :underline="false" @click="getBanck">返回</el-link>
113
+ </div>
114
+ </el-form>
115
+ </div>
116
+ </div>
117
+ </template>
118
+
119
+ <script>
120
+ import axios from '../../utils/axios'
121
+ import { getSign } from '../../plugins/Sign/sign'
122
+ export default {
123
+ data() {
124
+ const lengthToFirstPassword = (rule, value, callback) => {
125
+ if (value) {
126
+ if (
127
+ this.dataForm.maxLength < value.length ||
128
+ this.dataForm.minLength > value.length
129
+ ) {
130
+ callback(
131
+ new Error(
132
+ `密码长度为${this.dataForm.minLength}-${this.dataForm.maxLength}!`
133
+ )
134
+ )
135
+ } else if (
136
+ this.dataForm.passwordStrength == 2 &&
137
+ !/^(((?=.*[0-9])(?=.*[a-zA-Z])|(?=.*[0-9])(?=.*[^\s0-9a-zA-Z])|(?=.*[a-zA-Z])(?=.*[^\s0-9a-zA-Z]))[^\s]+)$/.test(
138
+ value
139
+ )
140
+ ) {
141
+ callback(new Error(`密码至少包括数字,字母,特殊符号其中两种`))
142
+ } else if (
143
+ this.dataForm.passwordStrength == 3 &&
144
+ !/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{0,}$/.test(
145
+ value
146
+ )
147
+ ) {
148
+ callback(new Error(`密码同时包括包括数字,字母,特殊符号三种`))
149
+ } else {
150
+ callback()
151
+ }
152
+ } else {
153
+ callback()
154
+ }
155
+ }
156
+ const compareToFirstPassword = (rule, value, callback) => {
157
+ if (value && value !== this.newPwdForm.newPassword) {
158
+ callback('确认密码和新密码不一致!')
159
+ return
160
+ }
161
+ callback()
162
+ }
163
+ return {
164
+ updateForm: {
165
+ phone: '',
166
+ code: '',
167
+ username: ''
168
+ },
169
+ checkCert: false,
170
+ username: '',
171
+ newPwdForm: {
172
+ newPassword: '',
173
+ respwd: ''
174
+ },
175
+ type: 'phone',
176
+ bank: '',
177
+ confirmPwdData: {},
178
+ confirmPwd: false,
179
+ updateRules: {
180
+ phone: [
181
+ { required: true, message: '请输入手机号!', trigger: 'blur' },
182
+ {
183
+ pattern: /^1\d{10}$/,
184
+ message: '请输入正确手机号!',
185
+ trigger: 'blur'
186
+ }
187
+ ],
188
+ code: [{ required: true, message: '请输入验证码!', trigger: 'blur' }]
189
+ },
190
+ codeNum: '验证码',
191
+ isPhone: '',
192
+ dataForm: {},
193
+ sign: '',
194
+ certDn: '',
195
+ signData: '',
196
+ ukCode: 1,
197
+ newPwdRules: {
198
+ newPassword: [
199
+ { required: true, message: '请输入新密码', trigger: 'blur' },
200
+ {
201
+ validator: lengthToFirstPassword,
202
+ trigger: 'blur'
203
+ }
204
+ ],
205
+ respwd: [
206
+ { required: true, message: '请输入确认密码', trigger: 'blur' },
207
+ {
208
+ validator: compareToFirstPassword,
209
+ trigger: 'blur'
210
+ }
211
+ ]
212
+ }
213
+ }
214
+ },
215
+ watch: {
216
+ signData(val) {
217
+ if (val === undefined) {
218
+ this.ukCode = undefined
219
+ }
220
+ if (val) {
221
+ this.ukCode = true
222
+ }
223
+ },
224
+ username(newValue, oldValue) {
225
+ this.checkCert = false
226
+ if (newValue !== oldValue && newValue) {
227
+ // 数据变化了,执行逻辑,这里做好防抖。
228
+ this.ms = 1000
229
+ clearTimeout(this.timeID)
230
+ this.timeID = setTimeout(() => {
231
+ axios
232
+ .get(`/bems/prod_1.0/dssc/sign/getUserDn/${newValue}`)
233
+ .then((res) => {
234
+ if (!res.data.checkCert) {
235
+ this.checkCert = true
236
+ return
237
+ }
238
+ if (res.data.checkCert && res.data.userDn) {
239
+ this.signData = getSign(newValue, res.data.userDn)
240
+ this.certDn = res.data.userDn
241
+ }
242
+ })
243
+ }, this.ms)
244
+ }
245
+ }
246
+ },
247
+ methods: {
248
+ // 发送短信
249
+ outTime(num) {
250
+ clearTimeout(this.setTimeNum)
251
+ if (num > 0) {
252
+ num--
253
+ this.codeNum = num + 'S'
254
+
255
+ this.setTimeNum = setTimeout(() => {
256
+ this.outTime(num)
257
+ }, 1000)
258
+ num--
259
+ } else {
260
+ clearTimeout(this.setTimeNum)
261
+ this.codeNum = '验证码'
262
+ }
263
+ },
264
+ sendMsg(type, typeName) {
265
+ this.$refs['update-form'].validateField(type, (valid) => {
266
+ if (!valid) {
267
+ this.outTime(60)
268
+ axios
269
+ .get(
270
+ `/bems/prod_1.0/uas/api/authorization/captcha/${this.updateForm[type]}/1`,
271
+ null,
272
+ { loading: false, noMsg: true }
273
+ )
274
+ .then(() => {
275
+ this.$message.success(
276
+ `${typeName}: ${this.updateForm[type]} 验证码发送成功`
277
+ )
278
+ })
279
+ .catch(() => {
280
+ console.log(123)
281
+ clearTimeout(this.setTimeNum)
282
+ this.codeNum = '验证码'
283
+ this.$message.warning(
284
+ `${typeName}: ${this.updateForm[type]} 验证码发送失败`
285
+ )
286
+ })
287
+ }
288
+ })
289
+ },
290
+ // 下一步
291
+ getNext() {
292
+ this.$refs['update-form'].validate((val) => {
293
+ if (val) {
294
+ this.confirmPwdData = {
295
+ type: 'newPwd',
296
+ username: this.updateForm.username,
297
+ mobile: this.updateForm.phone,
298
+ captcha: this.updateForm.code,
299
+ resetType: 'mobile',
300
+ phone: this.updateForm.phone,
301
+ code: this.updateForm.code
302
+ }
303
+ this.isPhone =
304
+ this.confirmPwdData.phone.substring(0, 3) +
305
+ '****' +
306
+ this.confirmPwdData.phone.substring(7, 11)
307
+ this.type = 'newPwd'
308
+ this.getUserRole()
309
+ }
310
+ })
311
+ },
312
+ getUkNext() {
313
+ this.confirmPwdData = {
314
+ type: 'newPwd',
315
+ username: this.username,
316
+ resetType: 'certificate'
317
+ }
318
+ this.type = 'newPwd'
319
+ this.isPhone = this.confirmPwdData.username
320
+ },
321
+ async getUserRole() {
322
+ let data = {
323
+ userNo: this.confirmPwdData.username
324
+ }
325
+ let res = await axios.post(
326
+ `/bems/prod_1.0/user/api/userController/use`,
327
+ data
328
+ )
329
+ this.dataForm = res.data
330
+ },
331
+ // 确认
332
+ confirm() {
333
+ this.$refs.newPwdRef.validate((val) => {
334
+ let data = this.confirmPwdData
335
+ data.newPassword = this.newPwdForm.newPassword
336
+ data.sign = this.sign
337
+ data.certDn = this.certDn
338
+ axios
339
+ .post(`/bems/prod_1.0/uas/api/authorization/password/reset`, data)
340
+ .then((res) => {
341
+ if (res.code == 200) {
342
+ this.$message.success(`密码更新成功!`)
343
+ this.type = 'phone'
344
+ }
345
+ })
346
+ })
347
+ },
348
+ changeUk(val) {
349
+ this.type = val
350
+ },
351
+ getBanck() {
352
+ this.$emit('changType', true)
353
+ }
354
+ }
355
+ }
356
+ </script>
357
+
358
+ <style>
359
+ .success-tips {
360
+ font-size: 14px;
361
+ text-align: left;
362
+ color: #48d2a0;
363
+ line-height: 22px;
364
+ }
365
+ .filed-tips {
366
+ font-size: 14px;
367
+ text-align: left;
368
+ color: #fb5555;
369
+ line-height: 22px;
370
+ }
371
+ .uk-tips {
372
+ font-size: 24px;
373
+ }
374
+ </style>