feat: app首次登录修改密码功能
parent
03941fa5a5
commit
c41133d536
|
|
@ -71,6 +71,7 @@ export const getVersion = (params) => post("/app/versionmanagerReg/getVersion",
|
||||||
export const setFeedbackUpload = (params) => upload("/app/feedback/upload", params) //反馈问题附件
|
export const setFeedbackUpload = (params) => upload("/app/feedback/upload", params) //反馈问题附件
|
||||||
export const setFeedbackAdd = (params) => post("/app/feedback/add", params) //反馈问题提交
|
export const setFeedbackAdd = (params) => post("/app/feedback/add", params) //反馈问题提交
|
||||||
export const setUpdatePassword = (params) => post("/app/user/editUserPwd", params) //修改密码
|
export const setUpdatePassword = (params) => post("/app/user/editUserPwd", params) //修改密码
|
||||||
|
export const changePasswordFirstLogin = (params) => post("/sys/changePasswordFirstLogin", params) // 首次登录修改密码
|
||||||
export const getAnnouncementNoticeList = (params) => post("/app/noticeregulatory/list", params) //公告通知列表
|
export const getAnnouncementNoticeList = (params) => post("/app/noticeregulatory/list", params) //公告通知列表
|
||||||
export const getPlatformReminderList = (params) => post("/app/service/notice/list", params) //平台提醒列表
|
export const getPlatformReminderList = (params) => post("/app/service/notice/list", params) //平台提醒列表
|
||||||
export const getAnnouncementNoticeDetail = (params) => post("/app/noticeregulatory/goEdit", params) //公告通知详情
|
export const getAnnouncementNoticeDetail = (params) => post("/app/noticeregulatory/goEdit", params) //公告通知详情
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"crypto-js": "^4.2.0",
|
"crypto-js": "^4.2.0",
|
||||||
|
"dayjs": "^1.11.13",
|
||||||
"uview-ui": "^2.0.35",
|
"uview-ui": "^2.0.35",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vuex-persistedstate": "^3.2.1"
|
"vuex-persistedstate": "^3.2.1"
|
||||||
|
|
@ -40,6 +41,12 @@
|
||||||
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/dayjs": {
|
||||||
|
"version": "1.11.21",
|
||||||
|
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.21.tgz",
|
||||||
|
"integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/deepmerge": {
|
"node_modules/deepmerge": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
||||||
|
|
@ -112,6 +119,11 @@
|
||||||
"resolved": "https://mirrors.huaweicloud.com/repository/npm/crypto-js/-/crypto-js-4.2.0.tgz",
|
"resolved": "https://mirrors.huaweicloud.com/repository/npm/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
},
|
},
|
||||||
|
"dayjs": {
|
||||||
|
"version": "1.11.21",
|
||||||
|
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.21.tgz",
|
||||||
|
"integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="
|
||||||
|
},
|
||||||
"deepmerge": {
|
"deepmerge": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,12 @@
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/login/change-password/change-password",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "首次登录修改密码"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/super-hot/index/index",
|
"path": "pages/super-hot/index/index",
|
||||||
"style": {
|
"style": {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
<template>
|
||||||
|
<view class="content">
|
||||||
|
<view class="change-password">
|
||||||
|
<u--form labelPosition="top" :model="form" :rules="rules" ref="form" labelWidth="100%"
|
||||||
|
:labelStyle="{color:'#333', fontSize:'34rpx', fontWeight:'bold'}">
|
||||||
|
<u-form-item label="新密码" prop="nowPwd" borderBottom>
|
||||||
|
<u--input v-model="form.nowPwd" type="password" border="none" placeholder="请输入新密码"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="确认新密码" prop="confirmPwd" borderBottom>
|
||||||
|
<u--input v-model="form.confirmPwd" type="password" border="none" placeholder="请确认新密码"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u--text type="error" text="*密码规则:密码长度为8-16位,必须由大写字母,小写字母,数字,特殊符号(!#@*&.)组成"></u--text>
|
||||||
|
<u-form-item>
|
||||||
|
<u-button type="primary" shape="circle" text="确认修改" @click="$u.debounce(submitPassword, 1000, true)">
|
||||||
|
</u-button>
|
||||||
|
</u-form-item>
|
||||||
|
</u--form>
|
||||||
|
</view>
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { changePasswordFirstLogin } from "@/api";
|
||||||
|
import { encrypt } from "@/utils/aes_secret";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: {
|
||||||
|
nowPwd: '',
|
||||||
|
confirmPwd: '',
|
||||||
|
},
|
||||||
|
testPassword: /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[!#@*&.])[a-zA-Z\d!#@*&.].*.{8,16}$/,
|
||||||
|
rules: {
|
||||||
|
nowPwd: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入新密码',
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
min: 8,
|
||||||
|
max: 16,
|
||||||
|
message: '长度最少8个字符最多16个字符',
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
return this.testPassword.test(value)
|
||||||
|
},
|
||||||
|
message: '新密码格式不对,请重新输入',
|
||||||
|
trigger: 'blur',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
confirmPwd: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请再次输入新密码',
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
min: 8,
|
||||||
|
max: 16,
|
||||||
|
message: '长度最少8个字符最多16个字符',
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
return value === this.form.nowPwd
|
||||||
|
},
|
||||||
|
message: '两次输入密码不一致',
|
||||||
|
trigger: 'blur',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submitPassword() {
|
||||||
|
this.$refs.form.validate().then(async () => {
|
||||||
|
await changePasswordFirstLogin({
|
||||||
|
newPassword: encrypt(this.form.nowPwd)
|
||||||
|
})
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
message: '密码修改成功,请重新登录',
|
||||||
|
type: 'success',
|
||||||
|
complete: () => {
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
this.$refs.uToast.error('请填写完整')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.content {
|
||||||
|
min-height: 100vh;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
.change-password {
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
padding: 40rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -93,12 +93,19 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { token } = await submitLogin({
|
const { token, firstLogin } = await submitLogin({
|
||||||
username: encrypt(this.form.userName),
|
username: encrypt(this.form.userName),
|
||||||
password: encrypt(this.form.userPwd)
|
password: encrypt(this.form.userPwd)
|
||||||
});
|
});
|
||||||
uni.setStorageSync('token', token);
|
uni.setStorageSync('token', token);
|
||||||
uni.setStorageSync('tokenTime', dayjs().format("YYYY-MM-DD HH:mm:ss"));
|
uni.setStorageSync('tokenTime', dayjs().format("YYYY-MM-DD HH:mm:ss"));
|
||||||
|
if (firstLogin === 1) {
|
||||||
|
uni.$u.route({
|
||||||
|
url: '/pages/login/change-password/change-password',
|
||||||
|
type: 'reLaunch'
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
const { user } = await getUserInfo();
|
const { user } = await getUserInfo();
|
||||||
await this.$store.dispatch('setUserInfo', user);
|
await this.$store.dispatch('setUserInfo', user);
|
||||||
await this.$store.dispatch('setfilePath', '');
|
await this.$store.dispatch('setfilePath', '');
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ function decryptAes(params) {
|
||||||
|
|
||||||
const key = CryptoJS.enc.Utf8.parse("fa4e0fae59534676"); // 16 bytes key for AES
|
const key = CryptoJS.enc.Utf8.parse("fa4e0fae59534676"); // 16 bytes key for AES
|
||||||
|
|
||||||
const bytes = CryptoJS.AES.decrypt(params.info, key, {
|
const bytes = CryptoJS.AES.decrypt(params.encryptData, key, {
|
||||||
mode: CryptoJS.mode.ECB,
|
mode: CryptoJS.mode.ECB,
|
||||||
padding: CryptoJS.pad.Pkcs7,
|
padding: CryptoJS.pad.Pkcs7,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue