From 2f47c2a4ec2093b1bb9d06f5b3669c37f1dcbc75 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Thu, 16 May 2024 17:29:57 +0800 Subject: [PATCH] 列表页面筛选组件,调整横条日期选择样式 --- forms/form/CFormItem.vue | 91 +++++++++++++++++++++++++++++---------------- 1 files changed, 58 insertions(+), 33 deletions(-) diff --git a/forms/form/CFormItem.vue b/forms/form/CFormItem.vue index 1187f85..a47639f 100644 --- a/forms/form/CFormItem.vue +++ b/forms/form/CFormItem.vue @@ -5,12 +5,16 @@ */ <template> - <view class="c-form-item"> + <view + class="c-form-item" + ref="formItem" + > <slot :itemRes="itemRes" /> </view> </template> <script> +import { $ } from '@tarojs/extend'; import Schema from 'async-validator'; import { validateMsgs } from './validateMsgs.js'; @@ -109,15 +113,33 @@ mounted() { this.$nextTick(() => { // 注册验证 - this.formRes.$regItemValidator(this.name, validateType => { + this.formRes.$regItemValidator(this.name, (validateType, errMsg) => { + // 直接设定错误 + if (validateType === 'setError') { + this.$setError(); + return new Promise((resolve, reject) => { + $(this.$refs.formItem) + .offset() + .then(offset => { + resolve({ + name: this.name, + passed: false, + msg: errMsg, + offset, + }); + }); + }); + } // 未设置验证 - if (!this.required && !this.rules) { + else if (!this.required && !this.rules) { this.error = false; return Promise.resolve({ name: this.name, passed: true, }); - } else { + } + // 正常验证 + else { // 验证规则 const descriptor = this.rules || []; if (this.required) { @@ -130,36 +152,39 @@ }); // 汉化通用验证消息 validator.messages(validateMsgs); - return validator - .validate({ - [this.name]: this.formRes.formData[this.name], - }) - .then( - res => { - this.error = false; - return { - name: this.name, - passed: true, - }; - }, - ({ errors, fields }) => { - if (validateType !== 'msgOnly') { - this.error = true; - clearTimeout(this.errTimer); - this.errTimer = setTimeout(() => { - this.error = false; - }, 5000); + return new Promise((resolve, reject) => { + validator + .validate({ + [this.name]: this.formRes.formData[this.name], + }) + .then( + res => { + this.error = false; + resolve({ + name: this.name, + passed: true, + }); + }, + ({ errors, fields }) => { + if (validateType !== 'msgOnly') { + this.$setError(); + } + $(this.$refs.formItem) + .offset() + .then(offset => { + resolve({ + name: this.name, + passed: false, + msg: errors[0].message.replace( + this.name, + this.label || this.name + ), + offset, + }); + }); } - return { - name: this.name, - passed: false, - msg: errors[0].message.replace( - this.name, - this.label || this.name - ), - }; - } - ); + ); + }); } }); }); -- Gitblit v1.9.1