index.vue 6.86 KB
<style lang="scss">
    .qg-uc__personal-avatar {
        width: 200px;
        text-align: center;
        margin: 0 auto;

        .avatar {
            width: 140px;
            height: 140px;
            border-radius: 50%;
            border: 1px solid #efefef;
            object-fit: cover;
            overflow: hidden;
            display: inline-block;
            margin-bottom: 18px;
            object-fit: cover;
        }

        .qg-fs-upload-btn {
            display: inline-block;
            line-height: 1;
            white-space: nowrap;
            cursor: pointer;
            background: #fff;
            border: 1px solid #DCDFE6;
            border-color: #DCDFE6;
            color: #606266;
            -webkit-appearance: none;
            text-align: center;
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            outline: none;
            margin: 0;
            -webkit-transition: .1s;
            transition: .1s;
            font-weight: 400;
            -moz-user-select: none;
            -webkit-user-select: none;
            -ms-user-select: none;
            padding: 10px 20px;
            font-size: 14px;
            border-radius: 4px;
            position: relative;

            .webuploader-pick + div {
                top: 0 !important;
                left: 0 !important;
            }
        }
    }

</style>
<template>
    <div class="app-container ">
        <section class="qg-container">
            <h4 class="qg-container__title">个人设置</h4>
        </section>
        <div class="qg-container">
            <div class="qg-row">
                <div class="qg-col--category" style="width: 220px;">
                    <div class="qg-uc__personal-avatar">
                        <div class="avatar">
                            <img :src="userForm.faceUrl || avatar" alt="" style="width: 100%;height:100%">
                        </div>
                        <div class="qg-fs-upload-btn">
                            <qg-fs-upload
                                v-model="userForm.faceId"
                                :multiple="false"
                                circle
                                :base-api="fsBaseApi"
                                default=""
                                height=""
                                max-num=""
                                max-size=""
                                width=""
                                :headers="header"
                                @success="handleUploadSuccess"
                            >
                                点击上传
                            </qg-fs-upload>
                        </div>
                    </div>
                </div>
                <div class="qg-col">
                    <el-form
                        ref="userForm"
                        :model="userForm"
                        class="qg-edit-form"
                        label-width="120px"
                        style="border-left: 1px solid #f0f0f0;"
                    >
                        <el-form-item :rules="[rules.required]" label="姓名" prop="name">
                            <el-input v-model.trim="userForm.name" clearable max-length="50" placeholder="输入姓名"/>
                        </el-form-item>
                        <el-form-item :rules="[rules.required]" label="用户名" prop="loginName">
                            <el-input
                                v-model.trim="userForm.loginName"
                                clearable
                                max-length="50"
                                placeholder="输入用户名"
                            />
                        </el-form-item>
                        <el-form-item :rules="[rules.mobile]" label="手机号" prop="mobile">
                            <el-input v-model.trim="userForm.mobile" :maxlength="11" clearable placeholder="输入手机号"/>
                        </el-form-item>
                        <el-form-item :rules="[rules.email]" label="邮箱" prop="email">
                            <el-input v-model.trim="userForm.email" :maxlength="10" clearable placeholder="输入邮箱"/>
                        </el-form-item>
                        <el-form-item label=" ">
                            <el-button
                                size="small"
                                type="primary"
                                @click="handleOk"
                            >保存
                            </el-button>
                        </el-form-item>
                    </el-form>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    import {getUserAllInfo, updateUserOnly} from '@/api/moudles/uc/user';
    import {rules} from '@/utils/validator';
    import QgFsUpload from '@/components/qg-fs-upload/index';
    import {mapGetters} from 'vuex';
    import {getToken} from '@/utils/auth';

    export default {
        name: 'Personal',
        components: {QgFsUpload},
        computed: {
            ...mapGetters(['avatar'])
        },
        data() {
            return {
                fsBaseApi: process.env.VUE_APP_BASE_API,
                header: {
                    Authorization: getToken()
                },
                userForm: {
                    id: '',
                    faceId: '',
                    faceUrl: '',
                    name: '',
                    loginName: '',
                    mobile: '',
                    email: ''
                },
                rules
            };
        },
        created() {
            this.getDetail();
        },
        methods: {
            handleUploadSuccess(response) {
                console.log(response);
                this.userForm.faceId = response.data.fileId;
                this.userForm.faceUrl = response.data.faceUrl;
            },
            getDetail() {
                getUserAllInfo().then((res) => {
                    const userForm = this.userForm;
                    for (const key in userForm) {
                        if (userForm.hasOwnProperty(key)) {
                            userForm[key] = res.data[key];
                        }
                    }
                    this.userForm = userForm;
                });
            },
            handleOk() {
                this.$refs.userForm.validate((valid) => {
                    if (!valid) {
                        return;
                    }
                    updateUserOnly(this.userForm).then((res) => {
                        if (res.success) {
                            this.$message.success(res.msg || '保存成功');
                            this.getDetail();
                        } else {
                            this.$message.error(res.msg || '保存失败');
                        }
                    });
                });
            }
        }
    };
</script>