const app = getApp()
const utils = require("../../utils/util.js")
Page({
  data: {
    selectedTag: '',
    showCustomInput: false,
    customTagLength: 0,
    showDrawer: false,
    showPreview: false,
    // 是否可以切换水务公司
    isChange: true,

    // 新增数据
    waterCompany: '',
    waterCompanyList: app.globalData.waterCompanys,
    //当前用户的默认水务公司的下标
    waterCompanyIndex: [0],
    waterCompanyId: app.globalData.launchPara,
    showWaterCompanyPicker: false,
    
    huHao: '',
    huMing: '',
    customTag: '',
    tagLength: 0,
    showQueryMethods: false,
    // 水站联系方式
    phoneQueryList: [
    ],
    // 户号预览图地址
    ylt: '',
    isBinding: false  // 添加一个标记，表示是否正在绑定中
  },

  selectTag: function(e) {
    const tag = e.currentTarget.dataset.tag;
    this.setData({
      selectedTag: tag,
      showCustomInput: tag === '自定义',
      customTag: tag === '自定义' ? '' : tag,
      tagLength: 0  // 重置计数器
    });
  },

  onCustomInput(e) {
    const value = e.detail.value;
    this.setData({
      customTagLength: value.length,
      customTag: value
    });
  },

  // 显示抽屉
  showDrawer() {
    this.setData({
      showDrawer: true
    });
  },

  // 隐藏抽屉
  hideDrawer() {
    this.setData({
      showDrawer: false
    });
  },

  // 拨打电话
  makePhoneCall(e) {
    const phone = e.currentTarget.dataset.phone;
    wx.makePhoneCall({
      phoneNumber: phone
    });
  },

  // 修改预览图片方法
  previewImage: function() {
    this.setData({
      showPreview: true
    });
  },

  // 关闭预览
  closePreview: function() {
    this.setData({
      showPreview: false
    });
  },

  // 防止点击图片内容时关闭预览
  preventBubble: function() {
    return;
  },

  // 显示水站公司选择器
  showWaterCompanyPicker: function() {
    
    this.setData({
      showWaterCompanyPicker: true,
      waterCompanyIndex: this.data.waterCompanyIndex
    });
  },

  // 隐藏水站公司选择器
  hideWaterCompanyPicker: function() {
    this.setData({
      showWaterCompanyPicker: false
    });
  },

  // 水站公司选择变化
  onWaterCompanyChange: function(e) {
    
    this.setData({
      waterCompanyIndex: e.detail.value
    });
  },

  // 确认水站公司选择
  confirmWaterCompany: function(e) {
    const index = this.data.waterCompanyIndex[0];
    this.setData({
      waterCompanyIndex: this.data.waterCompanyIndex,
      waterCompany: this.data.waterCompanyList[index].name,
      showWaterCompanyPicker: false,
      phoneQueryList:  this.data.waterCompanyList[index].businessPoint.map((data,index)=>{
        return  {
          id: index+1,
          name:  index+1+'、'+data.address,
          phone: data.contactphone,
          time: data.worktime
        }
      }),
      ylt:app.globalData.imgPreviewUrl+"pagePart/"+this.data.waterCompanyList[index].swCompanyInfo.overduenoticeimage.split("-;-")[0]
      
    });
  },

  // 户号输入
  onHuHaoInput: function(e) {
    // 使用正则表达式去除非数字字符
    const value = e.detail.value.replace(/[^\d]/g, '');
    // 更新输入框的值
    this.setData({
      huHao: value
    });
  },

  // 户名输入
  onHuMingInput: function(e) {
    // 使用正则表达式去除所有空格
    const value = e.detail.value.replace(/\s/g, '');
    this.setData({
      huMing: value
    });
  },

  // 确认绑定
  confirmBinding: function() {
    // 如果已经在处理绑定请求，则直接返回
    if (this.data.isBinding) {
      return;
    }

    // 设置绑定状态为true，防止重复点击
    this.setData({
      isBinding: true
    });

    // 验证必填字段
    if (!this.data.waterCompany) {
      wx.showToast({
        title: '请选择水站公司',
        icon: 'none'
      });
      this.setData({ isBinding: false }); // 重置状态
      return;
    }

    if (!this.data.huHao) {
      wx.showToast({
        title: '请输入户号',
        icon: 'none'
      });
      this.setData({ isBinding: false }); // 重置状态
      return;
    }

    if (!this.data.huMing) {
      wx.showToast({
        title: '请输入户名',
        icon: 'none'
      });
      this.setData({ isBinding: false }); // 重置状态
      return;
    }

    // 获取最终的标签值
    let finalTag = this.data.selectedTag;
    // debugger

    if (this.data.selectedTag === '自定义') {
      finalTag = this.data.customTag || ''; // 使用用户输入的自定义标签
    }
    
    // 如果选择了自定义但没有输入内容，提示用户
    if (this.data.selectedTag === '自定义' && !this.data.customTag) {
      wx.showToast({
        title: '请输入自定义标签名称',
        icon: 'none'
      });
      this.setData({ isBinding: false }); // 重置状态
      return;
    }
    
    // 构建保存的数据对象
    const bindingData = {
      bindWaterCompany: this.data.waterCompanyList[this.data.waterCompanyIndex[0]].id,
      accountNum: this.data.huHao,
      accountName: this.data.huMing,
      groupType: finalTag,  // 使用处理后的标签值
      openId: app.globalData.userWxInfo.openid,
      otherDsKey: (app.globalData.bindAccountInfo||[]).map(data=>data.dsKey)
    };
    // debugger
    // 提交数据
    wx.showLoading({
      title: '绑定中...',
    });

    const that = this; // 保存this引用
    // 调用绑定接口
    wx.request({
      url: app.globalData.interfaceUrls.accountBind,
      method: 'POST',
      data: bindingData,
      header: {
        'content-type': 'application/json', // 默认值
        'token':app.globalData.userWxInfo.token,
        'source':"wc",
        '!SAAS_LOGIN_TOKEN_!':this.data.waterCompanyList[this.data.waterCompanyIndex[0]].id
      },
      success (res) {
        wx.hideLoading();
        let apiReturnData=res.data
        if(apiReturnData.code=='200'){
          wx.hideLoading();
          utils.simleInfo('绑定成功')
          app.globalData.currentAccountInfo=apiReturnData.data[0];
          setTimeout(function(){
            app.globalData.refresh=1;
            // 使用重定向而不是switchTab，确保homepage完全重新加载
            wx.reLaunch({
              url: '/pages/homepage/homepage',
            });
          },2000)
        }else{
          wx.showToast({
            title: apiReturnData.msg,
            icon: 'error',
            duration: 2000
          })
          wx.hideLoading();
          that.setData({ isBinding: false }); // 重置绑定状态
        }
      },
      fail(error) {
        wx.hideLoading()
        utils.simleInfo('登录失败，请稍后再试')
        that.setData({ isBinding: false }); // 重置绑定状态
      }
    })
  },

  onLoad: function() {
    // 延迟设置导航栏，确保页面已完全加载
    setTimeout(() => {
      wx.setNavigationBarTitle({
        title: '户号绑定'
      });
      wx.setNavigationBarColor({
        frontColor: '#ffffff',
        backgroundColor: '#0066FF'
      });
    }, 100);
    if(app.globalData.launchPara){
      this.setData({
        waterCompanyIndex:[app.globalData.waterCompanys.findIndex(data=>data.id==app.globalData.launchPara)],
        waterCompany: app.globalData.waterCompanys.filter(data=>data.id==app.globalData.launchPara)[0].name,
        isChange:false,
        phoneQueryList: app.globalData.waterCompanys.filter(data=>data.id==app.globalData.launchPara)[0].businessPoint.map((data,index)=>{
          return  {
            id: index+1,
            name: data.address,
            phone: data.contactphone,
            time: data.worktime
          }
        }),
        ylt:app.globalData.imgPreviewUrl+
        app.globalData.currentAccountInfo.dsId+"?fileId="
        +app.globalData.waterCompanys.filter(data=>data.id==app.globalData.launchPara)[0].swCompanyInfo.overduenoticeimage.split("-;-")[1]
      });
    }
  },

  /**
   * 返回上一页
   */
  goBack: function () {
    wx.navigateBack();
  },

  onTagInput: function(e) {
    let value = e.detail.value;
    
    // 如果超过4个字符，截取前4个字符
    if (value.length > 4) {
      value = value.slice(0, 4);
    }
    
    this.setData({
      tagLength: value.length,
      customTag: value
    });
  },

  showQueryMethodsModal() {
    this.setData({
      showQueryMethods: true
    });
  },

  closeQueryMethods() {
    this.setData({
      showQueryMethods: false
    });
  },

  preventTouchMove: function(e) {
    // 阻止蒙层的触摸移动事件传递，但允许drawer内部滚动
    return false;
  }
});
