| 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;  |