<template>
  <view class="edit-user-info">
    <!-- 顶部导航栏 -->
    <view class="nav-bar">
      <view class="nav-back" @click="goBack">
        <uni-icons type="arrowleft" size="24" color="#fff"></uni-icons>
      </view>
      <view class="nav-title">编辑用户信息</view>
      <view class="nav-save" @click="saveUserInfo">
        <text>保存</text>
      </view>
    </view>

    <!-- 用户信息表单 -->
    <view class="user-form">
      <!-- 头像编辑 -->
      <view class="avatar-section">
        <view class="avatar-label">头像：</view>
        <view class="avatar-content">
          <view class="avatar-upload" @click="updateAvatar">
            <image class="avatar-preview" :src="userInfo.avatar" mode="aspectFit"></image>
            <view class="avatar-mask">
              <uni-icons type="camera" size="24" color="#fff"></uni-icons>
            </view>
          </view>
          <text class="avatar-tip">点击更新头像</text>
        </view>
      </view>

      <!-- 昵称编辑 -->
      <view class="nickname-section">
        <view class="nickname-label">昵称：</view>
        <view class="nickname-content">
          <input 
            class="nickname-input" 
            type="text" 
            placeholder="请输入昵称" 
            v-model="userInfo.nickname"
            maxlength="20"
          />
        </view>
      </view>
    </view>
  </view>
</template>

<script setup>
import { ref, onMounted } from 'vue'

// 用户信息
const userInfo = ref({
  nickname: '',
  avatar: ''
})

// 组件挂载时加载用户信息
onMounted(() => {
  loadUserInfo()
})

// 加载用户信息
const loadUserInfo = () => {
  const savedUserInfo = uni.getStorageSync('userInfo')
  if (savedUserInfo) {
    userInfo.value = savedUserInfo
  } else {
    // 默认用户信息
    userInfo.value = {
      nickname: '666',
      avatar: 'https://ts1.tc.mm.bing.net/th/id/OIP-C.QQG4bvcAR3CJ0WeQULA9UQAAAA?w=275&h=211&c=8&rs=1&qlt=90&o=6&cb=ucfimgc1&dpr=1.5&pid=3.1&rm=2'
    }
  }
}

// 更新头像
const updateAvatar = () => {
  uni.chooseImage({
    count: 1,
    sizeType: ['compressed'],
    sourceType: ['album', 'camera'],
    success: (res) => {
      const tempFilePath = res.tempFilePaths[0]
      userInfo.value.avatar = tempFilePath
      
      uni.showToast({
        title: '头像更新成功',
        icon: 'success'
      })
    },
    fail: (err) => {
      console.log('选择头像失败:', err)
      uni.showToast({
        title: '选择头像失败',
        icon: 'none'
      })
    }
  })
}

// 保存用户信息
const saveUserInfo = () => {
  if (!userInfo.value.nickname.trim()) {
    uni.showToast({
      title: '请输入昵称',
      icon: 'none'
    })
    return
  }

  // 保存到本地存储
  uni.setStorageSync('userInfo', userInfo.value)
  
  // 同时更新玩家数据中的自己信息
  const players = uni.getStorageSync('players') || []
  const selfPlayer = players.find(player => player.isSelf)
  if (selfPlayer) {
    selfPlayer.name = userInfo.value.nickname
    selfPlayer.avatar = userInfo.value.avatar
    uni.setStorageSync('players', players)
  }

  uni.showToast({
    title: '保存成功',
    icon: 'success'
  })

  // 触发全局事件，通知其他页面更新
  uni.$emit('userInfoUpdated')

  // 延迟返回，确保事件被处理
  setTimeout(() => {
    uni.navigateBack({
      delta: 1
    })
  }, 1000)
}

// 返回上一页
const goBack = () => {
  uni.navigateBack()
}
</script>

<style lang="less" scoped>
.edit-user-info {
  background-color: #fff;
  min-height: 100vh;
}

/* 顶部导航栏 */
.nav-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20rpx 30rpx;
  background-color: #41479b;
  color: #fff;

  .nav-back, .nav-save {
    width: 120rpx;
    height: 60rpx;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .nav-save text {
    font-size: 32rpx;
    font-weight: 500;
  }

  .nav-title {
    font-size: 32rpx;
    font-weight: 500;
  }
}

/* 用户信息表单 */
.user-form {
  padding: 40rpx 30rpx;
}

/* 头像编辑区域 */
.avatar-section {
  display: flex;
  align-items: flex-start;
  margin-bottom: 60rpx;
  padding-bottom: 40rpx;
  border-bottom: 1rpx solid #eee;

  .avatar-label {
    width: 120rpx;
    font-size: 32rpx;
    color: #000;
    font-weight: 500;
  }

  .avatar-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .avatar-upload {
    position: relative;
    width: 160rpx;
    height: 160rpx;
    border-radius: 50%;
    overflow: hidden;
    margin-bottom: 20rpx;
    
    .avatar-preview {
      width: 100%;
      height: 100%;
      border-radius: 50%;
    }

    .avatar-mask {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5);
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      transition: opacity 0.3s;
    }

    &:active .avatar-mask {
      opacity: 1;
    }
  }

  .avatar-tip {
    font-size: 28rpx;
    color: #666;
  }
}

/* 昵称编辑区域 */
.nickname-section {
  display: flex;
  align-items: center;

  .nickname-label {
    width: 120rpx;
    font-size: 32rpx;
    color: #000;
    font-weight: 500;
  }

  .nickname-content {
    flex: 1;
  }

  .nickname-input {
    width: 100%;
    height: 80rpx;
    border: 1rpx solid #ddd;
    border-radius: 8rpx;
    padding: 0 20rpx;
    font-size: 32rpx;
    
    &:focus {
      border-color: #41479b;
    }
  }
}
</style>