mydetails.vue 2.88 KB
<template>
     <ul>
        <li>
            <label @click="setAvatar">头像
                <span class="details-icon">
                    <span class="head-portrait user-avatar" :style='icoStyle'></span>
                    <span class="icon icon-right"></span>
                </span>
            </label>
        </li>
        <li>
            <label>昵称<input class="nickname" v-model='nickname' @blur="setNickname"></label>
        </li>
        <li>
            <label @click="setAender">性别
                <span class="details-gender">
                    <span class="gender">{{ gender }}</span>
                    <span class="icon icon-right"></span>
                </span>
            </label>
        </li>
        <li>
            <label>生日
                <span class="details-birthday">
                    <input class="birthday" type="date" v-model='birthday' @change="setBirthday" required></input>
                    <span class="icon icon-right"></span>
                </span>
            </label>
        </li>
    </ul>
</template>

<script>
    const $ = require('yoho-jquery');
    const yoho = require('yoho');
    const tip = require('common/tip');
    const genderSel = require('common/select')([{
        key:'1',
        val:'MEN'
    }, {
        key:'2',
        val:'WOMEN'
    }]);

    module.exports = {
        props: ['head_ico', 'nickname', 'gender', 'birthday'],
        data() {
            return {
                icoStyle: this.head_ico ? 'background-image:url(' + this.head_ico + ');' : ''
            };
        },
        methods: {
            setAvatar: function() {
                yoho.goSetAvatar();
            },
            setNickname: function() {
                this.saveDetails({
                    nickname: this.nickname
                });
            },
            setAender: function() {
                let _this = this;

                genderSel.show(function(item) {
                    _this.gender = item.val.toLowerCase();
                    _this.saveDetails({
                        nickname: _this.nickname,
                        gender: item.key
                    });
                })
            },
            setBirthday: function() {
                this.saveDetails({
                    nickname: this.nickname,
                    birthday: this.birthday
                });
            },
            saveDetails: function(params) {
                $.ajax({
                    method: 'POST',
                    url: '/home/save-mydetails',
                    data: params
                }).then(result => {
                   if (result.code !== 200) {
                        tip(result.message || '设置失败');
                    }
                }).fail(() => {
                    tip('网络错误');
                });
            }
        }
    };
</script>

<style>
    @import "../../scss/home/_details.css";
</style>