chore: release updated anxinyan version

This commit is contained in:
wushumin
2026-05-22 21:13:52 +08:00
parent 7e86e2a5ec
commit 78098851f9
29 changed files with 1949 additions and 184 deletions

View File

@@ -357,6 +357,7 @@ export interface ReportDetailData {
}>;
};
trace_info: {
visible: boolean;
nodes: Array<{
code: "inbound" | "appraisal" | "return";
title: string;
@@ -377,6 +378,7 @@ export interface ReportDetailData {
zhongjian_report_no: string;
report_entry_admin_name: string;
report_entered_at: string;
trace_info_visible: boolean;
};
result_info: Record<string, any>;
product_info: Record<string, any>;

View File

@@ -390,6 +390,7 @@ export const reportDetailFallback: ReportDetailData = {
],
},
trace_info: {
visible: false,
nodes: [
{
code: "inbound",
@@ -426,6 +427,7 @@ export const reportDetailFallback: ReportDetailData = {
zhongjian_report_no: "ZJ-20260418-0001",
report_entry_admin_name: "王师傅",
report_entered_at: "2026-04-18 18:20:00",
trace_info_visible: false,
},
result_info: {
result_status: "authentic",

View File

@@ -1,5 +1,5 @@
<script setup lang="ts">
import { computed, ref } from "vue";
import { computed, ref, watch } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import { appApi, type EvidenceAttachmentAsset, type ReportDetailData } from "../../api/app";
import { reportDetailFallback } from "../../mocks/app";
@@ -17,6 +17,9 @@ const antiModalVisible = ref(false);
const antiCode = ref("");
const antiVerifying = ref(false);
const antiResult = ref<null | { passed: boolean; message: string }>(null);
const imagePreviewVisible = ref(false);
const imagePreviewUrls = ref<string[]>([]);
const imagePreviewIndex = ref(0);
const reportImages = computed(() => {
const images = detail.value.report_media?.images || [];
@@ -41,7 +44,31 @@ const productItems = computed(() => {
{ label: "品牌", value: detail.value.product_info.brand_name || "-" },
];
});
const traceNodes = computed(() => detail.value.trace_info?.nodes || []);
const publishTime = computed(() => detail.value.report_header.publish_time || "-");
const resultItem = computed(() => {
const item = productItems.value.find((entry) => entry.label.includes("结论"));
return {
label: item?.label || "检测结论",
value: item?.value || detail.value.result_info.result_text || "-",
remark: item?.remark || detail.value.result_info.result_desc || "",
};
});
const productSpecItems = computed(() => {
const items = productItems.value
.filter((item) => !item.label.includes("结论"))
.map((item) => ({ label: item.label, value: item.value, remark: item.remark || "" }));
if (items.length) return items;
return [
{ label: "品类", value: detail.value.product_info.category_name || "-", remark: "" },
{ label: "品牌", value: detail.value.product_info.brand_name || "-", remark: "" },
{ label: "颜色", value: detail.value.product_info.color || "-", remark: "" },
{ label: "规格/尺寸", value: detail.value.product_info.size_spec || "-", remark: "" },
{ label: "序列号/编码", value: detail.value.product_info.serial_no || "-", remark: "" },
].filter((item) => item.value && item.value !== "-");
});
const traceInfoVisible = computed(() => Boolean(detail.value.trace_info?.visible || detail.value.report_header.trace_info_visible));
const traceNodes = computed(() => (traceInfoVisible.value ? detail.value.trace_info?.nodes || [] : []));
const zhongjianReportFiles = computed(() => detail.value.zhongjian_report_files || []);
const zhongjianImageFiles = computed(() => zhongjianReportFiles.value.filter((item) => item.file_type === "image"));
const zhongjianOtherFiles = computed(() => zhongjianReportFiles.value.filter((item) => item.file_type !== "image"));
@@ -59,9 +86,23 @@ function assetDisplayName(item: EvidenceAttachmentAsset, index: number) {
}
function previewImages(files: EvidenceAttachmentAsset[], current: string) {
const urls = files.filter((item) => item.file_type === "image").map((item) => item.file_url);
const urls = files
.filter((item) => item.file_type === "image" && item.file_url)
.map((item) => item.file_url);
if (!urls.length) return;
uni.previewImage({ urls, current });
const currentIndex = urls.indexOf(current);
imagePreviewUrls.value = urls;
imagePreviewIndex.value = currentIndex >= 0 ? currentIndex : 0;
imagePreviewVisible.value = true;
}
function closeImagePreview() {
imagePreviewVisible.value = false;
}
function handleImagePreviewChange(event: { detail?: { current?: number } }) {
imagePreviewIndex.value = Number(event.detail?.current || 0);
}
function openAsset(item: EvidenceAttachmentAsset, files: EvidenceAttachmentAsset[]) {
@@ -209,6 +250,12 @@ function downloadPdf() {
});
}
watch(traceInfoVisible, (visible) => {
if (!visible && activeTab.value === "trace") {
activeTab.value = "product";
}
});
onLoad(async (options) => {
const id = Number(options?.id || 0);
const currentReportNo = String(options?.report_no || "");
@@ -237,7 +284,7 @@ onLoad(async (options) => {
<view class="app-page report-page">
<view v-if="!pageReady && loading" class="section notice-card">
<view class="notice-card__title">正在加载报告详情</view>
<view class="notice-card__desc">请稍候我们正在同步报告正文追溯信息 PDF 文件</view>
<view class="notice-card__desc">请稍候我们正在同步报告正文与 PDF 文件</view>
</view>
<view v-else-if="!pageReady && loadError" class="section notice-card">
@@ -247,48 +294,67 @@ onLoad(async (options) => {
<template v-else>
<view class="report-shell">
<view class="report-carousel">
<swiper v-if="reportImages.length" class="report-carousel__swiper" indicator-dots circular>
<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">
<image
class="report-carousel__image"
class="report-cover__image"
:src="item.thumbnail_url || item.file_url"
mode="aspectFill"
@click="previewImages(reportImages, item.file_url)"
/>
</swiper-item>
</swiper>
<view v-else class="report-carousel__empty">暂无鉴定图片</view>
<view v-else class="report-cover__empty">暂无鉴定图片</view>
</view>
<view class="report-summary">
<view class="report-summary__row">
<text class="report-summary__label">产品名称</text>
<text class="report-summary__value">{{ productName }}</text>
<view class="report-meta">
<view class="report-meta__row">
<text class="report-meta__label">产品名称</text>
<text class="report-meta__value">{{ productName }}</text>
</view>
<view class="report-summary__row">
<text class="report-summary__label">检测机构</text>
<text class="report-summary__value">{{ institutionName }}</text>
<view class="report-meta__row">
<text class="report-meta__label">检测机构</text>
<text class="report-meta__value">{{ institutionName }}</text>
</view>
<view class="report-summary__tools">
<text class="report-summary__chip">报告编号 {{ detail.report_header.report_no }}</text>
<text class="report-summary__chip">出具日期 {{ detail.report_header.publish_time || "-" }}</text>
<text class="report-summary__download" @click="downloadPdf">{{ downloading ? "下载中..." : "下载 PDF" }}</text>
<view class="report-meta__row">
<text class="report-meta__label">报告编号</text>
<text class="report-meta__value">{{ reportNo || "-" }}</text>
</view>
<view class="report-meta__row report-meta__row--date">
<text class="report-meta__label">出具日期</text>
<text class="report-meta__download" @click="downloadPdf">{{ downloading ? "下载中" : "下载PDF" }}</text>
<text class="report-meta__value">{{ publishTime }}</text>
</view>
</view>
<view class="report-tabs">
<view :class="['report-tab', activeTab === 'product' ? 'report-tab--active' : '']" @click="activeTab = 'product'">产品信息</view>
<view :class="['report-tab', activeTab === 'trace' ? 'report-tab--active' : '']" @click="activeTab = 'trace'">追溯信息</view>
<view v-if="traceInfoVisible" :class="['report-tab', activeTab === 'trace' ? 'report-tab--active' : '']" @click="activeTab = 'trace'">追溯信息</view>
</view>
<view v-if="activeTab === 'product'" class="report-panel">
<view v-for="(item, index) in productItems" :key="`${item.label}-${index}`" class="product-row">
<view class="product-row__label">{{ item.label }}</view>
<view class="product-row__value" :class="item.label === '检测结论' ? 'product-row__value--result' : ''">
{{ item.value || "-" }}
<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>
<view class="report-result__value">{{ resultItem.value || "-" }}</view>
<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>
</view>
</view>
<view class="product-spec">
<view v-for="(item, index) in productSpecItems" :key="`${item.label}-${index}`" class="product-spec__row">
<view class="product-spec__label">{{ item.label }}</view>
<view class="product-spec__line"></view>
<view class="product-spec__value">{{ item.value || "-" }}</view>
<view v-if="item.remark" class="product-spec__remark">{{ item.remark }}</view>
</view>
<view v-if="item.remark" class="product-row__remark">{{ item.remark }}</view>
</view>
<view v-if="zhongjianReportFiles.length" class="inline-section">
@@ -317,7 +383,8 @@ onLoad(async (options) => {
</view>
</view>
<view v-else class="report-panel">
<view v-else-if="traceInfoVisible" class="report-panel report-panel--trace">
<view v-if="traceNodes.length === 0" class="trace-empty">暂无追溯信息</view>
<view v-for="node in traceNodes" :key="node.code" class="trace-node">
<view class="trace-node__head">
<view>
@@ -353,6 +420,24 @@ onLoad(async (options) => {
<view class="btn btn--primary" @click="openAntiModal">防伪查询</view>
</view>
<view v-if="imagePreviewVisible" class="image-preview-mask" @click="closeImagePreview">
<view class="image-preview__close" @click.stop="closeImagePreview">×</view>
<swiper
class="image-preview__swiper"
:current="imagePreviewIndex"
:circular="imagePreviewUrls.length > 1"
@change="handleImagePreviewChange"
@click.stop
>
<swiper-item v-for="url in imagePreviewUrls" :key="url" class="image-preview__item">
<image class="image-preview__image" :src="url" mode="aspectFit" />
</swiper-item>
</swiper>
<view v-if="imagePreviewUrls.length > 1" class="image-preview__counter">
{{ imagePreviewIndex + 1 }} / {{ imagePreviewUrls.length }}
</view>
</view>
<view v-if="antiModalVisible" class="anti-modal-mask" @click="closeAntiModal">
<view class="anti-modal" @click.stop>
<view class="anti-modal__title">防伪查询</view>
@@ -388,115 +473,121 @@ onLoad(async (options) => {
<style scoped>
.report-page {
padding-bottom: 148rpx;
background: #eef6ff;
width: 100vw;
max-width: 100vw;
box-sizing: border-box;
overflow-x: hidden;
padding: 28rpx 32rpx 170rpx;
background: #f1f3f6;
color: #3c3f45;
}
.report-shell {
position: relative;
overflow: hidden;
border: 1px solid rgba(33, 94, 160, 0.12);
border-radius: 8rpx;
background: rgba(255, 255, 255, 0.96);
box-shadow: 0 18rpx 42rpx rgba(30, 76, 130, 0.12);
border-radius: 28rpx;
background: #ffffff;
box-shadow: 0 18rpx 48rpx rgba(31, 36, 48, 0.08);
}
.report-carousel {
margin: 0 24rpx;
height: 392rpx;
.report-cover {
height: 356rpx;
margin: 28rpx 28rpx 0;
overflow: hidden;
background: #eaf0f6;
border-radius: 10rpx;
background: #e8eaee;
}
.report-carousel__swiper,
.report-carousel__image,
.report-carousel__empty {
.report-cover__swiper,
.report-cover__image,
.report-cover__empty {
width: 100%;
height: 100%;
}
.report-carousel__image {
.report-cover__image {
display: block;
}
.report-carousel__empty {
.report-cover__empty {
display: flex;
align-items: center;
justify-content: center;
color: var(--color-text-muted);
color: #8c919b;
font-size: var(--font-size-sm);
}
.report-summary {
padding: 34rpx 40rpx 22rpx;
.report-meta {
padding: 34rpx 28rpx 12rpx;
}
.report-summary__row {
.report-meta__row {
display: flex;
align-items: baseline;
gap: 20rpx;
align-items: flex-start;
gap: 18rpx;
min-width: 0;
min-height: 48rpx;
}
.report-summary__row + .report-summary__row {
margin-top: 24rpx;
.report-meta__row + .report-meta__row {
margin-top: 20rpx;
}
.report-summary__label {
flex: 0 0 128rpx;
color: var(--color-text-muted);
font-size: 30rpx;
.report-meta__label {
flex: 0 0 138rpx;
display: block;
color: #7d828a;
font-size: 28rpx;
line-height: 1.4;
}
.report-summary__value {
.report-meta__value {
flex: 1;
display: block;
min-width: 0;
color: var(--color-heading);
font-size: 34rpx;
font-weight: 900;
color: #44474d;
font-size: 28rpx;
font-weight: 700;
line-height: 1.35;
word-break: break-word;
text-align: right;
white-space: normal;
word-break: break-all;
overflow-wrap: anywhere;
}
.report-summary__tools {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
margin-top: 28rpx;
.report-meta__row--date .report-meta__value {
flex: 0 1 auto;
margin-left: auto;
word-break: normal;
}
.report-summary__chip,
.report-summary__download {
padding: 10rpx 14rpx;
.report-meta__download {
flex: 0 0 auto;
display: block;
min-height: 38rpx;
padding: 0 16rpx;
border: 1px solid rgba(221, 179, 47, 0.74);
border-radius: 6rpx;
font-size: 22rpx;
line-height: 1.3;
}
.report-summary__chip {
background: #f3f7fb;
color: var(--color-text-muted);
}
.report-summary__download {
border: 1px solid var(--color-accent);
background: #fff9e6;
color: var(--color-accent);
font-weight: 800;
font-size: 22rpx;
font-weight: 700;
line-height: 36rpx;
}
.report-tabs {
display: flex;
align-items: center;
justify-content: center;
gap: 112rpx;
padding: 10rpx 40rpx 28rpx;
gap: 104rpx;
padding: 26rpx 40rpx 34rpx;
}
.report-tab {
position: relative;
color: #8b929d;
font-size: 34rpx;
font-weight: 800;
color: #8e9298;
font-size: 32rpx;
font-weight: 700;
line-height: 1.6;
}
@@ -507,9 +598,9 @@ onLoad(async (options) => {
.report-tab--active::after {
position: absolute;
left: 50%;
bottom: -8rpx;
width: 42rpx;
height: 8rpx;
bottom: -10rpx;
width: 44rpx;
height: 6rpx;
border-radius: 999rpx;
background: var(--color-accent);
content: "";
@@ -517,63 +608,185 @@ onLoad(async (options) => {
}
.report-panel {
position: relative;
min-height: 440rpx;
padding: 18rpx 40rpx 46rpx;
padding: 18rpx 28rpx 48rpx;
overflow: hidden;
}
.product-row {
padding: 22rpx 0;
border-bottom: 1px solid rgba(104, 121, 141, 0.14);
.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;
}
.product-row__label {
color: var(--color-text-muted);
font-size: 30rpx;
line-height: 1.4;
.report-result {
position: relative;
z-index: 1;
display: flex;
align-items: flex-start;
gap: 24rpx;
padding: 10rpx 0 30rpx;
border: 0;
border-bottom: 1px solid #e5e5e5;
border-radius: 0;
background: transparent;
box-shadow: none;
}
.product-row__value {
margin-top: 10rpx;
color: var(--color-heading);
font-size: 32rpx;
.report-result__content {
flex: 1;
min-width: 0;
}
.report-result__label {
color: #3d3f44;
font-size: 28rpx;
font-weight: 800;
line-height: 1.45;
}
.report-result__value {
margin-top: 14rpx;
color: #e04135;
font-size: 38rpx;
font-weight: 900;
line-height: 1.4;
word-break: break-word;
line-height: 1.22;
letter-spacing: 0;
}
.product-row__value--result {
color: #d83b4c;
}
.product-row__remark {
margin-top: 8rpx;
color: var(--color-text-muted);
.report-result__desc {
margin-top: 10rpx;
color: #6f747c;
font-size: 24rpx;
line-height: 1.5;
line-height: 1.55;
}
.report-seal {
flex: 0 0 auto;
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);
border-radius: 999rpx;
color: #39a54b;
transform: rotate(-10deg);
}
.report-seal__brand {
font-size: 16rpx;
font-weight: 800;
line-height: 1;
}
.report-seal__main {
margin-top: 8rpx;
font-size: 28rpx;
font-weight: 900;
line-height: 1;
}
.product-spec {
position: relative;
z-index: 1;
padding-top: 20rpx;
}
.product-spec__row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10rpx;
min-height: 54rpx;
}
.product-spec__label {
flex: 0 0 auto;
display: block;
color: #858991;
font-size: 24rpx;
line-height: 1.4;
}
.product-spec__line {
flex: 1;
min-width: 32rpx;
height: 1px;
border-bottom: 1px dotted #b9bdc4;
}
.product-spec__value {
flex: 0 1 auto;
display: block;
max-width: 58%;
color: #5b5f67;
font-size: 24rpx;
font-weight: 700;
line-height: 1.4;
text-align: right;
word-break: break-all;
overflow-wrap: anywhere;
}
.product-spec__remark {
flex-basis: 100%;
display: block;
margin: -2rpx 0 12rpx 0;
color: #8b9098;
font-size: 22rpx;
line-height: 1.45;
}
.inline-section {
margin-top: 30rpx;
position: relative;
z-index: 1;
margin-top: 32rpx;
padding-top: 24rpx;
border-top: 1px solid #ececec;
}
.inline-section__title {
color: var(--color-heading);
font-size: 30rpx;
font-weight: 900;
color: #3f4248;
font-size: 28rpx;
font-weight: 800;
}
.report-panel--trace {
padding-top: 2rpx;
}
.trace-empty {
padding: 58rpx 0;
color: #8b9098;
font-size: 26rpx;
text-align: center;
}
.trace-node {
position: relative;
padding: 24rpx 0 26rpx 34rpx;
padding: 26rpx 0 28rpx 38rpx;
}
.trace-node::before {
position: absolute;
left: 8rpx;
top: 34rpx;
bottom: -20rpx;
left: 9rpx;
top: 38rpx;
bottom: -22rpx;
width: 2rpx;
background: #d9e5f2;
background: #e4e0d3;
content: "";
}
@@ -584,7 +797,7 @@ onLoad(async (options) => {
.trace-node::after {
position: absolute;
left: 0;
top: 34rpx;
top: 36rpx;
width: 18rpx;
height: 18rpx;
border-radius: 999rpx;
@@ -595,28 +808,28 @@ onLoad(async (options) => {
.trace-node__head {
display: flex;
justify-content: space-between;
gap: 18rpx;
gap: 20rpx;
}
.trace-node__title {
color: var(--color-heading);
font-size: 30rpx;
font-weight: 900;
color: #3f4248;
font-size: 28rpx;
font-weight: 800;
}
.trace-node__time,
.trace-node__empty {
margin-top: 8rpx;
color: var(--color-text-muted);
font-size: 24rpx;
color: #8b9098;
font-size: 23rpx;
}
.trace-node__status {
align-self: flex-start;
padding: 8rpx 12rpx;
border-radius: 6rpx;
background: #f3f5f8;
color: var(--color-text-muted);
background: #f5f2e9;
color: #9f8433;
font-size: 22rpx;
font-weight: 800;
}
@@ -629,7 +842,7 @@ onLoad(async (options) => {
.asset-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14rpx;
gap: 12rpx;
margin-top: 18rpx;
}
@@ -637,9 +850,9 @@ onLoad(async (options) => {
position: relative;
aspect-ratio: 1;
overflow: hidden;
border: 1px solid rgba(104, 121, 141, 0.16);
border: 1px solid rgba(127, 119, 94, 0.16);
border-radius: 8rpx;
background: #f4f7fa;
background: #f5f3ee;
}
.asset-tile__image {
@@ -656,7 +869,7 @@ onLoad(async (options) => {
height: 100%;
color: var(--color-accent);
font-size: 24rpx;
font-weight: 900;
font-weight: 800;
}
.asset-tile__play {
@@ -686,10 +899,10 @@ onLoad(async (options) => {
gap: 16rpx;
padding: 18rpx;
border-radius: 8rpx;
background: #f6f8fb;
color: var(--color-heading);
background: #faf8f1;
color: #3f4248;
font-size: 26rpx;
font-weight: 800;
font-weight: 700;
}
.asset-list__type {
@@ -700,6 +913,92 @@ onLoad(async (options) => {
.report-actions {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 28rpx;
width: 100vw;
box-sizing: border-box;
padding: 22rpx 32rpx calc(22rpx + env(safe-area-inset-bottom));
background: rgba(241, 243, 246, 0.96);
border-top: 0;
box-shadow: 0 -10rpx 34rpx rgba(31, 36, 48, 0.05);
}
.report-actions .btn {
min-width: 0;
min-height: 76rpx;
border-radius: 999rpx;
font-size: 28rpx;
font-weight: 700;
box-shadow: none;
}
.report-actions .btn--secondary {
border: 0;
background: #ffffff;
color: #4f535a;
}
.report-actions .btn--primary {
background: #dfb733;
color: #ffffff;
}
.image-preview-mask {
position: fixed;
z-index: 200;
inset: 0;
background: rgba(0, 0, 0, 0.88);
touch-action: none;
}
.image-preview__swiper {
width: 100%;
height: 100%;
}
.image-preview__item {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.image-preview__image {
display: block;
width: 100%;
height: 100%;
}
.image-preview__close {
position: fixed;
z-index: 201;
top: calc(110rpx + env(safe-area-inset-top));
right: 34rpx;
display: flex;
align-items: center;
justify-content: center;
width: 72rpx;
height: 72rpx;
color: #ffffff;
font-size: 72rpx;
font-weight: 300;
line-height: 1;
}
.image-preview__counter {
position: fixed;
z-index: 201;
left: 50%;
bottom: calc(42rpx + env(safe-area-inset-bottom));
min-width: 96rpx;
padding: 10rpx 22rpx;
border-radius: 999rpx;
background: rgba(0, 0, 0, 0.42);
color: #ffffff;
font-size: 24rpx;
line-height: 1.3;
text-align: center;
transform: translateX(-50%);
}
.anti-modal-mask {
@@ -710,19 +1009,19 @@ onLoad(async (options) => {
align-items: center;
justify-content: center;
padding: 48rpx;
background: rgba(13, 30, 48, 0.46);
background: rgba(31, 36, 48, 0.42);
}
.anti-modal {
width: 100%;
max-width: 620rpx;
padding: 34rpx;
border-radius: 8rpx;
border-radius: 20rpx;
background: #fff;
}
.anti-modal__title {
color: var(--color-heading);
color: #2f3238;
font-size: 36rpx;
font-weight: 900;
line-height: 1.35;
@@ -730,7 +1029,7 @@ onLoad(async (options) => {
.anti-modal__desc {
margin-top: 12rpx;
color: var(--color-text-muted);
color: #7e838b;
font-size: 26rpx;
line-height: 1.5;
}
@@ -742,7 +1041,7 @@ onLoad(async (options) => {
.anti-result {
margin-top: 20rpx;
padding: 18rpx;
border-radius: 8rpx;
border-radius: 10rpx;
background: #f7f8fa;
}
@@ -755,14 +1054,14 @@ onLoad(async (options) => {
}
.anti-result__title {
color: var(--color-heading);
color: #2f3238;
font-size: 28rpx;
font-weight: 900;
}
.anti-result__desc {
margin-top: 8rpx;
color: var(--color-text-muted);
color: #7e838b;
font-size: 24rpx;
line-height: 1.5;
}
@@ -776,9 +1075,9 @@ onLoad(async (options) => {
.anti-modal__button {
height: 82rpx;
border-radius: 8rpx;
border-radius: 999rpx;
font-size: 28rpx;
font-weight: 900;
font-weight: 800;
line-height: 82rpx;
}