#
luxiaotao1123
2024-02-28 b016d1eb02dd09fd1ffcd24e4e6ddee72fd1b3d6
zy-asrs-flow/src/pages/account/setting/components/base.jsx
@@ -1,32 +1,41 @@
import { UploadOutlined } from '@ant-design/icons';
import {
  ProForm,
  ProFormDependency,
  ProFormFieldSet,
  ProFormSelect,
  ProFormText,
  ProFormTextArea,
  ProFormSelect,
  ProFormDigit
} from '@ant-design/pro-components';
import { useRequest } from '@umijs/max';
import { Button, Input, message, Upload } from 'antd';
import { Button, Input, message, Upload, Form } from 'antd';
import React from 'react';
import useStyles from './index.style';
import Http from '@/utils/http';
import defaultAvat from '/public/img/defaultAva.png'
const validatorPhone = (rule, value, callback) => {
  if (!value[0]) {
    callback('Please input your area code!');
const handleUpdate = async (val) => {
  const hide = message.loading('正在更新');
  try {
    const resp = await Http.doPost('api/user/update', val);
    if (resp.code === 200) {
      message.success('更新成功');
      return true;
    } else {
      message.error(resp.msg);
      return false;
    }
  } catch (error) {
    message.error('配置失败请重试!');
    return false;
  } finally {
    hide();
  }
  if (!value[1]) {
    callback('Please input your phone number!');
  }
  callback();
};
const BaseView = () => {
  const { styles } = useStyles();
  const [loading, setLoading] = React.useState(false);
  const [currentUser, setCurrentUser] = React.useState({});
  const [form] = Form.useForm();
  const AvatarView = ({ avatar }) => (
    <>
@@ -45,29 +54,33 @@
    </>
  );
  const queryCurrent = async () => {
    await Http.doGet('api/auth/user');
  const queryCurrent = () => {
    setLoading(true);
    Http.doGetPromise('api/auth/user', {}, (res) => {
      setLoading(false);
      setCurrentUser(res.data);
    }).catch((err) => {
      console.error(err);
      setLoading(false);
    })
  }
  const { data: currentUser, loading } = useRequest(() => {
    return queryCurrent();
  });
  React.useEffect(() => {
    queryCurrent();
  }, []);
  const getAvatarURL = () => {
    if (currentUser) {
      if (currentUser.avatar) {
        return currentUser.avatar;
      }
      const url = { defaultAvat };
      return url;
    }
    return defaultAvat;
  };
  const handleFinish = async () => {
    message.success('更新基本信息成功');
  const handleFinish = async (values) => {
    // console.log(values); return
    handleUpdate(values);
  };
  return (
@@ -76,6 +89,7 @@
        <>
          <div className={styles.left}>
            <ProForm
              form={form}
              layout="vertical"
              onFinish={handleFinish}
              submitter={{
@@ -86,71 +100,102 @@
              }}
              initialValues={{
                ...currentUser,
                phone: currentUser?.phone.split('-'),
              }}
              hideRequiredMark
            >
              <ProFormDigit
                name="id"
                disabled
                hidden={true}
              />
              <ProFormText
                width="md"
                name="username"
                label="账号"
                disabled
                rules={[
                  {
                    required: true,
                    message: '请输入您的账号!',
                  },
                ]}
              />
              <ProFormText
                width="md"
                name="nickname"
                label="名称"
                rules={[
                  {
                    required: true,
                    message: '请输入您的名称!',
                  },
                ]}
              />
              <ProFormSelect
                width="md"
                name="sex"
                label="性别"
                colProps={{ md: 12, xl: 12 }}
                options={[
                  { label: '未知', value: 0 },
                  { label: '男', value: 1 },
                  { label: '女', value: 2 },
                ]}
              />
              <ProFormText
                width="md"
                name="phone"
                label="手机号"
                rules={[
                  {
                    required: false,
                    message: '请输入您的手机号!',
                  },
                ]}
              />
              <ProFormText
                width="md"
                name="email"
                label="邮箱"
                rules={[
                  {
                    required: true,
                    required: false,
                    message: '请输入您的邮箱!',
                  },
                ]}
              />
              <ProFormText
                width="md"
                name="name"
                label="昵称"
                name="realName"
                label="真实姓名"
                rules={[
                  {
                    required: true,
                    message: '请输入您的昵称!',
                    required: false,
                    message: '请输入您的真实姓名!',
                  },
                ]}
              />
              <ProFormText
                width="md"
                name="idCard"
                label="身份证号"
                rules={[
                  {
                    required: false,
                    message: '请输入您的身份证号!',
                  },
                ]}
              />
              <ProFormTextArea
                name="profile"
                name="introduction"
                label="个人简介"
                rules={[
                  {
                    required: true,
                    required: false,
                    message: '请输入个人简介!',
                  },
                ]}
                placeholder="个人简介"
              />
              <ProFormText
                width="md"
                name="address"
                label="地址"
                rules={[
                  {
                    required: true,
                    message: '请输入您的地址!',
                  },
                ]}
              />
              <ProFormFieldSet
                name="phone"
                label="联系电话"
                rules={[
                  {
                    required: true,
                    message: '请输入您的联系电话!',
                  },
                  {
                    validator: validatorPhone,
                  },
                ]}
              >
                <Input className={styles.area_code} />
                <Input className={styles.phone_number} />
              </ProFormFieldSet>
            </ProForm>
          </div>
          <div className={styles.right}>