提交 64e851b8 authored 作者: coderBryanFu's avatar coderBryanFu

update

上级 02a98734
...@@ -77,4 +77,12 @@ export function getDecreehylyList(params) { ...@@ -77,4 +77,12 @@ export function getDecreehylyList(params) {
url: `/api/billImpactAnalysis/industry/hylyList`, url: `/api/billImpactAnalysis/industry/hylyList`,
params params
}) })
}
// 发布机构
export function getDecreeTypeList() {
return request({
method: 'GET',
url: `/api/administrativeDict/type`,
})
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ import DecreeBackground from "@/views/decree/decreeLayout/overview/background/in ...@@ -7,6 +7,7 @@ import DecreeBackground from "@/views/decree/decreeLayout/overview/background/in
import DecreeDeepDig from "@/views/decree/decreeLayout/deepdig/index.vue"; import DecreeDeepDig from "@/views/decree/decreeLayout/deepdig/index.vue";
import DecreeInfluence from "@/views/decree/decreeLayout/influence/index.vue"; import DecreeInfluence from "@/views/decree/decreeLayout/influence/index.vue";
import Institution from "@/views/decree/institution/index.vue" import Institution from "@/views/decree/institution/index.vue"
import DecreeOriginal from "@/views/decree/decreeOriginal/index.vue"
const decreeRoutes = [ const decreeRoutes = [
// 政令首页 // 政令首页
...@@ -68,18 +69,26 @@ const decreeRoutes = [ ...@@ -68,18 +69,26 @@ const decreeRoutes = [
// meta: { // meta: {
// title: "影响分析" // title: "影响分析"
// } // }
} },
] ]
}, },
{ {
path: "/institution", path: "/institution",
name: "Institution", name: "Institution",
component: Institution, component: Institution,
meta: { meta: {
title: "行政机构主页", title: "行政机构主页",
dynamicTitle: true dynamicTitle: true
} }
} },
{
path: "/decree/decreeOriginal",
name: "DecreeOriginal",
component: DecreeOriginal,
// meta: {
// title: "政令原文"
// }
},
] ]
......
...@@ -44,7 +44,20 @@ ...@@ -44,7 +44,20 @@
<div class="box1-item-right-footer"> <div class="box1-item-right-footer">
<div class="time">{{ item.postDate }}</div> <div class="time">{{ item.postDate }}</div>
<div class="area-box"> <div class="area-box">
<div class="area" v-for="(vall, idxx) in item.areaList" :key="idxx">{{ vall }}</div> <div
class="area"
:class="{
area1: vall.status === '1',
area2: vall.status === '2',
area3: vall.status === '3',
area4: vall.status === '4',
area5: vall.status === '5'
}"
v-for="(vall, idxx) in item.areaList"
:key="idxx"
>
{{ vall.industryName }}
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -97,8 +110,19 @@ ...@@ -97,8 +110,19 @@
</div> </div>
<div class="content">{{ box2DetailInfo.describe }}</div> <div class="content">{{ box2DetailInfo.describe }}</div>
<div class="area-box"> <div class="area-box">
<div class="area" v-for="(item, index) in box2DetailInfo.areaList" :key="index"> <div
{{ item }} class="area"
:class="{
area1: item.status === '1',
area2: item.status === '2',
area3: item.status === '3',
area4: item.status === '4',
area5: item.status === '5'
}"
v-for="(item, index) in box2DetailInfo.areaList"
:key="index"
>
{{ item.industryName }}
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
...@@ -156,8 +180,19 @@ ...@@ -156,8 +180,19 @@
</div> </div>
<div class="content">{{ box3DetailInfo.describe }}</div> <div class="content">{{ box3DetailInfo.describe }}</div>
<div class="area-box"> <div class="area-box">
<div class="area" v-for="(item, index) in box3DetailInfo.areaList" :key="index"> <div
{{ item }} class="area"
:class="{
area1: item.status === '1',
area2: item.status === '2',
area3: item.status === '3',
area4: item.status === '4',
area5: item.status === '5'
}"
v-for="(item, index) in box3DetailInfo.areaList"
:key="index"
>
{{ item.industryName }}
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
...@@ -614,9 +649,13 @@ onMounted(() => { ...@@ -614,9 +649,13 @@ onMounted(() => {
box-sizing: border-box; box-sizing: border-box;
border-radius: 4px; border-radius: 4px;
border: 1px solid rgba(135, 232, 222, 1); border: 1px solid rgba(255, 163, 158, 1);
background: rgba(230, 255, 251, 1); background: rgba(255, 241, 240, 1);
color: rgba(19, 168, 168, 1); color: rgba(245, 34, 45, 1);
// border: 1px solid rgba(135, 232, 222, 1);
// background: rgba(230, 255, 251, 1);
// color: rgba(19, 168, 168, 1);
} }
} }
} }
...@@ -817,9 +856,9 @@ onMounted(() => { ...@@ -817,9 +856,9 @@ onMounted(() => {
box-sizing: border-box; box-sizing: border-box;
border-radius: 4px; border-radius: 4px;
border: 1px solid rgba(135, 232, 222, 1); border: 1px solid rgba(255, 163, 158, 1);
background: rgba(230, 255, 251, 1); background: rgba(255, 241, 240, 1);
color: rgba(19, 168, 168, 1); color: rgba(245, 34, 45, 1);
} }
} }
.footer { .footer {
...@@ -1062,9 +1101,9 @@ onMounted(() => { ...@@ -1062,9 +1101,9 @@ onMounted(() => {
box-sizing: border-box; box-sizing: border-box;
border-radius: 4px; border-radius: 4px;
border: 1px solid rgba(135, 232, 222, 1); border: 1px solid rgba(255, 163, 158, 1);
background: rgba(230, 255, 251, 1); background: rgba(255, 241, 240, 1);
color: rgba(19, 168, 168, 1); color: rgba(245, 34, 45, 1);
} }
} }
.footer { .footer {
...@@ -1119,4 +1158,29 @@ onMounted(() => { ...@@ -1119,4 +1158,29 @@ onMounted(() => {
} }
} }
} }
.area1 {
border: 1px solid rgba(217, 247, 190, 1) !important;
background: rgba(246, 255, 237, 1) !important;
color: rgba(56, 158, 13, 1) !important;
}
.area2 {
border: 1px solid rgba(135, 232, 222, 1) !important;
background: rgba(230, 255, 251, 1) !important;
color: rgba(19, 168, 168, 1) !important;
}
.area3 {
border: 1px solid rgba(145, 202, 255, 1) !important;
background: rgba(230, 244, 255, 1) !important;
color: rgba(22, 119, 255, 1) !important;
}
.area4 {
border: 1px solid rgba(173, 198, 255, 1) !important;
background: rgba(240, 245, 255, 1) !important;
color: rgba(47, 84, 235, 1) !important;
}
.area5 {
border: 1px solid rgba(211, 173, 247, 1) !important;
background: rgba(249, 240, 255, 1) !important;
color: rgba(114, 46, 209, 1) !important;
}
</style> </style>
...@@ -112,11 +112,11 @@ ...@@ -112,11 +112,11 @@
</div> </div>
</div> </div>
<div class="entity-box"> <div class="entity-box">
<div class="entity" v-for="val,idx in item.sanctionList" :key="idx"> <div class="entity" v-for="val,idx in item.sanctionList" :key="idx" @click.prevent="handleCompClick(val)">
<div class="icon"> <div class="icon">
<img src="./assets/images/warning.png" alt=""> <img src="./assets/images/warning.png" alt="">
</div> </div>
<div class="name">{{ val }}</div> <div class="name">{{ val.entityNameZh }}</div>
</div> </div>
</div> </div>
<div class="content" v-html="item?.originalDescription"></div> <div class="content" v-html="item?.originalDescription"></div>
...@@ -517,7 +517,7 @@ const handleToAi = () => { ...@@ -517,7 +517,7 @@ const handleToAi = () => {
// 跳转公司详情页 // 跳转公司详情页
const handleCompClick = item => { const handleCompClick = item => {
console.log("item", item); console.log("item", item);
window.sessionStorage.setItem('curTabName', item) window.sessionStorage.setItem('curTabName', item.entityNameZh)
const route = router.resolve({ const route = router.resolve({
name: "companyPages", name: "companyPages",
params: { params: {
......
...@@ -430,6 +430,27 @@ ...@@ -430,6 +430,27 @@
</div> </div>
<div class="home-main-footer-main"> <div class="home-main-footer-main">
<div class="left"> <div class="left">
<div class="select-box">
<div class="select-box-header">
<div class="icon"></div>
<div class="title">{{ "政令类型" }}</div>
</div>
<div class="select-main">
<div class="checkbox-group">
<el-checkbox
v-for="type in decreeTypeList"
:key="type.id"
v-model="checkedDecreeType"
:label="type.typeId"
style="width: 180px"
class="filter-checkbox"
@change="handleChangeCheckedDecreeType"
>
{{ type.typeName }}
</el-checkbox>
</div>
</div>
</div>
<div class="select-box"> <div class="select-box">
<div class="select-box-header"> <div class="select-box-header">
<div class="icon"></div> <div class="icon"></div>
...@@ -573,7 +594,8 @@ import { ...@@ -573,7 +594,8 @@ import {
getKeyDecree, getKeyDecree,
getDecreeKeyInstruction, getDecreeKeyInstruction,
getDecreeOrderList, getDecreeOrderList,
getDecreehylyList getDecreehylyList,
getDecreeTypeList
} from "@/api/decree/home"; } from "@/api/decree/home";
import { getPersonSummaryInfo } from "@/api/common/index"; import { getPersonSummaryInfo } from "@/api/common/index";
import { getNews, getSocialMedia } from "@/api/general/index"; import { getNews, getSocialMedia } from "@/api/general/index";
...@@ -1182,6 +1204,24 @@ const handleGetAreaList = async () => { ...@@ -1182,6 +1204,24 @@ const handleGetAreaList = async () => {
} catch (error) {} } catch (error) {}
}; };
// 政令类型
const decreeTypeList = ref([]);
const checkedDecreeType = ref([]);
const handleGetDecreeTypeList = async () => {
try {
const res = await getDecreeTypeList();
console.log("政令类型", res);
if (res.code === 200 && res.data) {
decreeTypeList.value = res.data;
}
} catch (error) {}
};
const handleChangeCheckedDecreeType = () => {
handleGetDecreeOrderList()
}
const pubTime = ref([ const pubTime = ref([
{ id: "2026", name: "2026年" }, { id: "2026", name: "2026年" },
{ id: "2025", name: "2025年" }, { id: "2025", name: "2025年" },
...@@ -1208,7 +1248,8 @@ const handleGetDecreeOrderList = async () => { ...@@ -1208,7 +1248,8 @@ const handleGetDecreeOrderList = async () => {
proposeName: p0, proposeName: p0,
researchTypeIds: p1, researchTypeIds: p1,
sortFun: isSort.value, sortFun: isSort.value,
years: p2 years: p2,
typeIds: checkedDecreeType.value.toString()
}; };
try { try {
const res = await getDecreeOrderList(params); const res = await getDecreeOrderList(params);
...@@ -1294,6 +1335,7 @@ const handleSearch = () => { ...@@ -1294,6 +1335,7 @@ const handleSearch = () => {
}; };
onMounted(async () => { onMounted(async () => {
handleGetDecreeTypeList();
handleGetAreaList(); handleGetAreaList();
handleGetDecreeOrderList(); handleGetDecreeOrderList();
handleBox1(); // 最新科技政令 handleBox1(); // 最新科技政令
......
...@@ -249,7 +249,13 @@ const handleCloseReport = () => { ...@@ -249,7 +249,13 @@ const handleCloseReport = () => {
isShowReport.value = false; isShowReport.value = false;
}; };
const handleShowReport = () => { const handleShowReport = () => {
isShowReport.value = true; const curRoute = router.resolve({
path: "/decree/decreeOriginal",
query: {
id: route.query.id
}
});
window.open(curRoute.href, "_blank");
}; };
onMounted(() => { onMounted(() => {
...@@ -562,7 +568,6 @@ onMounted(() => { ...@@ -562,7 +568,6 @@ onMounted(() => {
} }
} }
.layout-main-center { .layout-main-center {
} }
} }
.layout-report-box { .layout-report-box {
......
<template>
<div class="layout-container">
<!-- 导航菜单 -->
<div class="layout-main">
<div class="layout-main-header">
<div class="layout-main-header-left-box">
<div class="left-box-top">
<div class="icon">
<img :src="summaryInfo.imageUrl" alt="" />
</div>
<div class="info">
<div class="info-box1">{{ summaryInfo.name }}</div>
<div class="info-box2">
<div class="info-box2-item item1">{{ summaryInfo.order }}</div>
|
<div class="info-box2-item item2">{{ summaryInfo.type }}</div>
|
<div class="info-box2-item item3">{{ summaryInfo.ename }}</div>
</div>
</div>
</div>
</div>
<div class="layout-main-header-right-box">
<div class="right-box-top">
<div class="time">{{ summaryInfo.postDate }}</div>
<div class="name">{{ summaryInfo.orgName }}</div>
</div>
</div>
</div>
<div class="layout-main-center">
<div class="report-box">
<div class="report-header">
{{ "政令原文" }}
</div>
<div class="report-main">
<div class="left">
<div v-if="!reportUrl" class="noContent">{{ "中文原文暂无数据" }}</div>
<iframe v-else :src="reportUrl" style="border: none" width="100%" height="100%"> </iframe>
</div>
<div class="right">
<div v-if="!reportUrlEn" class="noContent">{{ "英文原文暂无数据" }}</div>
<iframe v-else :src="reportUrlEn" style="border: none" width="100%" height="100%"> </iframe>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import { useRoute } from "vue-router";
import { getDecreeSummary } from "@/api/decree/introduction";
import { getDecreeReport } from "@/api/decree/introduction";
const route = useRoute();
const reportUrl = ref("");
const reportUrlEn = ref("");
const summaryInfo = ref({});
// 获取全局信息
const handleGetSummary = async () => {
const params = {
id: route.query.id
};
try {
const res = await getDecreeSummary(params);
console.log("全局信息", res);
if (res.code === 200 && res.data) {
summaryInfo.value = res.data;
}
} catch (error) {}
};
// 获取报告原文
const handleGetReport = async () => {
const params = {
id: route.query.id
};
try {
const res = await getDecreeReport(params);
console.log("报告原文", res);
if (res.code === 200 && res.data) {
reportUrl.value = res.data.content;
reportUrlEn.value = res.data.contentEn;
}
} catch (error) {}
};
onMounted(() => {
handleGetSummary();
handleGetReport();
});
</script>
<style lang="scss" scoped>
.layout-container {
width: 100%;
height: 100%;
overflow: hidden;
overflow-y: auto;
.layout-main {
width: 100%;
.layout-main-header {
height: 120px;
background: rgba(255, 255, 255, 1);
display: flex;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 99999999;
box-sizing: border-box;
border-bottom: 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);
background: rgba(255, 255, 255, 1);
.layout-main-header-left-box {
width: 1100px;
margin-left: 160px;
margin-top: 13px;
.left-box-top {
height: 64px;
display: flex;
.icon {
width: 122px;
height: 64px;
border-radius: 4px;
overflow: hidden;
img {
width: 100%;
height: 100%;
}
}
.info {
width: 700px;
margin-left: 9px;
.info-box1 {
width: 700px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 600;
line-height: 22px;
letter-spacing: 0px;
text-align: left;
margin-top: 5px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.info-box2 {
margin-top: 5px;
height: 22px;
line-height: 22px;
color: rgba(132, 136, 142, 1);
font-family: Microsoft YaHei;
font-size: 14px;
font-weight: 400;
line-height: 22px;
letter-spacing: 0px;
text-align: left;
display: flex;
margin-left: -10px;
.info-box2-item {
padding: 0 10px;
}
.item1 {
width: 100px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item2 {
width: 180px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item3 {
width: 420px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
}
.left-box-bottom {
display: flex;
height: 40px;
margin-top: 21px;
.left-box-bottom-item {
display: flex;
margin-right: 32px;
margin-top: 3px;
height: 35px;
cursor: pointer;
.icon {
margin-top: 4px;
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.name {
height: 24px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-size: 18px;
font-weight: 400;
line-height: 24px;
letter-spacing: 0px;
text-align: left;
margin-left: 3px;
}
.nameActive {
color: var(--color-main-active);
font-weight: 700;
}
}
.leftBoxBottomItemActive {
border-bottom: 3px solid var(--color-main-active);
}
}
}
.layout-main-header-right-box {
width: 300px;
margin-right: 150px;
margin-top: 19px;
.right-box-top {
.time {
height: 24px;
line-height: 24px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 22px;
letter-spacing: 0px;
text-align: right;
}
.name {
height: 24px;
line-height: 24px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 22px;
letter-spacing: 0px;
text-align: right;
}
}
.right-box-bottom {
margin-top: 24px;
text-align: right;
display: flex;
justify-content: flex-end;
gap: 8px;
.btn {
width: 120px;
height: 36px;
box-sizing: border-box;
border: 1px solid rgba(230, 231, 232, 1);
border-radius: 6px;
background: rgba(255, 255, 255, 1);
display: flex;
justify-content: center;
gap: 8px;
align-items: center;
cursor: pointer;
.icon {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.text {
width: 64px;
height: 24px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-style: Regular;
font-size: 16px;
font-weight: 400;
line-height: 24px;
letter-spacing: 0px;
text-align: left;
}
}
.btn-active {
width: 120px;
height: 36px;
border-radius: 6px;
background: var(--color-main-active);
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
cursor: pointer;
.icon-active {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.text-active {
width: 64px;
height: 24px;
color: rgba(255, 255, 255, 1);
font-family: Microsoft YaHei;
font-style: Regular;
font-size: 16px;
font-weight: 400;
line-height: 24px;
letter-spacing: 0px;
text-align: center;
}
}
}
}
}
.layout-main-center {
.report-box {
margin: 0 auto;
width: 1600px;
height: 926px;
background: rgba(248, 249, 250, 1);
.report-header {
height: 80px;
line-height: 80px;
padding-left: 20px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-style: Bold;
font-size: 20px;
font-weight: 700;
letter-spacing: 0px;
text-align: left;
}
.report-main {
width: 1600px;
margin: 0 auto;
background: #fff;
box-sizing: border-box;
padding: 0 69px;
display: flex;
height: calc(100% - 100px);
justify-content: space-between;
.left {
width: 800px;
.noContent {
height: 100px;
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;
.noContent {
height: 100px;
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;
}
}
}
}
}
}
}
</style>
\ No newline at end of file
...@@ -126,7 +126,7 @@ onMounted(async () => { ...@@ -126,7 +126,7 @@ onMounted(async () => {
overflow-y: auto; overflow-y: auto;
.header { .header {
width: 1920px; width: 100%;
height: 188px; height: 188px;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid rgba(234, 236, 238, 1); border-bottom: 1px solid rgba(234, 236, 238, 1);
......
...@@ -107,11 +107,11 @@ onMounted(async () => { ...@@ -107,11 +107,11 @@ onMounted(async () => {
<style lang="scss" scoped> <style lang="scss" scoped>
.wrap { .wrap {
width: 1920px; width: 100%;
// height: 984px; // height: 984px;
.header { .header {
width: 1920px; width: 100%;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid rgba(234, 236, 238, 1); border-bottom: 1px solid rgba(234, 236, 238, 1);
...@@ -315,7 +315,7 @@ onMounted(async () => { ...@@ -315,7 +315,7 @@ onMounted(async () => {
} }
.main { .main {
margin-left: 160px; margin: 0 auto;
background: #ffffff; background: #ffffff;
width: 1600px; width: 1600px;
height: 1025px; height: 1025px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论