From a80f1bc960efc94e3f375bc881aa4c495042c10c Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Fri, 17 Nov 2023 16:52:58 +0800 Subject: [PATCH] 首页导航组件显示微调 --- forms/form/CForm.vue | 36 ++++++++++++++++++++++++++++-------- 1 files changed, 28 insertions(+), 8 deletions(-) diff --git a/forms/form/CForm.vue b/forms/form/CForm.vue index 8789128..b968cce 100644 --- a/forms/form/CForm.vue +++ b/forms/form/CForm.vue @@ -4,7 +4,10 @@ */ <template> - <view :class="'c-form-outer ' + (autoScrollToError==='on'?'auto-scroll':'')"> + <view + :class="'c-form-outer ' + (autoScrollToError==='on'?'auto-scroll':'')" + ref="formOuter" + > <form class="c-form" v-if="autoScrollToError==='off'" @@ -32,6 +35,7 @@ <script> import Taro from '@tarojs/taro'; +import { $ } from '@tarojs/extend'; import './cForm.scss'; export default { @@ -58,7 +62,8 @@ formData: this.formData, }, validators: {}, - scrollTop: '', + scrollTop: 0, + offsetTop: 0, }; }, methods: { @@ -79,7 +84,7 @@ // 第一个不通过项提示 if (!validation.passed) { if (this.autoScrollToError === 'on') { - this.scrollTop = validation.offset.top; + this.scrollTop = validation.offset.top - this.offsetTop; } Taro.showToast({ title: validation.msg, @@ -113,7 +118,7 @@ // 第一个不通过项提示 if (!validation.passed) { if (this.autoScrollToError === 'on') { - this.scrollTop = validation.offset.top; + this.scrollTop = validation.offset.top - this.offsetTop; } Taro.showToast({ title: validation.msg, @@ -133,10 +138,10 @@ // 直接设定错误 $setErrors(errors) { const checklist = []; - errors.forEach(errorItem => { - if (typeof this.validators[errorItem.key] !== 'undefined') { + Object.keys(errors).forEach(errorKey => { + if (typeof this.validators[errorKey] !== 'undefined') { checklist.push( - this.validators[errorItem.key]('setError', errorItem.msg) + this.validators[errorKey]('setError', errors[errorKey]) ); } }); @@ -145,7 +150,7 @@ // 第一个不通过项提示 if (!validation.passed) { if (this.autoScrollToError === 'on') { - this.scrollTop = validation.offset.top; + this.scrollTop = validation.offset.top - this.offsetTop; } Taro.showToast({ title: validation.msg, @@ -157,6 +162,11 @@ } } }); + }, + $setScrollTop(top) { + if (this.autoScrollToError === 'on') { + this.scrollTop = top; + } }, }, mounted() { @@ -176,6 +186,16 @@ this.formRes.$regItemValidator = (name, cb) => { this.validators[name] = cb; }; + // 表单滚动偏移 + if (this.autoScrollToError === 'on') { + setTimeout(() => { + $(this.$refs.formOuter) + .offset() + .then(offset => { + this.offsetTop = offset.top + 10; + }); + }, 10); + } }, beforeDestroy() { this.validators = {}; -- Gitblit v1.9.1