指标
This commit is contained in:
parent
2cc477dac9
commit
0c8fa981b3
@ -149,7 +149,7 @@ const start = () => {
|
|||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.main-top {
|
.main-top {
|
||||||
padding-top: 115px;
|
padding-top: 40px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@ -52,7 +52,7 @@ onMounted(() => {
|
|||||||
const errorMessage = ref('');
|
const errorMessage = ref('');
|
||||||
const ARK_API_URL =
|
const ARK_API_URL =
|
||||||
(import.meta.env.VITE_ARK_API_URL as string | undefined) ||
|
(import.meta.env.VITE_ARK_API_URL as string | undefined) ||
|
||||||
'https://ark.cn-beijing.volces.com/api/v3/responses';
|
'https://ark.cn-shanghai.volces.com/api/v3/responses';
|
||||||
const ARK_API_KEY =
|
const ARK_API_KEY =
|
||||||
(import.meta.env.VITE_ARK_API_KEY as string | undefined) ||
|
(import.meta.env.VITE_ARK_API_KEY as string | undefined) ||
|
||||||
'3496e327-0454-426c-8e69-13e905a1e756';
|
'3496e327-0454-426c-8e69-13e905a1e756';
|
||||||
@ -136,7 +136,7 @@ async function analyzeVideoWithArk(videoDataUrl: string, signal?: AbortSignal) {
|
|||||||
if (!ARK_API_KEY) throw new Error('未设置 VITE_ARK_API_KEY');
|
if (!ARK_API_KEY) throw new Error('未设置 VITE_ARK_API_KEY');
|
||||||
|
|
||||||
const requestBody: any = {
|
const requestBody: any = {
|
||||||
model: 'doubao-seed-2-0-pro-260215',
|
model: 'doubao-seed-2-0-mini-260215',
|
||||||
input: [
|
input: [
|
||||||
{
|
{
|
||||||
role: 'user',
|
role: 'user',
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
<div :class="['status', data?.metrics?.vital_signs?.heart_rate?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.heart_rate?.status }}</div>
|
<div :class="['status', data?.metrics?.vital_signs?.heart_rate?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.heart_rate?.status }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">心率 <span>{{ data?.metrics?.vital_signs?.heart_rate?.value }}</span> bpm</div>
|
<div class="middle">心率 <span>{{ data?.metrics?.vital_signs?.heart_rate?.value }}</span> bpm</div>
|
||||||
<div class="bottom">正常范围:60~100 bmp</div>
|
<div class="bottom">正常范围:60~100次/分钟</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<div :class="['status', data?.metrics?.vital_signs?.respiratory_rate?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.respiratory_rate?.status}}</div>
|
<div :class="['status', data?.metrics?.vital_signs?.respiratory_rate?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.respiratory_rate?.status}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">呼吸频率 <span>{{ data?.metrics?.vital_signs?.respiratory_rate?.value }}</span> rpm</div>
|
<div class="middle">呼吸频率 <span>{{ data?.metrics?.vital_signs?.respiratory_rate?.value }}</span> rpm</div>
|
||||||
<div class="bottom">正常范围:12~20 rpm</div>
|
<div class="bottom">正常范围:12~20次/分钟</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@ -67,7 +67,7 @@
|
|||||||
<div :class="['status', data?.metrics?.vital_signs?.diastolic_bp?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.diastolic_bp?.status }}</div>
|
<div :class="['status', data?.metrics?.vital_signs?.diastolic_bp?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.diastolic_bp?.status }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">舒张压 <span>{{ data?.metrics?.vital_signs?.diastolic_bp?.value }}</span> rpm</div>
|
<div class="middle">舒张压 <span>{{ data?.metrics?.vital_signs?.diastolic_bp?.value }}</span> rpm</div>
|
||||||
<div class="bottom">正常范围:12~20 rpm</div>
|
<div class="bottom">正常范围:60mmHg~90mmHg</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@ -75,8 +75,8 @@
|
|||||||
<div class="title">收缩压</div>
|
<div class="title">收缩压</div>
|
||||||
<div :class="['status', data?.metrics?.vital_signs?.systolic_bp?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.systolic_bp?.status }}</div>
|
<div :class="['status', data?.metrics?.vital_signs?.systolic_bp?.status == '正常' ? '' : 'error']">{{ data?.metrics?.vital_signs?.systolic_bp?.status }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">舒张压 <span>{{ data?.metrics?.vital_signs?.systolic_bp?.value }}</span> mmHg</div>
|
<div class="middle">收缩压 <span>{{ data?.metrics?.vital_signs?.systolic_bp?.value }}</span> mmHg</div>
|
||||||
<div class="bottom">正常范围:12~20 rpm</div>
|
<div class="bottom">正常范围:90mmHg~139mmHg</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tips">
|
<div class="tips">
|
||||||
<Tips title="健康提示" :text="data?.metrics?.vital_signs?.analysis" />
|
<Tips title="健康提示" :text="data?.metrics?.vital_signs?.analysis" />
|
||||||
@ -93,7 +93,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="middle"> <span>{{ data.metrics?.blood_health?.glucose?.value }}</span> bmp</div>
|
<div class="middle"> <span>{{ data.metrics?.blood_health?.glucose?.value }}</span> bmp</div>
|
||||||
<div :class="['middle_progress', data?.metrics?.blood_health?.glucose?.status == '偏低' ? 'status1' : data?.metrics?.blood_health?.glucose?.status == '偏高' ? 'status3' : 'status2']"></div>
|
<div :class="['middle_progress', data?.metrics?.blood_health?.glucose?.status == '偏低' ? 'status1' : data?.metrics?.blood_health?.glucose?.status == '偏高' ? 'status3' : 'status2']"></div>
|
||||||
<div class="bottom">正常范围:3.9~6.1 mmol/L</div>
|
<div class="bottom">正常范围:3.9~6.1mmol/</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@ -103,7 +103,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="middle"> <span>{{ data.metrics?.blood_health?.hemoglobin?.value }}</span> rmp</div>
|
<div class="middle"> <span>{{ data.metrics?.blood_health?.hemoglobin?.value }}</span> rmp</div>
|
||||||
<div :class="['middle_progress', data?.metrics?.blood_health?.hemoglobin?.status == '偏低' ? 'status1' : data?.metrics?.blood_health?.hemoglobin?.status == '偏高' ? 'status3' : 'status2']"></div>
|
<div :class="['middle_progress', data?.metrics?.blood_health?.hemoglobin?.status == '偏低' ? 'status1' : data?.metrics?.blood_health?.hemoglobin?.status == '偏高' ? 'status3' : 'status2']"></div>
|
||||||
<div class="bottom">正常范围:110~165 g/L</div>
|
<div class="bottom">正常范围:110~165g/L</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
@ -113,7 +113,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="middle"> <span>{{ data?.metrics?.blood_health?.triglycerides?.value }}</span> mmol/L</div>
|
<div class="middle"> <span>{{ data?.metrics?.blood_health?.triglycerides?.value }}</span> mmol/L</div>
|
||||||
<div :class="['middle_progress', data?.metrics?.blood_health?.triglycerides?.status == '偏低' ? 'status1' : data?.metrics?.blood_health?.triglycerides?.status == '偏高' ? 'status3' : 'status2']"></div>
|
<div :class="['middle_progress', data?.metrics?.blood_health?.triglycerides?.status == '偏低' ? 'status1' : data?.metrics?.blood_health?.triglycerides?.status == '偏高' ? 'status3' : 'status2']"></div>
|
||||||
<div class="bottom">正常范围:0.565 ~ 1.96 mmol/L</div>
|
<div class="bottom">正常范围:0.565~1.69mmol/l</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tips">
|
<div class="tips">
|
||||||
<Tips title="健康提示" :text="data?.metrics?.blood_health?.analysis" />
|
<Tips title="健康提示" :text="data?.metrics?.blood_health?.analysis" />
|
||||||
@ -131,7 +131,7 @@
|
|||||||
<div class="middle_progress">
|
<div class="middle_progress">
|
||||||
<Progress color="linear-gradient(to right, #F5EBC2, #C8A92E)" :percentage="data?.metrics?.mental_health?.mental_score?.value" :pivot-text="''" />
|
<Progress color="linear-gradient(to right, #F5EBC2, #C8A92E)" :percentage="data?.metrics?.mental_health?.mental_score?.value" :pivot-text="''" />
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">正常范围:70-100分</div>
|
<div class="bottom">正常范围:0~100分</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="indicator">
|
<div class="indicator">
|
||||||
<div class="indicator_item">
|
<div class="indicator_item">
|
||||||
@ -142,7 +142,7 @@
|
|||||||
<span :class="['value', data?.metrics?.mental_health?.stress?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.stress?.value }}</span>
|
<span :class="['value', data?.metrics?.mental_health?.stress?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.stress?.value }}</span>
|
||||||
<div :class="['status', data?.metrics?.mental_health?.stress?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.stress?.status=='正常' ? '正常' : '异常' }}</div>
|
<div :class="['status', data?.metrics?.mental_health?.stress?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.stress?.status=='正常' ? '正常' : '异常' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="desc">正常范围:0~5分</div>
|
<div class="desc">正常范围:0~10分</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="indicator_item">
|
<div class="indicator_item">
|
||||||
@ -153,7 +153,7 @@
|
|||||||
<span :class="['value', data?.metrics?.mental_health?.depression?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.depression?.value }}</span>
|
<span :class="['value', data?.metrics?.mental_health?.depression?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.depression?.value }}</span>
|
||||||
<div :class="['status', data?.metrics?.mental_health?.depression?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.depression?.status=='正常' ? '正常' : '异常' }}</div>
|
<div :class="['status', data?.metrics?.mental_health?.depression?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.depression?.status=='正常' ? '正常' : '异常' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="desc">正常范围:0~3分</div>
|
<div class="desc">正常范围:0~10分</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="indicator_item">
|
<div class="indicator_item">
|
||||||
@ -164,7 +164,7 @@
|
|||||||
<span :class="['value', data?.metrics?.mental_health?.anxiety?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.anxiety?.value }}</span>
|
<span :class="['value', data?.metrics?.mental_health?.anxiety?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.anxiety?.value }}</span>
|
||||||
<div :class="['status', data?.metrics?.mental_health?.anxiety?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.anxiety?.status=='正常' ? '正常' : '异常' }}</div>
|
<div :class="['status', data?.metrics?.mental_health?.anxiety?.status == '正常' ? '' : 'error']">{{ data?.metrics?.mental_health?.anxiety?.status=='正常' ? '正常' : '异常' }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="desc">正常范围:0~3分</div>
|
<div class="desc">正常范围:0~10分</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -177,7 +177,7 @@
|
|||||||
<div class="content content5" :ref="(el) => setSectionEl(5, el)">
|
<div class="content content5" :ref="(el) => setSectionEl(5, el)">
|
||||||
<Item title="皮肤健康分析报告">
|
<Item title="皮肤健康分析报告">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="type"><span>混合型肤质</span></div>
|
<div class="type"><span>{{ data?.metrics?.skin_status?.skin_type?.value }}</span></div>
|
||||||
<div class="desc">混合性肌肤:T区偏油,U区偏干</div>
|
<div class="desc">混合性肌肤:T区偏油,U区偏干</div>
|
||||||
|
|
||||||
<div class="line-box">
|
<div class="line-box">
|
||||||
@ -309,15 +309,6 @@ async function captureReportPageAndUpload(): Promise<string | null> {
|
|||||||
revokeLastScreenshotBlobUrl();
|
revokeLastScreenshotBlobUrl();
|
||||||
lastScreenshotBlobUrl = URL.createObjectURL(blob);
|
lastScreenshotBlobUrl = URL.createObjectURL(blob);
|
||||||
console.log('报告截图临时:', lastScreenshotBlobUrl);
|
console.log('报告截图临时:', lastScreenshotBlobUrl);
|
||||||
const previewWin = window.open(lastScreenshotBlobUrl, '_blank', 'noopener,noreferrer');
|
|
||||||
if (!previewWin) {
|
|
||||||
console.warn('弹窗被拦截时,请手动将控制台里的 blob: 整段地址粘贴到新标签页地址栏。');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!sessionStorage.getItem('step2_ark_result')) {
|
|
||||||
console.info('[报告截图] 无 step2_ark_result,仅生成临时 blob,跳过上传');
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const fd = new FormData();
|
const fd = new FormData();
|
||||||
fd.append('file', blob, `health-report-${Date.now()}.png`);
|
fd.append('file', blob, `health-report-${Date.now()}.png`);
|
||||||
@ -1126,8 +1117,6 @@ if (arkResult) {
|
|||||||
|
|
||||||
.status {
|
.status {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
width: 40px;
|
|
||||||
height: 24px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user