feat: 新增面包屑导航并提升用户界面的一致性

导航logo添加返回首页
去掉首页定期报告
相关材料更名产品文档
新增教学案例下载
This commit is contained in:
傅光孟 2026-03-24 15:59:27 +08:00
parent a472659d54
commit 15a39d8763
11 changed files with 393 additions and 214 deletions

View File

@ -8,11 +8,11 @@
<img :src="iconBack" class="back_icon" /> <img :src="iconBack" class="back_icon" />
</div> </div>
<div v-if="route.path !== '/detail' || route.path == '/detailKua'" class="r_logo"> <router-link to="/home" v-if="route.path !== '/detail' || route.path == '/detailKua'" class="r_logo">
<img :src="logo_hol" class="logo" /> <img :src="logo_hol" class="logo" />
<div class="line"></div> <div class="line"></div>
<text>中证智能财保</text> <span class="text">中证智能财保</span>
</div> </router-link>
<div> <div>
<span class="route_name" v-if="detailName && route.path == '/detail'" :key="route.path"> {{ detailName }}</span> <span class="route_name" v-if="detailName && route.path == '/detail'" :key="route.path"> {{ detailName }}</span>
</div> </div>
@ -269,6 +269,7 @@ onBeforeRouteUpdate((to) => {
display: flex; display: flex;
align-items: center; align-items: center;
margin-left: 20px; margin-left: 20px;
text-decoration: none;
.logo { .logo {
width: 140px; width: 140px;
@ -283,7 +284,7 @@ onBeforeRouteUpdate((to) => {
margin-right: 12px; margin-right: 12px;
} }
text { .text {
color: #000000; color: #000000;
font-family: 'Noto Sans CJK SC'; font-family: 'Noto Sans CJK SC';
font-size: 18px; font-size: 18px;
@ -292,6 +293,7 @@ onBeforeRouteUpdate((to) => {
line-height: 26px; line-height: 26px;
letter-spacing: 0.56px; letter-spacing: 0.56px;
white-space: nowrap; white-space: nowrap;
text-decoration: none;
} }
} }

View File

@ -577,7 +577,7 @@ onMounted(() => {
redirect: '/example', redirect: '/example',
// component: () => import('/@/views/example/index.vue'), // component: () => import('/@/views/example/index.vue'),
meta: { meta: {
title: '相关材料', title: '产品文档',
}, },
}); });
} }

View File

@ -1,19 +1,23 @@
<template> <template>
<div class="container"> <div class="container">
<div class="r_logo"> <div class="r_logo">
<img :src="logo_hol" class="logo" /> <router-link to="/home" class="home-link">
<div class="line"></div> <img :src="logo_hol" class="logo" />
<text>中证智能财保</text> <div class="line"></div>
<text>中证智能财保</text>
</router-link>
<div class="top_menu"> <div class="top_menu">
<div class="item" @click="goLogout"> <div class="item" @click="goLogout">
<text>产品</text> <text>产品</text>
<!-- <div class="bottom_line"></div> -->
</div> </div>
<div class="item"> <div class="item">
<text>相关材料</text> <text>产品文档</text>
<div class="bottom_line"></div> <div class="bottom_line"></div>
</div> </div>
<div v-if="!Session.get('token')" class="top_right" @click="goLogin">
<text>登录</text>
</div>
</div> </div>
</div> </div>
@ -24,7 +28,12 @@
<div class="img"> <div class="img">
<img :src="item.img" alt="" /> <img :src="item.img" alt="" />
</div> </div>
<div class="text">{{ item.name }}</div> <div class="name">
<div class="text">{{ item.name }}</div>
<el-tooltip content="点击下载">
<el-button :icon="Download" size="mini" circle @click.stop="handleDownload(item)" />
</el-tooltip>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -48,6 +57,8 @@ import example4 from '/@/assets/images/example_4.png';
import example5 from '/@/assets/images/example_5.png'; import example5 from '/@/assets/images/example_5.png';
import Detail from './detail/index.vue'; import Detail from './detail/index.vue';
import router from '/@/router'; import router from '/@/router';
import { Download } from '@element-plus/icons-vue';
import { Session } from '/@/utils/storage';
const data = ref([ const data = ref([
{ {
@ -150,6 +161,55 @@ const handleClose = () => {
const goLogout = () => { const goLogout = () => {
router.push('/login'); router.push('/login');
}; };
//
const handleDownload = async (item) => {
if (!item || !item.url) {
console.warn('下载失败:缺少 URL 或数据格式不正确', item);
return;
}
const downloadUrl = item.url.trim();
if (!downloadUrl) {
console.warn('下载失败URL 为空值');
return;
}
try {
const response = await fetch(downloadUrl);
if (!response.ok) {
throw new Error(`下载失败,状态码:${response.status}`);
}
const blob = await response.blob();
const urlObj = window.URL.createObjectURL(blob);
const fileExt = (() => {
const urlPath = new URL(downloadUrl).pathname;
const part = urlPath.split('.').pop() || '';
return part.toLowerCase();
})();
const safeName = (item.name || 'download').replace(/\s+/g, '_').replace(/[\\/:*?"<>|]+/g, '');
const fileName = fileExt ? `${safeName}.${fileExt}` : safeName;
const a = document.createElement('a');
a.href = urlObj;
a.download = fileName;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(urlObj);
} catch (error) {
console.error('下载异常:', error);
}
};
//
function goLogin() {
router.push('/loginReal');
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@ -163,12 +223,19 @@ const goLogout = () => {
.r_logo { .r_logo {
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
background-color: #fff; background-color: #fff;
height: 64px; height: 64px;
padding: 0 32px; padding-left: 32px;
border-bottom: 1px solid var(--next-border-color-light); border-bottom: 1px solid var(--next-border-color-light);
.home-link {
display: flex;
align-items: center;
text-decoration: none;
}
.logo { .logo {
width: 140px; width: 140px;
height: 32px; height: 32px;
@ -205,9 +272,11 @@ const goLogout = () => {
} }
.list { .list {
display: flex; display: grid;
justify-content: flex-start; grid-template-columns: repeat(4, 1fr);
align-content: flex-start; gap: 16px;
// justify-content: flex-start;
// align-content: flex-start;
flex-wrap: wrap; flex-wrap: wrap;
margin-top: 16px; margin-top: 16px;
padding: 8px 16px; padding: 8px 16px;
@ -216,8 +285,8 @@ const goLogout = () => {
min-height: calc(100vh - 200px); min-height: calc(100vh - 200px);
.item { .item {
width: 256px; // width: 256px;
height: 190px; height: 210px;
background: #ffffff; background: #ffffff;
border: 1px solid rgba(229, 229, 229, 1); border: 1px solid rgba(229, 229, 229, 1);
border-radius: 4px; border-radius: 4px;
@ -227,11 +296,17 @@ const goLogout = () => {
.img, .img,
img { img {
width: 100%; width: 100%;
height: 144px; height: 164px;
}
.name {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 12px;
} }
.text { .text {
padding: 8px 12px;
font-size: 14px; font-size: 14px;
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);
white-space: nowrap; white-space: nowrap;
@ -295,10 +370,7 @@ const goLogout = () => {
.top_menu { .top_menu {
height: 100%; height: 100%;
margin-left: 50px;
display: flex; display: flex;
gap: 50px;
margin-left: 100px;
.item { .item {
height: 100%; height: 100%;
@ -306,6 +378,7 @@ const goLogout = () => {
display: flex; display: flex;
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
margin-right: 50px;
} }
.bottom_line { .bottom_line {
@ -315,5 +388,50 @@ const goLogout = () => {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
} }
.top_right {
display: flex;
text-align: center;
justify-content: center;
align-items: center;
width: 86px;
height: 100%;
background: #0779ff;
cursor: pointer;
text {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 14px;
color: #ffffff;
line-height: 20px;
text-align: left;
font-style: normal;
}
}
}
.r_menu {
display: flex;
margin-right: 30px;
.menu_item {
font-size: 16px;
color: #000000;
letter-spacing: 0;
line-height: 24px;
font-weight: 400;
margin-right: 20px;
cursor: pointer;
min-width: 60px;
white-space: nowrap;
display: flex;
text-align: center;
justify-content: center;
}
.active {
color: #007aff;
}
} }
</style> </style>

View File

@ -1,11 +1,14 @@
<template> <template>
<div class="all" v-show="hadRole"> <div class="all" v-show="hadRole">
<el-image :src="topBg" mode="widthFix" class="topbg" v-if="isCommon" />
<el-image :src="topBgJg" mode="widthFix" class="topbg" v-else />
<!-- :class="{ 'scale-down': isScaleDown }" --> <!-- :class="{ 'scale-down': isScaleDown }" -->
<!-- height: isCommon ? '80vh' : '90vh' --> <!-- height: isCommon ? '80vh' : '90vh' -->
<div class="content" :style="{ top: isCommon ? '20vh' : '16vh' }"> <div class="content" :style="{ top: isCommon ? '20vh' : '16vh' }">
<div class="mb20" :class="{ 'scale-down': isScaleDown }">
<el-breadcrumb separator="/" class="font16">
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>智能财讯</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="top" v-if="isCommon" :class="{ 'scale-down': isScaleDown }"> <div class="top" v-if="isCommon" :class="{ 'scale-down': isScaleDown }">
<div class="top_left"> <div class="top_left">
<el-image :src="logo" mode="widthFix" class="logo" /> <el-image :src="logo" mode="widthFix" class="logo" />
@ -430,8 +433,11 @@ $maxWidth: 2000px;
.all { .all {
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
background: #f5f7fd;
overflow: hidden; overflow: hidden;
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
background-size: 100% auto;
// padding-bottom: 24px;
// padding: 20px 32px 32px;
} }
.topbg { .topbg {

View File

@ -1,5 +1,11 @@
<template> <template>
<div class="container"> <div class="container">
<div class="mb20">
<el-breadcrumb separator="/" class="font16">
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>智能信披库</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="nav-box-wrap"> <div class="nav-box-wrap">
<div class="nav-box"> <div class="nav-box">
<template v-for="item in navList" :key="item.index"> <template v-for="item in navList" :key="item.index">
@ -22,7 +28,11 @@
</template> </template>
<div class="setup-btn"> <div class="setup-btn">
<el-button size="default" type="primary" @click="dialogVisible = true">设置关注公司</el-button> <ZButton btn-width="111px" @btnClick="dialogVisible = true">
<div class="btn_content">
<text>设置关注公司</text>
</div>
</ZButton>
</div> </div>
</div> </div>
</div> </div>
@ -81,6 +91,7 @@
remote remote
placeholder="公司简称、证券代码" placeholder="公司简称、证券代码"
size="large" size="large"
clearable
:remote-method="searchCompanyFn" :remote-method="searchCompanyFn"
@change="handleQueryData" @change="handleQueryData"
/> />
@ -397,14 +408,10 @@
placeholder="公司简称、证券代码" placeholder="公司简称、证券代码"
style="width: 176px" style="width: 176px"
size="default" size="default"
v-model="dialogFilterOpt.company" :suffix-icon="Search"
v-model="dialogFilterOpt.keyword"
@keyup.enter="handleDialogSelect" @keyup.enter="handleDialogSelect"
> >
<template #suffix>
<el-icon class="el-input__icon">
<Search />
</el-icon>
</template>
</el-input> </el-input>
</div> </div>
<div> <div>
@ -465,7 +472,7 @@
@confirm="handleDevFavCompany(scope.row.id)" @confirm="handleDevFavCompany(scope.row.id)"
> >
<template #reference> <template #reference>
<el-button size="defaultt" text type="danger">删除</el-button> <el-button text style="color: #409eff">删除</el-button>
</template> </template>
</el-popconfirm> </el-popconfirm>
</template> </template>
@ -508,6 +515,7 @@ import { useRouter, useRoute } from 'vue-router';
import icon_choose from '/@/assets/icon_choose.png'; import icon_choose from '/@/assets/icon_choose.png';
import { doMaiDian, searchCompany } from '/@/api/api'; import { doMaiDian, searchCompany } from '/@/api/api';
import { getDictList } from '/@/api/api'; import { getDictList } from '/@/api/api';
import ZButton from '/@/components/ZButton/index.vue';
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
@ -1095,9 +1103,10 @@ onMounted(async () => {
.container { .container {
width: 100%; width: 100%;
margin: 0 auto; margin: 0 auto;
background: url('/@/assets/images/bk_charts1.png') no-repeat center 0; background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
background-size: 100% auto;
// padding-bottom: 24px; // padding-bottom: 24px;
padding: 32px; padding: 20px 32px 32px;
min-height: calc(100vh - 56px); min-height: calc(100vh - 56px);
} }
@ -1372,9 +1381,9 @@ onMounted(async () => {
box-shadow: 0 0 0px rgba(0, 0, 0, 0.1); box-shadow: 0 0 0px rgba(0, 0, 0, 0.1);
} }
} }
:deep(.el-input__wrapper) { // :deep(.el-input__wrapper) {
padding-right: 2px; // padding-right: 2px;
} // }
:deep(.el-select--large .el-select__wrapper) { :deep(.el-select--large .el-select__wrapper) {
min-height: 32px; min-height: 32px;
@ -1435,4 +1444,18 @@ onMounted(async () => {
:deep(.el-select__placeholder.is-transparent) { :deep(.el-select__placeholder.is-transparent) {
color: #ccc; color: #ccc;
} }
.btn_content {
display: flex;
align-items: center;
text {
color: #ffffff;
text-align: center;
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: 18.2px;
}
}
</style> </style>

View File

@ -2,7 +2,12 @@
<div> <div>
<Esign :signUrl="signUrl" v-if="!isSign"></Esign> <Esign :signUrl="signUrl" v-if="!isSign"></Esign>
<div class="container" v-else> <div class="container" v-else>
<text class="big_title"> 文件签署管理 </text> <div class="mb20">
<el-breadcrumb separator="/" class="font16">
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>电子签</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="table_bk"> <div class="table_bk">
<el-form class="el_form" style="width: 100%; display: flex; justify-content: space-between" @submit.native.prevent> <el-form class="el_form" style="width: 100%; display: flex; justify-content: space-between" @submit.native.prevent>
@ -344,8 +349,9 @@ onMounted(async () => {
width: 100%; width: 100%;
min-height: calc(100vh - 56px); min-height: calc(100vh - 56px);
margin: 0 auto; margin: 0 auto;
background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
padding: 30px 11%; padding: 30px 11%;
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
background-size: 100% auto;
} }
.big_title { .big_title {

View File

@ -9,20 +9,22 @@
<div class="line"></div> <div class="line"></div>
<text>中证智能财保</text> <text>中证智能财保</text>
</div> </div>
</div>
<div class="h100 flex">
<div class="top_menu"> <div class="top_menu">
<div class="item"> <div class="item">
<text>产品</text> <text>产品</text>
<div class="bottom_line"></div> <div class="bottom_line"></div>
</div> </div>
<div class="item" @click="goExample"> <div class="item" @click="goExample">
<text>相关材料</text> <text>产品文档</text>
<!-- <div class="bottom_line"></div> --> <!-- <div class="bottom_line"></div> -->
</div> </div>
</div> </div>
</div> <div class="top_right" @click="goLogin">
<text>登录</text>
<div class="top_right" @click="goLogin"> </div>
<text>登录</text>
</div> </div>
</div> </div>
<!-- 顶部 end --> <!-- 顶部 end -->
@ -42,17 +44,16 @@
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
<div :style="{ width: '100vw', height: '15px', backgroundColor: tabIndex == 0 ? 'white' : '#F7F8FA' }"> <div :style="{ width: '100vw', height: '15px', backgroundColor: tabIndex == 0 ? 'white' : '#F7F8FA' }"></div>
</div>
<div class="tab" :style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }"> <div class="tab" :style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }">
<div class="tab_item" @click="tabIndex = 0"> <!-- <div class="tab_item" @click="tabIndex = 0">
<div style="height: 100%; display: flex; align-items: center"> <div style="height: 100%; display: flex; align-items: center">
<img v-if="tabIndex == 0" src="../../../assets/logout/box_time_press.png" /> <img v-if="tabIndex == 0" src="../../../assets/logout/box_time_press.png" />
<img v-else src="../../../assets/logout/box_time_normal.png" /> <img v-else src="../../../assets/logout/box_time_normal.png" />
<text :class="{ active: tabIndex == 0 }">定期报告</text> <text :class="{ active: tabIndex == 0 }">定期报告</text>
</div> </div>
<div class="tab_bottom_line" v-if="tabIndex == 0"></div> <div class="tab_bottom_line" v-if="tabIndex == 0"></div>
</div> </div> -->
<div class="tab_item" @click="tabIndex = 1"> <div class="tab_item" @click="tabIndex = 1">
<div style="height: 100%; display: flex; align-items: center"> <div style="height: 100%; display: flex; align-items: center">
<img v-if="tabIndex == 1" src="../../../assets/logout/news_normal_press.png" /> <img v-if="tabIndex == 1" src="../../../assets/logout/news_normal_press.png" />
@ -63,12 +64,10 @@
</div> </div>
</div> </div>
<div class="r_list" :class="{ 'scale-down': isScaleDown }" <div class="r_list" :class="{ 'scale-down': isScaleDown }" :style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }">
:style="{ backgroundColor: tabIndex == 0 ? '#fff' : '#F7F8FA' }"> <!-- <Dingqibaogao v-if="tabIndex == 0" :data="dingqiList" :total="total"
<Dingqibaogao v-if="tabIndex == 0" :data="dingqiList" :total="total" @getData="getLogoutReportPageFn"> </Dingqibaogao> -->
@getData="getLogoutReportPageFn"> </Dingqibaogao> <Yuqingkanban v-if="tabIndex == 1" :data="yuqingkanban" :total="total" @getData="getLogoutYqPageFn"> </Yuqingkanban>
<Yuqingkanban v-if="tabIndex == 1" :data="yuqingkanban" :total="total" @getData="getLogoutYqPageFn">
</Yuqingkanban>
</div> </div>
</div> </div>
</div> </div>
@ -109,7 +108,7 @@ const handleResize = () => {
isScaleDown.value = window.innerWidth < SCALE_THRESHOLD; isScaleDown.value = window.innerWidth < SCALE_THRESHOLD;
}; };
function getData() { } function getData() {}
const bannerList = ref([ const bannerList = ref([
{ {
@ -325,10 +324,9 @@ onUnmounted(() => {
.top_menu { .top_menu {
height: 100%; height: 100%;
margin-left: 50px; margin-right: 50px;
display: flex; display: flex;
gap: 50px; gap: 50px;
margin-left: 100px;
.item { .item {
height: 100%; height: 100%;

View File

@ -3,30 +3,29 @@
<img src="../../../assets/homenew/web_bg.png" class="web_bg scale-1" /> <img src="../../../assets/homenew/web_bg.png" class="web_bg scale-1" />
<div class="left"> <div class="left">
<div <div class="content_nol">
class="r_esg" <Title title="企业舆情" />
v-if="
Session.get('roleName') == 'common' ||
Session.get('roleName') == 'subCommon' ||
Session.get('roleName') == 'subCenter' ||
Session.get('roleName') == 'operate' ||
Session.get('roleName') == 'Director' ||
Session.get('roleName') == 'Bank' ||
Session.get('roleName') == 'SubBank'
"
>
<img src="../../../assets/homenew/ESGbanner_pic.png" class="esg_bg" />
<div class="esg_content"> <div class="yuqing">
<div> <div class="yuqing_left">
<text class="esg_title blue">ESG服务</text> <text class="yqleft_title">舆情服务</text>
<text class="esg_title">重磅推出</text> <text class="yqleft_content">中证智能财保舆情服务为企业提供负面舆情信息竞对舆情行业板块舆情信息</text>
<text class="yqleft_button" @click="goYuqing">点击进入</text>
</div>
<div class="yuqing_right">
<div v-if="yqList && yqList.length > 0" class="yqright_item" v-for="(item, index) in yqList" :key="index">
<div @click="clickYuqing(item)" style="display: flex; align-items: center">
<img src="../../../assets/homenew/tag_blue.png" />
<text class="yqright_title">{{ item.subject }}</text>
</div>
<text class="yqright_time">{{ item.postTime }}</text>
</div>
<div v-else class="empty" style="margin-top: 40px">
<img src="../../../assets/homenew/nonews_icon.png" class="icon_empty" />
<text class="empty_text">暂无最新信息</text>
</div>
</div> </div>
<text class="esg_sub_title">
中证智能财保ESG数字服务作为一个创新的数字化工具采用与国际接轨的算法逻辑为企业提供360°ESG综合服务企业通过平台的
ESG自评自检自诊断的功能模块可以了解自身ESG综合表现情况获得较为全面的诊断报告
</text>
<div class="esg_button" @click="goEsg">点击进入</div>
</div> </div>
</div> </div>
@ -58,29 +57,30 @@
</div> </div>
</div> </div>
<div class="content_nol"> <div
<Title title="企业舆情" /> class="r_esg"
v-if="
Session.get('roleName') == 'common' ||
Session.get('roleName') == 'subCommon' ||
Session.get('roleName') == 'subCenter' ||
Session.get('roleName') == 'operate' ||
Session.get('roleName') == 'Director' ||
Session.get('roleName') == 'Bank' ||
Session.get('roleName') == 'SubBank'
"
>
<img src="../../../assets/homenew/ESGbanner_pic.png" class="esg_bg" />
<div class="yuqing"> <div class="esg_content">
<div class="yuqing_left"> <div>
<text class="yqleft_title">舆情服务</text> <text class="esg_title blue">ESG自评测</text>
<text class="yqleft_content">中证智能财保舆情服务为企业提供负面舆情信息竞对舆情行业板块舆情信息</text> <text class="esg_title">重磅推出</text>
<text class="yqleft_button" @click="goYuqing">点击进入</text>
</div>
<div class="yuqing_right">
<div v-if="yqList && yqList.length > 0" class="yqright_item" v-for="(item, index) in yqList" :key="index">
<div @click="clickYuqing(item)" style="display: flex; align-items: center">
<img src="../../../assets/homenew/tag_blue.png" />
<text class="yqright_title">{{ item.subject }}</text>
</div>
<text class="yqright_time">{{ item.postTime }}</text>
</div>
<div v-else class="empty" style="margin-top: 40px">
<img src="../../../assets/homenew/nonews_icon.png" class="icon_empty" />
<text class="empty_text">暂无最新信息</text>
</div>
</div> </div>
<text class="esg_sub_title">
中证智能财保ESG数字服务作为一个创新的数字化工具采用与国际接轨的算法逻辑为企业提供360°ESG综合服务企业通过平台的
ESG自评自检自诊断的功能模块可以了解自身ESG综合表现情况获得较为全面的诊断报告
</text>
<div class="esg_button" @click="goEsg">点击进入</div>
</div> </div>
</div> </div>
</div> </div>
@ -118,7 +118,7 @@
" "
style="max-width: 300px; margin-top: 20px; margin-bottom: 20px; box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1)" style="max-width: 300px; margin-top: 20px; margin-bottom: 20px; box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1)"
> >
<moudle title="海外行情" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px"> <moudle title="海外资讯" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px">
<RankList <RankList
:newsList="newsList" :newsList="newsList"
:needExp="false" :needExp="false"
@ -171,9 +171,9 @@
</div> </div>
</div> </div>
<div> <!-- <div>
<img src="../../../assets/homenew/advertisement_pic_2.png" class="right_ad" /> <img src="../../../assets/homenew/advertisement_pic_2.png" class="right_ad" />
</div> </div> -->
</div> </div>
</div> </div>
</template> </template>
@ -575,7 +575,7 @@ onUnmounted(() => {
.scale-1 { .scale-1 {
/* 缩放内容 */ /* 缩放内容 */
transform: scale(1.5); transform: scale(1);
/* 计算缩放后的偏移量,使内容居中 */ /* 计算缩放后的偏移量,使内容居中 */
/* 调整容器宽度,避免边缘被截断 */ /* 调整容器宽度,避免边缘被截断 */
margin: 0 auto; margin: 0 auto;
@ -587,6 +587,7 @@ onUnmounted(() => {
position: relative; position: relative;
text-align: center; text-align: center;
justify-content: center; justify-content: center;
padding-bottom: 20px;
.left { .left {
display: flex; display: flex;

View File

@ -1,7 +1,12 @@
<template> <template>
<div class="container"> <div class="container">
<div class="head"> <div class="head">
<div class="main-title">财报检校试验</div> <div class="mb20">
<el-breadcrumb separator="/" class="font16">
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>智能检校</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="sub-title">仅供试验使用此处的财报分析不计入业务看板统计</div> <div class="sub-title">仅供试验使用此处的财报分析不计入业务看板统计</div>
</div> </div>
<div class="main"> <div class="main">
@ -769,6 +774,9 @@ async function reSendFile(row) {
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container {
width: 100%; width: 100%;
margin: 0 auto;
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
background-size: 100% auto;
} }
:deep(.el-form-item--large .el-form-item__label) { :deep(.el-form-item--large .el-form-item__label) {
@ -818,7 +826,7 @@ async function reSendFile(row) {
width: 100%; width: 100%;
min-height: calc(100vh - 65px); min-height: calc(100vh - 65px);
margin: 0 auto; margin: 0 auto;
background: url('/@/assets/images/bk_charts.png') no-repeat center 0; // background: url('/@/assets/images/bk_charts.png') no-repeat center 0;
// padding-bottom: 24px; // padding-bottom: 24px;
padding: 24px; padding: 24px;

View File

@ -1,9 +1,22 @@
<template> <template>
<div class="container" v-show="hadRole"> <div class="container" v-show="hadRole">
<div class="bk"></div>
<div :class="{ 'scale-down': isScaleDown }"> <div :class="{ 'scale-down': isScaleDown }">
<div class="r_title"> <div class="r_title">
<text class="title">企业舆情</text> <div class="mb30">
<el-breadcrumb separator="/" class="font16">
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item v-permissions="['common', 'subCommon']">企业舆情</el-breadcrumb-item>
<el-breadcrumb-item
v-permissions="['Director', 'subCenter', 'operate', 'Director', 'Bank', 'SubBank', 'QJJG', 'QJJGC', 'JYS', 'JYSC', 'DFJG', 'DFJGC']"
:to="{ path: '/yuqingFLS' }"
>企业舆情</el-breadcrumb-item
>
<el-breadcrumb-item
v-permissions="['Director', 'subCenter', 'operate', 'Director', 'Bank', 'SubBank', 'QJJG', 'QJJGC', 'JYS', 'JYSC', 'DFJG', 'DFJGC']"
>企业舆情详情</el-breadcrumb-item
>
</el-breadcrumb>
</div>
<div class="r_input"> <div class="r_input">
<input <input
v-if="form.pageType == 0" v-if="form.pageType == 0"
@ -109,11 +122,11 @@
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<moudle title="海外行情" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px"> <!-- <moudle title="海外资讯" @jumpUrl="jumpHaiwaiUrl" v-if="Session.get('userData').accountType != 1" paddingBottom="0px">
<RankList :newsList="newsList" :needExp="false" style="margin-top: 15px"></RankList> <RankList :newsList="newsList" :needExp="false" style="margin-top: 15px"></RankList>
</moudle> </moudle> -->
<moudle title="概念题材" :type="2" :companyId="companyId" :style="{ marginTop: Session.get('userData').accountType != 1 ? '30px' : '0px' }"> <moudle title="概念题材" :type="2" :companyId="companyId" :style="{ marginTop: Session.get('userData').accountType != 1 ? '0' : '0px' }">
<wordcloud :data="cloudWordList" style="margin-top: 20px"></wordcloud> <wordcloud :data="cloudWordList" style="margin-top: 20px"></wordcloud>
</moudle> </moudle>
@ -537,20 +550,9 @@ $list_max_width: 1400px;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding-top: 60px; padding-top: 24px;
} background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
background-size: 100% auto;
.bk {
width: 100%;
background: url('/@/assets/yuqingNew/home_bg.png') no-repeat center 0;
height: 300px;
display: flex;
flex-direction: column;
text-align: center;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
} }
.r_input { .r_input {

View File

@ -1,33 +1,39 @@
<template> <template>
<div class="all" v-loading="loading"> <div class="container">
<div class="bk"> <div class="mb20" style="width: 1200px; margin: 0 auto">
<text class="title">企业舆情</text> <el-breadcrumb separator="/" class="font16">
<div class="r_input"> <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-dropdown trigger="click" @command="handleCommand" style="margin-left: 15px"> <el-breadcrumb-item>企业舆情</el-breadcrumb-item>
<div class="el-dropdown-link" style="cursor: pointer"> </el-breadcrumb>
<span class="select_text">{{ form.pageType == 0 ? '企业' : '资讯' }}</span> </div>
<el-icon size="12" color="#1A1A1A"> <div class="all" v-loading="loading">
<ArrowDown /> <div class="bk">
</el-icon> <div class="r_input">
</div> <el-dropdown trigger="click" @command="handleCommand" style="margin-left: 15px">
<template #dropdown> <div class="el-dropdown-link" style="cursor: pointer">
<el-dropdown-menu> <span class="select_text">{{ form.pageType == 0 ? '企业' : '资讯' }}</span>
<el-dropdown-item :command="1"> 资讯</el-dropdown-item> <el-icon size="12" color="#1A1A1A">
<el-dropdown-item :command="0"> 企业</el-dropdown-item> <ArrowDown />
</el-dropdown-menu> </el-icon>
</template> </div>
</el-dropdown> <template #dropdown>
<el-dropdown-menu>
<el-dropdown-item :command="1"> 资讯</el-dropdown-item>
<el-dropdown-item :command="0"> 企业</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<div class="line"></div> <div class="line"></div>
<input <input
v-model="form.companyName" v-model="form.companyName"
:placeholder="form.pageType == 0 ? '请输入企业名称 / 简称 / 证券编码' : '请输入关键词搜索'" :placeholder="form.pageType == 0 ? '请输入企业名称 / 简称 / 证券编码' : '请输入关键词搜索'"
@keyup.enter="doSreach" @keyup.enter="doSreach"
class="input" class="input"
/> />
<!-- <el-autocomplete <!-- <el-autocomplete
v-else v-else
class="autocomplete" class="autocomplete"
style="flex: 1; box-shadow: 0 0 0" style="flex: 1; box-shadow: 0 0 0"
@ -42,75 +48,76 @@
</template> </template>
</el-autocomplete> --> </el-autocomplete> -->
<div class="input_button" @click="doSreach"> <div class="input_button" @click="doSreach">
<el-icon color="white" size="18"> <el-icon color="white" size="18">
<Search /> <Search />
</el-icon> </el-icon>
</div>
</div> </div>
</div> </div>
</div>
<!-- 企业列表 start --> <!-- 企业列表 start -->
<div style="min-height: 50vh" v-if="form.pageType == 0"> <div style="min-height: 50vh" v-if="form.pageType == 0">
<div class="list"> <div class="list">
<div <div
v-if="list && list.length > 0" v-if="list && list.length > 0"
class="list_item" class="list_item"
v-for="(item, index) in list" v-for="(item, index) in list"
:key="index" :key="index"
@mouseenter="mouseEnter(index)" @mouseenter="mouseEnter(index)"
@mouseleave="mouseLeave(index)" @mouseleave="mouseLeave(index)"
@click="goDetail(item)" @click="goDetail(item)"
:class="{ hover: item.isHovered }" :class="{ hover: item.isHovered }"
> >
<div> <div>
<div class="r_list_title" style="height: 25px"> <div class="r_list_title" style="height: 25px">
<div <div
class="list_title" class="list_title"
:style="{ marginTop: !item.secCode && !item.companySimpleName && item.companyName.length > 12 ? '15px' : '0px' }" :style="{ marginTop: !item.secCode && !item.companySimpleName && item.companyName.length > 12 ? '15px' : '0px' }"
> >
{{ !item.secCode && !item.companySimpleName ? item.companyName : item.companySimpleName }} {{ !item.secCode && !item.companySimpleName ? item.companyName : item.companySimpleName }}
</div>
<div class="list_code" v-if="item.secCode">{{ item.secCode }}</div>
</div> </div>
<div class="list_code" v-if="item.secCode">{{ item.secCode }}</div> <div class="company_name" v-if="item.secCode || item.companySimpleName">{{ item.companyName }}</div>
</div> </div>
<div class="company_name" v-if="item.secCode || item.companySimpleName">{{ item.companyName }}</div> <div class="btn_detail">
</div> <text :style="{ color: item.isHovered ? '#007AFF' : '#1A1A1A' }">查看详情</text>
<div class="btn_detail"> <div style="width: 10px; display: flex; justify-content: flex-start">
<text :style="{ color: item.isHovered ? '#007AFF' : '#1A1A1A' }">查看详情</text> <el-icon size="14" color="#007AFF" v-if="item.isHovered">
<div style="width: 10px; display: flex; justify-content: flex-start"> <ArrowRight />
<el-icon size="14" color="#007AFF" v-if="item.isHovered"> </el-icon>
<ArrowRight /> </div>
</el-icon>
</div> </div>
</div> </div>
</div> <div v-else style="width: 100%; height: 100%; display: flex; text-align: center; justify-content: center; align-items: center">
<div v-else style="width: 100%; height: 100%; display: flex; text-align: center; justify-content: center; align-items: center"> <div class="r_empty">
<div class="r_empty"> <el-image :src="emptyImg" class="empty"></el-image>
<el-image :src="emptyImg" class="empty"></el-image> <text class="empty_text">暂无内容</text>
<text class="empty_text">暂无内容</text> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
<el-pagination <el-pagination
v-if="form.pageType == 0" v-if="form.pageType == 0"
background background
style="margin-top: 24px" style="margin-top: 24px"
class="page" class="page"
layout="slot, ->,prev, pager, next, jumper" layout="slot, ->,prev, pager, next, jumper"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
v-model:page-size="form.size" v-model:page-size="form.size"
:total="total" :total="total"
@current-change="currentChange" @current-change="currentChange"
@size-change="sizeChange" @size-change="sizeChange"
> >
<div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)"> {{ total }} 项数据</div> <div style="font-size: 14px; color: rgba(0, 0, 0, 0.6)"> {{ total }} 项数据</div>
</el-pagination> </el-pagination>
<!-- 企业列表 end --> <!-- 企业列表 end -->
<div v-if="form.pageType == 1"> <div v-if="form.pageType == 1">
<ZxList ref="zxListRef"></ZxList> <ZxList ref="zxListRef"></ZxList>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -247,10 +254,19 @@ onMounted(() => {
<style scoped lang="scss"> <style scoped lang="scss">
@import url('/@/theme/page/page.scss'); @import url('/@/theme/page/page.scss');
.container {
width: 100%;
margin: 0 auto;
background: url('/@/assets/images/bk_charts1.png') #f5f7fd no-repeat center 0;
background-size: 100% auto;
// padding-bottom: 24px;
padding: 20px 0 32px;
min-height: calc(100vh - 56px);
}
.all { .all {
width: 100vw; width: 100vw;
height: 100vh; min-height: 100vh;
background-color: #f2f3f5;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
text-align: center; text-align: center;
@ -259,8 +275,7 @@ onMounted(() => {
.bk { .bk {
width: 100%; width: 100%;
background: url('/@/assets/images/bk_charts.png') no-repeat center 0; height: 140px;
height: 200px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
text-align: center; text-align: center;