Files
Message-Push-Nest/web/src/components/pages/settings/PasswordSettings.vue
T

82 lines
2.1 KiB
Vue

<script setup lang="ts">
import { ref } from 'vue'
import { Button } from '@/components/ui/button'
import { Input } from '@/components/ui/input'
import { Label } from '@/components/ui/label'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { toast } from 'vue-sonner'
import { request } from '@/api/api'
// 重置密码相关
const passwordForm = ref({
newPassword: '',
currentPassword: ''
})
// 重置密码
const resetPassword = async () => {
// 检查演示模式
// @ts-ignore
const isDemoMode = (import.meta as any).env.VITE_RUN_MODE === 'demo'
if (isDemoMode) {
toast.error('演示模式下无法重置密码')
return
}
try {
let postData = { new_passwd: passwordForm.value.newPassword , old_passwd: passwordForm.value.currentPassword}
const rsp = await request.post('/settings/setpasswd', postData)
if (rsp.data.code == 200) {
let msg = rsp.data.msg
toast.success(msg)
} else {
toast.error(rsp.data.msg || '密码重置失败')
}
} catch (error) {
toast.error('密码重置失败,请稍后重试')
}
}
</script>
<script lang="ts">
export default {
name: 'PasswordSettings'
}
</script>
<template>
<Card>
<CardHeader>
<CardTitle>重置密码</CardTitle>
<CardDescription>更改您的登录密码</CardDescription>
</CardHeader>
<CardContent class="space-y-4">
<div class="space-y-2">
<Label for="current-password">旧密码</Label>
<Input
id="current-password"
type="password"
v-model="passwordForm.currentPassword"
placeholder="请输入旧密码"
/>
</div>
<div class="space-y-2">
<Label for="new-password">新密码</Label>
<Input
id="new-password"
type="password"
v-model="passwordForm.newPassword"
placeholder="请输入新密码"
/>
</div>
<Button @click="resetPassword" class="w-full sm:w-auto">
重置密码
</Button>
</CardContent>
</Card>
</template>