123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <template>
- <CollapseContainer title="基本设置" :canExpan="false">
- <a-row :gutter="24">
- <a-col :span="14">
- <BasicForm @register="register" />
- </a-col>
- <a-col :span="10">
- <div class="change-avatar">
- <div class="mb-2">头像</div>
- <CropperAvatar
- :uploadApi="uploadApi"
- :value="avatar"
- btnText="更换头像"
- :btnProps="{ preIcon: 'ant-design:cloud-upload-outlined' }"
- @change="updateAvatar"
- width="150"
- />
- </div>
- </a-col>
- </a-row>
- <Button type="primary" @click="handleSubmit"> 更新基本信息 </Button>
- </CollapseContainer>
- </template>
- <script lang="ts">
- import { Button, Row, Col } from 'ant-design-vue';
- import { computed, defineComponent, onMounted } from 'vue';
- import { BasicForm, useForm } from '/@/components/Form/index';
- import { CollapseContainer } from '/@/components/Container';
- import { CropperAvatar } from '/@/components/Cropper';
- import { useMessage } from '/@/hooks/web/useMessage';
- import headerImg from '/@/assets/images/header.jpg';
- import { accountInfoApi } from '/@/api/demo/account';
- import { baseSetschemas } from './data';
- import { useUserStore } from '/@/store/modules/user';
- import { uploadApi } from '/@/api/sys/upload';
- export default defineComponent({
- components: {
- BasicForm,
- CollapseContainer,
- Button,
- ARow: Row,
- ACol: Col,
- CropperAvatar,
- },
- setup() {
- const { createMessage } = useMessage();
- const userStore = useUserStore();
- const [register, { setFieldsValue }] = useForm({
- labelWidth: 120,
- schemas: baseSetschemas,
- showActionButtonGroup: false,
- });
- onMounted(async () => {
- const data = await accountInfoApi();
- setFieldsValue(data);
- });
- const avatar = computed(() => {
- const { avatar } = userStore.getUserInfo;
- return avatar || headerImg;
- });
- function updateAvatar({ src, data }) {
- const userinfo = userStore.getUserInfo;
- userinfo.avatar = src;
- userStore.setUserInfo(userinfo);
- console.log('data', data);
- }
- return {
- avatar,
- register,
- uploadApi: uploadApi as any,
- updateAvatar,
- handleSubmit: () => {
- createMessage.success('更新成功!');
- },
- };
- },
- });
- </script>
- <style lang="less" scoped>
- .change-avatar {
- img {
- display: block;
- margin-bottom: 15px;
- border-radius: 50%;
- }
- }
- </style>
|