|
|
@@ -4,80 +4,96 @@
|
|
|
<i class="el-icon-lock"></i>
|
|
|
<span v-t="'forget.title'"></span>
|
|
|
</div>
|
|
|
- <el-form :model="params" :rules="rules" ref="params" label-width="0" class="form">
|
|
|
+ <el-form :model="params" :rules="rules" ref="paramsFormRef" label-width="0" class="form">
|
|
|
<el-form-item prop="email">
|
|
|
<el-input
|
|
|
class="m-input"
|
|
|
- prefix-icon="iconfont iconyouxiang1"
|
|
|
+ :prefix-icon="Message"
|
|
|
v-model.trim="params.email"
|
|
|
:placeholder="$t('forget.form')"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button type="danger" class="s-btn" @click="send" v-t="'forget.forget'"></el-button>
|
|
|
+ <el-button type="danger" class="s-btn" @click="send">
|
|
|
+ {{ $t('forget.forget') }}
|
|
|
+ </el-button>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button class="s-btn" @click="cancel" v-t="'forget.cancel'"></el-button>
|
|
|
+ <el-button class="s-btn" @click="cancel">
|
|
|
+ {{ $t('forget.cancel') }}
|
|
|
+ </el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
+<script lang="ts" setup>
|
|
|
+ import { ref, reactive, computed, getCurrentInstance, inject } from 'vue'
|
|
|
+ import { useRouter } from 'vue-router'
|
|
|
+ import { useI18n } from 'vue-i18n'
|
|
|
+ import { Message } from '@element-plus/icons-vue'
|
|
|
import Service from '@/service/login'
|
|
|
import Config from '@/config'
|
|
|
|
|
|
- let { Code } = Config
|
|
|
- export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- loading: false,
|
|
|
- params: {
|
|
|
- email: '',
|
|
|
- },
|
|
|
- // 验证规则
|
|
|
- rules: {
|
|
|
- email: [
|
|
|
- {
|
|
|
- validator: (rule, value, callback) => {
|
|
|
- if (this.Config.Pattern.Email.test(value)) {
|
|
|
- callback()
|
|
|
- } else {
|
|
|
- callback(new Error(this.$i18n.t('vaildate.email.format')))
|
|
|
- }
|
|
|
- },
|
|
|
- trigger: 'blur',
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- // 发送
|
|
|
- send: async function () {
|
|
|
- this.$refs['params'].validate(async (valid) => {
|
|
|
- if (valid) {
|
|
|
- let res = await Service.forgetPwd(this.params)
|
|
|
- if (res.code == Code.StatusOK) {
|
|
|
- this.loading = true
|
|
|
- this.$pigeon.MessageOK(res.msg)
|
|
|
- setTimeout(() => {
|
|
|
- this.loading = false
|
|
|
- this.$router.push({ path: '/signin' }).catch((arr) => arr)
|
|
|
- }, 1000)
|
|
|
- } else {
|
|
|
- this.$pigeon.MessageError(res.msg)
|
|
|
- }
|
|
|
+ const { Code } = Config
|
|
|
+ const router = useRouter()
|
|
|
+ const { t } = useI18n()
|
|
|
+ const { proxy } = getCurrentInstance()
|
|
|
+
|
|
|
+ // 引入全局弹窗
|
|
|
+ const pigeon = inject('pigeon')
|
|
|
+
|
|
|
+ // 响应式数据
|
|
|
+ const loading = ref(false)
|
|
|
+ const params = reactive({
|
|
|
+ email: '',
|
|
|
+ })
|
|
|
+
|
|
|
+ const paramsFormRef = ref()
|
|
|
+
|
|
|
+ // 验证规则
|
|
|
+ const rules = reactive({
|
|
|
+ email: [
|
|
|
+ {
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
+ if (Config.Pattern.Email.test(value)) {
|
|
|
+ callback()
|
|
|
} else {
|
|
|
- return false
|
|
|
+ callback(new Error(t('vaildate.email.format')))
|
|
|
}
|
|
|
- })
|
|
|
- },
|
|
|
- cancel() {
|
|
|
- this.$router.push({ path: '/signin' }).catch((arr) => arr)
|
|
|
+ },
|
|
|
+ trigger: 'blur',
|
|
|
},
|
|
|
- },
|
|
|
- mounted() {},
|
|
|
+ ],
|
|
|
+ })
|
|
|
+
|
|
|
+ // 方法
|
|
|
+ const send = async () => {
|
|
|
+ if (!paramsFormRef.value) return
|
|
|
+
|
|
|
+ try {
|
|
|
+ const valid = await paramsFormRef.value.validate()
|
|
|
+ if (!valid) return
|
|
|
+
|
|
|
+ const res = await Service.forgetPwd(params)
|
|
|
+ if (res.code === Code.StatusOK) {
|
|
|
+ loading.value = true
|
|
|
+ // 使用自定义消息组件
|
|
|
+ pigeon.MessageOK(res.msg)
|
|
|
+ setTimeout(() => {
|
|
|
+ loading.value = false
|
|
|
+ router.push({ path: '/signin' }).catch((err) => console.log(err))
|
|
|
+ }, 1000)
|
|
|
+ } else {
|
|
|
+ pigeon.MessageError(res.msg)
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('发送失败:', error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const cancel = () => {
|
|
|
+ router.push({ path: '/signin' }).catch((err) => console.log(err))
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
@@ -128,10 +144,11 @@
|
|
|
|
|
|
<style lang="scss">
|
|
|
#signin {
|
|
|
- .el-input__inner {
|
|
|
+ .el-input__wrapper {
|
|
|
border: none;
|
|
|
border-bottom: 1px solid;
|
|
|
border-radius: 0;
|
|
|
+ box-shadow: none;
|
|
|
@include border_gray_1();
|
|
|
}
|
|
|
.el-form-item {
|