hookehuyr

refactor(api): 更新API路径和参数以支持手机号登录

统一将用户相关接口的路径和参数从邮箱改为手机号,并更新相关文档和前端登录页面
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-12-01 16:26:27
* @FilePath: /data-table/src/api/common.js
* @LastEditTime: 2025-03-26 00:42:59
* @FilePath: /mlaj/src/api/common.js
* @Description: 通用接口
*/
import { fn, fetch, uploadFn } from '@/api/fn';
const Api = {
SMS: '/srv/?a=sms',
SMS: '/srv/?a=sms_code',
TOKEN: '/srv/?a=upload',
SAVE_FILE: '/srv/?a=upload&t=save_file',
}
/**
* @description: 发送验证码
* @param {*} phone 手机号码
* @param {*} mobile 手机号码
* @returns
*/
export const smsAPI = (params) => fn(fetch.post(Api.SMS, params));
......
/*
* @Date: 2025-03-23 23:45:53
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-03-23 23:45:54
* @LastEditTime: 2025-03-26 00:41:11
* @FilePath: /mlaj/src/api/users.js
* @Description: 用户相关接口
*/
import { fn, fetch } from './fn';
const Api = {
USER_LOGIN: '/users/login',
USER_REGISTER: '/users/register',
USER_INFO: '/users/info',
USER_UPDATE: '/users/update',
USER_AVATAR: '/users/avatar',
USER_PASSWORD: '/users/password',
USER_LOGIN: '/srv/?a=user_login',
USER_REGISTER: '/srv/?a=user_register',
USER_INFO: '/srv/?a=user_info',
USER_UPDATE: '/srv/?a=user_edit',
USER_PASSWORD: '/srv/?a=user_reset_password',
}
/**
* @description: 用户登录
* @param: email 用户邮箱
* @param: mobile 手机号
* @param: password 用户密码
*/
export const loginAPI = (params) => fn(fetch.post(Api.USER_LOGIN, params));
......@@ -26,31 +25,30 @@ export const loginAPI = (params) => fn(fetch.post(Api.USER_LOGIN, params));
/**
* @description: 用户注册
* @param: name 用户名称
* @param: email 用户邮箱
* @param: mobile 手机号
* @param: sms_code 短信验证码
* @param: password 用户密码
* @param: avatar 头像
*/
export const registerAPI = (params) => fn(fetch.post(Api.USER_REGISTER, params));
/**
* @description: 获取用户信息
* @return: data: { user: { id, name, mobile, avatar } }
*/
export const getUserInfoAPI = () => fn(fetch.get(Api.USER_INFO));
/**
* @description: 更新用户信息
* @param: name 用户名称
* @param: avatar 头像
*/
export const updateUserInfoAPI = (params) => fn(fetch.put(Api.USER_UPDATE, params));
/**
* @description: 上传用户头像
* @param: avatar 头像文件
* @description: 忘记密码
* @param: mobile 手机号
* @param: sms_code 短信验证码
* @param: password 密码
*/
export const uploadAvatarAPI = (formData) => fn(fetch.post(Api.USER_AVATAR, formData));
/**
* @description: 修改用户密码
* @param: oldPassword 原密码
* @param: newPassword 新密码
*/
export const updatePasswordAPI = (params) => fn(fetch.put(Api.USER_PASSWORD, params));
export const resetPasswordAPI = (params) => fn(fetch.put(Api.USER_PASSWORD, params));
......
......@@ -13,15 +13,15 @@
<form class="space-y-6" @submit.prevent="handleSubmit">
<div>
<label for="email" class="block text-sm font-medium text-gray-700">
邮箱 / 手机号
<label for="mobile" class="block text-sm font-medium text-gray-700">
手机号
</label>
<input
id="email"
v-model="email"
name="email"
id="mobile"
v-model="mobile"
name="mobile"
type="text"
autocomplete="email"
autocomplete="mobile"
required
class="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-green-500 focus:border-green-500"
/>
......@@ -114,22 +114,23 @@ import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import FrostedGlass from '@/components/ui/FrostedGlass.vue'
import { useAuth } from '@/contexts/auth'
import { useTitle } from '@vueuse/core'
import { loginAPI } from '@/api/users'
import { useTitle } from '@vueuse/core'
const $route = useRoute();
const $router = useRouter();
useTitle($route.meta.title);
const router = useRouter()
const { login } = useAuth()
const email = ref('user1@example.com')
const mobile = ref('13761653761')
const password = ref('password123')
const error = ref('')
const loading = ref(false)
// 原登录逻辑
// const handleSubmit = async () => {
// if (!email.value || !password.value) {
// if (!mobile.value || !password.value) {
// error.value = '请填写所有字段'
// return
// }
......@@ -140,7 +141,7 @@ const loading = ref(false)
// // 调用登录接口
// const response = await loginAPI({
// email: email.value,
// mobile: mobile.value,
// password: password.value
// })
......@@ -162,7 +163,7 @@ const loading = ref(false)
// 临时登录逻辑 - 支持任意输入
const handleSubmit = async () => {
if (!email.value || !password.value) {
if (!mobile.value || !password.value) {
error.value = '请填写所有字段'
return
}
......