Files
gao-customer-h5/src/pages/management/ManagementPassword.vue
T
2026-08-01 18:01:23 +08:00

99 lines
2.3 KiB
Vue

<template>
<div class="password-page">
<t-form class="form" label-align="left">
<t-form-item label="旧密码">
<t-input v-model.trim="formModel.oldPassword" type="password" placeholder="旧密码" borderless />
</t-form-item>
<t-form-item label="新密码">
<t-input v-model.trim="formModel.newPassword" type="password" placeholder="新密码" borderless />
</t-form-item>
<t-form-item label="确认密码">
<t-input v-model.trim="formModel.confirmPassword" type="password" placeholder="确认密码" borderless />
</t-form-item>
</t-form>
<t-button class="save" theme="primary" :loading="isSaving" @click="savePassword">保存</t-button>
</div>
</template>
<script setup lang="ts">
import { Toast } from "tdesign-mobile-vue";
import { UserAPI, useUserStore } from "timi-web";
defineOptions({
name: "ManagementPassword"
});
const router = useRouter();
const userStore = useUserStore();
const isSaving = ref(false);
const formModel = reactive({
oldPassword: "",
newPassword: "",
confirmPassword: ""
});
async function savePassword(): Promise<void> {
if (!formModel.oldPassword || !formModel.newPassword) {
Toast({
theme: "warning",
direction: "row",
message: "请填写旧密码和新密码"
});
return;
}
if (formModel.newPassword !== formModel.confirmPassword) {
Toast({
theme: "warning",
direction: "row",
message: "两次输入的新密码不一致"
});
return;
}
isSaving.value = true;
try {
await UserAPI.updatePassword({
oldValue: formModel.oldPassword,
newValue: formModel.newPassword
});
userStore.clearLoginUser();
Toast({
theme: "success",
direction: "row",
message: "密码已更新,请重新登录"
});
await router.replace("/login");
} finally {
isSaving.value = false;
}
}
</script>
<style scoped lang="less">
.password-page {
padding: calc(var(--app-nav-height) + 1rem) 0 4rem 0;
.form {
padding: .5rem 0;
background: rgba(255, 255, 255, .92);
box-shadow: var(--td-shadow-1);
border-radius: 1.4rem;
}
.save {
left: 1rem;
right: 1rem;
bottom: calc(.75rem + env(safe-area-inset-bottom, 0));
position: fixed;
}
}
:global(html.theme-dark) {
.password-page {
.form {
background: rgba(15, 23, 42, .88);
box-shadow: 0 .75rem 2rem rgba(2, 6, 23, .32);
}
}
}
</style>