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

Page({
  data: {
    userInfo: null,
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  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
        })
      } else {
        // 如果没有用户信息，尝试获取
        this.refreshUserInfo()
      }
    } catch (error) {
      console.error('加载用户信息错误:', error)
    }
  },

  /**
   * 刷新用户信息
   */
  async refreshUserInfo() {
    if (this.data.loading) return
    
    this.setData({ loading: true })
    
    try {
      const userInfo = await authService.refreshUserInfo()
      this.setData({
        userInfo: userInfo
      })
    } catch (error) {
      console.error('刷新用户信息错误:', error)
      wx.showToast({
        title: '获取用户信息失败',
        icon: 'error'
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 编辑个人信息
   */
  editProfile() {
    wx.showToast({
      title: '功能开发中',
      icon: 'none'
    })
  },

  /**
   * 修改密码
   */
  changePassword() {
    wx.navigateTo({
      url: '/pages/profile/change-password'
    })
  },

  /**
   * 硬件管理
   */
  hardwareManagement() {
    wx.showToast({
      title: '硬件管理功能开发中',
      icon: 'none'
    })
  },

  /**
   * 人员管理
   */
  personnelManagement() {
    wx.showToast({
      title: '人员管理功能开发中',
      icon: 'none'
    })
  },

  /**
   * 关于我们
   */
  aboutUs() {
    wx.showModal({
      title: '关于银行管理系统',
      content: '版本：1.0.0\n\n银行管理系统小程序，提供项目管理和业务处理功能。',
      showCancel: false,
      confirmText: '确定'
    })
  },

  /**
   * 退出登录
   */
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          this.handleLogout()
        }
      }
    })
  },

  /**
   * 处理退出登录
   */
  async handleLogout() {
    try {
      // 显示加载提示
      wx.showLoading({
        title: '退出中...'
      })

      // 调用登出API
      await authService.logout()
      
      // 清除本地认证信息
      auth.clearAuth()
      
      // 调用全局登出方法
      const app = getApp()
      if (app && app.logout) {
        app.logout()
      }
      
      // 隐藏加载提示
      wx.hideLoading()
      
      // 显示成功提示
      wx.showToast({
        title: '已退出登录',
        icon: 'success',
        duration: 2000
      })
      
      // 跳转到登录页
      setTimeout(() => {
        wx.reLaunch({
          url: '/pages/login/login'
        })
      }, 1000)
      
    } catch (error) {
      console.error('退出登录错误:', error)
      
      // 即使API调用失败，也清除本地数据并跳转
      auth.clearAuth()
      
      // 调用全局登出方法
      const app = getApp()
      if (app && app.logout) {
        app.logout()
      }
      
      wx.hideLoading()
      wx.showToast({
        title: '已退出登录',
        icon: 'success',
        duration: 2000
      })
      
      setTimeout(() => {
        wx.reLaunch({
          url: '/pages/login/login'
        })
      }, 1000)
    }
  },

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

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