| | |
| | | <template> |
| | | <div class="changePassword"> |
| | | <assets-head :title="$t('修改登录密码')" /> |
| | | <div class="line"></div> |
| | | <div class="content"> |
| | | <ExInput :label="$t('旧密码')" :placeholderText="$t('请输入密码')" v-model="oldPassword" typeText="password" /> |
| | | <ExInput :label="$t('新密码')" :placeholderText="$t('请输入密码')" :tips="$t('请输入6-12个字符,包括数字或字母')" |
| | | <div class="changePassword"> |
| | | <assets-head :title="$t('修改登录密码')" /> |
| | | <div class="line"></div> |
| | | <div class="content"> |
| | | <!-- <ExInput :label="$t('旧密码')" :placeholderText="$t('请输入旧密码')" v-model="oldPassword" typeText="password" /> |
| | | <ExInput :label="$t('新密码')" :placeholderText="$t('请输入新密码')" :tips="$t('请输入6-12个字符,包括数字或字母')" |
| | | v-model="newPassword" typeText="password" /> |
| | | <ExInput :label="$t('确认新密码')" :placeholderText="$t('请输入密码')" :tips="$t('请输入6-12个字符,包括数字或字母')" |
| | | v-model="rePassword" typeText="password" /> |
| | | <button class="btn btnMain" @click="submit">{{ |
| | | $t('确定') }}</button> |
| | | </div> |
| | | <ExInput :label="$t('确认新密码')" :placeholderText="$t('请输入新密码')" :tips="$t('请输入6-12个字符,包括数字或字母')" |
| | | v-model="rePassword" typeText="password" /> --> |
| | | <van-form validate-first @submit="submit"> |
| | | <van-field |
| | | v-model="oldPassword" |
| | | type="password" |
| | | :placeholder="$t('请输入原密码')" |
| | | :error-message="errors.oldPassword" |
| | | :error="!!errors.oldPassword" |
| | | /> |
| | | <van-field |
| | | v-model="newPassword" |
| | | type="password" |
| | | :placeholder="$t('请输入新密码')" |
| | | :error-message="errors.newPassword" |
| | | :error="!!errors.newPassword" |
| | | /> |
| | | <van-field |
| | | v-model="rePassword" |
| | | type="password" |
| | | :placeholder="$t('请确认新密码')" |
| | | :error-message="errors.rePassword" |
| | | :error="!!errors.rePassword" |
| | | /> |
| | | <button class="btn" @click="submit">{{ $t("确定") }}</button> |
| | | </van-form> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import assetsHead from "@/components/assets-head"; |
| | | import ExInput from "@/components/ex-input"; |
| | | // import ExInput from "@/components/ex-input"; |
| | | import Axios from "@/API/userCenter.js"; |
| | | export default { |
| | | props: { |
| | | import Vue from "vue"; |
| | | import { Field } from "vant"; |
| | | |
| | | Vue.use(Field); |
| | | export default { |
| | | props: {}, |
| | | components: { |
| | | assetsHead, |
| | | // ExInput, |
| | | }, |
| | | data() { |
| | | return { |
| | | oldPassword: "", |
| | | newPassword: "", |
| | | rePassword: "", |
| | | errors: { |
| | | oldPassword: "", |
| | | newPassword: "", |
| | | rePassword: "", |
| | | }, |
| | | }; |
| | | }, |
| | | // computed:{ |
| | | // hightLight(){ |
| | | // if (this.oldPassword.length >= 6 && this.newPassword.length >= 6 && this.rePassword.length >= 6) { |
| | | // return true |
| | | // } else { |
| | | // return false |
| | | // } |
| | | // } |
| | | // }, |
| | | methods: { |
| | | validateInputs() { |
| | | let isValid = true; |
| | | this.errors = { |
| | | oldPassword: "", |
| | | newPassword: "", |
| | | rePassword: "", |
| | | }; |
| | | |
| | | if (!this.oldPassword) { |
| | | this.errors.oldPassword = this.$t("旧密码不能为空"); |
| | | isValid = false; |
| | | } |
| | | if (!this.newPassword) { |
| | | this.errors.newPassword = this.$t("新密码不能为空"); |
| | | isValid = false; |
| | | } else if (this.newPassword.length < 6 || this.newPassword.length > 12) { |
| | | this.errors.newPassword = this.$t("新密码必须是6-12个字符"); |
| | | isValid = false; |
| | | } |
| | | if (!this.rePassword) { |
| | | this.errors.rePassword = this.$t("确认密码不能为空"); |
| | | isValid = false; |
| | | } else if (this.rePassword !== this.newPassword) { |
| | | this.errors.rePassword = this.$t("两次输入的密码不一致"); |
| | | isValid = false; |
| | | } |
| | | |
| | | return isValid; |
| | | }, |
| | | components: { |
| | | assetsHead, |
| | | ExInput, |
| | | submit() { |
| | | // 调用校验方法 |
| | | // if (!this.validateInputs()) { |
| | | // return; |
| | | // } |
| | | |
| | | Axios.changePassword({ |
| | | old_password: this.oldPassword, |
| | | password: this.newPassword, |
| | | re_password: this.rePassword, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code !== 0) { |
| | | this.$toast(this.$t(res.msg)); |
| | | return; |
| | | } |
| | | this.$toast(this.$t("修改成功")); |
| | | setTimeout(() => { |
| | | this.$router.push("/home"); |
| | | }, 1000); |
| | | }) |
| | | .catch((error) => { |
| | | if (error.code === "ECONNABORTED") { |
| | | this.$toast(this.$t("网络超时!")); |
| | | } else if (error.msg !== undefined) { |
| | | this.$toast(this.$t(error.msg)); |
| | | } |
| | | }); |
| | | }, |
| | | data() { |
| | | return { |
| | | oldPassword: '', |
| | | newPassword: '', |
| | | rePassword: '', |
| | | } |
| | | }, |
| | | // computed:{ |
| | | // hightLight(){ |
| | | // if (this.oldPassword.length >= 6 && this.newPassword.length >= 6 && this.rePassword.length >= 6) { |
| | | // return true |
| | | // } else { |
| | | // return false |
| | | // } |
| | | // } |
| | | // }, |
| | | methods: { |
| | | submit() { |
| | | Axios.changePassword({ |
| | | old_password: this.oldPassword, |
| | | password: this.newPassword, |
| | | re_password: this.rePassword, |
| | | }).then((res) => { |
| | | this.$toast(this.$t('修改成功')) |
| | | setTimeout(() => { |
| | | this.$router.push('/home') |
| | | }, 1000); |
| | | }).catch((error) => { |
| | | if (error.code === 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); } |
| | | else if (error.msg !== undefined) { this.$toast(this.$t(error.msg)); } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .changePassword { |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | .line { |
| | | width: 100%; |
| | | height: 2px; |
| | | width: 100%; |
| | | height: 2px; |
| | | |
| | | @include themify() { |
| | | background: themed("tab_background"); |
| | | } |
| | | @include themify() { |
| | | background: themed("tab_background"); |
| | | } |
| | | } |
| | | |
| | | .content { |
| | | padding: 32px; |
| | | font-size: 26px; |
| | | // padding: 32px; |
| | | // font-size: 26px; |
| | | // width: 100%; |
| | | background: #212121; |
| | | border-radius: 1rem; |
| | | padding: 2rem; |
| | | margin: 1.8rem 2rem; |
| | | box-sizing: border-box; |
| | | font-weight: 700; |
| | | color: #fff; |
| | | font-size: 2rem; |
| | | /deep/ .van-cell.van-field { |
| | | margin-top: 4.4rem; |
| | | display: flex; |
| | | flex-direction: column; |
| | | font-size: 1.8rem; |
| | | color: #303133; |
| | | } |
| | | /deep/ .van-field__control { |
| | | // @include themify() { |
| | | // background: themed("tab_background"); |
| | | // } |
| | | // border-radius: 1rem; |
| | | width: 100%; |
| | | height: 6.4rem; |
| | | padding: 0 2.4rem !important; |
| | | background: #333; |
| | | box-sizing: border-box; |
| | | color: #fff; |
| | | border: 1px solid transparent !important; |
| | | } |
| | | |
| | | /deep/ .van-cell__value { |
| | | height: 6.4rem; |
| | | line-height: 6.4rem; |
| | | font-weight: 700; |
| | | color: rgb(255, 255, 255); |
| | | font-size: 1.8rem; |
| | | text-align: left; |
| | | } |
| | | |
| | | /deep/ .van-field__body { |
| | | display: flex; |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: #212121; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-box-direction: normal; |
| | | -webkit-flex-direction: column; |
| | | flex-direction: column; |
| | | -webkit-box-pack: center; |
| | | -webkit-justify-content: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .btn { |
| | | height: 88px; |
| | | line-height: 88px; |
| | | text-align: center; |
| | | font-size: 32px; |
| | | margin-top: 44px; |
| | | border-radius: 10px; |
| | | width: 100%; |
| | | border: none; |
| | | width: 100%; |
| | | background: #f7b328; |
| | | padding: 1.8rem; |
| | | border-radius: 1rem; |
| | | color: #fff; |
| | | text-align: center; |
| | | font-size: 2rem; |
| | | margin: 4.1rem 0 2.4rem; |
| | | } |
| | | |
| | | .hightLight { |
| | | @include themify() { |
| | | background: themed("btn_main"); |
| | | } |
| | | @include themify() { |
| | | background: themed("btn_main"); |
| | | } |
| | | |
| | | color: #fff; |
| | | color: #fff; |
| | | } |
| | | </style> |