提交 87e1f708 authored 作者: hsx's avatar hsx

被制裁时间轴

上级 e3e744b6
<script setup>
</script>
<template>
<div class="flex-display box">
<div class="img"></div>
<div class="flex-fill txt text-tip-1">
<slot></slot>
</div>
<div class="arrow"><span></span></div>
</div>
</template>
<style scoped lang="scss">
@use '@/styles/common.scss';
.box {
background-color: var(--color-primary-2);
flex-direction: row;
gap: 10px;
justify-content: center;
align-items: center;
padding: 6px 12px;
border-radius: 4px;
border: 1px solid var(--color-primary-10);
color: var(--color-primary-100);
}
.img {
width: 19px;
height: 20px;
background-image: url("@/assets/icons/model.png");
}
.txt {
flex: 1;
min-width: 0;
word-wrap: break-word;
word-break: break-word;
overflow-wrap: break-word;
max-width: 100%;
}
.arrow {
border-radius: 50%;
min-width: 24px;
width: 24px;
height: 24px;
background: var(--color-primary-10);
display: flex;
align-items: center;
justify-content: center;
span {
font-size: 22px;
font-weight: bold;
position: relative;
top: -3px;
/* 向上偏移2px */
}
}
</style>
\ No newline at end of file
......@@ -7,9 +7,14 @@
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
}
.flex-display{
.flex-display {
display: flex;
}
.flex-fill {
flex: 1;
}
// 文本超出指定行数省略号显示
@mixin text-ellipsis($line-clamp) {
overflow: hidden;
......@@ -26,64 +31,67 @@
word-break: break-word;
/* 允许单词换行 */
}
//禁止换行
.text-nowrap{
.text-nowrap {
white-space: nowrap;
}
/***文本样式***/
.text-base{
.text-base {
color: var(--color-primary-80);
}
//0级标题
.text-title-0{
.text-title-0 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 32px;
}
.text-title-0-bold{
.text-title-0-bold {
@extend .text-title-0;
font-weight: Bold;
}
.text-title-0-show{
.text-title-0-show {
@extend .text-title-0;
font-size: 48px;
font-family: "YouSheBiaoTiHei";
}
//1级标题
.text-title-1{
.text-title-1 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 24px;
}
.text-title-1-bold{
.text-title-1-bold {
@extend .text-title-1;
font-weight: Bold;
}
.text-title-1-show{
.text-title-1-show {
@extend .text-title-1;
font-size: 30px;
font-family: "YouSheBiaoTiHei";
}
//2级标题
.text-title-2{
.text-title-2 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 20px;
line-height:26px;
line-height: 26px;
}
.text-title-2-bold{
.text-title-2-bold {
@extend .text-title-2;
font-weight: Bold;
}
.text-title-2-show{
.text-title-2-show {
@extend .text-title-2;
font-size: 24px;
font-family: "YouSheBiaoTiHei";
......@@ -91,19 +99,19 @@
}
//3级标题
.text-title-3{
.text-title-3 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 18px;
line-height:24px;
line-height: 24px;
}
.text-title-3-bold{
.text-title-3-bold {
@extend .text-title-3;
font-weight: Bold;
}
.text-title-3-show{
.text-title-3-show {
@extend .text-title-3;
font-size: 20px;
font-family: "YouSheBiaoTiHei";
......@@ -111,58 +119,60 @@
}
//正文
.text-regular{
.text-regular {
@extend .text-base;
font-size: 16px;
line-height:30px;
line-height: 30px;
}
//正文-加粗
.text-bold{
.text-bold {
@extend .text-base;
font-weight: Bold;
}
//正文-紧凑
.text-compact{
.text-compact {
@extend .text-base;
font-size: 16px;
line-height:24px;
line-height: 24px;
}
.text-compact-bold{
.text-compact-bold {
@extend .text-base;
font-size: 16px;
line-height:24px;
line-height: 24px;
font-weight: Bold;
}
//1级提示文字
.text-tip-1{
.text-tip-1 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 16px;
line-height:24px;
line-height: 24px;
}
.text-tip-1-bold{
.text-tip-1-bold {
@extend .text-tip-1;
font-weight: Bold;
}
//2级提示文字
.text-tip-2{
.text-tip-2 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 14px;
line-height:22px;
line-height: 22px;
}
.text-tip-2-bold{
.text-tip-2-bold {
@extend .text-tip-2;
font-weight: Bold;
}
//3级提示文字
.text-tip-3{
.text-tip-3 {
@extend .text-base;
color: var(--color-primary-90);
font-size: 12px;
......
@use "common";
/***通用页面***/
.common-page {
font-family: "Microsoft Yahei", "PingFang SC", sans-serif;
margin: 16px auto;
width: 1600px;
align-items: center;
......
@use "common";
/***没有nav下划线***/
.common-descriptions .el-descriptions__label{
/***通用描述组件***/
.common-descriptions {
.el-descriptions__label {
@extend .text-tip-1-bold;
color: var(--text-primary-80-color);
}
.common-descriptions .el-descriptions__content{
}
.common-descriptions .el-descriptions__content {
@extend .text-tip-1;
color: var(--text-primary-80-color);
}
}
\ No newline at end of file
@use "common";
/***没有nav下划线***/
.tabs-nav-no-wrap .el-tabs__nav-wrap::after{
.tabs-nav-no-wrap {
.el-tabs__nav-wrap::after {
height: 0px !important;
width: 0px !important;
}
}
/***nav as card***/
.tabs-header-as-card .el-tabs__header:not(.disinheritance .el-tabs__header) {
.tabs-header-as-card {
.el-tabs__header:not(.disinheritance .el-tabs__header) {
@extend .background-as-card;
padding: 2px;
}
}
/***作为按钮样式的tabs-bar***/
/*选中无下划线*/
.tabs-bar-as-btn .el-tabs__active-bar:not(.disinheritance .el-tabs__active-bar) {
.tabs-bar-as-btn {
.el-tabs__active-bar:not(.disinheritance .el-tabs__active-bar) {
height: 0px;
}
}
/*定义字体*/
.tabs-bar-as-btn .el-tabs__item:not(.disinheritance .el-tabs__item) {
/*定义字体*/
.el-tabs__item:not(.disinheritance .el-tabs__item) {
font-size: 20px;
font-family: "Source Han Sans CN-Regular";
font-weight: Regular;
line-height: 26px;
height: 50px;
}
}
/*激活时按钮样式*/
.tabs-bar-as-btn .el-tabs__item.is-active:not(.disinheritance .el-tabs__item){
/*激活时按钮样式*/
.el-tabs__item.is-active:not(.disinheritance .el-tabs__item) {
font-size: 24px;
font-family: "Source Han Sans CN-Bold";
......@@ -40,12 +45,30 @@
border-color: var(--color-primary-35);
border-radius: 10px;
background-color: var(--color-primary-2);
}
}
/***tabs-bar左边悬浮***/
.left-float-nav-tabs .el-tabs__item{
position:relative;
}
.left-float-nav-tabs .el-tabs__item.is-active{
background-color: aquamarine;
.left-float-nav-tabs {
// .el-tabs__header {
position: relative;
overflow: visible;
transform: translateZ(0);
/* 双重保障 */
/* 创建新的渲染层 */
/* 创建新的层叠上下文 */
.el-tabs__header {
// position: absolute;
left: 0;
top: 0;
z-index: 999;
background-color: red;
// margin-left: -20px;
}
// }
}
\ No newline at end of file
......@@ -8,7 +8,7 @@
<!-- 数值区域 -->
<el-space :size="6">
<!-- 数值图标 -->
<div class="item-value-img" />
<div class="item-value-img"></div>
<!-- 数值 -->
<div class="item-value">
{{ t.value }}
......
<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { ElSpace, ElRadioGroup, ElRadio, ElRadioButton } from 'element-plus';
import * as echarts from 'echarts';
import { getStudyList, getSanctionList } from '@/api/companyPages';
import AnalysisBox from '@/components/base/boxBackground/analysisBox.vue';
import AiTipPane from '@/components/base/panes/AiTipPane.vue'
// 定义组件属性
const props = defineProps({
enterpriseInfo: {
type: Object,
default: {}
}
});
const studyList = ref([])
const sanctionList = ref([])
const studyTypes = ref([])
const studyType = ref()
const chartDom = ref()
let myChart = null
onMounted(async () => {
await intData()
// await initChart()
})
onUnmounted(() => myChart?.dispose())
async function intData() {
const { data } = await getStudyList(props.enterpriseInfo.id)
studyList.value = data ?? []
data.forEach(t => t.time = new Date(t.year, 1, 1))
studyTypes.value = [...new Set(data.map(t => t.type))]
const { data: sanctionData } = await getSanctionList(props.enterpriseInfo.id)
sanctionList.value = sanctionData ?? []
sanctionList.value.forEach(t => t.time = new Date(t.sanctionDate))
if (studyTypes.value.length > 0) {
studyType.value = studyTypes.value[0]
}
updateCharts(studyType.value, studyList.value, sanctionList.value)
}
// 辅助函数:获取制裁年份对应的Y值
function getSanctionYValue(sanctionDate, filteredList, defaultYValue) {
const year = sanctionDate.getFullYear()
const yearData = filteredList.find(d => d.year === year)
return yearData ? yearData.currentValue : defaultYValue
}
// 辅助函数:格式化文本内容,实现智能换行(考虑中英文混合)
function formatContent(content, maxWidth = 26) {
if (!content) return ''
const lines = []
let currentLine = ''
let currentWidth = 0
// 中文字符宽度设为2,英文字符宽度设为1
for (let i = 0; i < content.length; i++) {
const char = content[i]
const charWidth = /[\u4e00-\u9fa5]/.test(char) ? 2 : 1
if (currentWidth + charWidth <= maxWidth) {
currentLine += char
currentWidth += charWidth
} else {
lines.push(currentLine)
currentLine = char
currentWidth = charWidth
}
}
if (currentLine) {
lines.push(currentLine)
}
return lines.join('\n')
}
function updateCharts(type, dataStudy, dataSanction) {
const filteredList = dataStudy.filter(t => t.type === type)
if (!filteredList.length) return
// 销毁现有图表实例
if (myChart) {
myChart.dispose()
}
myChart = echarts.init(chartDom.value)
// y轴单位
const unit = filteredList[0].unit
const yValue = Math.max(...filteredList.map(d => d.currentValue))
// 计算x轴范围,扩大活动空间
const allDates = [
...filteredList.map(t => t.time),
...dataSanction.map(t => t.time)
]
const minDate = new Date(Math.min(...allDates))
const maxDate = new Date(Math.max(...allDates))
// 向前扩展1年,向后扩展1年
minDate.setFullYear(minDate.getFullYear() - 1)
maxDate.setFullYear(maxDate.getFullYear() + 1)
myChart.setOption({
textStyle: {
fontSize: 14
},
grid: {
left: 60,
right: 110,
},
tooltip: {
trigger: 'axis',
position: function (pt) {
return [pt[0], '10%'];
},
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 100
},
{
start: 0,
end: 100
}
],
xAxis: {
type: 'time',
boundaryGap: false,
min: minDate,
max: maxDate
},
yAxis: {
type: 'value',
boundaryGap: [0, '100%'],
// 显示y轴单位在顶部
name: unit,
nameLocation: 'end'
},
series: [
{
type: 'line',
//从上到下填充颜色
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgba(128, 181, 255, 0.8)'
},
{
offset: 1,
color: 'rgba(128, 181, 255, 0)'
}
])
},
data: filteredList.map(t => [t.time, t.currentValue])
},
{
type: 'scatter',
tooltip: { show: false },
data: dataSanction.map(t => {
const currentYValue = getSanctionYValue(t.time, filteredList, yValue) + yValue / 3
return [t.time, currentYValue, t]
}),
markLine: {
lineStyle: {
color: '#ff4d4f',
type: 'dashed',
width: 1
},
data: dataSanction.map(t => {
const currentYValue = getSanctionYValue(t.time, filteredList, yValue) + yValue / 3
return [{
coord: [t.time, 0],
symbol: 'none'
}, {
coord: [t.time, currentYValue],
symbol: 'none',
}]
})
},
coordinateSystem: 'cartesian2d',
symbolSize: 1,
label: {
show: true,
position: 'insideBottomLeft',
formatter: function (params) {
const title = params.data[2].sanctionDate;
const content = params.data[2].content;
const formattedContent = formatContent(content);
return `{title|${title}}\n{content|${formattedContent}}`;
},
rich: {
title: {
fontSize: 16,
lineHeight: 22,
color: '#CE4F51'
},
content: {
fontSize: 15,
fontWeight: 'bold',
width: 200, // 限制宽度
color: '#CE4F51',
lineHeight: 22,
overflow: 'break' // 超出宽度自动换行
}
},
backgroundColor: 'rgba(255, 241, 240, 1)',
borderColor: 'rgba(255, 204, 199, 1)',
borderRadius: 4,
padding: [8, 12],
distance: -1
}
}
],
})
}
function handleStudyTypesChange() {
updateCharts(studyType.value, studyList.value, sanctionList.value)
}
</script>
<template>
<analysis-box title="被制裁时间轴">
<template v-slot:header-btn>
<el-radio-group v-model="studyType" @change="handleStudyTypesChange">
<el-radio-button v-for="item in studyTypes" :key="item" :label="item">{{ item }}</el-radio-button>
</el-radio-group>
</template>
<div class="flex-display content-box">
<div ref="chartDom" class="chart-container"></div>
<ai-tip-pane>123</ai-tip-pane>
</div>
</analysis-box>
</template>
<style lang="scss" scoped>
.content-box {
padding: 10px;
gap: 10px;
flex-direction: column;
}
.chart-container {
height: 500px;
width: 100%;
}
</style>
\ No newline at end of file
<script setup lang="ts">
import '@/styles/tabs.scss'
import { ElTabPane, ElTabs } from 'element-plus';
import SanctionsSituation from './SanctionsSituation.vue';
// 定义组件属性
const props = defineProps({
enterpriseInfo: {
type: Object,
default: {}
}
});
</script>
<template>
<div style="overflow: visible;">
<el-tabs tabPosition="left" class="disinheritance tabs-nav-no-wrap left-float-nav-tabs">
<el-tab-pane label="企业规模"></el-tab-pane>
<el-tab-pane label="市值变化"></el-tab-pane>
<el-tab-pane label="企业规模">
<sanctions-situation :enterprise-info="enterpriseInfo"></sanctions-situation>
</el-tab-pane>
<!-- <el-tab-pane label="市值变化"></el-tab-pane>
<el-tab-pane label="研发投入"></el-tab-pane>
<el-tab-pane label="市场占比"></el-tab-pane>
<el-tab-pane label="市场占比"></el-tab-pane> -->
</el-tabs>
</div>
</template>
\ No newline at end of file
......@@ -4,7 +4,7 @@
</div>
<el-scrollbar>
<div class="common-page">
<el-space wrap :size="16">
<el-space wrap :size="16" fill>
<title-pane :enterprise-info="enterpriseInfo"></title-pane>
<el-tabs stretch class="tabs-header-as-card tabs-nav-no-wrap tabs-bar-as-btn">
<el-tab-pane label="企业详情">
......@@ -14,7 +14,7 @@
</div>
</el-tab-pane>
<el-tab-pane lazy label="经营情况">
<operating-pages />
<operating-pages :enterprise-info="enterpriseInfo" />
</el-tab-pane>
<el-tab-pane lazy label="供应链 / 股权">
<div class="flex-display">
......
......@@ -53,9 +53,9 @@
<SearchContainer style="margin-bottom: 0; margin-top: 48px; height: fit-content" v-if="homeMainRef"
placeholder="搜索出口管制" :containerRef="homeMainRef" areaName="实体清单" />
<div class="home-main-header-footer-info">
<InfoCard v-for="(item, index) in infoList" :key="item.id" :title="item.nameZh" :subtitle="item.nameAbbr"
:description="item.description" :quantity="item.postCount" unit="次" :color="infoListColor[index]"
@click="handleToEntityListNoId(item)" />
<InfoCard v-for="(item, index) in infoList" :key="item.id" :title="item.nameZh"
:subtitle="item.nameAbbr" :description="item.description" :quantity="item.postCount" unit="次"
:color="infoListColor[index]" @click="handleToEntityListNoId(item)" />
</div>
</div>
......@@ -81,9 +81,10 @@
<img src="./assets/images/box1-right.png" alt="" />
</div>
</div>
<el-carousel ref="carouselRef" height="370px" :autoplay="true" :interval="3000" arrow="never"
indicator-position="none" @change="handleCarouselChange">
<el-carousel-item v-for="(item, index) in entitiesDataInfoList" :key="item.id + index">
<el-carousel ref="carouselRef" height="370px" :autoplay="true" :interval="3000"
arrow="never" indicator-position="none" @change="handleCarouselChange">
<el-carousel-item v-for="(item, index) in entitiesDataInfoList"
:key="item.id + index">
<div>
<div class="box1-top">
<div class="box1-top-title">
......@@ -92,17 +93,20 @@
<div class="box1-top-content">
<div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 发布机构:</span>
<span class="box1-top-content-item-content">{{ item.postOrgName }}</span>
<span class="box1-top-content-item-content">{{ item.postOrgName
}}</span>
</div>
<div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 生效日期:</span>
<span class="box1-top-content-item-content">{{ item.postDate }}</span>
<span class="box1-top-content-item-content">{{ item.postDate
}}</span>
</div>
<div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 涉及领域:</span>
<div class="box1-top-content-item-tags" v-for="(domainItem, index) in item.domains"
:key="index">
<el-tag :type="getTagType(domainItem)">{{ domainItem }}</el-tag>
<div class="box1-top-content-item-tags"
v-for="(domainItem, index) in item.domains" :key="index">
<el-tag :type="getTagType(domainItem)">{{ domainItem
}}</el-tag>
</div>
</div>
</div>
......@@ -110,10 +114,11 @@
<div class="box1-bottom">
<div class="box1-bottom-title">· 涉及主要实体:</div>
<div class="box1-bottom-content">
<div class="box1-bottom-content-item" v-for="(ett, index) in item.sanEntities" :key="index"
<div class="box1-bottom-content-item"
v-for="(ett, index) in item.sanEntities" :key="index"
@click="handleEntityClick(ett)">
<el-image v-if="ett.img" class="box1-bottom-content-item-img" :src="ett.img"
alt=""></el-image>
<el-image v-if="ett.img" class="box1-bottom-content-item-img"
:src="ett.img" alt=""></el-image>
<div v-else class="box1-bottom-content-item-imgUndefined">
{{
(ett.entityNameZh || ett.enName)?.match(
......@@ -186,8 +191,9 @@
</div>
</template>
</custom-container> -->
<RiskSignal :list="warningList" @item-click="handleToRiskSignalDetail" @more-click="handleToMoreRiskSignal"
riskLevel="signalLevel" postDate="signalTime" name="signalTitle" />
<RiskSignal :list="warningList" @item-click="handleToRiskSignalDetail"
@more-click="handleToMoreRiskSignal" riskLevel="signalLevel" postDate="signalTime"
name="signalTitle" />
</el-col>
......@@ -246,16 +252,19 @@
<el-table-column label="发布次数" width="200">
<template #default="scope">
<div style="display: flex; align-items: center">
<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span>
<el-progress :percentage="scope.row.percent * 100" :show-text="false"
:status="getStatus(scope.row.percent)" />
<span style="margin-right: 10px; width: 40px">{{ scope.row.num
}}</span>
<el-progress :percentage="scope.row.percent * 100"
:show-text="false" :status="getStatus(scope.row.percent)" />
</div>
</template>
</el-table-column>
<el-table-column label="重点领域" width="280" align="center">
<template #default="scope">
<div style="display: flex; justify-content: center; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
<div
style="display: flex; justify-content: center; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag"
:type="getTagType(tag)">{{
tag
}}</el-tag>
</div>
......@@ -270,16 +279,19 @@
<el-table-column label="发布次数" width="200">
<template #default="scope">
<div style="display: flex; align-items: center">
<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span>
<el-progress :percentage="scope.row.percent * 100" :show-text="false"
:status="getStatus(scope.row.percent)" />
<span style="margin-right: 10px; width: 40px">{{ scope.row.num
}}</span>
<el-progress :percentage="scope.row.percent * 100"
:show-text="false" :status="getStatus(scope.row.percent)" />
</div>
</template>
</el-table-column>
<el-table-column label="重点领域" width="280" align="center">
<template #default="scope">
<div style="display: flex; justify-content: center; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
<div
style="display: flex; justify-content: center; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag"
:type="getTagType(tag)">{{
tag
}}</el-tag>
</div>
......@@ -294,16 +306,18 @@
<el-table-column label="发布次数" width="180">
<template #default="scope">
<div style="display: flex; align-items: center">
<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span>
<el-progress :percentage="scope.row.percent * 100" :show-text="false"
:status="getStatus(scope.row.percent)" />
<span style="margin-right: 10px; width: 40px">{{ scope.row.num
}}</span>
<el-progress :percentage="scope.row.percent * 100"
:show-text="false" :status="getStatus(scope.row.percent)" />
</div>
</template>
</el-table-column>
<el-table-column label="重点领域" width="180">
<template #default="scope">
<div style="display: flex; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
<el-tag v-for="tag in scope.row.tags" :key="tag"
:type="getTagType(tag)">{{
tag
}}</el-tag>
</div>
......@@ -334,7 +348,8 @@
<div style="display: flex; align-items: center; gap: 16px">
<el-checkbox v-model="trendChecked" label="50%规则" size="large" />
<el-select v-model="selectedEntityId" placeholder="请选择清单类型" style="width: 160px">
<el-option v-for="item in infoList" :key="item.id" :label="item.nameZh" :value="item.id" />
<el-option v-for="item in infoList" :key="item.id" :label="item.nameZh"
:value="item.id" />
</el-select>
</div>
</template>
......@@ -360,18 +375,22 @@
<template #default>
<div class="box4">
<div style="height: 90%; overflow-y: auto; padding-top: 10px">
<div class="box4-item" v-for="(item, idx) in sanctionProcessList" :key="item.title">
<div class="box4-item" v-for="(item, idx) in sanctionProcessList"
:key="item.title">
<div class="box4-item-left">
<el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" />
<div class="box4-item-left-line" v-if="idx + 1 != sanctionProcessList.length"></div>
<div class="box4-item-left-line"
v-if="idx + 1 != sanctionProcessList.length"></div>
</div>
<div class="box4-item-right">
<div class="box4-item-right-header" @click="handleSanc(item)">
<span class="box4-item-right-header-title">{{ item.postDate }}{{ item.title }}</span>
<span class="box4-item-right-header-title">{{ item.postDate }}{{
item.title }}</span>
<span class="box4-item-right-header-desc">{{ item.desc }}</span>
</div>
<el-tooltip effect="dark" :content="item.content" popper-class="common-prompt-popper"
placement="top" :show-after="500">
<el-tooltip effect="dark" :content="item.content"
popper-class="common-prompt-popper" placement="top"
:show-after="500">
<div class="box4-item-right-content">
{{ item.content }}
</div>
......@@ -379,7 +398,8 @@
</div>
</div>
</div>
<div class="box4-footer" :style="{ marginTop: sanctionProcessList.length > 0 ? '0px' : 'auto' }">
<div class="box4-footer"
:style="{ marginTop: sanctionProcessList.length > 0 ? '0px' : 'auto' }">
<el-button type="primary" link @click="handleGetMore">查看更多
<el-icon>
<DArrowRight />
......@@ -397,8 +417,8 @@
</template>
<template #default>
<div class="box5">
<el-table :data="entitiesList" class="sanction-table" stripe empty-text="暂无数据" height="700px"
header-row-class-name="table-header" row-class-name="table-row">
<el-table :data="entitiesList" class="sanction-table" stripe empty-text="暂无数据"
height="700px" header-row-class-name="table-header" row-class-name="table-row">
<!-- <el-table-column prop="index" label="序号" width="80" align="center">
<template #default="scope">
{{ scope.$index + 1 + (currentPage - 1) * pageSize }}
......@@ -408,8 +428,8 @@
<el-table-column prop="name" label="实体名称" min-width="200">
<template #default="scope">
<div class="tableName" @click="handleCompClick(scope.row)">
<el-image v-if="scope.row.img" class="box1-bottom-content-item-img" :src="scope.row.img"
alt=""></el-image>
<el-image v-if="scope.row.img" class="box1-bottom-content-item-img"
:src="scope.row.img" alt=""></el-image>
<div v-else class="box1-bottom-content-item-imgUndefined">
{{
(scope.row.name || scope.row.enName)?.match(
......@@ -417,7 +437,8 @@
)?.[0]
}}
</div>
<CommonPrompt :content="scope.row.name" style="flex: 1; overflow: hidden" />
<CommonPrompt :content="scope.row.name"
style="flex: 1; overflow: hidden" />
</div>
</template>
</el-table-column>
......@@ -425,7 +446,8 @@
<el-table-column prop="domains" label="涉及领域" min-width="150">
<template #default="scope">
<div class="domain-tags">
<el-tag v-for="tag in scope.row.domains" :key="tag" :type="getTagType(tag)">{{
<el-tag v-for="tag in scope.row.domains" :key="tag"
:type="getTagType(tag)">{{
tag
}}</el-tag>
</div>
......@@ -466,7 +488,8 @@
]">
{{ scope.row.ruleOrgList[0].orgName }}...等
</div>
<div style="width: 50px; color: #409eff; cursor: pointer" @click="handleOrgClick(scope.row)">
<div style="width: 50px; color: #409eff; cursor: pointer"
@click="handleOrgClick(scope.row)">
{{ scope.row.ruleOrgCount }}家>
</div>
</div>
......@@ -478,8 +501,9 @@
<!-- <div class="pagination-info">
第{{ currentPage }}页,共{{ totalPages }}页
</div> -->
<el-pagination v-model:current-page="currentPage" :page-size="pageSize" :total="total"
:pager-count="5" layout="prev, pager, next" background @current-change="handlePageChange" />
<el-pagination v-model:current-page="currentPage" :page-size="pageSize"
:total="total" :pager-count="5" layout="prev, pager, next" background
@current-change="handlePageChange" />
</div>
</div>
</template>
......@@ -500,7 +524,8 @@
<div class="left-main">
<el-checkbox-group v-model="checkedTech">
<div class="checkbox-grid">
<el-checkbox v-for="item in techOptions" :key="item.value" :label="item.value">{{
<el-checkbox v-for="item in techOptions" :key="item.value"
:label="item.value">{{
item.label
}}</el-checkbox>
</div>
......@@ -533,10 +558,12 @@
</div>
<img :src="item.orgLogoUrl || comTitle" alt="" />
<div class="main">
<div class="main-title" @click="handleTitleClick(item)">{{ item.title }}</div>
<div class="main-title" @click="handleTitleClick(item)">{{ item.title }}
</div>
<div class="main-desc">{{ item.desc }}</div>
<div class="tag-box">
<div v-for="tag in item.tags" :key="tag" class="tag-item">{{ tag }}</div>
<div v-for="tag in item.tags" :key="tag" class="tag-item">{{ tag }}
</div>
</div>
<div :class="{ 'count-tag': item.countTag }">{{ item.countTag }}</div>
......@@ -545,8 +572,9 @@
</div>
<div class="right-footer">
<div class="total-count">{{ totalAll }}</div>
<el-pagination v-model:current-page="currentPageAll" :page-size="pageSizeAll" :total="totalAll"
layout="prev, pager, next" background @current-change="handlePageChangeAll" />
<el-pagination v-model:current-page="currentPageAll" :page-size="pageSizeAll"
:total="totalAll" layout="prev, pager, next" background
@current-change="handlePageChangeAll" />
</div>
</div>
</div>
......@@ -598,7 +626,7 @@
</template>
<script setup>
import NewsList from "@/components/NewsList/NewsList.vue";
import NewsList from "@/components/NewsList.vue";
import RiskSignal from "@/components/RiskSignal/RiskSignal.vue";
import { onMounted, ref, computed, reactive, shallowRef, watch, nextTick } from "vue";
import { useContainerScroll } from "@/hooks/useScrollShow";
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论