用于敏感操作的二次确认组件
图片如下
功能如下
① 创建安全码 (需要辅助验证码 如微信验证码 手机验证码 密码等) 充当 "支付密码“
② 修改安全码 可以在配置参数中设置 修改安全码 同样需要辅助验证码
③ 校验验证码 输入验证码做二次确认
具体自定义显示参数
参数名 | 参数含义 | 备注 |
downcount | 每一次获取辅助验证码的倒计时(秒) | 60表示每一次获取需要倒计时60秒 |
form_code | 安全码表单名 | 默认 "输入安全码" |
form_verify | 辅助验证码表单名 | 默认 "输入验证码" |
title_add | 创建安全码顶部标题 | 默认 "请先设置安全密码" |
title_modify | 修改安全码顶部标题 | 默认 "如有需要,请修改安全码" |
title_input | 校验安全码顶部标题 | 默认"敏感操作需要验证安全码" |
title_uninput_verify | 点击完成按钮时未输入验证码提示 | 默认"未输入验证码,请先获取" |
title_uninput_code | 点击完成按钮时未输入安全码提示 | 默认"未输入安全码" |
title_maxerror | 输入安全码失败次数过多提示 | 默认"输入失败次数太多,无法提交" |
title_verify_btn | 获取验证码按钮名称 | 默认"获取验证码" |
title_finish_btn | 确定按钮名称 | 默认"确定" |
title_success_add | 创建安全码成功提示 | 默认"设置安全码成功" |
title_success_input | 校验安全码成功提示 | 默认"安全码校验成功" |
title_success_modify | 修改安全码成功提示 | 默认"安全码修改成功" |
title_verify_kind | 验证码类型标题 | 默认"验证码类型" |
具体自定义配置参数
参数名 | 参数含义 | 备注 |
code | 存储表单输入的安全码 | 可空 用于可以自行传入 |
allowClose | 是否允许打开弹窗后点击关闭 | boolean 默认为 false |
key | 每一个弹窗界面的标记ID | 必填 |
distance | 时间差间隔 单位 秒 结合key判断已经在短时间校验后绕过校验 | 默认0 每次都得输入安全码校验 |
tips | 底部提示 *号标记说明 | 可空 |
type | 弹窗类型 | 默认为 0 ,0 校验码确认 1 创建校验码 2 修改校验码 |
max_error_num | 最大试错次数 结合key判断 | 默认为0 不记错 3表示短时间试错三次禁止提交 |
code_type | 安全码控件类型 | 与uniapp input 空间 type属性一致 默认为 number |
verify_kind_names | 数组 验证类型标题数组 | 1.0.1新增 可空 |
verify_kind_values | 数组 验证类型标识数组 用于非连续索引 | 1.0.1新增 可以是数值或字符 可空 |
使用流程
① 引入组件到当前页面
import jySafeCode from "@/components/jy-safeCode/safeCode.vue";
② 将组件注册到当前页面
components: {
jySafeCode
},
③ 引入到视图界面
<jySafeCode ref="jySafeCode" @callback="handle_safecode"></jySafeCode>
④ 在需要触发组件的时候打开弹窗 根据具体业务引入初始化相关自定义配置参数 如上表2
var data = {
'key':'code',
'type':0
};
app.post('api/safe/exists',{'kind':2},(res)=>{
if (res.status) {
if (res.data!=true) {
data.tips = '还未创建安全码,请先创建';
data.type = 1;
}
this.$refs.jySafeCode.showUI(data);
}
});
⑤ 添加业务回调实现 (创建、修改、校验、获取验证码操作)
在组件回调函数中传入 JSON格式数据,如下
{"status":0,"msg":"错误内容"}
{"status":1,"data":1}
handle_safecode(data, callback) {
if (data.kind == 'verify') {
app.post('api/verify/send', {
'type': 'SAFE-CODE',
'message': data.type == 1 ? 'safe-code-create' : 'safe-code-change'
}, (res) = > {
callback(res);
});
} else if (data.kind == 'finish') {
if (data.type == 0) {
//验证
app.post('api/safe/verify', {
kind: 2,
_safe_code: data.code
}, (res) = > {
if (res.status == 1 && res.data == true) {
app.post('api/manage/removeGood', {
_id: _id,
_safe_code: data.code
}, (res) = > {
app.Toast(res.status == 1 ? '删除成功' : res.msg);
res.hideToast = true;
callback(res);
if (res.status == 1) {
uni.setStorageSync('Load_shop', 'Load')
app.delayback()
}
});
} else {
callback({
'status': 0,
'msg': '安全码错误'
});
}
})
} else {
app.post('api/safe/' + (data.type == 1 ? 'create' : 'change'), {
'kind': 2,
'value': data.code,
'verify_code': data.verify
}, (res) = > {
callback(res);
});
}
}
}
备注
如果需要自定义页面内容显示 可以调用组件初始化函数 将合法字段内容覆盖默认字段,具体看上表1
var arr = {
'downcount': 120
};
this.$refs.jySafeCode.initFields(arr);
组件1.0.1新增功能
允许客户端用户选择验证码类型 如 公众号 短信验证 由传入参数具体确定
verify_kind_names
verify_kind_values
数组元素大于1时才会有筛选