|
@@ -4,24 +4,16 @@
|
|
|
<van-cell-group inset>
|
|
|
<van-field name="uploader" label="头像">
|
|
|
<template #input>
|
|
|
- <div @click="handleChangeAvatar">
|
|
|
- <van-image
|
|
|
- v-if="userInfo.headImageUrl"
|
|
|
- :src="userInfo.headImageUrl"
|
|
|
- width="75px"
|
|
|
- height="75px"
|
|
|
- radius="37.5px"
|
|
|
- />
|
|
|
- <div
|
|
|
- v-else
|
|
|
- class="w-75 h-75 rounded-full bg-black-d flex items-center justify-center"
|
|
|
- >
|
|
|
- <span
|
|
|
- class="iconfont icon-profile text-black-6"
|
|
|
- style="font-size: 36px"
|
|
|
- ></span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <van-uploader
|
|
|
+ style="--van-uploader-border-radius: 40px"
|
|
|
+ :after-read="afterRead"
|
|
|
+ v-model="fileList"
|
|
|
+ :max-count="1"
|
|
|
+ :deletable="false"
|
|
|
+ :multiple="false"
|
|
|
+ accept="image/*"
|
|
|
+ reupload
|
|
|
+ />
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-field
|
|
@@ -29,6 +21,7 @@
|
|
|
name="昵称"
|
|
|
label="昵称"
|
|
|
placeholder="昵称"
|
|
|
+ maxlength="20"
|
|
|
:rules="[{ required: true, message: '请填写昵称' }]"
|
|
|
/>
|
|
|
<van-field name="radio" label="性别">
|
|
@@ -44,18 +37,27 @@
|
|
|
name="邮箱"
|
|
|
label="邮箱"
|
|
|
placeholder="邮箱"
|
|
|
- :rules="[{ required: true, message: '请填写邮箱' }]"
|
|
|
+ maxlength="100"
|
|
|
+ :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ validator: validatorEmail,
|
|
|
+ message: '请填写正确的邮箱',
|
|
|
+ },
|
|
|
+ ]"
|
|
|
/>
|
|
|
<van-field
|
|
|
v-model="userInfo.job"
|
|
|
name="职业"
|
|
|
label="职业"
|
|
|
placeholder="职业"
|
|
|
+ maxlength="100"
|
|
|
/>
|
|
|
<van-field
|
|
|
v-model="userInfo.address"
|
|
|
name="居住地"
|
|
|
label="居住地"
|
|
|
+ maxlength="100"
|
|
|
placeholder="居住地"
|
|
|
/>
|
|
|
<van-field
|
|
@@ -87,6 +89,8 @@
|
|
|
const userInfoStore = useUserInfoStore();
|
|
|
const { userInfo } = storeToRefs(userInfoStore);
|
|
|
|
|
|
+const fileList = ref([]);
|
|
|
+
|
|
|
const form = reactive({
|
|
|
showName: null,
|
|
|
email: null,
|
|
@@ -98,6 +102,27 @@ const form = reactive({
|
|
|
personalSign: null,
|
|
|
});
|
|
|
|
|
|
+const validatorEmail = (val) =>
|
|
|
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
|
|
|
+ val
|
|
|
+ );
|
|
|
+
|
|
|
+async function afterRead(file) {
|
|
|
+ console.log(file);
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append("uploadFile", file.file);
|
|
|
+ formData.append("asImage", true);
|
|
|
+ formData.append("fieldName", "headImageUrl");
|
|
|
+ try {
|
|
|
+ const { data } = await request("/website/tourism/user/upload", {
|
|
|
+ method: "post",
|
|
|
+ body: formData,
|
|
|
+ });
|
|
|
+ form.headImageUrl = data.fileUrl;
|
|
|
+ userInfoStore.getUserInfo();
|
|
|
+ } catch (error) {}
|
|
|
+}
|
|
|
+
|
|
|
watch(
|
|
|
userInfo,
|
|
|
() => {
|
|
@@ -105,6 +130,9 @@ watch(
|
|
|
form.email = userInfo.value.email;
|
|
|
form.sex = userInfo.value.sex;
|
|
|
form.headImageUrl = userInfo.value.headImageUrl;
|
|
|
+ fileList.value[0] = {
|
|
|
+ url: userInfo.value.headImageUrl,
|
|
|
+ };
|
|
|
form.address = userInfo.value.address;
|
|
|
form.job = userInfo.value.job;
|
|
|
form.personalSign = userInfo.value.personalSign;
|
|
@@ -119,30 +147,6 @@ onMounted(() => {
|
|
|
userInfoStore.getUserInfo();
|
|
|
});
|
|
|
|
|
|
-const { open, onChange } = useFileDialog({
|
|
|
- accept: ".png,.png,.jpeg,.JPG,Png ",
|
|
|
-});
|
|
|
-
|
|
|
-function handleChangeAvatar() {
|
|
|
- open();
|
|
|
-}
|
|
|
-
|
|
|
-onChange(async (files) => {
|
|
|
- if (!files.length) return;
|
|
|
- const formData = new FormData();
|
|
|
- formData.append("uploadFile", files[0]);
|
|
|
- formData.append("asImage", true);
|
|
|
- formData.append("fieldName", "headImageUrl");
|
|
|
- try {
|
|
|
- const { data } = await request("/website/tourism/user/upload", {
|
|
|
- method: "post",
|
|
|
- body: formData,
|
|
|
- });
|
|
|
- form.headImageUrl = data.fileUrl;
|
|
|
- userInfoStore.getUserInfo();
|
|
|
- } catch (error) {}
|
|
|
-});
|
|
|
-
|
|
|
async function handleSubmit() {
|
|
|
try {
|
|
|
await request("/website/tourism/user/update", {
|