277 lines
5.7 KiB
Vue
277 lines
5.7 KiB
Vue
<template>
|
||
<view class="header">
|
||
<!-- 头像和信息区 -->
|
||
<view class="info-row">
|
||
<view class="avatar-stack">
|
||
<image
|
||
class="avatar-main"
|
||
:src="userFaceInfo?.avatar_img_url"
|
||
mode="aspectFill"
|
||
/>
|
||
<image
|
||
class="avatar-shadow"
|
||
:src="userFaceInfo?.avatar_img_url"
|
||
mode="aspectFill"
|
||
/>
|
||
</view>
|
||
</view>
|
||
<!-- 底部分栏信息 -->
|
||
<view class="">
|
||
<view class="info-main">
|
||
<view class="info-basic">
|
||
<text class="gender">{{ userFaceInfo.sex }}</text>
|
||
<text class="birthday">| {{ userFaceInfo.birthday }}</text>
|
||
</view>
|
||
<view class="info-desc">
|
||
{{ userFaceInfo.feature }},
|
||
<!-- {{
|
||
userFaceInfo.Facial_three_dimensionality
|
||
}}, -->
|
||
{{ userFaceInfo.eyebrows }},{{ userFaceInfo.ocular_form }},
|
||
{{ userFaceInfo.neck_length }},
|
||
{{ userFaceInfo.nasolabial_folds }}
|
||
</view>
|
||
</view>
|
||
<view class="info-columns">
|
||
<view class="col-item">
|
||
<text class="col-label">身高</text>
|
||
<text class="col-value">{{ userFaceInfo.height || "-" }}cm</text>
|
||
</view>
|
||
<view class="col-item">
|
||
<text class="col-label">体重</text>
|
||
<text class="col-value">{{ userFaceInfo.weight || "-" }}kg</text>
|
||
</view>
|
||
<view class="col-item">
|
||
<text class="col-label">修饰目标</text>
|
||
<text class="col-value">{{ userFaceInfo.purpose || "-" }}</text>
|
||
</view>
|
||
<view class="col-item">
|
||
<text class="col-label">局部问题</text>
|
||
<text class="col-value">{{ userFaceInfo.question || "-" }}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { defineProps, watch, ref } from "vue";
|
||
const props = defineProps({
|
||
userFaceInfo: {
|
||
type: Object,
|
||
default: {},
|
||
},
|
||
});
|
||
|
||
const userFaceInfo = ref({});
|
||
|
||
watch(
|
||
() => props.userFaceInfo,
|
||
(newVal) => {
|
||
// console.log('newVal: xxxxxxxx', newVal);
|
||
userFaceInfo.value = newVal;
|
||
},
|
||
{ deep: true, immediate: true }
|
||
);
|
||
</script>
|
||
|
||
<style scoped>
|
||
.header {
|
||
background: url("https://llyz.oss-cn-beijing.aliyuncs.com/diagnostic-report-h5/h5headerbg.png")
|
||
no-repeat center center;
|
||
color: #fff;
|
||
padding: 16px 20px 32px;
|
||
font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
|
||
}
|
||
.status-bar-row {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
height: 32px;
|
||
padding: 0 12px;
|
||
background: #333;
|
||
}
|
||
.status-bar-title {
|
||
color: #aaa;
|
||
font-size: 14px;
|
||
}
|
||
.status-bar-icons {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
.status-bar-time {
|
||
font-size: 16px;
|
||
color: #fff;
|
||
margin-right: 16px;
|
||
}
|
||
.status-bar-right {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
}
|
||
.status-bar-icon {
|
||
width: 16px;
|
||
height: 16px;
|
||
background: #666;
|
||
border-radius: 3px;
|
||
}
|
||
.status-bar-icon.signal {
|
||
background: linear-gradient(90deg, #fff 60%, #666 100%);
|
||
}
|
||
.status-bar-icon.wifi {
|
||
background: linear-gradient(90deg, #fff 60%, #666 100%);
|
||
}
|
||
.status-bar-icon.battery {
|
||
background: #fff;
|
||
border-radius: 2px;
|
||
}
|
||
.header-action-row {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
padding: 12px 12px 0 12px;
|
||
}
|
||
.back-btn {
|
||
width: 36px;
|
||
height: 36px;
|
||
background: #fff;
|
||
border-radius: 50%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||
}
|
||
.back-arrow {
|
||
color: #222;
|
||
font-size: 22px;
|
||
font-weight: bold;
|
||
}
|
||
.header-icons {
|
||
display: flex;
|
||
gap: 10px;
|
||
}
|
||
.icon-box {
|
||
width: 24px;
|
||
height: 24px;
|
||
background: #444;
|
||
border-radius: 6px;
|
||
}
|
||
.icon-box.square {
|
||
border-radius: 4px;
|
||
}
|
||
.icon-box.dot {
|
||
border-radius: 50%;
|
||
width: 8px;
|
||
height: 8px;
|
||
background: #fff;
|
||
margin-top: 8px;
|
||
}
|
||
.icon-box.circle {
|
||
border-radius: 50%;
|
||
background: #fff;
|
||
border: 2px solid #444;
|
||
}
|
||
.info-row {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
/* margin-top: 8px; */
|
||
/* padding: 0 24px; */
|
||
}
|
||
.avatar-stack {
|
||
position: relative;
|
||
width: 80px;
|
||
height: 80px;
|
||
display: flex;
|
||
}
|
||
.avatar-main {
|
||
width: 80px;
|
||
height: 80px;
|
||
border-radius: 50%;
|
||
/* border: 2px solid #fff; */
|
||
position: absolute;
|
||
background-color: #fff;
|
||
object-fit: cover;
|
||
left: 0;
|
||
top: 0;
|
||
z-index: 9;
|
||
}
|
||
.avatar-shadow {
|
||
width: 80px;
|
||
height: 80px;
|
||
border-radius: 50%;
|
||
background-color: gray;
|
||
/* opacity: 0.3; */
|
||
object-fit: cover;
|
||
position: absolute;
|
||
left: 82%;
|
||
z-index: 2;
|
||
/* 关键代码:图片变黑白 */
|
||
filter: grayscale(100%);
|
||
}
|
||
|
||
.info-main {
|
||
margin-top: 8px;
|
||
}
|
||
.info-basic {
|
||
font-size: 12px;
|
||
margin-bottom: 6px;
|
||
}
|
||
.gender {
|
||
margin-right: 8px;
|
||
}
|
||
.birthday {
|
||
color: #bbb;
|
||
}
|
||
.info-desc {
|
||
width: 336px;
|
||
font-size: 14px;
|
||
color: #ccc;
|
||
margin-bottom: 10px;
|
||
font-family: Molengo;
|
||
font-weight: 400;
|
||
font-size: 10px;
|
||
line-height: 100%;
|
||
letter-spacing: 0%;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
.info-columns {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: flex-start;
|
||
/* padding: 0 24px; */
|
||
margin-top: 18px;
|
||
}
|
||
.col-item {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
}
|
||
.col-label {
|
||
color: #aaa;
|
||
font-size: 13px;
|
||
margin-bottom: 2px;
|
||
font-family: Molengo;
|
||
font-weight: 400;
|
||
font-size: 10px;
|
||
line-height: 10px;
|
||
letter-spacing: 0px;
|
||
}
|
||
.col-value {
|
||
color: #fff;
|
||
font-size: 15px;
|
||
font-family: Molengo;
|
||
font-weight: 400;
|
||
font-size: 12px;
|
||
line-height: 12px;
|
||
letter-spacing: 0px;
|
||
/* 超出隐藏并显示省略号 */
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
/* 可选:限制最大宽度(防止 flex 布局拉伸) */
|
||
max-width: 80px;
|
||
}
|
||
</style>
|