merchapp/java-mall-app-shop-admin/pages/my/userInfo.vue
2025-05-08 10:16:20 +08:00

190 lines
4.4 KiB
Vue

<template>
<view class="userInfo-container">
<view class="user-avatar">
<u--image
class="user-avatar-img"
:src="userInfo.user_avatar || '../../static/user-img.png'"
shape="circle"
width="110"
height="110"
></u--image>
<view class="user-avatar-text">更换用户头像</view>
</view>
<u-form :model="userInfo" ref="uForm" class="form" label-width="100">
<u-form-item label="用户编号" prop="id">
<u-input
class="form-input"
disabled
disabledColor="#fff"
inputAlign="right"
v-model="userInfo.id"
placeholder=""
/>
</u-form-item>
<u-form-item
label="用户账号"
prop="user_account"
class="user-account-item"
>
<u-input
class="form-input"
disabled
disabledColor="#fff"
inputAlign="right"
v-model="userInfo.user_account"
placeholder=""
/>
<view slot="right" class="copy" @click="copy"> 复制 </view>
</u-form-item>
<u-form-item label="用户姓名" prop="name">
<u-input
class="form-input"
disabled
disabledColor="#fff"
inputAlign="right"
v-model="name"
placeholder=""
/>
</u-form-item>
<u-form-item label="手机号" prop="name">
<u-input
class="form-input"
disabled
disabledColor="#fff"
inputAlign="right"
v-model="phone"
placeholder=""
/>
</u-form-item>
</u-form>
<u-form :model="userInfo" ref="uForm" class="form" label-width="100">
<u-form-item label="注册时间" prop="time">
<u-input
class="form-input"
disabled
disabledColor="#fff"
inputAlign="right"
v-model="registerTime"
placeholder=""
/>
</u-form-item>
</u-form>
</view>
</template>
<script>
import { mapState } from "vuex";
export default {
data() {
return {
name: "",
phone: "",
registerTime: "",
};
},
computed: {
...mapState("user", ["userInfo"]),
},
onShow() {
let auditInfo = uni.getStorageSync("auditInfo");
this.name = this.nameHide(auditInfo.contact_name);
this.phone = this.phoneHide(auditInfo.login_mobile);
this.registerTime = auditInfo.created_at;
},
methods: {
copy() {
uni.setClipboardData({
data: this.userInfo.user_account,
success: function () {
uni.showToast({
title: "复制成功",
icon: "none",
});
},
});
},
nameHide(name) {
if (name.length == 2) {
name = name.substring(0, 1) + "*"; // 截取name 字符串截取第一个字符,
return name; // 张三显示为张*
} else if (name.length == 3) {
name = name.substring(0, 1) + "*" + name.substring(2, 3); // 截取第一个和第三个字符
return name; // 李思思显示为李*思
} else if (name.length > 3) {
name =
name.substring(0, 1) + "*" + "*" + name.substring(3, name.length); // 截取第一个和大于第4个字符
return name; // 王五哈哈显示为王**哈
}
},
phoneHide(phone) {
let reg = /^(1[3-9][0-9])\d{4}(\d{4}$)/; // 定义手机号正则表达式
phone = phone.replace(reg, "$1****$2");
return phone; // 185****6696
},
},
};
</script>
<style lang="scss">
.userInfo-container {
height: calc(100vh - 88rpx);
background: #f6f6f6;
.user-avatar {
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
padding: 60rpx 0;
background: #fff;
.user-avatar-img {
margin-bottom: 20rpx;
}
.user-avatar-text {
color: #ec5d29;
}
}
.form {
padding: 40rpx 0;
.u-form-item {
padding: 0 32rpx;
border-top: 1px solid #f4f4f4;
background: #fff;
.form-input {
background: #fff;
}
.form-input-time {
outline: none;
}
.shop-description {
display: flex;
flex-flow: column;
.title {
margin-bottom: 40rpx;
}
.textarea {
border: 1px solid #f4f4f4;
width: 100%;
}
}
}
}
.copy {
padding: 8rpx 20px;
border-radius: 12rpx;
background: #aaaaaa;
color: #fff;
}
}
</style>