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, }, 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: 3 - that.data.imageList.length, mediaType: ['image'], sourceType: ['album', 'camera'], sizeType: ['compressed'], success: function(res) { let tempFiles = res.tempFiles; let validFiles = []; debugger; for (let i = 0; i < tempFiles.length; i++) { const file = tempFiles[i]; if (file.size <= 5 * 1024 * 1024) { validFiles.push(file); } else { wx.showToast({ title: '图片大小不能超过5M', 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); if (item) { this.setData({ address: item.address || '', contact: item.contact || '', phone: item.phone || '', repairType: item.type || '', description: item.content || '', imageList: item.hasAttachment ? item.attachments : [], replyTime: item.isReplied ? item.replyTime : '', replyContent: item.isReplied ? item.replyContent : '' }); } } 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'){ wx.navigateTo({ url: '/pages/baoxiuSuccess/baoxiuSuccess', }); } }, fail(error) { wx.hideLoading() utils.simleInfo('登记失败,请稍后再试') } }) } });