|
@@ -5,15 +5,27 @@
|
|
|
import SectionHeading from '@/components/section-heading.vue'
|
|
|
import { useUserStore } from '../../../store'
|
|
|
import { storeToRefs } from 'pinia'
|
|
|
-import { updateMemberUserInfo } from '../../../core/libs/requests'
|
|
|
+import {
|
|
|
+ getUserAuthInfo,
|
|
|
+ updateMemberUserInfo,
|
|
|
+ getUserBasicInfo,
|
|
|
+ updateUserBasicInfo,
|
|
|
+} from '../../../core/libs/requests'
|
|
|
import { NetImages } from '../../../core/libs/net-images'
|
|
|
-import ButtonEvo from '@/components/button-evo.vue'
|
|
|
-import TiltedButton from '@/components/tilted-button.vue'
|
|
|
-import ImgBtnEvo from '@/components/img-btn-evo.vue'
|
|
|
+import FormMessageBox from '@/components/form-message-box.vue'
|
|
|
+import { useMessage } from 'wot-design-uni'
|
|
|
+import { requestToast } from '../../../core/utils/common'
|
|
|
+import { DataFormSchema } from '../../../components/data-form'
|
|
|
|
|
|
const userStore = useUserStore()
|
|
|
-const { userInfo } = storeToRefs(userStore)
|
|
|
+const { userInfo, isDesigner } = storeToRefs(userStore)
|
|
|
const { setUserInfo } = userStore
|
|
|
+const { confirm } = useMessage('nickname')
|
|
|
+const formData = ref<any>({})
|
|
|
+const schema = ref<DataFormSchema>()
|
|
|
+const birthday = ref<string>('')
|
|
|
+const { data: userAuthInfo, run: setUserAuthInfo } = useRequest(() => getUserAuthInfo(), {})
|
|
|
+const { data: userBasicInfo, run: setUserBasicInfo } = useRequest(() => getUserBasicInfo(), {})
|
|
|
const handleChooseAvatar = async ({ detail: { avatarUrl } }) => {
|
|
|
const { data } = await uni.uploadFile({
|
|
|
url: '/app-api/infra/file/upload',
|
|
@@ -47,12 +59,83 @@ const handleLogout = () => {
|
|
|
url: '/pages/home/index',
|
|
|
})
|
|
|
}
|
|
|
+const handleSetNickname = async () => {
|
|
|
+ if (isDesigner.value) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ formData.value = {
|
|
|
+ nickname: userInfo.value.nickname,
|
|
|
+ }
|
|
|
+ schema.value = { nickname: { type: 'TextField', label: '姓名', props: { type: 'nickname' } } }
|
|
|
+ confirm({
|
|
|
+ title: '修改姓名',
|
|
|
+ beforeConfirm: async ({ resolve }) => {
|
|
|
+ const { code } = await requestToast(() => updateMemberUserInfo(formData.value), {
|
|
|
+ success: true,
|
|
|
+ successTitle: '修改成功',
|
|
|
+ })
|
|
|
+ if (code === 0) {
|
|
|
+ setUserInfo({
|
|
|
+ ...userInfo.value,
|
|
|
+ nickname: formData.value?.nickname,
|
|
|
+ })
|
|
|
+ resolve(true)
|
|
|
+ formData.value = {}
|
|
|
+ }
|
|
|
+ resolve(false)
|
|
|
+ },
|
|
|
+ })
|
|
|
+}
|
|
|
+const handleSetSex = async () => {
|
|
|
+ formData.value = {
|
|
|
+ sex: userInfo.value.sex.toString(),
|
|
|
+ }
|
|
|
+ schema.value = {
|
|
|
+ sex: {
|
|
|
+ type: 'Radio',
|
|
|
+ label: '性别',
|
|
|
+ props: {
|
|
|
+ columns: [
|
|
|
+ { label: '男', value: '0' },
|
|
|
+ { label: '女', value: '1' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+ confirm({
|
|
|
+ title: '修改性别',
|
|
|
+ beforeConfirm: async ({ resolve }) => {
|
|
|
+ const res = await Promise.all([
|
|
|
+ updateMemberUserInfo(formData.value),
|
|
|
+ // updateUserBasicInfo({ ...formData.value, userId: userInfo.value.userId }),
|
|
|
+ ])
|
|
|
+ console.log(res)
|
|
|
+ setUserInfo({
|
|
|
+ ...userInfo.value,
|
|
|
+ sex: formData.value.sex,
|
|
|
+ })
|
|
|
+ resolve(true)
|
|
|
+ formData.value = {}
|
|
|
+ uni.showToast({
|
|
|
+ title: '修改成功',
|
|
|
+ icon: 'none',
|
|
|
+ mask: true,
|
|
|
+ })
|
|
|
+ },
|
|
|
+ })
|
|
|
+}
|
|
|
+onMounted(async () => {
|
|
|
+ await setUserAuthInfo()
|
|
|
+ if (isDesigner.value) {
|
|
|
+ await Promise.all([setUserBasicInfo()])
|
|
|
+ }
|
|
|
+})
|
|
|
</script>
|
|
|
<template>
|
|
|
<div class="flex-grow bg-white flex flex-col p-4.5 gap-8">
|
|
|
<div class="flex flex-col items-center">
|
|
|
<button
|
|
|
- class="p-0 leading-0 bg-transparent"
|
|
|
+ class="p-0 leading-0 bg-transparent after:b-none"
|
|
|
open-type="chooseAvatar"
|
|
|
@chooseavatar="handleChooseAvatar"
|
|
|
>
|
|
@@ -68,23 +151,51 @@ const handleLogout = () => {
|
|
|
更换头像
|
|
|
</div>
|
|
|
</div>
|
|
|
- <button class="w-full p-0 leading-0 bg-transparent hover:bg-transparent" open-type="choose">
|
|
|
+ <button
|
|
|
+ class="w-full p-0 leading-0 bg-transparent hover:bg-transparent after:b-none"
|
|
|
+ @click="handleSetNickname"
|
|
|
+ >
|
|
|
<SectionHeading
|
|
|
title="姓名"
|
|
|
size="sm"
|
|
|
:end-text="userInfo.nickname"
|
|
|
- end-arrow
|
|
|
+ :end-arrow="!isDesigner"
|
|
|
></SectionHeading>
|
|
|
</button>
|
|
|
- <SectionHeading title="性别" size="sm" end-text="设置" end-arrow></SectionHeading>
|
|
|
- <SectionHeading title="生日" size="sm" end-text="设置" end-arrow></SectionHeading>
|
|
|
-
|
|
|
- <SectionHeading title="手机号" size="sm" :end-text="''" end-arrow></SectionHeading>
|
|
|
- <SectionHeading title="公司" size="sm"></SectionHeading>
|
|
|
- <SectionHeading title="推荐人" size="sm"></SectionHeading>
|
|
|
- <SectionHeading title="经纪人" size="sm"></SectionHeading>
|
|
|
+ <template v-if="isDesigner">
|
|
|
+ <SectionHeading
|
|
|
+ title="性别"
|
|
|
+ size="sm"
|
|
|
+ end-text="设置"
|
|
|
+ end-arrow
|
|
|
+ @click="handleSetSex"
|
|
|
+ ></SectionHeading>
|
|
|
+ <!-- <div class="relative">
|
|
|
+ <SectionHeading title="生日" size="sm" end-text="设置" end-arrow></SectionHeading>
|
|
|
+ </div> -->
|
|
|
+ <!-- <wd-datetime-picker-view type="date" v-model="formData" label="年月日" /> -->
|
|
|
+ <!-- <div class="absolute left-0 top-0 w-full h-full opacity-" style="visibility: hidden">
|
|
|
+ <wd-datetime-picker type="date" v-model="birthday" custom-class=""></wd-datetime-picker>
|
|
|
+ </div> -->
|
|
|
+ </template>
|
|
|
+ <SectionHeading
|
|
|
+ title="手机号"
|
|
|
+ size="sm"
|
|
|
+ :end-text="userInfo?.mobile"
|
|
|
+ :end-arrow="false"
|
|
|
+ ></SectionHeading>
|
|
|
+ <template v-if="isDesigner">
|
|
|
+ <SectionHeading title="公司" size="sm" :end-text="userAuthInfo?.employer"></SectionHeading>
|
|
|
+ <SectionHeading title="推荐人" size="sm" :end-text="userAuthInfo?.referrer"></SectionHeading>
|
|
|
+ <SectionHeading
|
|
|
+ title="经纪人"
|
|
|
+ size="sm"
|
|
|
+ :end-text="userBasicInfo?.brokerName"
|
|
|
+ ></SectionHeading>
|
|
|
+ </template>
|
|
|
<div class="flex-1"></div>
|
|
|
<div><wd-button block :round="false" @click="handleLogout">退出登录</wd-button></div>
|
|
|
+ <FormMessageBox v-model="formData" selector="nickname" :schema="schema"></FormMessageBox>
|
|
|
</div>
|
|
|
</template>
|
|
|
<style lang="scss">
|