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
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);
|
|
}
|
|
});
|