wlyyui 文档 wlyyui 文档
首页
  • 介绍
  • 快速上手
  • 自定义主题
  • 基础组件

    • Color 色彩
    • Text 文本
    • Icon 图标
    • Button 按钮
    • Animation 动画
  • 布局组件

    • GridLayout 栅格布局
    • Grid 宫格
    • Panel 面板
    • Preview 表单预览
    • List 列表
    • Card 卡片
  • 表单组件

    • Calendar 日历
    • Cascader 级联选择器
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Slider 滑块选择器
    • Form 表单校验
    • FormItem 表单项
    • Select 选择器
    • Input 输入框
    • InputNumber 数字输入框
    • Label 标签
    • Radio 单选框
    • Checkbox 复选框
    • Switch 开关
    • Textarea 多行输入框
    • Rate 评分
    • Upload 图片上传
    • UploadVideo 视频上传
    • SearchBar 搜索栏
  • 反馈类型组件

    • ActionSheet 上拉菜单
    • Toast 轻提示
    • Backdrop 遮罩层
    • Dialog 对话框
    • DropdownMenu 下拉菜单
    • Modal 模态框
    • Gallery 画廊
    • Landscape 压屏窗
    • LoadAni 加载动画
    • Spin 旋转动画
    • Message 消息提示
  • 导航类型组件

    • NavBar 导航栏
    • BubbleBox 气泡框
    • Seg_tab 分段器
    • Tabbar 标签栏
    • BottomNavbar 底部导航栏
    • Tabs 标签页
    • IndexList 索引列表
    • NoticeBar 通告栏
    • Sticky 吸顶容器
    • Steps 步骤条
    • Fab 浮动按钮
    • Drawer 抽屉
    • BottomPopup 底部弹出层
    • TopPopup 顶部弹出层
    • TimeAxis 时间轴
    • SideMenu 纵向选项卡
  • 展示组件

    • Badge 徽章
    • Alert 警告框
    • Avatar 头像
    • Tag 标签
    • Tag 标签
    • Progress 进度条
    • Circle 圆形进度条
    • CountDown 倒计时
    • Divider 分割线
    • LoadMore 加载更多
    • Empty 缺省页
    • Skeleton 骨架屏
    • Parse 富文本
  • 拓展组件

    • ShareSheet 分享面板
    • Result 结果页
    • FilterBar 筛选栏
    • SingleInput 单输入框
    • DigitalRoller 数字滚轮
    • DigitalKeyboard 数字键盘
    • LicensePlate 车牌号键盘
    • SwiperDot 轮播图指示点
    • CopyText 长按复制
    • CubicBezier 贝塞尔曲线
    • ImageCropper 图片裁剪
    • Drag 拖拽排序
    • RotateVerify 旋转验证码
    • SliderCaptcha 滑块拼图验证
资源
案例
GitHub (opens new window)
首页
  • 介绍
  • 快速上手
  • 自定义主题
  • 基础组件

    • Color 色彩
    • Text 文本
    • Icon 图标
    • Button 按钮
    • Animation 动画
  • 布局组件

    • GridLayout 栅格布局
    • Grid 宫格
    • Panel 面板
    • Preview 表单预览
    • List 列表
    • Card 卡片
  • 表单组件

    • Calendar 日历
    • Cascader 级联选择器
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Slider 滑块选择器
    • Form 表单校验
    • FormItem 表单项
    • Select 选择器
    • Input 输入框
    • InputNumber 数字输入框
    • Label 标签
    • Radio 单选框
    • Checkbox 复选框
    • Switch 开关
    • Textarea 多行输入框
    • Rate 评分
    • Upload 图片上传
    • UploadVideo 视频上传
    • SearchBar 搜索栏
  • 反馈类型组件

    • ActionSheet 上拉菜单
    • Toast 轻提示
    • Backdrop 遮罩层
    • Dialog 对话框
    • DropdownMenu 下拉菜单
    • Modal 模态框
    • Gallery 画廊
    • Landscape 压屏窗
    • LoadAni 加载动画
    • Spin 旋转动画
    • Message 消息提示
  • 导航类型组件

    • NavBar 导航栏
    • BubbleBox 气泡框
    • Seg_tab 分段器
    • Tabbar 标签栏
    • BottomNavbar 底部导航栏
    • Tabs 标签页
    • IndexList 索引列表
    • NoticeBar 通告栏
    • Sticky 吸顶容器
    • Steps 步骤条
    • Fab 浮动按钮
    • Drawer 抽屉
    • BottomPopup 底部弹出层
    • TopPopup 顶部弹出层
    • TimeAxis 时间轴
    • SideMenu 纵向选项卡
  • 展示组件

    • Badge 徽章
    • Alert 警告框
    • Avatar 头像
    • Tag 标签
    • Tag 标签
    • Progress 进度条
    • Circle 圆形进度条
    • CountDown 倒计时
    • Divider 分割线
    • LoadMore 加载更多
    • Empty 缺省页
    • Skeleton 骨架屏
    • Parse 富文本
  • 拓展组件

    • ShareSheet 分享面板
    • Result 结果页
    • FilterBar 筛选栏
    • SingleInput 单输入框
    • DigitalRoller 数字滚轮
    • DigitalKeyboard 数字键盘
    • LicensePlate 车牌号键盘
    • SwiperDot 轮播图指示点
    • CopyText 长按复制
    • CubicBezier 贝塞尔曲线
    • ImageCropper 图片裁剪
    • Drag 拖拽排序
    • RotateVerify 旋转验证码
    • SliderCaptcha 滑块拼图验证
资源
案例
GitHub (opens new window)
  • 基础组件

    • Color 色彩
    • Text 文本
    • Icon 图标
    • Button 按钮
    • Animation 动画
  • 布局组件

    • GridLayout 栅格布局
    • Grid 宫格
    • Panel 面板
    • Preview 表单预览
    • List 列表
    • Card 卡片
  • 表单组件

    • Calendar 日历
    • Cascader 级联选择器
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Slider 滑块选择器
    • Form 表单校验
    • FormItem 表单项
    • Select 选择器
    • Input 输入框
    • InputNumber 数字输入框
    • Label 标签
    • Radio 单选框
    • Checkbox 复选框
    • Switch 开关
    • Textarea 多行输入框
    • Rate 评分
    • Upload 图片上传
    • UploadVideo 视频上传
    • SearchBar 搜索栏
  • 反馈类型组件

    • ActionSheet 上拉菜单
    • Toast 轻提示
    • Backdrop 遮罩层
    • Dialog 对话框
    • DropdownMenu 下拉菜单
    • Modal 模态框
    • Gallery 画廊
    • Landscape 压屏窗
    • Loading 加载
    • LoadAni 加载动画
    • Spin 旋转动画
    • Message 消息提示
    • SwipeAction 滑动菜单
  • 导航类型组件

    • NavBar 导航栏
    • BubbleBox 气泡框
    • Seg_tab 分段器
    • Tabbar 标签栏
    • BottomNavbar 底部导航栏
    • Tabs 标签页
    • IndexList 索引列表
    • NoticeBar 通告栏
    • Sticky 吸顶容器
    • Steps 步骤条
    • Fab 浮动按钮
    • Drawer 抽屉
    • BottomPopup 底部弹出层
    • TopPopup 顶部弹出层
    • TimeAxis 时间轴
    • SideMenu 纵向选项卡
  • 展示组件

    • Badge 徽章
    • Alert 警告框
    • Avatar 头像
    • Tag 标签
    • DataTag 标签选择
    • Progress 进度条
    • Collapse 折叠面板
    • Circle 圆形进度条
    • CountDown 倒计时
    • Divider 分割线
    • LoadMore 加载更多
    • Empty 缺省页
    • Skeleton 骨架屏
    • Parse 富文本
  • 拓展组件

    • ShareSheet 分享面板
    • Result 结果页
    • FilterBar 筛选栏
    • SingleInput 单输入框
    • DigitalRoller 数字滚轮
    • DigitalKeyboard 数字键盘
    • LicensePlate 车牌号键盘
    • SwiperDot 轮播图指示点
    • CopyText 长按复制
    • CubicBezier 贝塞尔曲线
    • ImageCropper 图片裁剪
    • Drag 拖拽排序
    • SlideVerify 滑动验证码
    • RotateVerify 旋转验证码
    • SliderCaptcha 滑块拼图验证
    • 组件
    • 拓展组件
    Mr zhang
    2023-08-15
    目录

    SliderCaptcha 滑块拼图验证

    SliderCaptcha 滑块拼图验证,根据提示进行行为验证。

    # 支持平台

    App(vue) App(nvue) H5 小程序
    ✓ ✓ ✓ ✓

    # 基础使用

    通过 src 属性设置验证所需图片,imageType 属性设置图片类型,@success 事件当验证成功时触发,@fail 事件当验证失败时触发。

    通过 ref 属性来注册组件引用信息。注册完成后,我们可以通过this.$refs.XXX访问到对应的组件实例,并调用上面的实例方法。

    <view class="wui-page__bd">
        <view class="wui-btn__box">
            <wui-button
                    type="gray"
                    width="400rpx"
                    height="84rpx"
                    text="点击按钮进行验证"
                    bold
                    :margin="['48rpx']"
                    @click="btnVerify"
            >
            </wui-button>
        </view>
        <!--务必保证属性 imageType 正确,H5端注意处理图片资源跨域问题-->
        <wui-slider-captcha
                ref="scRef"
                :src="srcUrl"
                @success="success"
                @fail="fail"
        >
        </wui-slider-captcha>
    </view>
    
     //图片地址(默认宽高比2:1)
      const srcUrl = ref<any>('');
      const current = ref<any>(0);
      onLoad(() => {
        getVerifyImage();
      });
      const getVerifyImage = () => {
        //获取需要验证的图片
        let index = current.value;
        index++;
        if (index > 3) {
          index = 1;
        }
        current.value = index;
        srcUrl.value = `https://womanhospital-oss.gjwlyy.com/common/picture/20230606/1686018743300908.jpeg`;
      };
      const scRef = ref<any>('');
      const btnVerify = () => {
        //需要等组件初始化完成
        scRef.value && scRef.value.show();
      };
      const success = e => {
        Toast('验证通过!');
        setTimeout(() => {
          //关闭验证框
          scRef.value.closeVerify();
        }, 200);
      };
      const fail = e => {
        //当验证失败多次时,可在这里做相应处理
        let times = e.times;
        Toast('验证失败!');
        if (times >= 3) {
          getVerifyImage();
        }
      };
    

    # Slots

    插槽名称 说明
    - -

    # Props

    属性名 类型 说明 默认值 平台差异说明
    type Number, String 验证类型:1-前端验证,后端只需提供图片即可 2-结合后端验证(除了图片,还需根据前端设置的图片宽高获取位置信息) 1 -
    range Number, String 拼图误差范围,单位px。type=1时有效 3 -
    location Object 裁切的图片与被裁切位置信息,type=2结合后端验证需要传入x,x1,y的值 { } -
    src String 背景图片地址,必选参数。还需设置属性imageType值 - -
    imageType Number, String 背景图片类型:1-网络地址(必须保证可以下载,H5端注意处理图片资源跨域问题) 2-base64(仅app,微信小程序,H5) 3-本地图片(查看canvas文档是否支持),必选参数 1 -
    width Number, String 背景图片宽度,单位rpx 640 -
    height Number, String 背景图片高度,单位rpx 320 -
    background String 验证弹层背景颜色 #FFFFFF -
    title String 验证弹层标题。请限制字数,避免过长 安全验证 -
    color String 标题字体颜色 #B2B2B2 -
    size Number, String 标题字体大小,单位rpx 28 -
    descrColor String 验证提示字体颜色 #333333 -
    closeColor String 关闭图标颜色 #B2B2B2 -
    sliderBgColor String 滑块的背景颜色 #465CFF 非Nvue端默认为空,可通过css变量(--fui-color-primary)来修改颜色值
    slideColor String 滑动图标颜色(滑块内部图标) #FFFFFF -
    zIndex Number, String 验证弹层层级z-index值 996 -
    maskBgColor String 遮罩背景色 rgba(0,0,0,.6) -
    maskClosable Boolean 点击遮罩是否可关闭验证弹框 false -
    //属性location 参数说明:
    //注:裁剪图片尺寸默认宽高44px,以下单位均为px
    //需要滑动的总距离为x1-x
    {
    	//裁剪下的小图片在背景图片中的left值
    	x:20,
    	//被裁剪位置在背景图片中的left值
    	x1:200,
    	//裁剪图片与被裁剪位置在背景图片中的top值
    	y:20
    }
    
    //特别说明:
    //x、x1、y应该均为在一定范围内随机产生,请参考js方法:
    getRandom(min, max) {
    	let range = Array.from(new Array(max + 1).keys()).slice(min);
    	let index = Math.floor((Math.random() * range.length));
    	return range[index]
    },
    //this.w 背景图片宽度,单位px、this.h 背景图片高度,单位px
    //其中 44 为裁剪图片的宽高值,固定值,单位px
    getXY() {
    	// x大于等于20,小于等于宽度的一半减去44
    	this.x = this.getRandom(20, this.w / 2 - 44)
    	// y大于等于20,小于等于高度减去60(减去的值大于等于44即可)
    	this.y = this.getRandom(20, this.h - 60)
    	// x1大于宽度一半加上44,宽度减去60(减去的值大于等于44即可)
    	this.x1 = this.getRandom(this.w / 2 + 44, this.w - 60)
    }
    

    # Events

    注:以下所有回调参数涉及单位的均为px

    事件名 说明 回调参数
    @success 验证成功时触发,仅前端验证时有效 -
    @fail 验证失败时触发,仅前端验证时有效 {
    times:验证失败次数
    }
    @init 初始化时触发,仅后端验证时使用 {
    width : 背景图片宽度,
    height :背景图片高度
    cutGraphWidth : 切割图片的宽高
    }
    @verify 待验证,仅后端验证时触发 {
    x : 裁剪图片left值,
    x1 : 被裁位置left值
    slipDistance : 滑动的距离
    }
    //特别说明:
    
    当结合后端进行验证时,应该先通过 @init 事件获取到相应参数,然后请求后端接口获取位置信息以及背景图片。
    
    @verify 事件返回用户操作后滑动的距离,传给后端进行验证。
    
    //验证方法,参考js方法自行转为后端方法
    //width为需要滑动的总距离
    var width = x1 - x
    //滑动距离 减去 总距离 的绝对值 小于等于误差范围即为验证通过
    if (Math.abs(slipDistance - width) <= range) {
    	ins.callMethod('success')
    }
    
    

    # Methods

    通过ref属性来注册组件引用信息。注册完成后,我们可以通过this.$refs.XXX访问到对应的组件实例,并调用上面的实例方法。

    方法名 说明 传入参数 返回参数
    show 打开验证框 refresh:Boolean值,是否刷新位置,仅type=1时有效 -
    closeVerify 关闭验证框并重置验证,后端验证时使用 - -
    fail 验证失败时调用,重置验证,后端验证时使用 - -
    RotateVerify 旋转验证码

    ← RotateVerify 旋转验证码

    Theme by Vdoing | Copyright © 2023-2023 Mr zhang | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式