与牧同行-小程序用户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

148 lines
2.9 KiB

Page({
/**
* 页面的初始数据
*/
data: {
formData: {
petType: '',
petAge: '',
petGender: '',
symptoms: '',
images: []
},
symptomsLength: 0,
isSubmitting: false,
isFormValid: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 初始化表单验证
this.checkFormValidity();
},
// 宠物类型输入
onPetTypeInput(e) {
const value = e.detail.value;
this.setData({
'formData.petType': value
}, () => {
this.checkFormValidity();
});
},
// 宠物年龄输入
onPetAgeInput(e) {
const value = e.detail.value;
this.setData({
'formData.petAge': value
}, () => {
this.checkFormValidity();
});
},
// 选择性别
selectGender(e) {
const value = e.currentTarget.dataset.value;
this.setData({
'formData.petGender': value
}, () => {
this.checkFormValidity();
});
},
// 症状描述输入
onSymptomsInput(e) {
const value = e.detail.value;
this.setData({
'formData.symptoms': value,
symptomsLength: value.length
}, () => {
this.checkFormValidity();
});
},
// 选择图片
chooseImage() {
if (this.data.formData.images.length >= 3) {
wx.showToast({
title: '最多上传3张图片',
icon: 'none'
});
return;
}
wx.chooseImage({
count: 3 - this.data.formData.images.length,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
const tempFilePaths = res.tempFilePaths;
const images = [...this.data.formData.images, ...tempFilePaths];
this.setData({
'formData.images': images
});
}
});
},
// 移除图片
removeImage(e) {
const index = e.currentTarget.dataset.index;
const images = [...this.data.formData.images];
images.splice(index, 1);
this.setData({
'formData.images': images
});
},
// 预览图片
previewImage(e) {
const current = e.currentTarget.dataset.url;
const urls = e.currentTarget.dataset.urls;
wx.previewImage({
current,
urls
});
},
// 检查表单有效性
checkFormValidity() {
const { petType, petAge, petGender, symptoms } = this.data.formData;
const isValid = petType.trim() && petAge && petGender && symptoms.trim();
this.setData({
isFormValid: !!isValid
});
},
// 表单提交
submitForm(e) {
if (this.data.isSubmitting || !this.data.isFormValid) {
return;
}
this.setData({
isSubmitting: true
});
// 模拟提交
setTimeout(() => {
wx.showToast({
title: '提交成功',
icon: 'success',
duration: 1500,
success: () => {
setTimeout(() => {
wx.navigateTo({
url: '/pagesA/pages/askingSy/askingSy',
})
}, 1500);
}
});
}, 1500);
}
});