/** * 登录弹窗组件使用示例 * * 该组件提供了统一的登录拦截功能,可以在任何页面使用 */ ## 方式一:在页面中直接使用LoginModal组件 ```vue ``` ## 方式二:使用 useLoginGuard Hook ```vue ``` ## 方式三:在组件中使用登录守卫Mixin ```vue ``` ## 登录弹窗组件Props说明 | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | modelValue | Boolean | false | 控制显示/隐藏 | | title | String | '登录后享受更多服务' | 弹窗标题 | | subtitle | String | '登录即表示同意相关协议' | 弹窗副标题 | | showClose | Boolean | true | 是否显示关闭按钮 | | modalStyle | String | 'center' | 弹窗样式:'center'居中,'bottom'底部 | | maskClosable | Boolean | true | 点击遮罩是否关闭 | | onLoginSuccess | Function | null | 登录成功回调 | | onLoginError | Function | null | 登录失败回调 | ## 登录弹窗组件Events | 事件名 | 说明 | 回调参数 | |--------|------|----------| | update:modelValue | 显示状态变化 | Boolean | | loginSuccess | 登录成功 | Object: 登录结果 | | loginError | 登录失败 | Error: 错误对象 | | close | 弹窗关闭 | - | ## 登录弹窗组件暴露的方法 | 方法名 | 说明 | 参数 | |--------|------|------| | show() | 显示弹窗 | - | | hide() | 隐藏弹窗 | - | | switchCard(card) | 切换登录方式 | 'phone'一键登录 / 'sms'验证码登录 | ## 全局登录拦截示例 在 `App.vue` 中注册全局登录弹窗: ```vue ``` ## API路径配置 登录弹窗组件使用的API路径定义在 `@/api/main.js`: ```javascript // 一键登录 export function phoneLogin(data) { return request.post('/auth/phone/login', data) } // 短信验证码登录 export function smsLogin(data) { return request.post('/auth/phone/sms/login', data) } // 发送验证码 export function sendSmsCode(phone) { return request.post('/auth/phone/sms/send', { phone }) } ``` 如需修改API路径,请编辑 `main.js` 文件中的相应函数。