import { 
 | 
  ProForm, 
 | 
  ProFormText, 
 | 
  ProFormTextArea, 
 | 
  ProFormSelect, 
 | 
  ProFormDigit 
 | 
} from '@ant-design/pro-components'; 
 | 
import { Button, Input, message, Upload, Form } from 'antd'; 
 | 
import { FormattedMessage, useIntl } from '@umijs/max'; 
 | 
import React from 'react'; 
 | 
import useStyles from './index.style'; 
 | 
import Http from '@/utils/http'; 
 | 
  
 | 
import defaultAvat from '/public/img/defaultAva.jpg' 
 | 
  
 | 
const handleUpdate = async (val, intl) => { 
 | 
  const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在更新' })); 
 | 
  try { 
 | 
    const resp = await Http.doPost('api/user/update', val); 
 | 
    if (resp.code === 200) { 
 | 
      message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '更新成功' })); 
 | 
      return true; 
 | 
    } else { 
 | 
      message.error(resp.msg); 
 | 
      return false; 
 | 
    } 
 | 
  } catch (error) { 
 | 
    message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '更新失败请重试!' })); 
 | 
    return false; 
 | 
  } finally { 
 | 
    hide(); 
 | 
  } 
 | 
}; 
 | 
  
 | 
const BaseView = () => { 
 | 
  const intl = useIntl(); 
 | 
  const { styles } = useStyles(); 
 | 
  const [loading, setLoading] = React.useState(false); 
 | 
  const [currentUser, setCurrentUser] = React.useState({}); 
 | 
  const [form] = Form.useForm(); 
 | 
  
 | 
  const AvatarView = ({ avatar }) => ( 
 | 
    <> 
 | 
      <div className={styles.avatar_title}>头像</div> 
 | 
      <div className={styles.avatar}> 
 | 
        <img src={avatar} alt="avatar" /> 
 | 
      </div> 
 | 
      <Upload showUploadList={false}> 
 | 
        <div className={styles.button_view}> 
 | 
          {/* <Button> 
 | 
            <UploadOutlined /> 
 | 
            更换头像 
 | 
          </Button> */} 
 | 
        </div> 
 | 
      </Upload> 
 | 
    </> 
 | 
  ); 
 | 
  
 | 
  const queryCurrent = () => { 
 | 
    setLoading(true); 
 | 
    Http.doGetPromise('api/auth/user', {}, (res) => { 
 | 
      setLoading(false); 
 | 
      setCurrentUser(res.data); 
 | 
    }).catch((err) => { 
 | 
      console.error(err); 
 | 
      setLoading(false); 
 | 
    }) 
 | 
  } 
 | 
  
 | 
  React.useEffect(() => { 
 | 
    queryCurrent(); 
 | 
  }, []); 
 | 
  
 | 
  const getAvatarURL = () => { 
 | 
    if (currentUser) { 
 | 
      if (currentUser.avatar) { 
 | 
        return currentUser.avatar; 
 | 
      } 
 | 
    } 
 | 
    return defaultAvat; 
 | 
  }; 
 | 
  
 | 
  const handleFinish = async (values) => { 
 | 
    handleUpdate(values, intl); 
 | 
  }; 
 | 
  
 | 
  return ( 
 | 
    <div className={styles.baseView}> 
 | 
      {loading ? null : ( 
 | 
        <> 
 | 
          <div className={styles.left}> 
 | 
            <ProForm 
 | 
              form={form} 
 | 
              layout="vertical" 
 | 
              onFinish={handleFinish} 
 | 
              submitter={{ 
 | 
                searchConfig: { 
 | 
                  submitText: intl.formatMessage({ id: 'personal.base.button.name', defaultMessage: '更新基本信息' }), 
 | 
                }, 
 | 
                render: (_, dom) => dom[1], 
 | 
              }} 
 | 
              initialValues={{ 
 | 
                ...currentUser, 
 | 
              }} 
 | 
              hideRequiredMark 
 | 
            > 
 | 
              <ProFormDigit 
 | 
                name="id" 
 | 
                disabled 
 | 
                hidden={true} 
 | 
              /> 
 | 
              <ProFormText 
 | 
                width="md" 
 | 
                name="username" 
 | 
                label={intl.formatMessage({ id: 'common.username', defaultMessage: "账号" })} 
 | 
                disabled 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: true, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormText 
 | 
                width="md" 
 | 
                name="nickname" 
 | 
                label={intl.formatMessage({ id: 'common.nickname', defaultMessage: "名称" })} 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: true, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormSelect 
 | 
                width="md" 
 | 
                name="sex" 
 | 
                label={intl.formatMessage({ id: 'common.sex', defaultMessage: "性别" })} 
 | 
                colProps={{ md: 12, xl: 12 }} 
 | 
                options={[ 
 | 
                  { label: intl.formatMessage({ id: 'common.undefined', defaultMessage: "未知" }), value: 0 }, 
 | 
                  { label: intl.formatMessage({ id: 'common.male', defaultMessage: '男' }), value: 1 }, 
 | 
                  { label: intl.formatMessage({ id: 'common.female', defaultMessage: '女' }), value: 2 }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormText 
 | 
                width="md" 
 | 
                name="phone" 
 | 
                label={intl.formatMessage({ id: 'common.phone', defaultMessage: "手机号" })} 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: false, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormText 
 | 
                width="md" 
 | 
                name="email" 
 | 
                label={intl.formatMessage({ id: 'common.email', defaultMessage: "邮箱" })} 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: false, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormText 
 | 
                width="md" 
 | 
                name="realName" 
 | 
                label={intl.formatMessage({ id: 'common.realname', defaultMessage: "真实姓名" })} 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: false, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormText 
 | 
                width="md" 
 | 
                name="idCard" 
 | 
                label={intl.formatMessage({ id: 'common.idcard', defaultMessage: "身份证号" })} 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: false, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
              <ProFormTextArea 
 | 
                name="introduction" 
 | 
                label={intl.formatMessage({ id: 'common.introduction', defaultMessage: "个人简介" })} 
 | 
                rules={[ 
 | 
                  { 
 | 
                    required: false, 
 | 
                  }, 
 | 
                ]} 
 | 
              /> 
 | 
            </ProForm> 
 | 
          </div> 
 | 
          <div className={styles.right}> 
 | 
            <AvatarView avatar={getAvatarURL()} /> 
 | 
          </div> 
 | 
        </> 
 | 
      )} 
 | 
    </div> 
 | 
  ); 
 | 
}; 
 | 
  
 | 
export default BaseView; 
 |