提交 eba3a093 authored 作者: coderBryanFu's avatar coderBryanFu

政令资源库请求修改

...@@ -1646,6 +1646,7 @@ ...@@ -1646,6 +1646,7 @@
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/lodash": "*" "@types/lodash": "*"
} }
...@@ -1762,6 +1763,7 @@ ...@@ -1762,6 +1763,7 @@
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz",
"integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==", "integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/parser": "^7.28.3", "@babel/parser": "^7.28.3",
"@vue/compiler-core": "3.5.21", "@vue/compiler-core": "3.5.21",
...@@ -2501,6 +2503,7 @@ ...@@ -2501,6 +2503,7 @@
"resolved": "https://registry.npmmirror.com/cytoscape/-/cytoscape-3.33.1.tgz", "resolved": "https://registry.npmmirror.com/cytoscape/-/cytoscape-3.33.1.tgz",
"integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=0.10" "node": ">=0.10"
} }
...@@ -2898,6 +2901,7 @@ ...@@ -2898,6 +2901,7 @@
"resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC", "license": "ISC",
"peer": true,
"engines": { "engines": {
"node": ">=12" "node": ">=12"
} }
...@@ -3155,6 +3159,7 @@ ...@@ -3155,6 +3159,7 @@
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz", "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
"integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "2.3.0", "tslib": "2.3.0",
"zrender": "5.6.1" "zrender": "5.6.1"
...@@ -4388,13 +4393,15 @@ ...@@ -4388,13 +4393,15 @@
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/lodash-es": { "node_modules/lodash-es": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/lodash-unified": { "node_modules/lodash-unified": {
"version": "1.0.3", "version": "1.0.3",
...@@ -4442,6 +4449,7 @@ ...@@ -4442,6 +4449,7 @@
"resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz",
"integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"argparse": "^2.0.1", "argparse": "^2.0.1",
"entities": "^4.4.0", "entities": "^4.4.0",
...@@ -5701,6 +5709,7 @@ ...@@ -5701,6 +5709,7 @@
"integrity": "sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==", "integrity": "sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.8" "@types/estree": "1.0.8"
}, },
...@@ -6634,6 +6643,7 @@ ...@@ -6634,6 +6643,7 @@
"integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.21.3", "esbuild": "^0.21.3",
"postcss": "^8.4.43", "postcss": "^8.4.43",
...@@ -6693,6 +6703,7 @@ ...@@ -6693,6 +6703,7 @@
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.21.tgz", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.21.tgz",
"integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==", "integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.5.21", "@vue/compiler-dom": "3.5.21",
"@vue/compiler-sfc": "3.5.21", "@vue/compiler-sfc": "3.5.21",
......
...@@ -64,6 +64,13 @@ export function getDecreeSummary(params) { ...@@ -64,6 +64,13 @@ export function getDecreeSummary(params) {
/** /**
* @param {id} * @param {id}
*/ */
// export function getDecreeReport(params) {
// return request({
// method: 'GET',
// url: `/api/administrativeOrderInfo/contentUrl/${params.id}`,
// })
// }
export function getDecreeReport(params) { export function getDecreeReport(params) {
return request({ return request({
method: 'GET', method: 'GET',
......
...@@ -198,6 +198,7 @@ ...@@ -198,6 +198,7 @@
'card-white': event.level === 'white', 'card-white': event.level === 'white',
'card-default': !event.level 'card-default': !event.level
}" }"
:style="event.noData ? 'opacity:0;' : ''"
@click="handleClickEventCard(event)" @click="handleClickEventCard(event)"
> >
<div class="card-mask" v-if="activeSanctionId && activeSanctionId !== event.sanctionId"></div> <div class="card-mask" v-if="activeSanctionId && activeSanctionId !== event.sanctionId"></div>
...@@ -327,13 +328,46 @@ const getUSGovernmentSanctionHistoryData = async () => { ...@@ -327,13 +328,46 @@ const getUSGovernmentSanctionHistoryData = async () => {
grouped[deptName].events.push({ grouped[deptName].events.push({
date: item.endDate ? item.endDate.replace(/^(\d{4})-(\d{2})-(\d{2})$/, "$1年$2月$3日") : "", date: item.endDate ? item.endDate.replace(/^(\d{4})-(\d{2})-(\d{2})$/, "$1年$2月$3日") : "",
time: item.endDate,
content: item.name || item.summary, content: item.name || item.summary,
tags: item.techDomainList ? item.techDomainList.slice(0, 2) : [], tags: item.techDomainList ? item.techDomainList.slice(0, 2) : [],
level: level, level: level,
sanctionId: item.sanctionId sanctionId: item.sanctionId
}); });
}); });
timelineList.value = Object.values(grouped);
//统计完成后生成新的数组
let fArr = []
rawList.forEach((item)=>{
fArr.push(item.endDate)
})
let timeLine = Object.values(grouped);
//重新遍历timeLine,根据日期数组额外增加数据
timeLine.forEach((item) => {
// 根据日期数组构建空数据
const data = []
for (let i = 0; i < fArr.length; i++) {
const option = {
date: fArr[i],
noData: true
}
data.push(option)
}
item.events.forEach((ele) => {
for (let m = 0; m < data.length; m++) {
if(ele.time == data[m].date && data[m].noData){
data[m] = ele
data[m].noData = false
break
}
}
})
item.events = data
})
// timelineList.value = Object.values(grouped);
timelineList.value = timeLine
console.log("timelineList", timelineList.value); console.log("timelineList", timelineList.value);
initSlider(); initSlider();
...@@ -2020,6 +2054,10 @@ const prev = () => { ...@@ -2020,6 +2054,10 @@ const prev = () => {
} }
} }
} }
.event-no-card{
width: 240px;
height: 130px;
}
} }
} }
} }
......
...@@ -57,15 +57,19 @@ ...@@ -57,15 +57,19 @@
<el-table-column prop="usScore" label="美国"> <el-table-column prop="usScore" label="美国">
<template #default="scope"> <template #default="scope">
<div style="display: flex"> <div style="display: flex">
<div class="progress-text"> <div class="progress-text" style="width:90px;">
<div class="rank">{{ "No." + scope.row.usRank }}</div> <div class="rank" v-show="scope.row.usScore != 0">{{ "No." + scope.row.usRank }}</div>
<div class="score">{{ scope.row.usScore }}</div> <div class="score" v-show="scope.row.usScore != 0">{{ scope.row.usScore }}</div>
</div> </div>
<div class="progress-wrapper left"> <div class="progress-wrapper left">
<el-progress <el-progress
:percentage="scope.row.usScore" :percentage="scope.row.usScore"
:stroke-width="20" :stroke-width="20"
class="left-progress" class="left-progress"
:class="{
cLead: scope.row.usScore == 0,
leftProgress: scope.row.usScore != 0
}"
:show-text="false" :show-text="false"
/> />
</div> </div>
...@@ -80,15 +84,15 @@ ...@@ -80,15 +84,15 @@
:percentage="scope.row.chinaScore" :percentage="scope.row.chinaScore"
:stroke-width="20" :stroke-width="20"
class="right-progress" class="right-progress"
:class="{ cLead: scope.row.chinaRank < scope.row.usRank }" :class="{ cLead: scope.row.chinaRank < scope.row.usRank && scope.row.chinaScore != 0}"
:show-text="false" :show-text="false"
/> />
</div> </div>
<div class="progress-text" style="color: rgba(206, 79, 81, 1)"> <div class="progress-text" style="color: rgba(206, 79, 81, 1);width:90px;">
<div class="rank" :class="{ cLeadRank: scope.row.chinaRank < scope.row.usRank }"> <div class="rank" :class="{ cLeadRank: scope.row.chinaRank < scope.row.usRank }" v-show="scope.row.chinaScore != 0">
{{ "No." + scope.row.chinaRank }} {{ "No." + scope.row.chinaRank }}
</div> </div>
<div class="score" :class="{ cLeadScore: scope.row.chinaRank < scope.row.usRank }"> <div class="score" :class="{ cLeadScore: scope.row.chinaRank < scope.row.usRank }" v-show="scope.row.chinaScore != 0">
{{ scope.row.chinaScore }} {{ scope.row.chinaScore }}
</div> </div>
</div> </div>
......
...@@ -155,6 +155,10 @@ const selectRelation = ref("相关度优先"); ...@@ -155,6 +155,10 @@ const selectRelation = ref("相关度优先");
const keyword = ref(""); const keyword = ref("");
const tabList = ref([ const tabList = ref([
{
name: "全部",
id: 100
},
{ {
name: "法案", name: "法案",
id: 1 id: 1
...@@ -296,7 +300,7 @@ const handleSearch = async () => { ...@@ -296,7 +300,7 @@ const handleSearch = async () => {
size: pageSize.value, size: pageSize.value,
page: currentPage.value, page: currentPage.value,
keyword: keyword.value, // "出口" keyword: keyword.value, // "出口"
type: activeTabId.value, type: activeTabId.value == 100 ? '' : activeTabId.value,
domains: selectedDomains.value domains: selectedDomains.value
}; };
} else { } else {
...@@ -476,6 +480,9 @@ onMounted(() => { ...@@ -476,6 +480,9 @@ onMounted(() => {
if (route.query && route.query.areaName) { if (route.query && route.query.areaName) {
curArea.value = route.query.areaName; curArea.value = route.query.areaName;
switch (curArea.value) { switch (curArea.value) {
case "全部":
activeTabId.value = 100;
break;
case "法案": case "法案":
activeTabId.value = 1; activeTabId.value = 1;
break; break;
...@@ -503,6 +510,9 @@ onMounted(() => { ...@@ -503,6 +510,9 @@ onMounted(() => {
default: default:
activeTabId.value = 5; activeTabId.value = 5;
} }
} else {
curArea.value = "全部"
activeTabId.value = 100;
} }
handleSearch(); handleSearch();
}); });
......
...@@ -33,14 +33,15 @@ ...@@ -33,14 +33,15 @@
{{ "政令原文" }} {{ "政令原文" }}
</div> </div>
<div class="report-main"> <div class="report-main">
<div class="left"> <div v-if="!reportData.length" class="noContent">{{ "暂无数据" }}</div>
<div v-if="!reportUrl" class="noContent">{{ "中文原文暂无数据" }}</div> <template v-else>
<iframe v-else :src="reportUrl" style="border: none" width="100%" height="100%"> </iframe> <div v-for="(item, index) in reportData" :key="index" class="content-row">
</div> <!-- 左侧:英文 -->
<div class="right"> <div class="content-en">{{ item.contentEn }}</div>
<div v-if="!reportUrlEn" class="noContent">{{ "英文原文暂无数据" }}</div> <!-- 右侧:中文 -->
<iframe v-else :src="reportUrlEn" style="border: none" width="100%" height="100%"> </iframe> <div class="content-cn">{{ item.content }}</div>
</div> </div>
</template>
</div> </div>
</div> </div>
</div> </div>
...@@ -50,14 +51,13 @@ ...@@ -50,14 +51,13 @@
<script setup> <script setup>
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { getDecreeSummary } from "@/api/decree/introduction"; import { getDecreeSummary } from "@/api/decree/introduction";
import { getDecreeReport } from "@/api/decree/introduction"; import { getDecreeReport } from "@/api/decree/introduction";
const route = useRoute(); const route = useRoute();
const reportUrl = ref(""); // 修改为数组存储分段数据
const reportUrlEn = ref(""); const reportData = ref([]);
const summaryInfo = ref({}); const summaryInfo = ref({});
...@@ -72,10 +72,10 @@ const handleGetSummary = async () => { ...@@ -72,10 +72,10 @@ const handleGetSummary = async () => {
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
summaryInfo.value = res.data; summaryInfo.value = res.data;
} }
} catch (error) {} } catch (error) { }
}; };
// 获取报告原文 // 获取报告原文 - 修改为获取分段数组
const handleGetReport = async () => { const handleGetReport = async () => {
const params = { const params = {
id: route.query.id id: route.query.id
...@@ -85,10 +85,10 @@ const handleGetReport = async () => { ...@@ -85,10 +85,10 @@ const handleGetReport = async () => {
const res = await getDecreeReport(params); const res = await getDecreeReport(params);
console.log("报告原文", res); console.log("报告原文", res);
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
reportUrl.value = res.data.content; // 假设后端返回的是数组格式,如果返回的是对象包含数组,请改为 res.data.list
reportUrlEn.value = res.data.contentEn; reportData.value = res.data || [];
} }
} catch (error) {} } catch (error) { }
}; };
onMounted(() => { onMounted(() => {
...@@ -106,6 +106,7 @@ onMounted(() => { ...@@ -106,6 +106,7 @@ onMounted(() => {
.layout-main { .layout-main {
width: 100%; width: 100%;
.layout-main-header { .layout-main-header {
height: 120px; height: 120px;
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
...@@ -119,26 +120,32 @@ onMounted(() => { ...@@ -119,26 +120,32 @@ onMounted(() => {
border-top: 1px solid rgba(234, 236, 238, 1); border-top: 1px solid rgba(234, 236, 238, 1);
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.layout-main-header-left-box { .layout-main-header-left-box {
width: 1100px; width: 1100px;
margin-left: 160px; margin-left: 160px;
margin-top: 13px; margin-top: 13px;
.left-box-top { .left-box-top {
height: 64px; height: 64px;
display: flex; display: flex;
.icon { .icon {
width: 122px; width: 122px;
height: 64px; height: 64px;
border-radius: 4px; border-radius: 4px;
overflow: hidden; overflow: hidden;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.info { .info {
width: 700px; width: 700px;
margin-left: 9px; margin-left: 9px;
.info-box1 { .info-box1 {
width: 700px; width: 700px;
color: rgba(59, 65, 75, 1); color: rgba(59, 65, 75, 1);
...@@ -153,6 +160,7 @@ onMounted(() => { ...@@ -153,6 +160,7 @@ onMounted(() => {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.info-box2 { .info-box2 {
margin-top: 5px; margin-top: 5px;
height: 22px; height: 22px;
...@@ -166,21 +174,25 @@ onMounted(() => { ...@@ -166,21 +174,25 @@ onMounted(() => {
text-align: left; text-align: left;
display: flex; display: flex;
margin-left: -10px; margin-left: -10px;
.info-box2-item { .info-box2-item {
padding: 0 10px; padding: 0 10px;
} }
.item1 { .item1 {
width: 100px; width: 100px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.item2 { .item2 {
width: 180px; width: 180px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.item3 { .item3 {
width: 420px; width: 420px;
overflow: hidden; overflow: hidden;
...@@ -190,25 +202,30 @@ onMounted(() => { ...@@ -190,25 +202,30 @@ onMounted(() => {
} }
} }
} }
.left-box-bottom { .left-box-bottom {
display: flex; display: flex;
height: 40px; height: 40px;
margin-top: 21px; margin-top: 21px;
.left-box-bottom-item { .left-box-bottom-item {
display: flex; display: flex;
margin-right: 32px; margin-right: 32px;
margin-top: 3px; margin-top: 3px;
height: 35px; height: 35px;
cursor: pointer; cursor: pointer;
.icon { .icon {
margin-top: 4px; margin-top: 4px;
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.name { .name {
height: 24px; height: 24px;
color: rgba(59, 65, 75, 1); color: rgba(59, 65, 75, 1);
...@@ -220,20 +237,24 @@ onMounted(() => { ...@@ -220,20 +237,24 @@ onMounted(() => {
text-align: left; text-align: left;
margin-left: 3px; margin-left: 3px;
} }
.nameActive { .nameActive {
color: var(--color-main-active); color: var(--color-main-active);
font-weight: 700; font-weight: 700;
} }
} }
.leftBoxBottomItemActive { .leftBoxBottomItemActive {
border-bottom: 3px solid var(--color-main-active); border-bottom: 3px solid var(--color-main-active);
} }
} }
} }
.layout-main-header-right-box { .layout-main-header-right-box {
width: 300px; width: 300px;
margin-right: 150px; margin-right: 150px;
margin-top: 19px; margin-top: 19px;
.right-box-top { .right-box-top {
.time { .time {
height: 24px; height: 24px;
...@@ -246,6 +267,7 @@ onMounted(() => { ...@@ -246,6 +267,7 @@ onMounted(() => {
letter-spacing: 0px; letter-spacing: 0px;
text-align: right; text-align: right;
} }
.name { .name {
height: 24px; height: 24px;
line-height: 24px; line-height: 24px;
...@@ -258,12 +280,14 @@ onMounted(() => { ...@@ -258,12 +280,14 @@ onMounted(() => {
text-align: right; text-align: right;
} }
} }
.right-box-bottom { .right-box-bottom {
margin-top: 24px; margin-top: 24px;
text-align: right; text-align: right;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
gap: 8px; gap: 8px;
.btn { .btn {
width: 120px; width: 120px;
height: 36px; height: 36px;
...@@ -276,14 +300,17 @@ onMounted(() => { ...@@ -276,14 +300,17 @@ onMounted(() => {
gap: 8px; gap: 8px;
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
.icon { .icon {
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.text { .text {
width: 64px; width: 64px;
height: 24px; height: 24px;
...@@ -297,6 +324,7 @@ onMounted(() => { ...@@ -297,6 +324,7 @@ onMounted(() => {
text-align: left; text-align: left;
} }
} }
.btn-active { .btn-active {
width: 120px; width: 120px;
height: 36px; height: 36px;
...@@ -307,14 +335,17 @@ onMounted(() => { ...@@ -307,14 +335,17 @@ onMounted(() => {
align-items: center; align-items: center;
gap: 8px; gap: 8px;
cursor: pointer; cursor: pointer;
.icon-active { .icon-active {
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.text-active { .text-active {
width: 64px; width: 64px;
height: 24px; height: 24px;
...@@ -331,16 +362,18 @@ onMounted(() => { ...@@ -331,16 +362,18 @@ onMounted(() => {
} }
} }
} }
.layout-main-center { .layout-main-center {
.report-box { .report-box {
margin: 0 auto; margin: 0 auto;
width: 1600px; width: 1600px;
height: 926px; height: 926px;
background: rgba(248, 249, 250, 1); background: rgba(248, 249, 250, 1);
.report-header { .report-header {
height: 80px; height: 80px;
line-height: 80px; line-height: 80px;
padding-left: 20px; padding-left: 69px;
color: rgba(59, 65, 75, 1); color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
font-style: Bold; font-style: Bold;
...@@ -349,39 +382,68 @@ onMounted(() => { ...@@ -349,39 +382,68 @@ onMounted(() => {
letter-spacing: 0px; letter-spacing: 0px;
text-align: left; text-align: left;
} }
.report-main { .report-main {
width: 1600px; width: 1600px;
margin: 0 auto; margin-top: 24px;
background: #fff; background: #fff;
box-sizing: border-box; box-sizing: border-box;
padding: 0 69px; padding: 24px 69px;
display: flex;
height: calc(100% - 100px); height: calc(100% - 100px);
justify-content: space-between; overflow-y: auto; // 改为单一滚动容器,天然同步
.left {
width: 800px; // 滚动条样式
.noContent { &::-webkit-scrollbar {
height: 100px; display: none;
line-height: 100px;
text-align: center;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-style: Regular;
font-size: 20px;
font-weight: 400;
}
} }
.right {
width: 800px; &::-webkit-scrollbar-thumb {
.noContent { background: #c1c1c1;
height: 100px; border-radius: 4px;
line-height: 100px; }
text-align: center;
&::-webkit-scrollbar-track {
background: #f1f1f1;
}
.noContent {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-style: Regular;
font-size: 20px;
font-weight: 400;
}
.content-row {
display: flex;
width: 100%;
min-height: 100px;
// border-bottom: 1px solid rgba(234, 236, 238, 1);
align-items: stretch; // 默认stretch,确保左右等高,头部对齐
&:last-child {
border-bottom: none;
}
.content-en,
.content-cn {
width: 800px;
padding: 24px 30px;
box-sizing: border-box;
font-size: 16px;
line-height: 1.8;
color: rgba(59, 65, 75, 1); color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
font-style: Regular; text-align: justify;
font-size: 20px; white-space: pre-wrap; // 保留换行格式
font-weight: 400; }
.content-en {
// border-right: 1px solid rgba(234, 236, 238, 1); // 中间分隔线
} }
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论