<template>
    <div class="container center-content">
        <div class="title">认证信息</div>
        <div class="box">
            <div class="name">个人认证 <span>账户实名认证后不能修改</span></div>
            <div class="border"></div>
            <div
                class="fail"
                v-if="
                    userInfo.authStatus === 'PENDING' ||
                    userInfo.authStatus === 'FAIL' ||
                    userInfo.authStatus === 'SUCCESS'
                "
            >
                <img
                    class="text1"
                    v-if="userInfo.authStatus !== 'FAIL'"
                    src="../../assets/user/icon-xiugaichengg@3x (1).png"
                    alt=""
                />
                <img
                    class="text1"
                    v-if="userInfo.authStatus === 'FAIL'"
                    src="../../assets/user/icon-shibai@3x.png"
                    alt=""
                />
                <div class="text2" v-if="userInfo.authStatus === 'PENDING'">已提交个人认证</div>
                <div class="text2" v-if="userInfo.authStatus === 'FAIL'">个人认证失败</div>
                <div class="text2" v-if="userInfo.authStatus === 'SUCCESS'">个人认证成功</div>
                <div class="text3" v-if="userInfo.authStatus === 'PENDING'">
                    等待后台审核信息，预计1-3个工作日内完成
                </div>
                <div class="text3" v-if="userInfo.authStatus === 'SUCCESS'">账户实名认证后不能修改</div>
                <div class="text3" v-if="userInfo.authStatus === 'FAIL'">
                    很遗憾，您的资料审核失败，请检查您填写的资料是否正确以及上传照片是否清晰
                </div>
                <div class="botn" v-if="userInfo.authStatus !== 'FAIL'" @click="all('accountdata')">返回</div>
                <div class="botn" v-if="userInfo.authStatus === 'FAIL'" @click="Jump2">重新认证</div>
            </div>
            <div v-if="userInfo.authStatus === 'NOT_AUTH'">
                <el-form ref="form" :label-position="labelPosition" :model="sizeForm" :rules="registerRule">
                    <el-form-item label="姓名" prop="realName">
                        <el-input
                            style="width: 300px"
                            placeholder="请输入您的真实姓名"
                            v-model="sizeForm.realName"
                        ></el-input>
                    </el-form-item>
                    <el-form-item label="手机号码" prop="phone">
                        <el-input
                            style="width: 300px"
                            placeholder="请输入您的联系方式"
                            :disabled="true"
                            v-model="sizeForm.phone"
                        ></el-input>
                    </el-form-item>
                    <el-form-item label="电子邮箱" prop="email">
                        <el-input style="width: 300px" placeholder="请输入邮箱" v-model="sizeForm.email"></el-input>
                    </el-form-item>
                    <el-form-item label="身份证号" prop="idNo">
                        <el-input
                            style="width: 300px"
                            placeholder="请输入18位身份证号"
                            v-model="sizeForm.idNo"
                        ></el-input>
                    </el-form-item>
                    <el-form-item label="本人身份证 (正面图)" prop="idFront">
                        <single-upload class="upload" v-model="sizeForm.idFront"></single-upload>
                    </el-form-item>
                    <div class="description">{{ explain }}</div>
                    <el-form-item label="本人身份证 (反面图)" prop="idBack">
                        <single-upload class="upload" v-model="sizeForm.idBack"></single-upload>
                    </el-form-item>
                    <div class="description">{{ explain }}</div>
                </el-form>
                <div class="btn">
                    <el-button type="primary" @click="onSubmit">提交审核</el-button>
                    <div class="btn1" @click="Jump">返回</div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
import { mapState } from 'vuex';
export default {
    data() {
        return {
            labelPosition: 'right',
            sizeForm: {
                realName: '',
                idNo: '',
                idFront: '',
                idBack: '',
                phone: '',
                email: '',
                status
            },
            typeFl: {},
            registerRule: {
                idNo: { required: true, min: 18, max: 18, message: '请输入您的身份证号', trigger: 'blur' },
                realName: { required: true, message: '请输入您的真实姓名', trigger: 'blur' },
                phone: { required: true, message: '请输入您的联系方式', trigger: 'blur' },
                email: { type: 'email', required: true, message: '请输入您的邮箱', trigger: 'blur' },
                idFront: { required: true, message: '请添加您的身份证（正面）', trigger: 'blur' },
                idBack: { required: true, message: '请添加您的身份证（反面）', trigger: 'blur' }
            }
        };
    },
    computed: {
        ...mapState(['userInfo', 'personalInfo']),
        explain() {
            const list = [
                '请上传身份证图片，格式JPG或PNG或JPEG，大小不超过1M',
                '请上传证件照图片，格式JPG或PNG或JPEG，大小不超过1M'
            ];
            return list[this.typeFl == 'ID_CARD' ? 0 : 1];
        },
        type() {
            return this.userInfo.authorities.find(item => {
                return item.name == 'ROLE_INSTITUTION' || item.name == 'ROLE_PERSONAL';
            });
        }
    },
    created() {
        (this.sizeForm.phone = this.userInfo.phone), (this.sizeForm.email = this.userInfo.email);
    },
    methods: {
        Jump() {
            this.$router.go(-1);
        },
        Jump2() {
            let status = 'NOT_AUTH';
            this.$http
                .post(
                    '/user/save',
                    {
                        ...this.$store.state.userInfo,
                        authStatus: status
                    },
                    {
                        body: 'json'
                    }
                )
                .then(() => {
                    this.$store.dispatch('getUserInfo');
                    this.$router.push('/authentication');
                })
                .then(() => {
                    return Promise.resolve();
                })
                .catch(e => {
                    if (e) {
                        this.$message.error(e.error);
                    }
                    return Promise.reject();
                });
        },
        // 340321199705124693
        onSubmit() {
            this.$refs.form.validate(valid => {
                if (valid) {
                    this.$confirm(
                        '保证提交的所有资料证真实有效且确属本人，如有假冒信息，一切法律后果自行承担！',
                        '提示',
                        { type: 'warning' }
                    ).then(() => {
                        this.preservation();
                    });
                }
            });
        },
        preservation() {
            let form = { ...this.sizeForm };
            form.userId = this.userInfo.id;
            form.status = 'PENDING';
            form.org = false;
            // console.log(form);
            this.$http
                .post('/identityAuth/apply', {
                    ...form
                })
                .then(res => {
                    this.$store.dispatch('getUserInfo', res);
                })
                .catch(e => {
                    if (e) {
                        this.$message.success(e.error);
                    }
                });
        }
    }
};
</script>

<style lang="less" scoped>
.container {
    /deep/ .el-form-item__content {
        line-height: 0 !important;
    }
    /deep/ .el-form-item__label {
        width: 94px;
        text-align: right;
        color: #ffffff;
    }
    /deep/ .el-form {
        padding-left: 390px;
    }
    /deep/ .el-input__inner {
        border: 1px solid #494a4d;
        background: #1c1e26;
        color: #ffffff;
    }
    /deep/ .el-form-item__error {
        padding-top: 3px !important;
        margin-left: 94px;
    }
    /deep/ .el-button {
        width: 130px;
        height: 36px;
        background: linear-gradient(133deg, @prim 0%, @warn 100%);
        border-radius: 4px;
        margin: 0 !important;
    }
    .btn {
        display: flex;
        justify-content: center;
        margin: 65px 0 0 78px;
        .btn1 {
            width: 130px;
            height: 36px;
            background: #c4c7cc;
            border-radius: 4px;
            color: #ffffff;
            cursor: pointer;
            font-size: 13px;
            text-align: center;
            line-height: 38px;
            margin-left: 20px;
        }
    }
    .title {
        height: 42px;
        font-size: 32px;
        font-weight: 400;
        font-family: ZhenyanGB-Regular, ZhenyanGB;
        color: #ffffff;
        line-height: 42px;
        padding: 60px 0;
    }
    .description {
        font-size: 14px;
        font-weight: 400;
        color: #494a4d;
        line-height: 24px;
        margin: -7px 0 2px 94px;
    }
    .box {
        background: #1c1e26;
        padding: 17px 16px;
        padding-bottom: 200px;
        .border {
            height: 1px;
            background: #494a4d;
            margin: 17px 0 60px;
        }
        .fail {
            text-align: center;
            .text1 {
                width: 68px;
                height: 68px;
            }
            .text2 {
                font-size: 20px;
                font-weight: bold;
                color: @prim;
                line-height: 26px;
                margin: 20px 0 10px;
            }
            .text3 {
                font-size: 14px;
                font-weight: 400;
                color: #ffffff;
                line-height: 24px;
                margin-bottom: 30px;
            }
            .botn {
                width: 130px;
                height: 36px;
                font-size: 13px;
                cursor: pointer;
                color: #ffffff;
                line-height: 36px;
                text-align: center;
                background: linear-gradient(133deg, @prim 0%, @warn 100%);
                border-radius: 4px;
                margin: 0 auto;
            }
        }
        .name {
            font-size: 16px;
            font-weight: bold;
            color: #ffffff;
            line-height: 26px;
            span {
                font-size: 12px;
                font-weight: 400;
                color: #939599;
                line-height: 22px;
            }
        }
        /deep/ .el-button {
            width: 130px;
            height: 36px;
            background: linear-gradient(133deg, @prim 0%, @warn 100%);
            border-radius: 4px;
            margin-top: 60px;
            line-height: 6px;
            color: #ffffff;
            border: 0;
        }
    }
}
</style>
