<template>
  <client-only>
    <el-row>
      <el-col>
        <h1>基本信息</h1>
      </el-col>
      <el-col>
        <el-form :model="user" :rules="rules" ref="user" label-width="100px">
          <el-form-item label="昵称" prop="nickname">
            <el-input v-model="user.nickname" @blur="checkNickname"></el-input>
          </el-form-item>
          <el-form-item label="性别">
            <el-radio-group v-model="user.sex">
              <el-radio border label="0">保密</el-radio>
              <el-radio border label="1">男</el-radio>
              <el-radio border label="2">女</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="个人介绍" prop="signature">
            <el-input type="textarea" v-model="user.signature"></el-input>
          </el-form-item>
          <el-form-item style="text-align: right;">
            <el-button type="primary" round plain @click="updateUserInfo">保存</el-button>
          </el-form-item>
        </el-form>
        <el-form :model="userExtend" ref="userExtend" label-width="100px">
          <el-form-item label="博客" prop="signature">
            <el-input placeholder="设置后将会公开你的博客" v-model="userExtend.blog">
            </el-input>
          </el-form-item>
          <el-form-item label="github" prop="signature">
            <el-input placeholder="yourname" v-model="userExtend.github">
              <template slot="prepend">https://github.com/</template>
            </el-input>
          </el-form-item>
          <el-form-item label="微博" prop="signature">
            <el-input placeholder="yourname" v-model="userExtend.weibo">
              <template slot="prepend">https://weibo.com/n/</template>
            </el-input>
          </el-form-item>
          <el-form-item label="微信" prop="signature">
            <el-input placeholder="设置后将会公开你的微信" v-model="userExtend.weixin">
            </el-input>
          </el-form-item>
          <el-form-item label="QQ" prop="signature">
            <el-input placeholder="设置后将会公开你的 QQ" v-model="userExtend.qq">
            </el-input>
          </el-form-item>
          <el-form-item style="text-align: right;">
            <el-button type="primary" round plain @click="updateUserExtend">保存</el-button>
          </el-form-item>
        </el-form>
      </el-col>
    </el-row>
  </client-only>
</template>

<script>
  import {mapState} from 'vuex';

  export default {
    name: "account",
    computed: {
      ...mapState({
        idUser: state => state.oauth.idUser
      })
    },
    data() {
      return {
        user: {},
        userExtend: {},
        rules: {
          nickname: [
            {required: true, message: '请输入昵称', trigger: 'blur'},
            {min: 1, max: 32, message: '长度在 1 到 32 个字符', trigger: 'blur'}
          ],
          email: [
            {required: true, message: '请输入邮箱地址', trigger: 'blur'},
            {type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change']}
          ]
        },
        loading: false
      }
    },
    methods: {
      getData() {
        let _ts = this;
        _ts.$axios.$get('/api/user-info/detail/' + _ts.idUser).then(function (res) {
          if (res) {
            if (res.message) {
              _ts.$message.error(res.message);
            } else {
              _ts.$set(_ts, 'user', res.user);
              _ts.$set(_ts, 'userExtend', res.userExtend);
            }
          }
        })
      },
      checkNickname() {
        let _ts = this;
        _ts.$axios.$get('/api/user-info/check-nickname', {
          params: {
            idUser: _ts.user.idUser,
            nickname: _ts.user.nickname
          }
        }).then(function (res) {
          if (res && res.message) {
            _ts.$message.error(res.message);
          }
        })
      },
      updateUserInfo() {
        let _ts = this;
        let user = _ts.user;
        _ts.updateUser(user);
      },
      updateUser(user) {
        let _ts = this;
        _ts.$refs['user'].validate((valid) => {
          if (valid) {
            _ts.$axios.$patch('/api/user-info/update', user).then(function (res) {
              if (res) {
                if (res.message) {
                  _ts.$message.error(res.message);
                } else {
                  _ts.$set(_ts, 'user', res.user);
                  _ts.$store.commit('setUserInfo', res.user);
                  _ts.$message.success('更新成功 !');
                }
              }
            })
          } else {
            _ts.$message.error('数据异常 !');
          }
        });
      },
      updateUserExtend() {
        let _ts = this;
        let userExtend = _ts.userExtend;
        _ts.$axios.$patch('/api/user-info/update-extend', userExtend).then(function (res) {
          if (res) {
            if (res.message) {
              _ts.$message.error(res.message);
            } else {
              _ts.$set(_ts, 'userExtend', res.userExtend);
              _ts.$message.success('更新成功 !');
            }
          }
        })
      }
    },
    mounted() {
      this.$store.commit('setActiveMenu', 'account');
      this.getData();
    }
  }
</script>

<style scoped>

</style>
