chore: prepare anxinyan release

This commit is contained in:
wushumin
2026-05-25 14:53:59 +08:00
parent 21360a6a2c
commit fa8c9015d9
26 changed files with 2124 additions and 120 deletions

View File

@@ -57,6 +57,7 @@ const productSpecItems = computed(() => {
appendSpecItem(items, "序列号/编码", product.serial_no);
for (const point of normalizedKeyPoints(result.key_points)) {
if (hasSpecItem(items, point.point_name)) continue;
appendSpecItem(items, point.point_name, point.point_value, point.point_remark);
}
@@ -92,6 +93,11 @@ function appendSpecItem(
});
}
function hasSpecItem(items: Array<{ label: string }>, label: unknown) {
const labelText = textValue(label);
return Boolean(labelText && items.some((item) => item.label === labelText));
}
function textValue(value: unknown) {
return String(value ?? "").trim();
}
@@ -276,6 +282,7 @@ onShow(() => {
</view>
<view class="report-shell">
<view class="report-shell__watermark" aria-hidden="true"></view>
<view class="report-cover">
<swiper v-if="reportImages.length" class="report-cover__swiper" indicator-dots circular>
<swiper-item v-for="item in reportImages" :key="item.file_url || item.file_id">
@@ -316,8 +323,6 @@ onShow(() => {
</view>
<view v-if="activeTab === 'product'" class="report-panel">
<view class="report-watermark" aria-hidden="true"></view>
<view class="report-result">
<view class="report-result__content">
<view class="report-result__label">{{ resultItem.label }}</view>
@@ -325,8 +330,8 @@ onShow(() => {
<view v-if="resultItem.remark" class="report-result__desc">{{ resultItem.remark }}</view>
</view>
<view class="report-seal">
<text class="report-seal__brand">ANXINYAN</text>
<text class="report-seal__main">可信</text>
<text class="report-seal__brand">安心验</text>
<text class="report-seal__main">鉴定</text>
</view>
</view>
@@ -496,6 +501,26 @@ onShow(() => {
box-shadow: 0 18rpx 48rpx rgba(31, 36, 48, 0.08);
}
.report-shell__watermark {
position: absolute;
z-index: 0;
top: 374rpx;
left: 28rpx;
right: 28rpx;
height: 560rpx;
background: url("../../static/report/report-watermark.svg") center / 100% 100% no-repeat;
opacity: 1;
pointer-events: none;
}
.report-cover,
.report-meta,
.report-tabs,
.report-panel {
position: relative;
z-index: 1;
}
.report-cover {
height: 356rpx;
margin: 28rpx 28rpx 0;
@@ -620,28 +645,14 @@ onShow(() => {
overflow: hidden;
}
.report-watermark {
position: absolute;
top: -6rpx;
left: 50%;
width: 520rpx;
height: 430rpx;
border-radius: 50%;
opacity: 0.46;
transform: translateX(-50%);
background:
repeating-radial-gradient(ellipse at center, rgba(230, 195, 79, 0.2) 0, rgba(230, 195, 79, 0.2) 2rpx, transparent 3rpx, transparent 17rpx),
repeating-conic-gradient(from 0deg, rgba(230, 195, 79, 0.12) 0deg 8deg, transparent 8deg 16deg);
pointer-events: none;
}
.report-result {
position: relative;
z-index: 1;
display: flex;
align-items: flex-start;
gap: 24rpx;
padding: 10rpx 0 30rpx;
min-height: 132rpx;
padding: 10rpx 136rpx 30rpx 0;
border-bottom: 1px solid #e5e5e5;
}
@@ -674,29 +685,57 @@ onShow(() => {
}
.report-seal {
flex: 0 0 auto;
position: absolute;
right: 2rpx;
bottom: 22rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 104rpx;
height: 104rpx;
margin-top: 2rpx;
border: 4rpx solid rgba(56, 164, 73, 0.8);
width: 106rpx;
height: 106rpx;
border: 4rpx solid rgba(40, 151, 73, 0.82);
border-radius: 999rpx;
color: #39a54b;
transform: rotate(-10deg);
background: rgba(255, 255, 255, 0.42);
color: #239245;
box-shadow: inset 0 0 0 4rpx rgba(40, 151, 73, 0.1);
transform: rotate(-9deg);
}
.report-seal::before {
position: absolute;
inset: 10rpx;
border: 2rpx solid rgba(40, 151, 73, 0.58);
border-radius: inherit;
content: "";
}
.report-seal::after {
position: absolute;
left: 50%;
bottom: 12rpx;
width: 34rpx;
height: 5rpx;
border-radius: 999rpx;
background: currentColor;
content: "";
opacity: 0.7;
transform: translateX(-50%);
}
.report-seal__brand {
font-size: 16rpx;
font-weight: 800;
position: relative;
z-index: 1;
font-size: 18rpx;
font-weight: 900;
line-height: 1;
}
.report-seal__main {
margin-top: 8rpx;
font-size: 28rpx;
position: relative;
z-index: 1;
margin-top: 9rpx;
font-size: 26rpx;
font-weight: 900;
line-height: 1;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -0,0 +1,36 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 584">
<g fill="none" stroke="#E5BE39" stroke-linecap="round" stroke-linejoin="round">
<circle cx="320" cy="292" r="248" opacity=".16" stroke-width="2"/>
<circle cx="320" cy="292" r="210" opacity=".14" stroke-width="2"/>
<circle cx="320" cy="292" r="170" opacity=".12" stroke-width="2"/>
<circle cx="320" cy="292" r="118" opacity=".11" stroke-width="2"/>
<circle cx="320" cy="292" r="74" opacity=".12" stroke-width="2"/>
<g opacity=".11" stroke-width="1.6">
<ellipse cx="320" cy="292" rx="58" ry="234"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(15 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(30 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(45 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(60 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(75 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(90 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(105 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(120 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(135 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(150 320 292)"/>
<ellipse cx="320" cy="292" rx="58" ry="234" transform="rotate(165 320 292)"/>
</g>
<g opacity=".18" stroke-width="2">
<path d="M320 88c34 54 69 86 128 106-59 20-94 52-128 106-34-54-69-86-128-106 59-20 94-52 128-106Z"/>
<path d="M320 284c28 45 58 73 107 90-49 17-79 45-107 90-28-45-58-73-107-90 49-17 79-45 107-90Z"/>
</g>
<g opacity=".1" stroke-width="1.4">
<path d="M96 292h448"/>
<path d="M320 68v448"/>
<path d="M160 132l320 320"/>
<path d="M480 132 160 452"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB