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('登记失败，请稍后再试')
      }
    })
  }
}); 
