import Head from '@/imgs/head.jpg' import { LoadingOutlined, PlusOutlined } from '@ant-design/icons' import req from '@utils/request' import { Button, Card, Col, Form, Input, Radio, Row, Upload, message } from 'antd' import { memo, useEffect, useState } from 'react' import './index.less' const { TextArea } = Input const apiName = { update: '/user/update', queryInfo: '/user/getUserInfo' } const layout = { labelCol: { span: 4 }, wrapperCol: { span: 10, offset: 1 } } const beforeUpload = (file: RcFile) => { const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' if (!isJpgOrPng) { message.error('You can only upload JPG/PNG file!') } const isLt2M = file.size / 1024 / 1024 < 2 if (!isLt2M) { message.error('Image must smaller than 2MB!') } return isJpgOrPng && isLt2M } interface UserInfo { nickName?: string phone?: string email?: string sex?: string | number introduce?: string avatar?: string } const Sex: Record = { 1: '男', 2: '女' } const normFile = (e: any) => { if (Array.isArray(e)) { return e } return e?.fileList } const UserInfo = () => { const userInfoStorage = localStorage.getItem('userInfo') const { loginId = '', tokenValue = '' } = userInfoStorage ? JSON.parse(userInfoStorage) : {} const [form] = Form.useForm() const [editFlag, setEditFlag] = useState(false) const [loading, setLoading] = useState(false) const [userInfo, setUserInfo] = useState({}) const [avatar, setAvatar] = useState() const getUserInfo = async () => { req( { method: 'post', url: apiName.queryInfo, data: { userName: loginId } }, '/auth' ).then(res => { if (res?.success && res?.data) { setUserInfo(res.data) form.setFieldsValue(res.data) } }) } useEffect(() => { if (loginId) { getUserInfo() } }, [loginId]) const onFinish = () => { setLoading(true) const values = form.getFieldsValue() // return console.log(values) if (!Object.values(values).filter(Boolean).length && !avatar) { setLoading(false) return } const params = { userName: loginId, ...values } if (avatar) { params.avatar = avatar } req( { method: 'post', url: apiName.update, data: { ...params } }, '/auth' ) .then(res => { if (res.success) { message.success('更新成功') setTimeout(() => { getUserInfo() setLoading(false) setEditFlag(false) }, 500) } else { setLoading(false) } }) .catch(() => { message.error('更新失败') setLoading(false) }) } const handleChange = ({ file }) => { // console.log(info) if (file.status === 'done' && file.response.success && file.response.data) { setAvatar(file.response.data) } } const uploadButton = (
{loading ? : }
点击上传
) return (
{editFlag ? ( {avatar ? ( ) : ( uploadButton )} ) : ( )} {editFlag ? ( ) : ( <>{userInfo.nickName || ''} )} {editFlag ? ( ) : ( <>{userInfo.sex ? Sex[userInfo.sex] : '未知'} )} {editFlag ? ( ) : ( <>{userInfo.phone || ''} )} {editFlag ? ( ) : ( <>{userInfo.email || ''} )} {editFlag ? (