import { baseUrl } from "../../../request"

// pages/personCenter/bindBankCard/bindBankCard.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    id: 0, // 账户ID
    cardHolder: '',    // 持卡人
    idCardNumber: '',  // 身份证号
    phoneNumber: '',   // 手机号
    bankCardNumber: '', // 银行卡号
    bankName: '',      // 开户银行
    isUpdate: false,  // 是否更新
  },


  /**
   * 更新按钮点击事件
   */
  updateInfo() {
    if (this.validateForm()) {
      // 构建请求体
      const requestData = {
        id: this.data.id,
        cardHolder: this.data.cardHolder,
        idCardNumber: this.data.idCardNumber,
        phoneNumber: this.data.phoneNumber,  
        bankCardNumber: this.data.bankCardNumber,  
        openBank: this.data.bankName,  // 添加开户银行字段
      };

      // 发送请求到后台接口
      wx.request({
        url: baseUrl + '/userAccount/update',  // 替换成实际接口地址
        method: 'POST',
        header: {
          Authorization: wx.getStorageSync('token')
        },
        data: requestData,
        success(res) {
          // console.log('后端返回---->',res.data);
          // 成功的回调
          if (res.data.code === 1) {
            wx.showToast({
              title: '更新成功',
              icon: 'success',
            });
            setTimeout(() => {
              wx.navigateBack({});
            }, 1000)
          }
        },
        fail(err) {
          // 失败的回调
          wx.showToast({
            title: '绑定失败，请重试',
            icon: 'none',
          });
        }
      });
    }
  },

  // 获取当前账户信息
  getAccountInfo() {
    wx.request({
      url: baseUrl + '/userAccount/queryById', // 替换为你的后端接口
      method: 'POST',
      header: {
        Authorization: wx.getStorageSync('token'),
      },
      success: (res) => {
        // console.log('当前账户是---->',res.data.data);
        if (res.data.code === 1) {
          this.setData({
            id: res.data.data.id,
            cardHolder: res.data.data.cardHolder,
            idCardNumber: res.data.data.idCardNumber,
            phoneNumber: res.data.data.phoneNumber,
            bankCardNumber: res.data.data.bankCardNumber,
            bankName: res.data.data.openBank
          });
        } else {
          wx.showToast({
            title: '获取数据失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '请求失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 处理输入框的变化
   */
  handleInputChange(e) {
    const { field } = e.target.dataset;  // 获取字段名
    this.setData({
      [field]: e.detail.value, // 动态更新输入框数据
    });
  },

  /**
   * 验证表单
   */
  validateForm() {
    const { cardHolder, idCardNumber, phoneNumber, bankCardNumber, bankName } = this.data;

    // 检查必填字段是否为空
    if (!cardHolder || !idCardNumber || !phoneNumber || !bankCardNumber || !bankName) {
      wx.showToast({
        title: '用户信息不全',
        icon: 'none',
      });
      return false;
    }

    // 正则表达式，匹配非汉字字符
    const reg = /[^\u4e00-\u9fa5]/;
    // 判断输入的值是否含有非汉字字符
    if (reg.test(cardHolder)) {
      wx.showToast({
        title: '姓名必须为汉字',
        icon: 'none',
      });
      return false;
    } 
    
    // 检查手机号是否为 11 位且只包含数字
    const phonePattern = /^[0-9]{11}$/;
    if (!phonePattern.test(phoneNumber)) {
      wx.showToast({
        title: '手机号必须是 11 位数字',
        icon: 'none',
      });
      return false;
    }

    // 检查身份证号是否为 18 位且只包含数字
    const idCardPattern = /^[0-9]{18}$/;
    if (!idCardPattern.test(idCardNumber)) {
      wx.showToast({
        title: '身份证号必须是 18 位数字',
        icon: 'none',
      });
      return false;
    }

    // 检查银行卡号是否为 16 - 19 位且只包含数字
    const bankCardPattern = /^[0-9]{16,19}$/;
    if (!bankCardPattern.test(bankCardNumber)) {
      wx.showToast({
        title: '银行卡号必须是 16 - 19 位数字',
        icon: 'none',
      });
      return false;
    }

    // 检查持卡人不能是纯数字
    const cardHolderPattern = /^\d+$/;
    if (cardHolderPattern.test(cardHolder)) {
      wx.showToast({
        title: '持卡人姓名不能是数字',
        icon: 'none',
      });
      return false;
    }

    // 检查开户银行不能包含字母或数字，只能是中文
    const bankNamePattern = /^[\u4e00-\u9fa5]+$/;  // 只允许中文字符
    if (!bankNamePattern.test(bankName)) {
      wx.showToast({
        title: '开户银行只能包含中文字符',
        icon: 'none',
      });
      return false;
    }

    return true;
  },

  /**
   * 保存按钮点击事件
   */
  saveInfo() {
    if (this.validateForm()) {
      // 构建请求体
      const requestData = {
        cardHolder: this.data.cardHolder,
        idCardNumber: this.data.idCardNumber,
        phoneNumber: this.data.phoneNumber,  
        bankCardNumber: this.data.bankCardNumber,  
        openBank: this.data.bankName,  // 添加开户银行字段
      };

      // 发送请求到后台接口
      wx.request({
        url: baseUrl + '/userAccount/add',  // 替换成实际接口地址
        method: 'POST',
        header: {
          Authorization: wx.getStorageSync('token')
        },
        data: requestData,
        success(res) {
          console.log('后端返回---->',res.data);
          // 成功的回调
          wx.showToast({
            title: '绑定成功',
            icon: 'success',
          });
          // 这里可以跳转到其他页面
          let pages = getCurrentPages();  // 获取小程序页面栈
          let beforePage = pages[pages.length - 2]; // 获取上个页面的实例对象
          beforePage.getAccountInfo();
          wx.navigateBack({
            delta:1
          });
        },
        fail(err) {
          // 失败的回调
          wx.showToast({
            title: '绑定失败，请重试',
            icon: 'none',
          });
        }
      });
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // console.log('---->',options.isUpdate);
    this.getAccountInfo()
    this.setData({
      isUpdate: options.isUpdate
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getAccountInfo()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});