// pages/profile/change-password.js
const auth = require('../../utils/auth.js')
const authService = require('../../services/authService.js')

Page({
  data: {
    userInfo: null,
    loading: false,
    formData: {
      oldPassword: '',
      newPassword: '',
      confirmPassword: ''
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadUserInfo()
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 检查登录状态
    if (!auth.isAuthenticated()) {
      wx.reLaunch({
        url: '/pages/login/login'
      })
      return
    }
    
    this.loadUserInfo()
  },

  /**
   * 加载用户信息
   */
  loadUserInfo() {
    try {
      const userInfo = auth.getUser()
      if (userInfo) {
        this.setData({
          userInfo: userInfo
        })
      }
    } catch (error) {
      console.error('加载用户信息错误:', error)
    }
  },

  /**
   * 输入框内容变化
   */
  onInputChange(e) {
    const field = e.currentTarget.dataset.field
    const value = e.detail.value
    
    this.setData({
      [`formData.${field}`]: value
    })
  },

  /**
   * 表单验证
   */
  validateForm() {
    const { oldPassword, newPassword, confirmPassword } = this.data.formData
    
    if (!oldPassword.trim()) {
      wx.showToast({
        title: '请输入旧密码',
        icon: 'none'
      })
      return false
    }
    
    if (!newPassword.trim()) {
      wx.showToast({
        title: '请输入新密码',
        icon: 'none'
      })
      return false
    }
    
    if (newPassword.length < 6) {
      wx.showToast({
        title: '新密码至少6位',
        icon: 'none'
      })
      return false
    }
    
    if (newPassword === oldPassword) {
      wx.showToast({
        title: '新密码不能与旧密码相同',
        icon: 'none'
      })
      return false
    }
    
    if (!confirmPassword.trim()) {
      wx.showToast({
        title: '请输入确认密码',
        icon: 'none'
      })
      return false
    }
    
    if (newPassword !== confirmPassword) {
      wx.showToast({
        title: '两次输入的新密码不一致',
        icon: 'none'
      })
      return false
    }
    
    return true
  },

  /**
   * 确认修改密码
   */
  async handleConfirm() {
    if (!this.validateForm()) {
      return
    }
    
    if (this.data.loading) {
      return
    }
    
    this.setData({ loading: true })
    
    try {
      const { oldPassword, newPassword } = this.data.formData
      
      // 调用修改密码接口
      const result = await authService.changePassword({
        oldPassword,
        newPassword
      })
      
      if (result.success) {
        wx.showToast({
          title: '密码修改成功',
          icon: 'success',
          duration: 2000
        })
        
        // 延迟返回上一页
        setTimeout(() => {
          wx.navigateBack()
        }, 1500)
      } else {
        throw new Error(result.message || '修改密码失败')
      }
    } catch (error) {
      console.error('修改密码错误:', error)
      wx.showToast({
        title: error.message || '修改密码失败',
        icon: 'error'
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 重置表单
   */
  handleReset() {
    if (this.data.loading) {
      return
    }
    
    this.setData({
      formData: {
        oldPassword: '',
        newPassword: '',
        confirmPassword: ''
      }
    })
    
    wx.showToast({
      title: '已重置',
      icon: 'success',
      duration: 1000
    })
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '银行管理系统',
      path: '/pages/index/index'
    }
  }
})
