FxCaptchaRotate 旋转验证
圆形图片按随机角度预旋转,拖动下方滑块把图片转回正向。松手时角度差在容差内通过,否则回弹并提示失败;点击图片换一题。
基础用法
vue
<script setup lang="ts">
import { FxCaptchaRotate } from "@fx/components"
const onSuccess = ({ time }) => console.log(`验证通过,用时 ${time}s`)
</script>Attributes
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| v-model | 通过状态 | boolean | false |
| src | 图片地址 | string | — |
| imageSize | 图片边长(px) | number | 220 |
| minDegree | 最小随机旋转角(deg) | number | 120 |
| maxDegree | 最大随机旋转角(deg) | number | 300 |
| diffDegree | 通过的允许角度差(deg) | number | 20 |
| answerDegree | 服务端下发的正确角度(提供时跳过本地随机,答案由服务端留存校验) | number | — |
| server-side | 服务端判定模式:题图已按预旋转合成(src 即含偏转的成品图),组件不本地判定不回弹,松手上报 release 由外部校验驱动 | boolean | false |
| defaultTip | 图片底部默认提示 | string | '拖动滑块将图片转正' |
服务端校验
两种接法:① answer-degree 下发答案留存的本地判定(组件内提示通过与否);② server-side 模式——服务端把预旋转直接合成进题图(src 指向动态出图端点),前端不见角度,松手经 release 事件上报换算角度由服务端复验。生产推荐 ②(答案不出服务端)。
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| success | 验证通过(本地判定模式) | ({ isPassing: boolean, time: string }) |
| release | 松手上报(server-side 模式):value 为换算角度(deg) | ({ value: number, time: string }) |
Slots
全部透传给内部滑块基座:text(内容文字)、actionIcon(滑块图标),作用域 { isPassing }。
Expose
| 方法 | 说明 |
|---|---|
| resume | 换一题并复位(重新随机旋转角、清通过态) |