From 8f73817cd1fdbd3e3b23d76d0ce6ba65a85e8950 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Thu, 08 Jul 2021 19:12:46 +0800 Subject: [PATCH] 实现快递单号扫描输入组件 --- forms/form/CForm.vue | 31 ++++++++++++++++++------------- 1 files changed, 18 insertions(+), 13 deletions(-) diff --git a/forms/form/CForm.vue b/forms/form/CForm.vue index 6008449..8e42097 100644 --- a/forms/form/CForm.vue +++ b/forms/form/CForm.vue @@ -1,5 +1,5 @@ /** - * CForm + * CForm - 表单套装组件,套件的主体 * @author Tevin */ @@ -19,8 +19,14 @@ export default { name: 'CForm', props: { + // 表单数据主体 formData: Object, + // 表单项变化的回调 + // 回调传参只有单项数据 onChange: Function, + // 表单完成的回调 + // 提交且通过表单验证后调用,不通过验证不调用 + // 回调传参包含整个表单数据 onFinish: Function, }, data() { @@ -34,13 +40,14 @@ methods: { handleSubmit() { const checklist = []; - Object.keys(this.validators).forEach((key) => { + // 所有项验证 + Object.keys(this.validators).forEach(key => { // 仍有效的验证器 if (this.validators[key]) { checklist.push(this.validators[key]()); } }); - Promise.all(checklist).then((validations) => { + Promise.all(checklist).then(validations => { for (let validation of validations) { // 第一个不通过项提示 if (!validation.passed) { @@ -57,20 +64,18 @@ this.onFinish && this.onFinish(); }); }, - preCheckValidators(callback) { + preCheckValidators(keys, callback) { const checklist = []; - Object.keys(this.validators).forEach((key) => { - // 仍有效的验证器 + // 从选定的项中验证 + keys.forEach(key => { + // 效的验证器 if (this.validators[key]) { checklist.push(this.validators[key]('msgOnly')); } }); - Promise.all(checklist).then((validations) => { + Promise.all(checklist).then(validations => { for (let validation of validations) { - // 跳过同意协议 - if (validation.name === '$agreement') { - continue; - } + // 第一个不通过项提示 if (!validation.passed) { Taro.showToast({ title: validation.msg, @@ -83,7 +88,7 @@ return; } } - // 检查通过 + // 所有检查通过 callback && callback(true); }); }, @@ -91,7 +96,7 @@ mounted() { // 当表单项变化时 this.formRes.$handleChange = (evt = []) => { - Object.keys(evt).forEach((key) => { + Object.keys(evt).forEach(key => { // 直接改值 if (typeof this.formRes.formData[key] === 'undefined') { this.$set(this.formRes.formData, key, evt[key]); -- Gitblit v1.9.1