滚动方法:
javascript
scrollToElement(refName) {
const selector = `#${refName}Ref`;
const query = uni.createSelectorQuery().in(this);
query.select(selector).boundingClientRect(res => {
if (res) {
console.log(this.currentScrollTop, res.top, this.currentScrollTop + res.top)
// ✅ 正确计算:绝对位置 = 已滚动距离 + 元素在视口中的偏移
const absoluteTop = this.currentScrollTop + res.top;
// 可选:减去顶部固定区域高度(如导航栏 88px)
const targetScrollTop = absoluteTop - 80;
uni.pageScrollTo({
scrollTop: Math.max(0, targetScrollTop), // 防止负数
duration: 300
});
} else {
console.warn('未找到元素:', selector);
}
}).exec();
},
javascript
onPageScroll(e) {
// console.log(e, 'e')
this.currentScrollTop = e.scrollTop;
},
javascript
currentScrollTop: 0,//滚动距离
javascript
<u-form-item v-else :label="v.label" :labelWidth='v.labelWidth' :class="{'required':v.required}"
v-bind="v.required ? { prop: v.key } : {}" :ref="v.key+'Ref'" :id="v.key+'Ref'">
表单验证:
javascript
async submit() {
console.log(this.formData)
this.$refs.formDataRef.validate().then(valid => {
if (this.formData.loading) return;
let d = {
USERNAME: uni.getStorageSync('userName'),
FACTORYNAME: uni.getStorageSync('factory'),
COMMANDTYPE: 'SPRCut',
// LOTNAME: this.formData.LOTNAME,
LOTNAME: this.formData.lotID,
PRODUCTREQUESTNAME: this.formData.PRODUCTREQUESTNAME,
OPERATIONNAME: this.formData.OPERATIONNAME,
MACHINENAME: this.formData.MACHINENAME,
CARRIERNAME: this.formData.CARRIERNAME,
// MATERIALID: this.formData.MATERIALID, //卷材ID
MATERIALID: this.formData.source_material_id, //卷材ID
LENGTH: this.formData.LENGTH,
comment: this.formData.comment,
}
if (this.formData.LENGTH <= 0) {
this.showError('长度有误!')
return;
}
if (this.formData.LENGTH > this.formData.lot_length) {
this.showError('剩余长度:' + this.formData.lot_length)
return;
}
this.showToast();
this.formData.loading = true;
this.$api.CLT_PRODUCT_EVENT(d).then(async res => {
if (res.code === 0) {
// this.infoData = {}
this.showSuccess('操作成功!')
} else {
this.showError(res.msg)
}
}).catch(res => {
this.showError(res.msg)
}).finally(() => {
this.formData.loading = false;
uni.hideLoading();
})
}).catch((err) => {
console.log('表单错误:', err)
this.$refs.formDataRef.scrollToElement(err[0].field)
uni.$u.toast(err && err[0].message)
})
},