const app = getApp(); Page({ data: { address: app.globalData.currentAccountInfo.address, contact: '', phone: '', repairType: '', description: '', imageList: [], showNotification: true, countDown: 3, isFormValid: false, isPreviewMode: false, replyTime: '', replyContent: '', id: '', mode: '', isReplied: false, formSubmitted: false, }, onLoad: function (options) { const isReplied = options.isReplied === 'true'; if (options.mode === 'preview') { this.setData({ isPreviewMode: true, showNotification: false, id: options.id, mode: options.mode, isReplied: isReplied }); this.loadPreviewData(options.id); } else { this.startCountDown(); this.setData({ id: options.id || '', mode: options.mode || '', isReplied: isReplied }); } }, startCountDown: function () { let that = this; let timer = setInterval(function () { if (that.data.countDown > 0) { that.setData({ countDown: that.data.countDown - 1 }); } else { clearInterval(timer); } }, 1000); }, closeNotification: function () { if (this.data.countDown <= 0) { this.setData({ showNotification: false }); } }, goBack: function () { wx.navigateBack(); }, inputContact: function (e) { this.setData({ contact: e.detail.value }); this.checkFormValidity(); }, inputPhone: function (e) { const value = e.detail.value; const phoneNumber = value.replace(/\D/g, ''); this.setData({ phone: phoneNumber }); this.checkFormValidity(); }, validatePhone: function (phone) { const phoneReg = /^1[3-9]\d{9}$/; return phoneReg.test(phone); }, showRepairTypeSelector: function () { let that = this; wx.showActionSheet({ itemList: ['水管漏水', '水表故障', '水龙头故障', '其他问题'], success: function (res) { const types = ['水管漏水', '水表故障', '水龙头故障', '其他问题']; that.setData({ repairType: types[res.tapIndex] }); that.checkFormValidity(); } }); }, inputDescription: function (e) { this.setData({ description: e.detail.value }); this.checkFormValidity(); }, chooseImage: function () { let that = this; if (that.data.imageList.length >= 10) { wx.showToast({ title: '最多只能上传10张图片', icon: 'none' }); return; } wx.chooseMedia({ count: 10 - that.data.imageList.length, mediaType: ['image'], sourceType: ['album', 'camera'], sizeType: ['compressed'], success: function (res) { let tempFiles = res.tempFiles; let validFiles = []; for (let i = 0; i < tempFiles.length; i++) { const file = tempFiles[i]; if (file.size <= 10 * 1024 * 1024) { validFiles.push(file); } else { wx.showToast({ title: '图片大小不能超过10M', icon: 'none' }); } } if (validFiles.length > 0) { let newImageList = that.data.imageList.concat(validFiles); that.setData({ imageList: newImageList }); } } }); }, previewImage: function (e) { let index = e.currentTarget.dataset.index; wx.previewImage({ current: this.data.imageList[index], urls: this.data.imageList }); }, deleteImage: function (e) { let index = e.currentTarget.dataset.index; let imageList = this.data.imageList; imageList.splice(index, 1); this.setData({ imageList: imageList }); }, checkFormValidity: function () { const { contact, phone, address, repairType, description } = this.data; const isValid = contact && phone && address && repairType && description; this.setData({ isFormValid: isValid }); return isValid; }, onInputChange: function (e) { const { field } = e.currentTarget.dataset; const { value } = e.detail; this.setData({ [field]: value }); this.checkFormValidity(); }, bindPickerChange: function (e) { this.checkFormValidity(); }, submitRepair: function () { if (!this.checkFormValidity()) { wx.showToast({ title: '请填写完整信息', icon: 'none' }); return; } if (!this.validatePhone(this.data.phone)) { wx.showToast({ title: '请输入正确的手机号', icon: 'none' }); return; } const submitData = { address: this.data.address, contact: this.data.contact, phone: this.data.phone, repairType: this.data.repairType, description: this.data.description, images: this.data.imageList }; console.log('提交的数据:', submitData); wx.showLoading({ title: '提交中...', }); setTimeout(() => { wx.hideLoading(); wx.showToast({ icon: 'success', duration: 2000, success: function () { setTimeout(() => { wx.navigateTo({ url: '/pages/baoxiuSuccess/baoxiuSuccess', }); }, 2000); } }); }, 1500); }, loadPreviewData: function (id) { wx.showLoading({ title: '加载中...', }); // 从上一个页面获取数据 const pages = getCurrentPages(); const prevPage = pages[pages.length - 2]; // 获取上一个页面 if (prevPage && prevPage.data && prevPage.data.noticeList) { // 根据id查找对应的报修项 const item = prevPage.data.noticeList.find(item => item.id == id); debugger if (item) { // 格式化时间 const formatTime = (timeString) => { if (!timeString) return ''; // 如果时间为空,返回空字符串 const date = new Date(timeString); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份补零 const day = String(date.getDate()).padStart(2, '0'); // 日期补零 return `${year}-${month}-${day}`; }; this.setData({ address: item.address || '', contact: item.contact || '', phone: item.contactnumber || '', repairType: item.repairtype || '', description: item.faultdescription || '', imageList: item.attachments || [], replyTime: item.isReplied ? formatTime(item.repairtime) : '', replyContent: item.isReplied ? item.remark : '' }); } } wx.hideLoading(); }, submitForm: function () { if (this.data.isPreviewMode) { return; } if (!this.checkFormValidity()) { wx.showToast({ title: '请填写完整信息', icon: 'none' }); return; } if (!this.validatePhone(this.data.phone)) { wx.showToast({ title: '请输入正确的手机号', icon: 'none' }); return; } const fileManager = wx.getFileSystemManager(); this.data.imageList.map(imgInfo => { const base64 = fileManager.readFileSync(imgInfo.tempFilePath, 'base64'); imgInfo.base64 = base64; return imgInfo; }) const submitData = { address: this.data.address, contact: this.data.contact, phone: this.data.phone, repairType: this.data.repairType, description: this.data.description, images: this.data.imageList }; console.log('提交的数据:', submitData); wx.showLoading({ title: '提交中...', }); wx.request({ url: app.globalData.interfaceUrls.repairRegistration, method: 'POST', header: { 'content-type': 'application/json', // 默认值 'token': app.globalData.userWxInfo.token, 'source': "wc", '!SAAS_LOGIN_TOKEN_!': app.globalData.currentAccountInfo.dsKey }, data: submitData, success(res) { wx.hideLoading(); if (res.data.code == '200') { debugger wx.navigateTo({ url: '/pages/baoxiuSuccess/baoxiuSuccess', }); } }, fail(error) { wx.hideLoading() utils.simleInfo('登记失败,请稍后再试') } }) // 在提交成功后设置标记 this.setData({ formSubmitted: true }); }, inputAddress: function (e) { this.setData({ address: e.detail.value }); }, onShow: function () { // 检查是否是从成功页面返回 if (this.data.formSubmitted) { // 重置表单数据 this.resetForm(); // 重置提交状态标记 this.setData({ formSubmitted: false }); } }, // 添加重置表单的方法 resetForm: function () { this.setData({ contact: '', phone: '', repairType: '', description: '', imageList: [] }); }, });