|
@@ -1,92 +1,125 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div class="achievement-report-page">
|
|
|
|
|
- <custom-header name="报告详情"></custom-header>
|
|
|
|
|
|
|
+ <div class="achievement-report-page" :style="{ height: `calc(100vh - ${tabBarHeight}px)` }">
|
|
|
|
|
+ <!-- 天气遮罩 -->
|
|
|
|
|
+ <div class="weather-mask" v-show="isExpanded" @click="handleMaskClick"></div>
|
|
|
|
|
+ <!-- 组件:天气 -->
|
|
|
|
|
+ <weather-info ref="weatherInfoRef" class="weather-info" @weatherExpanded="weatherExpanded"
|
|
|
|
|
+ @changeGarden="changeGarden" :isGarden="true"></weather-info>
|
|
|
<div class="report-content-wrap" v-loading="loading">
|
|
<div class="report-content-wrap" v-loading="loading">
|
|
|
- <div class="report-content" ref="reportDom">
|
|
|
|
|
- <!-- <img src="@/assets/img/home/qrcode.png" alt="" class="code-icon" /> -->
|
|
|
|
|
- <img class="header-img" src="@/assets/img/home/report.png" alt="" />
|
|
|
|
|
- <div class="report-header">
|
|
|
|
|
- <!-- <img class="header-book" src="@/assets/img/home/book.png" alt="" /> -->
|
|
|
|
|
- <div class="time-tag">{{ workItem?.reportDate }}</div>
|
|
|
|
|
- <div class="report-title">长势报告</div>
|
|
|
|
|
- <div class="report-info">
|
|
|
|
|
- <div class="info-item">
|
|
|
|
|
- <img class="info-icon" src="@/assets/img/home/farm.png" alt="" />
|
|
|
|
|
- <span class="info-text">{{ workItem?.orchardName }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <swipe class="my-swipe" :loop="false" indicator-color="white">
|
|
|
|
|
+ <swipe-item v-for="(item, index) in 4" :key="index">
|
|
|
|
|
+ <div class="report-content">
|
|
|
|
|
+ <!-- <img src="@/assets/img/home/qrcode.png" alt="" class="code-icon" /> -->
|
|
|
|
|
+ <img class="header-img" src="@/assets/img/home/report.png" alt="" />
|
|
|
|
|
+ <div class="report-header">
|
|
|
|
|
+ <!-- <img class="header-book" src="@/assets/img/home/book.png" alt="" /> -->
|
|
|
|
|
+ <div class="time-tag">{{ workItem?.reportDate }}</div>
|
|
|
|
|
+ <div class="report-title">长势报告</div>
|
|
|
|
|
+ <div class="report-info">
|
|
|
|
|
+ <div class="info-item">
|
|
|
|
|
+ <img class="info-icon" src="@/assets/img/home/farm.png" alt="" />
|
|
|
|
|
+ <span class="info-text">{{ workItem?.orchardName }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- <div class="report-box">
|
|
|
|
|
- <div class="box-title">农情总结</div>
|
|
|
|
|
- <div class="box-text">
|
|
|
|
|
- {{ workItem?.summaryAgricultural || "--" }}
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <div class="report-box">
|
|
|
|
|
- <div class="box-title">物候与长势</div>
|
|
|
|
|
- <div class="box-text">
|
|
|
|
|
- <div class="box-bg">
|
|
|
|
|
- <span class="box-subtitle">背景描述:</span>
|
|
|
|
|
- <div v-html="workItem?.phenologyBackground"></div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="box-advice">
|
|
|
|
|
- <span class="box-subtitle">对策建议:</span>
|
|
|
|
|
- <div v-html="workItem?.phenologySuggestion"></div>
|
|
|
|
|
|
|
+ <!-- 左滑查看更多 -->
|
|
|
|
|
+ <div class="swipe-more-tag">
|
|
|
|
|
+ 左滑查看更多
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="box-sum" v-html="workItem?.phenologySummary"></div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <div class="report-box">
|
|
|
|
|
- <div class="box-title">病虫害问题</div>
|
|
|
|
|
- <div class="box-text">
|
|
|
|
|
- <div class="box-bg">
|
|
|
|
|
- <span class="box-subtitle">背景描述:</span>
|
|
|
|
|
- <div v-html="workItem?.pestBackground"></div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <div class="report-box">
|
|
|
|
|
+ <div class="box-title">农情总结</div>
|
|
|
|
|
+ <div class="box-text">
|
|
|
|
|
+ {{ workItem?.summaryAgricultural || "--" }}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="box-advice">
|
|
|
|
|
- <span class="box-subtitle">对策建议:</span>
|
|
|
|
|
- <div v-html="workItem?.pestSuggestion"></div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <div class="report-box">
|
|
|
|
|
+ <div class="box-title">物候与长势</div>
|
|
|
|
|
+ <div class="box-text">
|
|
|
|
|
+ <div class="box-bg">
|
|
|
|
|
+ <span class="box-subtitle">背景描述:</span>
|
|
|
|
|
+ <div v-html="workItem?.phenologyBackground"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="box-advice">
|
|
|
|
|
+ <span class="box-subtitle">对策建议:</span>
|
|
|
|
|
+ <div v-html="workItem?.phenologySuggestion"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="box-sum" v-html="workItem?.phenologySummary"></div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="box-sum">
|
|
|
|
|
- <div v-html="workItem?.pestSummary"></div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <div class="report-box">
|
|
|
|
|
+ <div class="box-title">病虫害问题</div>
|
|
|
|
|
+ <div class="box-text">
|
|
|
|
|
+ <div class="box-bg">
|
|
|
|
|
+ <span class="box-subtitle">背景描述:</span>
|
|
|
|
|
+ <div v-html="workItem?.pestBackground"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="box-advice">
|
|
|
|
|
+ <span class="box-subtitle">对策建议:</span>
|
|
|
|
|
+ <div v-html="workItem?.pestSuggestion"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="box-sum">
|
|
|
|
|
+ <div v-html="workItem?.pestSummary"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <div class="report-box">
|
|
|
|
|
- <div class="box-title">未来预测</div>
|
|
|
|
|
- <div class="box-text">
|
|
|
|
|
- <div class="box-bg">
|
|
|
|
|
- <span class="box-subtitle">背景描述:</span>
|
|
|
|
|
- <div v-html="workItem?.forecastBackground"></div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <div class="report-box">
|
|
|
|
|
+ <div class="box-title">今日巡园重点</div>
|
|
|
|
|
+ <div class="box-text">
|
|
|
|
|
+ {{ workItem?.summaryAgricultural || "--" }}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="box-advice">
|
|
|
|
|
- <span class="box-subtitle">对策建议:</span>
|
|
|
|
|
- <div v-html="workItem?.forecastSuggestion"></div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <div class="report-box">
|
|
|
|
|
+ <div class="box-title">未来预测</div>
|
|
|
|
|
+ <div class="box-text">
|
|
|
|
|
+ <div class="box-bg">
|
|
|
|
|
+ <span class="box-subtitle">背景描述:</span>
|
|
|
|
|
+ <div v-html="workItem?.forecastBackground"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="box-advice">
|
|
|
|
|
+ <span class="box-subtitle">对策建议:</span>
|
|
|
|
|
+ <div v-html="workItem?.forecastSuggestion"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
|
|
|
- <div class="report-box">
|
|
|
|
|
- <div class="box-text next-info">
|
|
|
|
|
- <div class="box-bg">
|
|
|
|
|
- <span class="box-subtitle">下一次农情互动预告:</span>
|
|
|
|
|
- <div v-html="workItem?.nextInteractionPreview"></div>
|
|
|
|
|
|
|
+ <div class="report-box">
|
|
|
|
|
+ <div class="box-text next-info">
|
|
|
|
|
+ <div class="box-bg">
|
|
|
|
|
+ <span class="box-subtitle">下一次农情互动预告:</span>
|
|
|
|
|
+ <div v-html="workItem?.nextInteractionPreview"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </swipe-item>
|
|
|
|
|
+ </swipe>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 首次进入页面的左滑查看提示遮罩 -->
|
|
|
|
|
+ <div class="swipe-guide-mask" v-if="showSwipeGuide" @click="closeSwipeGuide">
|
|
|
|
|
+ <div class="swipe-guide-content">
|
|
|
|
|
+ <img class="swipe-guide-icon" src="@/assets/img/home/point.png" alt="swipe" />
|
|
|
|
|
+ <div class="swipe-guide-text">左滑查看其它品种报告</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
-import CustomHeader from "@/components/customHeader.vue";
|
|
|
|
|
-import { ref, onActivated, onDeactivated, onUnmounted } from "vue";
|
|
|
|
|
|
|
+import weatherInfo from "@/components/weatherInfo.vue";
|
|
|
|
|
+import { ref, onActivated, onDeactivated, onUnmounted, computed } from "vue";
|
|
|
import { useRoute } from "vue-router";
|
|
import { useRoute } from "vue-router";
|
|
|
|
|
+import { useStore } from "vuex";
|
|
|
|
|
+import { Swipe, SwipeItem } from 'vant';
|
|
|
|
|
+
|
|
|
|
|
+const store = useStore();
|
|
|
|
|
+const tabBarHeight = computed(() => store.state.home.tabBarHeight);
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
const loading = ref(false);
|
|
const loading = ref(false);
|
|
@@ -112,16 +145,54 @@ function formatArea(val) {
|
|
|
return Number.isInteger(num) ? num : num.toFixed(2) + "亩";
|
|
return Number.isInteger(num) ? num : num.toFixed(2) + "亩";
|
|
|
}
|
|
}
|
|
|
const paramsPage = ref({});
|
|
const paramsPage = ref({});
|
|
|
|
|
+// 天气组件相关
|
|
|
|
|
+const isExpanded = ref(false);
|
|
|
|
|
+const weatherInfoRef = ref(null);
|
|
|
|
|
+
|
|
|
|
|
+// 首次进入页面的左滑提示遮罩
|
|
|
|
|
+const showSwipeGuide = ref(false);
|
|
|
|
|
+
|
|
|
|
|
+const weatherExpanded = (isExpandedValue) => {
|
|
|
|
|
+ isExpanded.value = isExpandedValue;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 点击遮罩时收起天气
|
|
|
|
|
+const handleMaskClick = () => {
|
|
|
|
|
+ if (weatherInfoRef.value && weatherInfoRef.value.toggleExpand) {
|
|
|
|
|
+ weatherInfoRef.value.toggleExpand();
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 切换农场时,更新报告数据
|
|
|
|
|
+const changeGarden = ({ id }) => {
|
|
|
|
|
+ if (!id) return;
|
|
|
|
|
+ paramsPage.value = {
|
|
|
|
|
+ ...(paramsPage.value || {}),
|
|
|
|
|
+ farmId: id,
|
|
|
|
|
+ };
|
|
|
|
|
+ getDetail();
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
onActivated(() => {
|
|
onActivated(() => {
|
|
|
window.scrollTo(0, 0);
|
|
window.scrollTo(0, 0);
|
|
|
- paramsPage.value = route.query || {};
|
|
|
|
|
- getDetail();
|
|
|
|
|
|
|
+ // paramsPage.value = route.query || {};
|
|
|
|
|
+ // 首次进入时显示左滑提示(本地仅展示一次)
|
|
|
|
|
+ const guideKey = "GROWTH_REPORT_SWIPE_GUIDE_SHOWN";
|
|
|
|
|
+ if (!localStorage.getItem(guideKey)) {
|
|
|
|
|
+ showSwipeGuide.value = true;
|
|
|
|
|
+ localStorage.setItem(guideKey, "1");
|
|
|
|
|
+ }
|
|
|
// getResultReport();
|
|
// getResultReport();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+// 关闭左滑提示遮罩
|
|
|
|
|
+const closeSwipeGuide = () => {
|
|
|
|
|
+ showSwipeGuide.value = false;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
|
|
|
const setReadStatus = (id) => {
|
|
const setReadStatus = (id) => {
|
|
|
- VE_API.farm.readReportByFarm({ id,isRead:1 }).then(({ data }) => {
|
|
|
|
|
|
|
+ VE_API.farm.readReportByFarm({ id, isRead: 1 }).then(({ data }) => {
|
|
|
console.log(data);
|
|
console.log(data);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -131,8 +202,9 @@ const getDetail = () => {
|
|
|
VE_API.farm
|
|
VE_API.farm
|
|
|
.growthReportBySubject({ subjectId: paramsPage.value.farmId, limit: 20 })
|
|
.growthReportBySubject({ subjectId: paramsPage.value.farmId, limit: 20 })
|
|
|
.then(({ data }) => {
|
|
.then(({ data }) => {
|
|
|
- workItem.value = data[0];
|
|
|
|
|
- setReadStatus(data[0].id);
|
|
|
|
|
|
|
+ console.log('data', data);
|
|
|
|
|
+ workItem.value = data?.[0] || {};
|
|
|
|
|
+ data?.[0]?.id && setReadStatus(data[0]?.id);
|
|
|
})
|
|
})
|
|
|
.finally(() => {
|
|
.finally(() => {
|
|
|
loading.value = false;
|
|
loading.value = false;
|
|
@@ -162,12 +234,31 @@ onUnmounted(() => {
|
|
|
background: linear-gradient(195.35deg, #d4e4ff 16.34%, rgba(93, 189, 255, 0) 50.3%),
|
|
background: linear-gradient(195.35deg, #d4e4ff 16.34%, rgba(93, 189, 255, 0) 50.3%),
|
|
|
linear-gradient(156.64deg, rgba(255, 255, 255, 0.16) 27.7%, rgba(255, 255, 255, 0) 72.82%);
|
|
linear-gradient(156.64deg, rgba(255, 255, 255, 0.16) 27.7%, rgba(255, 255, 255, 0) 72.82%);
|
|
|
|
|
|
|
|
|
|
+ .weather-mask {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ background-color: rgba(0, 0, 0, 0.52);
|
|
|
|
|
+ z-index: 11;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .weather-info {
|
|
|
|
|
+ width: calc(100% - 20px);
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ z-index: 12;
|
|
|
|
|
+ left: 10px;
|
|
|
|
|
+ top: 12px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
.report-content-wrap {
|
|
.report-content-wrap {
|
|
|
- height: calc(100% - 40px);
|
|
|
|
|
|
|
+ height: 100%;
|
|
|
// padding-bottom: 60px;
|
|
// padding-bottom: 60px;
|
|
|
overflow: auto;
|
|
overflow: auto;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+
|
|
|
.bottom-btn {
|
|
.bottom-btn {
|
|
|
z-index: 2;
|
|
z-index: 2;
|
|
|
position: fixed;
|
|
position: fixed;
|
|
@@ -182,16 +273,19 @@ onUnmounted(() => {
|
|
|
padding: 0 12px;
|
|
padding: 0 12px;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
box-shadow: 2px 2px 4.5px 0px rgba(0, 0, 0, 0.4);
|
|
box-shadow: 2px 2px 4.5px 0px rgba(0, 0, 0, 0.4);
|
|
|
|
|
+
|
|
|
.btn-item {
|
|
.btn-item {
|
|
|
height: 40px;
|
|
height: 40px;
|
|
|
line-height: 40px;
|
|
line-height: 40px;
|
|
|
padding: 0 24px;
|
|
padding: 0 24px;
|
|
|
border-radius: 20px;
|
|
border-radius: 20px;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
|
|
+
|
|
|
&.second {
|
|
&.second {
|
|
|
color: #666666;
|
|
color: #666666;
|
|
|
border: 1px solid rgba(153, 153, 153, 0.5);
|
|
border: 1px solid rgba(153, 153, 153, 0.5);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&.primay {
|
|
&.primay {
|
|
|
padding: 0 34px;
|
|
padding: 0 34px;
|
|
|
background: linear-gradient(180deg, #76c3ff, #2199f8);
|
|
background: linear-gradient(180deg, #76c3ff, #2199f8);
|
|
@@ -201,30 +295,69 @@ onUnmounted(() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 首次进入页面左滑提示遮罩
|
|
|
|
|
+ .swipe-guide-mask {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ background: rgba(0, 0, 0, 0.6);
|
|
|
|
|
+ z-index: 99999;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+
|
|
|
|
|
+ .swipe-guide-content {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ color: #ffffff;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .swipe-guide-icon {
|
|
|
|
|
+ width: 71px;
|
|
|
|
|
+ height: 79px;
|
|
|
|
|
+ object-fit: contain;
|
|
|
|
|
+ margin-bottom: 23px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .swipe-guide-text {
|
|
|
|
|
+ font-size: 20px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
.code-icon {
|
|
.code-icon {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
right: 10px;
|
|
right: 10px;
|
|
|
top: 12px;
|
|
top: 12px;
|
|
|
width: 48px;
|
|
width: 48px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.report-content {
|
|
.report-content {
|
|
|
// background: url("@/assets/img/home/report_bg.png") no-repeat center center;
|
|
// background: url("@/assets/img/home/report_bg.png") no-repeat center center;
|
|
|
background: linear-gradient(0deg, #9BCCFF, #9BCCFF),
|
|
background: linear-gradient(0deg, #9BCCFF, #9BCCFF),
|
|
|
- linear-gradient(160deg, rgba(255, 255, 255, 0.16) 30%, rgba(255, 255, 255, 0) 72%);
|
|
|
|
|
|
|
+ linear-gradient(160deg, rgba(255, 255, 255, 0.16) 30%, rgba(255, 255, 255, 0) 72%);
|
|
|
background-size: 100% auto;
|
|
background-size: 100% auto;
|
|
|
background-position: top center;
|
|
background-position: top center;
|
|
|
- padding: 24px 16px 16px;
|
|
|
|
|
|
|
+ padding: 0 16px 26px 16px;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
min-height: 100%;
|
|
min-height: 100%;
|
|
|
|
|
+
|
|
|
.header-img {
|
|
.header-img {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 0;
|
|
top: 0;
|
|
|
left: 0;
|
|
left: 0;
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.report-header {
|
|
.report-header {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+ padding-top: 112px;
|
|
|
|
|
+
|
|
|
.header-book {
|
|
.header-book {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
right: 0;
|
|
right: 0;
|
|
@@ -232,6 +365,7 @@ onUnmounted(() => {
|
|
|
height: 88px;
|
|
height: 88px;
|
|
|
z-index: 10;
|
|
z-index: 10;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.time-tag {
|
|
.time-tag {
|
|
|
background: linear-gradient(137.86deg, #9fd5ff 5.87%, #2199f8 82.98%);
|
|
background: linear-gradient(137.86deg, #9fd5ff 5.87%, #2199f8 82.98%);
|
|
|
border-radius: 5px 0 5px 0;
|
|
border-radius: 5px 0 5px 0;
|
|
@@ -243,14 +377,17 @@ onUnmounted(() => {
|
|
|
padding: 0 9px;
|
|
padding: 0 9px;
|
|
|
width: fit-content;
|
|
width: fit-content;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.report-title {
|
|
.report-title {
|
|
|
font-family: "PangMenZhengDao";
|
|
font-family: "PangMenZhengDao";
|
|
|
font-size: 34px;
|
|
font-size: 34px;
|
|
|
line-height: 38px;
|
|
line-height: 38px;
|
|
|
color: #000000;
|
|
color: #000000;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.report-info {
|
|
.report-info {
|
|
|
- padding: 10px 0 16px 0;
|
|
|
|
|
|
|
+ padding: 12px 0 28px 0;
|
|
|
|
|
+
|
|
|
.info-item {
|
|
.info-item {
|
|
|
width: fit-content;
|
|
width: fit-content;
|
|
|
display: flex;
|
|
display: flex;
|
|
@@ -261,21 +398,45 @@ onUnmounted(() => {
|
|
|
border-radius: 20px;
|
|
border-radius: 20px;
|
|
|
border: 0.5px solid rgba(33, 153, 248, 0.35);
|
|
border: 0.5px solid rgba(33, 153, 248, 0.35);
|
|
|
gap: 6px;
|
|
gap: 6px;
|
|
|
|
|
+
|
|
|
.info-icon {
|
|
.info-icon {
|
|
|
width: 26px;
|
|
width: 26px;
|
|
|
height: 26px;
|
|
height: 26px;
|
|
|
object-fit: cover;
|
|
object-fit: cover;
|
|
|
border-radius: 50%;
|
|
border-radius: 50%;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.info-text {
|
|
.info-text {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #2199f8;
|
|
color: #2199f8;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .info-item + .info-item {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ .info-item+.info-item {
|
|
|
margin-top: 5px;
|
|
margin-top: 5px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 左滑查看更多标签
|
|
|
|
|
+ .swipe-more-tag {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: 50%;
|
|
|
|
|
+ right: -16px;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ width: 36px;
|
|
|
|
|
+ height: 116px;
|
|
|
|
|
+ padding: 10px 10px 2px 0;
|
|
|
|
|
+ background: rgba(0, 0, 0, 0.7);
|
|
|
|
|
+ border-radius: 16px 0 0 16px;
|
|
|
|
|
+ letter-spacing: 2px;
|
|
|
|
|
+ color: #ffffff;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ line-height: 20px;
|
|
|
|
|
+ writing-mode: vertical-rl;
|
|
|
|
|
+ text-orientation: mixed;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.report-box {
|
|
.report-box {
|
|
@@ -287,6 +448,7 @@ onUnmounted(() => {
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
gap: 5px;
|
|
gap: 5px;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+
|
|
|
.report-box-item {
|
|
.report-box-item {
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
background: rgba(33, 153, 248, 0.1);
|
|
background: rgba(33, 153, 248, 0.1);
|
|
@@ -297,11 +459,13 @@ onUnmounted(() => {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
|
|
+
|
|
|
.item-content {
|
|
.item-content {
|
|
|
color: #2199f8;
|
|
color: #2199f8;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.item-title {
|
|
.item-title {
|
|
|
color: #000000;
|
|
color: #000000;
|
|
|
font-size: 10px;
|
|
font-size: 10px;
|
|
@@ -322,21 +486,26 @@ onUnmounted(() => {
|
|
|
color: #ffffff;
|
|
color: #ffffff;
|
|
|
background: url("@/assets/img/home/title-bg.png") no-repeat center center / 100% 100%;
|
|
background: url("@/assets/img/home/title-bg.png") no-repeat center center / 100% 100%;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.box-text {
|
|
.box-text {
|
|
|
padding: 22px 0 8px 0;
|
|
padding: 22px 0 8px 0;
|
|
|
font-weight: 350;
|
|
font-weight: 350;
|
|
|
line-height: 21px;
|
|
line-height: 21px;
|
|
|
|
|
+
|
|
|
.box-subtitle {
|
|
.box-subtitle {
|
|
|
color: #000;
|
|
color: #000;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.box-bg {
|
|
.box-bg {
|
|
|
font-weight: 400;
|
|
font-weight: 400;
|
|
|
color: rgba(0, 0, 0, 0.5);
|
|
color: rgba(0, 0, 0, 0.5);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.box-advice {
|
|
.box-advice {
|
|
|
color: rgba(0, 0, 0, 0.5);
|
|
color: rgba(0, 0, 0, 0.5);
|
|
|
padding-top: 10px;
|
|
padding-top: 10px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.box-sum {
|
|
.box-sum {
|
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
|
background: rgba(33, 153, 248, 0.1);
|
|
background: rgba(33, 153, 248, 0.1);
|
|
@@ -345,17 +514,21 @@ onUnmounted(() => {
|
|
|
line-height: 20px;
|
|
line-height: 20px;
|
|
|
color: #2199F8;
|
|
color: #2199F8;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&.next-info {
|
|
&.next-info {
|
|
|
padding: 8px 0 8px 0;
|
|
padding: 8px 0 8px 0;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .report-box + .report-box {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ .report-box+.report-box {
|
|
|
margin-top: 20px;
|
|
margin-top: 20px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.report-excute {
|
|
.report-excute {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
margin-top: 12px;
|
|
margin-top: 12px;
|
|
|
|
|
+
|
|
|
.tag-label {
|
|
.tag-label {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 0;
|
|
top: 0;
|
|
@@ -367,6 +540,7 @@ onUnmounted(() => {
|
|
|
border-radius: 8px 0 8px 0;
|
|
border-radius: 8px 0 8px 0;
|
|
|
z-index: 1;
|
|
z-index: 1;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
::v-deep {
|
|
::v-deep {
|
|
|
.carousel-container .carousel-wrapper .carousel-img {
|
|
.carousel-container .carousel-wrapper .carousel-img {
|
|
|
min-width: calc(100vw - 32px);
|
|
min-width: calc(100vw - 32px);
|
|
@@ -375,6 +549,7 @@ onUnmounted(() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.download-btn {
|
|
.download-btn {
|
|
|
position: fixed;
|
|
position: fixed;
|
|
|
bottom: 20px;
|
|
bottom: 20px;
|
|
@@ -403,6 +578,7 @@ onUnmounted(() => {
|
|
|
margin: 12px;
|
|
margin: 12px;
|
|
|
background: #fff;
|
|
background: #fff;
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
|
|
+
|
|
|
.review-mask {
|
|
.review-mask {
|
|
|
z-index: 1;
|
|
z-index: 1;
|
|
|
pointer-events: none;
|
|
pointer-events: none;
|
|
@@ -412,12 +588,10 @@ onUnmounted(() => {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
- background: linear-gradient(
|
|
|
|
|
- 360deg,
|
|
|
|
|
- rgba(0, 0, 0, 0.78) 0%,
|
|
|
|
|
- rgba(0, 0, 0, 0.437208) 19.87%,
|
|
|
|
|
- rgba(0, 0, 0, 0) 33.99%
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ background: linear-gradient(360deg,
|
|
|
|
|
+ rgba(0, 0, 0, 0.78) 0%,
|
|
|
|
|
+ rgba(0, 0, 0, 0.437208) 19.87%,
|
|
|
|
|
+ rgba(0, 0, 0, 0) 33.99%);
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
align-items: baseline;
|
|
align-items: baseline;
|
|
@@ -425,16 +599,19 @@ onUnmounted(() => {
|
|
|
padding: 12px;
|
|
padding: 12px;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
|
|
+
|
|
|
.review-text {
|
|
.review-text {
|
|
|
font-family: "PangMenZhengDao";
|
|
font-family: "PangMenZhengDao";
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
margin-bottom: 1px;
|
|
margin-bottom: 1px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.review-content {
|
|
.review-content {
|
|
|
font-size: 10px;
|
|
font-size: 10px;
|
|
|
line-height: 15px;
|
|
line-height: 15px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.vs-wrap {
|
|
.vs-wrap {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
left: 50%;
|
|
left: 50%;
|
|
@@ -443,15 +620,18 @@ onUnmounted(() => {
|
|
|
width: 40px;
|
|
width: 40px;
|
|
|
height: 40px;
|
|
height: 40px;
|
|
|
z-index: 10;
|
|
z-index: 10;
|
|
|
|
|
+
|
|
|
img {
|
|
img {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
object-fit: cover;
|
|
object-fit: cover;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.review-image-item {
|
|
.review-image-item {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
|
|
+
|
|
|
.review-image-item-title {
|
|
.review-image-item-title {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 0;
|
|
top: 0;
|
|
@@ -463,6 +643,7 @@ onUnmounted(() => {
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
// .review-image-item-img {
|
|
// .review-image-item-img {
|
|
|
// width: 100%;
|
|
// width: 100%;
|
|
|
// height: 250px;
|
|
// height: 250px;
|
|
@@ -474,9 +655,11 @@ onUnmounted(() => {
|
|
|
object-fit: cover;
|
|
object-fit: cover;
|
|
|
object-position: center;
|
|
object-position: center;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.left-img {
|
|
.left-img {
|
|
|
border-radius: 8px 0 0 8px;
|
|
border-radius: 8px 0 0 8px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.right-img {
|
|
.right-img {
|
|
|
border-radius: 0 8px 8px 0;
|
|
border-radius: 0 8px 8px 0;
|
|
|
}
|
|
}
|
|
@@ -495,11 +678,13 @@ onUnmounted(() => {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
backdrop-filter: 4px;
|
|
backdrop-filter: 4px;
|
|
|
|
|
+
|
|
|
.cavans-content {
|
|
.cavans-content {
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
padding: 0 12px;
|
|
padding: 0 12px;
|
|
|
height: fit-content;
|
|
height: fit-content;
|
|
|
overflow: auto;
|
|
overflow: auto;
|
|
|
|
|
+
|
|
|
.current-img {
|
|
.current-img {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
}
|
|
}
|
|
@@ -519,6 +704,7 @@ onUnmounted(() => {
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
|
+
|
|
|
&.text-btn {
|
|
&.text-btn {
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
color: rgba(255, 255, 255, 0.7);
|
|
color: rgba(255, 255, 255, 0.7);
|
|
@@ -537,6 +723,7 @@ onUnmounted(() => {
|
|
|
.el-icon {
|
|
.el-icon {
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
img {
|
|
img {
|
|
|
width: 50px;
|
|
width: 50px;
|
|
|
}
|
|
}
|