<template>
  <view class="userInfo-container">
    <view class="header">
      <div class="header-left">
        <u-icon
          class="header-left-icon"
          name="arrow-left"
          @click="handleLeftClick"
        ></u-icon>
      </div>
      <text class="header-title">个人信息</text>
      <div></div>
    </view>

    <view class="user-info-content">
      <!-- 第一个卡片：头像 -->
      <view class="info-card">
        <view class="info-item avatar-item">
          <text class="item-label">头像</text>
          <view class="item-content avatar-content">
            <image
              class="avatar-image"
              :src="
                userInfo.avatar || '/static/common/images/avatar_default.jpg'
              "
              mode="aspectFill"
              @click="chooseAvatar"
            ></image>
          </view>
        </view>
      </view>

      <!-- 第二个卡片：姓名和性别 -->
      <view class="info-card">
        <view class="info-item">
          <text class="item-label">姓名</text>
          <view class="item-content">
            <input
              class="item-input"
              v-model="userInfo.name"
              placeholder="请输入姓名"
              placeholder-style="color: #CCCCCC;"
            />
          </view>
        </view>

        <view class="info-item">
          <text class="item-label">性别</text>
          <view class="item-content" @click="openPicker('gender')">
            <text class="placeholder-text" v-if="!userInfo.genderText"
              >请选择性别</text
            >
            <text v-else>{{ userInfo.genderText }}</text>
            <text class="arrow-icon">></text>
          </view>
        </view>
      </view>

      <!-- 第三个卡片：归属地、高考年份、生源高中、意向学院专业 -->
      <view class="info-card">
        <view class="info-item">
          <text class="item-label">归属地</text>
          <view class="item-content" @click="openPicker('region')">
            <text class="placeholder-text" v-if="!userInfo.region"
              >请选择归属地</text
            >
            <text v-else>{{ userInfo.region }}</text>
            <text class="arrow-icon">></text>
          </view>
        </view>

        <view class="info-item">
          <text class="item-label">高考年份</text>
          <view class="item-content" @click="openPicker('examYear')">
            <text class="placeholder-text" v-if="!userInfo.examYear"
              >请选择高考年份</text
            >
            <text v-else>{{ userInfo.examYear }}</text>
            <text class="arrow-icon">></text>
          </view>
        </view>

        <view class="info-item">
          <text class="item-label">生源高中</text>
          <view class="item-content">
            <input
              class="item-input"
              v-model="userInfo.highSchool"
              placeholder="请输入生源高中"
              placeholder-style="color: #CCCCCC;"
            />
          </view>
        </view>

        <view class="info-item">
          <text class="item-label">意向学院专业</text>
          <view class="item-content" @click="openPicker('major')">
            <text class="placeholder-text" v-if="!userInfo.major"
              >请选择意向学院专业</text
            >
            <text v-else>{{ userInfo.major }}</text>
            <text class="arrow-icon">></text>
          </view>
        </view>
      </view>
    </view>

    <div class="user-info-footer">
      <u-button class="user-info-footer-button" @click="handleSave">
        保存
      </u-button>
    </div>

    <!-- 性别选择器 -->
    <u-select
      v-model="showGenderSelect"
      mode="single-column"
      :list="genderList"
      @confirm="confirmGender"
    ></u-select>

    <!-- 归属地选择器 -->
    <u-picker
      v-model="showRegionSelect"
      mode="single-column"
      :list="regionList"
      @confirm="confirmRegion"
    ></u-picker>

    <!-- 选择器弹窗 -->
    <u-picker
      v-model="showPicker"
      mode="selector"
      :columns="pickerColumns"
      @confirm="onPickerConfirm"
      @cancel="showPicker = false"
    ></u-picker>
  </view>
</template>

<script>
export default {
  components: {},
  data() {
    return {
      userInfo: {
        avatar: "",
        name: "",
        gender: "",
        region: "",
        examYear: "",
        highSchool: "",
        major: "",
      },
      showPicker: false,
      currentPicker: "",
      pickerColumns: [],
      pickerData: {
        gender: ["男", "女"],
        region: ["北京", "上海", "广州", "深圳", "江西", "湖南"],
        examYear: ["2023", "2024", "2025", "2026"],
        major: [
          "计算机科学与技术",
          "软件工程",
          "人工智能",
          "电子信息工程",
          "机械工程",
        ],
      },

      // 性别选择器
      showGenderSelect: false,
      genderList: [
        {
          label: "男",
          value: "0",
        },
        {
          label: "女",
          value: "1",
        },
      ],

      // 归属地选择器
      showRegionSelect: false,
      regionList: [
        {
          label: "北京",
          value: "0",
        },
        {
          label: "上海",
          value: "1",
        },
        
      ],
    };
  },
  mounted() {},
  onLoad(options) {
    if (options.userId) {
      this.userId = options.userId;
      this.getUserInfo();
    }
  },
  methods: {
    handleLeftClick() {
      uni.navigateBack();
    },
    getUserInfo() {
      // 模拟获取用户信息的接口
      console.log("获取用户ID为", this.userId, "的信息");
      // 实际开发中这里应该调用接口获取用户信息
    },
    chooseAvatar() {
      uni.chooseImage({
        count: 1,
        sizeType: ["compressed"],
        sourceType: ["album", "camera"],
        success: (res) => {
          this.userInfo.avatar = res.tempFilePaths[0];
          // 实际开发中这里应该上传头像到服务器
        },
      });
    },
    openPicker(type) {
      if (type === "gender") {
        this.showGenderSelect = true;
        return;
      }

      this.currentPicker = type;
      this.pickerColumns = [this.pickerData[type]];
      this.showPicker = true;
    },
    onPickerConfirm(e) {
      const value = e.value[0];
      switch (this.currentPicker) {
        case "gender":
          this.userInfo.gender = value;
          break;
        case "region":
          this.userInfo.region = value;
          break;
        case "examYear":
          this.userInfo.examYear = value;
          break;
        case "major":
          this.userInfo.major = value;
          break;
      }
      this.showPicker = false;
    },

    // 确认性别
    confirmGender(e) {
      console.log("确认性别", e[0].value);
      this.userInfo.gender = e[0].value;
      this.userInfo.genderText = e[0].label;
      this.showGenderSelect = false;
    },
  },
};
</script>

<style lang="scss" scoped>
.userInfo-container {
  min-height: 100vh;
  padding-bottom: calc(112rpx + env(safe-area-inset-bottom));
  padding: 32rpx;
  padding-top: calc(88rpx + 40rpx);

  background-image: url(/static//common/images/images_bg.png);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-position: center;

  .header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    // background-color: #ffffff;
    height: 88rpx;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 30rpx;
    z-index: 99;

    .header-left {
      font-size: 36rpx;
    }

    .header-title {
      font-size: 36rpx;
      font-weight: 500;
      color: #333333;
    }
  }

  .user-info-content {
    .info-card {
      background-color: #ffffff;
      border-radius: 20rpx;
      padding: 0 32rpx;
      margin-bottom: 32rpx;

      .info-item {
        height: 110rpx;
        display: flex;
        justify-content: space-between;
        align-items: center;
        border-bottom: 1rpx solid #f2f2f2;

        &:last-child {
          border-bottom: none;
        }

        .item-label {
          font-family: PingFang SC;
          font-size: 28rpx;
          color: #333333;
        }

        .item-content {
          flex: 1;
          display: flex;
          justify-content: flex-end;
          align-items: center;
          font-size: 28rpx;
          color: #333333;

          .item-input {
            text-align: right;
            width: 100%;
            font-size: 28rpx;
          }

          .placeholder-text {
            color: #cccccc;
          }

          .arrow-icon {
            margin-left: 10rpx;
            color: #cccccc;
          }
        }

        &.avatar-item {
          .avatar-content {
            display: flex;
            align-items: center;
          }

          .avatar-image {
            width: 68rpx;
            height: 68rpx;
            border-radius: 50%;
          }
        }
      }
    }
  }

  .user-info-footer {
    position: fixed;
    bottom: 32rpx;
    left: 0;
    right: 0;
    padding: 0 32rpx;
    .user-info-footer-button {
      width: 100%;
      height: 85rpx;
      background: #4f6aff;
      color: #ffffff;
      border-radius: 16rpx;
      opacity: 0.9;
    }
  }
}

/* 响应式布局 - PC端样式 */
@media screen and (min-width: 768px) {
  .userInfo-container {
    .user-info-content {
      max-width: 1200rpx;
      margin: 0 auto;
    }
  }
}
</style>
