sl-express/project-wl-yonghuduan-uniapp-vue3/pages/my/index.vue
shuhongfan cf5ac25c14 init
2023-09-04 16:40:17 +08:00

199 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 我的页面 -->
<template>
<view class="my">
<!-- banner图 -->
<view class="banner">
<!-- 头像用户名 -->
<view class="headBox" @click="toLogin">
<image :src="avatarUrl" />
<view class="userName">{{nickName}}</view>
</view>
</view>
<!-- 地址簿实名认证专属快递员 -->
<view class="list-top">
<view class="list-item" @click="handleToAddress">
<view class="left">
<image class="icon" src='../../static/my-address.png' />
<view class="label">地址簿</view>
</view>
<image class="arrow" src='../../static/icon15.png' />
</view>
<view class="list-item" @click="handleTorealName">
<view class="left">
<image class="icon" src='../../static/my-name.png' />
<view class="label">实名认证</view>
</view>
<image class="arrow" src='../../static/icon15.png' />
</view>
<view class="list-item" @click="handleSecondQi">
<view class="left">
<image class="icon" src='../../static/my-send.png' />
<view class="label">专属快递员</view>
</view>
<image class="arrow" src='../../static/icon15.png' />
</view>
</view>
<view class="list-bottom" v-if="token">
<picker mode="selector" @change="changeSex" :value="sex" :range="sexList">
<view class="list-item sex">
<view class="label">性别</view>
<view class="item-value">{{sex?'男':'女'}}</view>
<image class="arrow" src='../../static/icon15.png' />
</view>
</picker>
<view class="line"></view>
<picker mode="date" :value="birthday" :start="startDate" :end="endDate" @change="getDateChange">
<view class="list-item">
<view class="label">生日</view>
<view class="item-value">{{birthday}}</view>
<image class="arrow" src='../../static/icon15.png' />
</view>
</picker>
</view>
<view class="logout" @click="handleLogout" v-if="token">退出登录</view>
</view>
<!-- end -->
</template>
<script setup>
import {
ref,
reactive,
} from 'vue';
import {
getUserInfo,
updateUserInfo
} from '@/pages/api/my.js';
import {
onShow,
} from '@dcloudio/uni-app';
import {
handleSecondQi
} from '@/utils/index.js'
const token = ref()
const sexList = reactive(['女', '男'])
let nickName = ref('')
let avatarUrl = ref('')
let startDate = ref()
let endDate = ref()
let idCard = ref('')
let name = ref('')
let sex = ref(1)
let birthday = ref('1995-09-01')
const isRealNameAuth = ref(false)
onShow(() => {
startDate.value = getDate('start')
endDate.value = getDate('end')
nickName.value = uni.getStorageSync('nickName') || '神领用户'
avatarUrl.value = uni.getStorageSync('avatarUrl') || '../../static/defaultHeadImg.png'
token.value = uni.getStorageSync('token')
baseUserInfo()
})
//退出登录
const handleLogout = () => {
uni.removeStorageSync('token');
uni.removeStorageSync('nickName');
uni.removeStorageSync('avatarUrl');
uni.switchTab({
url: '/pages/index/index'
});
}
const baseUserInfo = () => {
getUserInfo().then((res) => {
if (res) {
isRealNameAuth.value = Boolean(res.data.idCardNoVerify)
idCard.value = res.data.idCardNo || ''
name.value = res.data.name
sex.value = res.data.sex
birthday.value = res.data.birthday
nickName.value = res.data.phone
uni.setStorageSync('nickName', res.data.phone);
}
})
}
const getDate = (type) => {
const date = new Date()
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
if (type === "start") {
year = year - 60
} else {
year = year + 2
}
month = month > 9 ? month : "0" + month
day = day > 9 ? day : '0' + day
return `${year}-${month}-${day}`
}
const toLogin = () => {
if (uni.getStorageSync('token')) {
getUserInfoFunc()
} else {
uni.navigateTo({
url: '/pages/login/index'
});
}
}
//跳转到地址簿
const handleToAddress = () => {
uni.navigateTo({
url: uni.getStorageSync('token') ? '/pages/address/index?type=address&isFromAddress=true' :
'/pages/login/index'
});
}
//跳转到实名认证页面
const handleTorealName = () => {
if (!uni.getStorageSync('token')) {
return uni.navigateTo({
url: '/pages/login/index'
});
}
if (isRealNameAuth.value) {
uni.navigateTo({
url: '/subPages/authentication-success/index?name=' + name.value + '&idCard=' + idCard.value
});
} else {
uni.navigateTo({
url: '/subPages/realName-authentication/index'
});
}
}
const getDateChange = (e) => {
updateUserInfo({
birthday: e.detail.value
}).then((res) => {
baseUserInfo()
}).catch((err) => {
uni.showToast({
title: '网络异常',
duration: 2000,
icon: 'none'
});
})
}
const changeSex = (e) => {
updateUserInfo({
sex: Number(e.detail.value)
}).then((res) => {
baseUserInfo()
}).catch((err) => {
uni.showToast({
title: '网络异常',
duration: 2000,
icon: 'none'
});
})
}
</script>
<style src="./index.scss" lang="scss" scoped></style>