提交 45af5214 authored 作者: 张伊明's avatar 张伊明

style 修改aipane和waringpane样式

fix 根据修改意见修改法案首页 fix 修改影响分析部分界面
上级 0892a0ac
...@@ -10,8 +10,7 @@ ...@@ -10,8 +10,7 @@
</div> </div>
<div <div
class="search-type-tab" class="search-type-tab"
:class="{ active: billSearchType === 'state' }" :class="{ active: billSearchType === 'state', 'is-disabled': true }"
@click="handleChangeBillSearchType('state')"
> >
州议会 州议会
</div> </div>
...@@ -206,6 +205,11 @@ const handleToPosi = id => { ...@@ -206,6 +205,11 @@ const handleToPosi = id => {
color: rgb(5, 95, 194); color: rgb(5, 95, 194);
border-color: rgb(255, 255, 255); border-color: rgb(255, 255, 255);
} }
.search-type-tab.is-disabled {
cursor: not-allowed;
opacity: 0.6;
}
} }
.search-main-with-tabs { .search-main-with-tabs {
......
...@@ -24,7 +24,8 @@ const props = defineProps({ ...@@ -24,7 +24,8 @@ const props = defineProps({
<style lang="scss"> <style lang="scss">
.ai-pane-wrapper { .ai-pane-wrapper {
width: 100%; width: 100%;
height: 156px; min-height: 156px;
height: auto;
background: var(--color-primary-2); background: var(--color-primary-2);
box-sizing: border-box; box-sizing: border-box;
padding: 12px 16px; padding: 12px 16px;
...@@ -57,18 +58,15 @@ const props = defineProps({ ...@@ -57,18 +58,15 @@ const props = defineProps({
.content { .content {
margin-top: 8px; margin-top: 8px;
width: 100%; width: 100%;
height: 90px; min-height: 90px;
height: auto;
box-sizing: border-box; box-sizing: border-box;
padding: 0 12px; padding: 0 12px;
color: var(--color-primary-100); color: var(--color-primary-100);
display: -webkit-box; display: block;
-webkit-line-clamp: 3; overflow: visible;
/* 控制显示的行数 */
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-word; word-break: break-word;
/* 防止长单词溢出 */ white-space: pre-wrap;
} }
} }
</style> </style>
\ No newline at end of file
<template> <template>
<div class="warnning-pane-wrapper" :style="{ width: width ? width : '1600px', height: height ? height : '116px' }" <div class="warnning-pane-wrapper" :style="{ width: width ? width : '1600px', height: height ? height : 'auto', minHeight: height ? undefined : '116px' }"
:class="{ :class="{
level1: warnningLevel === '特别重大风险', level1: warnningLevel === '特别重大风险',
level2: warnningLevel === '重大风险', level2: warnningLevel === '重大风险',
...@@ -146,15 +146,12 @@ const handleClickPane = () => { ...@@ -146,15 +146,12 @@ const handleClickPane = () => {
.warnning-pane-content{ .warnning-pane-content{
width: calc(100% - 40px); width: calc(100% - 40px);
margin: 0 auto; margin: 0 auto;
height: 60px; margin-bottom: 16px;
display: -webkit-box; min-height: 60px;
/* 2. 设置内部布局方向为垂直 */ height: auto;
-webkit-box-orient: vertical; display: block;
/* 3. 限制显示的行数为 2 行 */ overflow: visible;
-webkit-line-clamp: 2; white-space: pre-wrap;
/* 4. 隐藏超出部分 */ word-break: break-word;
overflow: hidden;
/* 5. 设置文本溢出显示省略号 */
text-overflow: ellipsis;
} }
</style> </style>
\ No newline at end of file
...@@ -260,6 +260,7 @@ ...@@ -260,6 +260,7 @@
import { computed, onMounted, ref } from "vue"; import { computed, onMounted, ref } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { getHylyList, getPostOrgList, getPostMemberList, getBills, getBillsPerson, getBillsPersonRel, getBillsIsCnCommittee } from "@/api/bill/billHome"; import { getHylyList, getPostOrgList, getPostMemberList, getBills, getBillsPerson, getBillsPersonRel, getBillsIsCnCommittee } from "@/api/bill/billHome";
import { getPersonSummaryInfo } from "@/api/common/index";
import CommonPrompt from "../commonPrompt/index.vue"; import CommonPrompt from "../commonPrompt/index.vue";
import desc from "./assets/icons/icon-desc.png"; import desc from "./assets/icons/icon-desc.png";
import defaultAvatar from "@/assets/icons/default-icon1.png"; import defaultAvatar from "@/assets/icons/default-icon1.png";
...@@ -268,6 +269,7 @@ import zyyIcon from "@/assets/icons/zyy.png"; ...@@ -268,6 +269,7 @@ import zyyIcon from "@/assets/icons/zyy.png";
import cyyIcon from "@/assets/icons/cyy.png"; import cyyIcon from "@/assets/icons/cyy.png";
import ghdIcon from "@/assets/icons/ghd.png"; import ghdIcon from "@/assets/icons/ghd.png";
import mzdIcon from "@/assets/icons/mzd.png"; import mzdIcon from "@/assets/icons/mzd.png";
import { ElMessage } from "element-plus";
const router = useRouter(); const router = useRouter();
...@@ -405,16 +407,48 @@ const handleBillImageError = e => { ...@@ -405,16 +407,48 @@ const handleBillImageError = e => {
img.src = defaultBill; img.src = defaultBill;
}; };
const handleClickAvatar = member => { const handleClickAvatar = async member => {
if (!member?.id) return; if (!member?.id) return;
const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList") || "[]");
let type = 0;
let personTypeName = "";
const params = {
personId: member.id
};
try {
const res = await getPersonSummaryInfo(params);
if (res.code === 200 && res.data) {
const arr = personTypeList.filter(item => item.typeId === res.data.personType);
if (arr && arr.length > 0) {
personTypeName = arr[0].typeName;
if (personTypeName === "科技企业领袖") {
type = 1;
} else if (personTypeName === "国会议员") {
type = 2;
} else if (personTypeName === "智库研究人员") {
type = 3;
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
return;
}
window.sessionStorage.setItem("curTabName", member.name || ""); window.sessionStorage.setItem("curTabName", member.name || "");
const routeData = router.resolve({ const routeData = router.resolve({
path: "/characterPage", path: "/characterPage",
query: { query: {
type,
personId: member.id personId: member.id
} }
}); });
window.open(routeData.href, "_blank"); window.open(routeData.href, "_blank");
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
}
} else {
ElMessage.warning("找不到当前人员的类型值!");
}
} catch (error) {}
}; };
const getReversedProgress = progress => (Array.isArray(progress) ? [...progress].reverse() : []); const getReversedProgress = progress => (Array.isArray(progress) ? [...progress].reverse() : []);
......
<template> <template>
<div class="industry-wrap"> <div class="industry-wrap">
<div class="left"> <div class="left">
<div class="box-header"> <AnalysisBox title="涉及行业" :showAllBtn="false" width="100%" height="100%">
<div class="header-left"></div> <div class="left-main">
<div class="title">涉及行业</div>
<div class="header-right">
<div class="icon">
<img src="@/assets/icons/box-header-icon1.png" alt="" />
</div>
<div class="icon">
<img src="@/assets/icons/box-header-icon2.png" alt="" />
</div>
<div class="icon">
<img src="@/assets/icons/box-header-icon3.png" alt="" />
</div>
</div>
</div>
<div class="left-top" id="chart1"></div>
<div class="left-center"> <div class="left-center">
<div class="left-center-btn-box"> <el-select
<div v-model="curHylyId"
class="left-center-btn" placeholder="请选择行业"
:class="{ btnActive: box1BtnActive === index }" class="left-center-select"
v-for="(item, index) in industryList" @change="handleIndustryChange"
:key="index"
@click="handleClickBox1Btn(item, index)"
> >
{{ item.name }} <el-option
</div> v-for="item in industryList"
</div> :key="item.id"
:label="item.name || item.hylymc"
:value="item.id"
/>
</el-select>
<el-input
v-model="companySearchKeyword"
placeholder="搜索实体"
class="left-center-search"
:suffix-icon="Search"
clearable
/>
</div> </div>
<div class="left-footer"> <div class="left-footer">
<div class="item-box"> <div class="item-box">
<div <div class="item" :class="{ itemActive: companyActiveIndex === idx }"
class="item" @click="handleClickCompany(val, idx)" v-for="(val, idx) in curCompanyList" :key="val.id">
:class="{ itemActive: companyActiveIndex === idx }"
@click="handleClickCompany(val, idx)"
v-for="(val, idx) in curCompanyList"
:key="idx"
>
<div class="id">{{ (currentPage - 1) * pageSize + idx + 1 }}</div> <div class="id">{{ (currentPage - 1) * pageSize + idx + 1 }}</div>
<div class="title" :class="{ titleActive: companyActiveIndex === ((currentPage - 1) * pageSize + idx) }"> <div class="title"
:class="{ titleActive: companyActiveIndex === ((currentPage - 1) * pageSize + idx) }">
{{ val.name }} {{ val.name }}
</div> </div>
<div class="icon"> <div class="icon">
...@@ -50,37 +41,19 @@ ...@@ -50,37 +41,19 @@
</div> </div>
</div> </div>
<div class="footer-box"> <div class="footer-box">
<div class="left">{{ `共 ${companyList.length} 项` }}</div> <div class="left">{{ `共 ${filteredCompanyList.length} 项` }}</div>
<div class="right">
<el-pagination
@current-change="handleCurrentChange"
:pageSize="pageSize"
:current-page="currentPage"
size="small"
background
layout="prev, pager, next"
:total="companyList.length"
/>
</div>
</div>
</div>
</div>
<div class="right"> <div class="right">
<div class="box-header"> <el-pagination @current-change="handleCurrentChange" :pageSize="pageSize"
<div class="header-left"></div> :current-page="currentPage" size="small" background layout="prev, pager, next"
<div class="title">产业链分析</div> :total="filteredCompanyList.length" />
<div class="header-right">
<div class="icon">
<img src="@/assets/icons/box-header-icon1.png" alt="" />
</div> </div>
<div class="icon">
<img src="@/assets/icons/box-header-icon2.png" alt="" />
</div> </div>
<div class="icon">
<img src="@/assets/icons/box-header-icon3.png" alt="" />
</div> </div>
</div> </div>
</AnalysisBox>
</div> </div>
<div class="right">
<AnalysisBox title="产业链分析" :showAllBtn="false" width="100%" height="100%">
<div class="right-main"> <div class="right-main">
<div class="right-main-content" id="chartGraph"> <div class="right-main-content" id="chartGraph">
<div class="right-main-content-header"> <div class="right-main-content-header">
...@@ -134,6 +107,7 @@ ...@@ -134,6 +107,7 @@
</div> </div>
</div> </div>
</div> </div>
</AnalysisBox>
<div class="graph-dialog" v-if="isShowCompanyDialog"> <div class="graph-dialog" v-if="isShowCompanyDialog">
<div class="tool-box"> <div class="tool-box">
<div class="tool" @click="handleChangeChart(0)"> <div class="tool" @click="handleChangeChart(0)">
...@@ -210,13 +184,12 @@ ...@@ -210,13 +184,12 @@
</template> </template>
<script setup> <script setup>
import { ref, onMounted, nextTick, computed } from "vue"; import { ref, onMounted, nextTick, computed, watch } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import * as echarts from "echarts"; import * as echarts from "echarts";
const route = useRoute(); const route = useRoute();
import { getCompanyList, getIndustryHyly, getHylyList, getCompanyDetail } from "@/api/influence"; import { getCompanyList, getHylyList, getCompanyDetail } from "@/api/influence";
import getBarChart from "./utils/barChart";
import getLineChart from "./utils/lineChart"; import getLineChart from "./utils/lineChart";
import getBarChart1 from "./utils/barChart1"; import getBarChart1 from "./utils/barChart1";
import getGraph from "./utils/graph"; import getGraph from "./utils/graph";
...@@ -233,18 +206,16 @@ import uncheckIcon from "./assets/images/uncheck.png"; ...@@ -233,18 +206,16 @@ import uncheckIcon from "./assets/images/uncheck.png";
import checkedIcon from "./assets/images/checked.png"; import checkedIcon from "./assets/images/checked.png";
import closeIcon from "./assets/images/close.png"; import closeIcon from "./assets/images/close.png";
import { Search } from "@element-plus/icons-vue";
import Fishbone from "./components/fishbone.vue"; import Fishbone from "./components/fishbone.vue";
import CommonPrompt from "../../commonPrompt/index.vue"; import CommonPrompt from "../../commonPrompt/index.vue";
import AnalysisBox from "@/components/base/boxBackground/analysisBox.vue";
import CompanyImg from "./assets/images/symbol.png"; import CompanyImg from "./assets/images/symbol.png";
const isShowCompanyDialog = ref(false); const isShowCompanyDialog = ref(false);
const box1BtnActive = ref(0); const handleIndustryChange = () => {
const handleClickBox1Btn = (industry, index) => {
box1BtnActive.value = index;
curHylyId.value = industry.id;
handleGetCompanyListById(); handleGetCompanyListById();
}; };
...@@ -258,32 +229,6 @@ const setChart = (option, chartId) => { ...@@ -258,32 +229,6 @@ const setChart = (option, chartId) => {
return chart; return chart;
}; };
const chart1Data = ref({
name: [],
value: [],
});
const showAllChart1 = ref(false);
const fullChart1Data = ref({ name: [], value: [] });
// const handleToggleChart1 = () => {
// showAllChart1.value = !showAllChart1.value;
// renderChart1();
// };
const renderChart1 = () => {
let dataName = fullChart1Data.value.name;
let dataValue = fullChart1Data.value.value;
// if (!showAllChart1.value && dataName.length > 5) {
// dataName = dataName.slice(0, 5);
// dataValue = dataValue.slice(0, 5);
// }
let chart1 = getBarChart(dataName, dataValue);
setChart(chart1, "chart1");
};
const industryActiveIndex = ref(0); const industryActiveIndex = ref(0);
const companyActiveIndex = ref(0); const companyActiveIndex = ref(0);
const curCompanyId = ref(""); const curCompanyId = ref("");
...@@ -304,11 +249,22 @@ const pageSize = ref(10); ...@@ -304,11 +249,22 @@ const pageSize = ref(10);
const currentPage = ref(1); const currentPage = ref(1);
const companyList = ref([]); // 企业列表 const companyList = ref([]); // 企业列表
// 当前企业列表 const companySearchKeyword = ref(""); // 企业搜索关键词
// 根据关键词筛选后的企业列表
const filteredCompanyList = computed(() => {
const keyword = companySearchKeyword.value?.trim().toLowerCase() || "";
if (!keyword) return companyList.value;
return companyList.value.filter((item) =>
(item.name || "").toLowerCase().includes(keyword)
);
});
// 当前页企业列表(分页 + 筛选)
const curCompanyList = computed(() => { const curCompanyList = computed(() => {
const startIndex = (currentPage.value - 1) * pageSize.value; const startIndex = (currentPage.value - 1) * pageSize.value;
const endIndex = startIndex + pageSize.value; const endIndex = startIndex + pageSize.value;
return companyList.value.slice(startIndex, endIndex); return filteredCompanyList.value.slice(startIndex, endIndex);
}); });
// 处理页码改变事件 // 处理页码改变事件
...@@ -316,6 +272,11 @@ const handleCurrentChange = page => { ...@@ -316,6 +272,11 @@ const handleCurrentChange = page => {
currentPage.value = page; currentPage.value = page;
}; };
// 搜索关键词变化时重置到第一页
watch(companySearchKeyword, () => {
currentPage.value = 1;
});
const industryList = ref([ const industryList = ref([
// { // {
// "id": 1, // "id": 1,
...@@ -365,7 +326,7 @@ const handleGetHylyList = async () => { ...@@ -365,7 +326,7 @@ const handleGetHylyList = async () => {
if (res.data && res.data.length > 0) { if (res.data && res.data.length > 0) {
curHylyId.value = res.data[0].id; curHylyId.value = res.data[0].id;
} }
} catch (error) {} } catch (error) { }
}; };
const curHylyId = ref(""); const curHylyId = ref("");
...@@ -380,6 +341,7 @@ const handleGetCompanyListById = async () => { ...@@ -380,6 +341,7 @@ const handleGetCompanyListById = async () => {
// console.log('根据行业id获取公司里列表', res); // console.log('根据行业id获取公司里列表', res);
if (res.code === 200 && res.data.length) { if (res.code === 200 && res.data.length) {
companyList.value = res.data; companyList.value = res.data;
companySearchKeyword.value = "";
currentPage.value = 1; currentPage.value = 1;
nextTick(() => { nextTick(() => {
handleClickCompany(companyList.value[0], 0); handleClickCompany(companyList.value[0], 0);
...@@ -387,27 +349,7 @@ const handleGetCompanyListById = async () => { ...@@ -387,27 +349,7 @@ const handleGetCompanyListById = async () => {
} else { } else {
companyList.value = []; companyList.value = [];
} }
} catch (error) {} } catch (error) { }
};
// 根据法案ID 获取行业领域统计
const handleGetIndustryHyly = async () => {
const params = {
id: window.sessionStorage.getItem("billId")
};
try {
const res = await getIndustryHyly(params);
// console.log('行业领域统计', res);
const data = res.data || [];
data.sort((a, b) => b.companyNum - a.companyNum);
fullChart1Data.value.name = data.map(item => {
return item.hylyName;
});
fullChart1Data.value.value = data.map(item => {
return item.companyNum;
});
renderChart1();
} catch (error) {}
}; };
// 根据法案id,公司id,行业领域id获取公司的详情 // 根据法案id,公司id,行业领域id获取公司的详情
...@@ -554,7 +496,7 @@ const handleGetCompanyDetail = async () => { ...@@ -554,7 +496,7 @@ const handleGetCompanyDetail = async () => {
} else { } else {
companyInfo.value = {}; companyInfo.value = {};
} }
} catch (error) {} } catch (error) { }
}; };
...@@ -750,10 +692,6 @@ onMounted(async () => { ...@@ -750,10 +692,6 @@ onMounted(async () => {
setChart(graphChart, "graphChart"); setChart(graphChart, "graphChart");
await handleGetHylyList(); await handleGetHylyList();
handleGetCompanyListById(); handleGetCompanyListById();
await handleGetIndustryHyly();
// let chart1 = getBarChart(chart1Data.value.name, chart1Data.value.value);
// setChart(chart1, "chart1");
}); });
</script> </script>
...@@ -762,114 +700,54 @@ onMounted(async () => { ...@@ -762,114 +700,54 @@ onMounted(async () => {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
.box-header {
height: 56px;
display: flex;
position: relative;
.header-left {
margin-top: 18px;
width: 8px;
height: 20px;
border-radius: 0 4px 4px 0;
background: var(--color-main-active);
}
.title {
margin-left: 14px;
margin-top: 14px;
height: 26px;
line-height: 26px;
color: var(--color-main-active);
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
}
.header-right {
position: absolute;
top: 14px;
right: 12px;
display: flex;
justify-content: flex-end;
gap: 4px;
.more-btn {
font-size: 14px;
color: #1677ff;
cursor: pointer;
line-height: 28px;
}
.icon {
width: 28px;
height: 28px;
img {
width: 100%;
height: 100%;
}
}
}
}
.left { .left {
margin-top: 16px; margin-top: 16px;
width: 480px; width: 480px;
height: 848px; height: 848px;
background: rgba(255, 255, 255);
border-radius: 10px; .left-main {
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1); display: flex;
.left-top { flex-direction: column;
margin: 0 auto; height: 100%;
width: 446px; overflow: hidden;
height: 200px;
box-sizing: border-box;
border: 1px solid rgba(231, 241, 255, 1);
border-radius: 4px;
background: linear-gradient(180deg, rgba(246, 251, 255, 1), rgba(246, 251, 255, 0) 100%);
} }
.left-center { .left-center {
margin-top: 12px; flex: 1;
height: 56px; min-height: 0;
margin-left: 17px; margin: 12px 17px 0;
overflow-x: hidden;
width: 445px;
overflow-x: auto;
.left-center-btn-box {
width: 1000px;
margin-top: 10px;
height: 28px;
display: flex; display: flex;
flex-wrap: nowrap; align-items: flex-start;
.left-center-btn { gap: 12px;
margin-right: 4px;
height: 28px; .left-center-select {
// width: 70px; width: 150px;
text-align: center; flex-shrink: 0;
padding: 0 5px;
box-sizing: border-box;
border-radius: 4px;
border: 1px solid var(--btn-plain-border-color);
background: var(--btn-plain-bg-color);
color: var(--btn-plain-text-color);
font-family: Microsoft YaHei;
font-size: 14px;
font-weight: 400;
line-height: 28px;
cursor: pointer;
// overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
.btnActive {
border: 1px solid var(--btn-active-border-color); .left-center-search {
background: var(--btn-active-bg-color); flex: 1;
color: var(--btn-active-text-color); min-width: 0;
:deep(.el-input__wrapper) {
border: 1px solid var(--bg-black-10);
box-shadow: none;
} }
} }
} }
.left-footer { .left-footer {
flex-shrink: 0;
margin: 0 auto; margin: 0 auto;
width: 446px; width: 446px;
height: 520px; height: 520px;
overflow: hidden; overflow: hidden;
.item-box { .item-box {
height: 480px; height: 480px;
overflow: hidden; overflow: hidden;
.item { .item {
width: 100%; width: 100%;
height: 48px; height: 48px;
...@@ -877,9 +755,11 @@ onMounted(async () => { ...@@ -877,9 +755,11 @@ onMounted(async () => {
border-bottom: 1px solid rgba(243, 243, 244, 1); border-bottom: 1px solid rgba(243, 243, 244, 1);
display: flex; display: flex;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background: rgba(246, 251, 255, 1); background: rgba(246, 251, 255, 1);
} }
.id { .id {
margin-left: 12px; margin-left: 12px;
margin-top: 8px; margin-top: 8px;
...@@ -894,6 +774,7 @@ onMounted(async () => { ...@@ -894,6 +774,7 @@ onMounted(async () => {
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
} }
.title { .title {
margin-top: 9px; margin-top: 9px;
margin-left: 10px; margin-left: 10px;
...@@ -908,27 +789,33 @@ onMounted(async () => { ...@@ -908,27 +789,33 @@ onMounted(async () => {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.icon { .icon {
margin-left: 7px; margin-left: 7px;
margin-top: 6px; margin-top: 6px;
width: 8px; width: 8px;
height: 6px; height: 6px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
} }
.itemActive { .itemActive {
background: rgba(246, 251, 255, 1); background: rgba(246, 251, 255, 1);
} }
.titleActive { .titleActive {
color: rgba(22, 119, 255, 1) !important; color: rgba(22, 119, 255, 1) !important;
} }
} }
.footer-box { .footer-box {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.left { .left {
width: 100px; width: 100px;
height: 20px; height: 20px;
...@@ -938,21 +825,21 @@ onMounted(async () => { ...@@ -938,21 +825,21 @@ onMounted(async () => {
font-weight: 400; font-weight: 400;
line-height: 20px; line-height: 20px;
} }
.right { .right {
flex: 300px; flex: 300px;
} }
} }
} }
} }
.right { .right {
margin-top: 16px; margin-top: 16px;
margin-left: 16px; margin-left: 16px;
width: 1247px; width: 1247px;
height: 847px; height: 847px;
background: rgba(255, 255, 255);
border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
position: relative; position: relative;
.graph-dialog { .graph-dialog {
width: 740px; width: 740px;
height: 723px; height: 723px;
...@@ -961,6 +848,7 @@ onMounted(async () => { ...@@ -961,6 +848,7 @@ onMounted(async () => {
top: 55px; top: 55px;
z-index: 99999; z-index: 99999;
background: #fff; background: #fff;
.tool-box { .tool-box {
position: absolute; position: absolute;
left: 11px; left: 11px;
...@@ -975,31 +863,37 @@ onMounted(async () => { ...@@ -975,31 +863,37 @@ onMounted(async () => {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
.tool { .tool {
width: 14px; width: 14px;
height: 14px; height: 14px;
cursor: pointer; cursor: pointer;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.tool1 { .tool1 {
width: 16px; width: 16px;
height: 16px; height: 16px;
cursor: pointer; cursor: pointer;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
} }
.chart-box { .chart-box {
width: 640px; width: 640px;
height: 640px; height: 640px;
margin: 50px auto; margin: 50px auto;
} }
} }
.company-dialog { .company-dialog {
position: absolute; position: absolute;
z-index: 999999; z-index: 999999;
...@@ -1011,22 +905,26 @@ onMounted(async () => { ...@@ -1011,22 +905,26 @@ onMounted(async () => {
border: 1px solid rgba(230, 231, 232, 1); border: 1px solid rgba(230, 231, 232, 1);
border-radius: 4px; border-radius: 4px;
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.dialog-header { .dialog-header {
height: 54px; height: 54px;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid rgba(243, 243, 244, 1); border-bottom: 1px solid rgba(243, 243, 244, 1);
display: flex; display: flex;
position: relative; position: relative;
.logo { .logo {
width: 48px; width: 48px;
height: 48px; height: 48px;
margin-left: 18px; margin-left: 18px;
margin-top: 3px; margin-top: 3px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.company-title { .company-title {
margin-left: 16px; margin-left: 16px;
margin-top: 16px; margin-top: 16px;
...@@ -1037,16 +935,19 @@ onMounted(async () => { ...@@ -1037,16 +935,19 @@ onMounted(async () => {
font-weight: 600; font-weight: 600;
line-height: 22px; line-height: 22px;
} }
.status-icon { .status-icon {
margin-left: 12px; margin-left: 12px;
margin-top: 12px; margin-top: 12px;
width: 8px; width: 8px;
height: 6px; height: 6px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.status-rate { .status-rate {
width: 41px; width: 41px;
margin-left: 4px; margin-left: 4px;
...@@ -1058,33 +959,40 @@ onMounted(async () => { ...@@ -1058,33 +959,40 @@ onMounted(async () => {
font-weight: 400; font-weight: 400;
line-height: 22px; line-height: 22px;
} }
.close { .close {
position: absolute; position: absolute;
right: 15px; right: 15px;
top: 19px; top: 19px;
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
} }
.dialog-main { .dialog-main {
margin-top: 13px; margin-top: 13px;
.dialog-box1 { .dialog-box1 {
.dialog-box1-header { .dialog-box1-header {
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
.icon { .icon {
margin-left: 16px; margin-left: 16px;
width: 18px; width: 18px;
height: 18px; height: 18px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.dialog-box1-title { .dialog-box1-title {
margin-top: 2px; margin-top: 2px;
margin-left: 6px; margin-left: 6px;
...@@ -1097,34 +1005,42 @@ onMounted(async () => { ...@@ -1097,34 +1005,42 @@ onMounted(async () => {
text-align: left; text-align: left;
} }
} }
.dialog-box1-main { .dialog-box1-main {
margin-top: 4px; margin-top: 4px;
margin-left: 18px; margin-left: 18px;
max-height: 120px; max-height: 120px;
overflow-y: auto; overflow-y: auto;
&::-webkit-scrollbar { &::-webkit-scrollbar {
width: 4px; width: 4px;
} }
&::-webkit-scrollbar-thumb { &::-webkit-scrollbar-thumb {
border-radius: 10px; border-radius: 10px;
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
} }
&::-webkit-scrollbar-track { &::-webkit-scrollbar-track {
border-radius: 0; border-radius: 0;
background: rgba(0, 0, 0, 0.1); background: rgba(0, 0, 0, 0.1);
} }
.item { .item {
display: flex; display: flex;
.item-left { .item-left {
margin-top: 13px; margin-top: 13px;
width: 14px; width: 14px;
height: 14px; height: 14px;
border-radius: 4px; border-radius: 4px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.item-right { .item-right {
margin-top: 8px; margin-top: 8px;
margin-left: 9px; margin-left: 9px;
...@@ -1139,21 +1055,26 @@ onMounted(async () => { ...@@ -1139,21 +1055,26 @@ onMounted(async () => {
} }
} }
} }
.dialog-box2 { .dialog-box2 {
margin-left: 16px; margin-left: 16px;
margin-top: 50px; margin-top: 50px;
.dialog-box2-header { .dialog-box2-header {
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
.icon { .icon {
margin-left: 16px; margin-left: 16px;
width: 18px; width: 18px;
height: 18px; height: 18px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.dialog-box2-title { .dialog-box2-title {
margin-top: 2px; margin-top: 2px;
margin-left: 6px; margin-left: 6px;
...@@ -1166,6 +1087,7 @@ onMounted(async () => { ...@@ -1166,6 +1087,7 @@ onMounted(async () => {
text-align: left; text-align: left;
} }
} }
.dialog-box2-main { .dialog-box2-main {
margin-top: 16px; margin-top: 16px;
width: 446px; width: 446px;
...@@ -1176,21 +1098,26 @@ onMounted(async () => { ...@@ -1176,21 +1098,26 @@ onMounted(async () => {
background: linear-gradient(180deg, rgba(246, 251, 255, 1), rgba(246, 251, 255, 0) 100%); background: linear-gradient(180deg, rgba(246, 251, 255, 1), rgba(246, 251, 255, 0) 100%);
} }
} }
.dialog-box3 { .dialog-box3 {
margin-top: 16px; margin-top: 16px;
margin-left: 16px; margin-left: 16px;
.dialog-box3-header { .dialog-box3-header {
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
.icon { .icon {
margin-left: 16px; margin-left: 16px;
width: 18px; width: 18px;
height: 18px; height: 18px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.dialog-box3-title { .dialog-box3-title {
margin-top: 2px; margin-top: 2px;
margin-left: 6px; margin-left: 6px;
...@@ -1203,6 +1130,7 @@ onMounted(async () => { ...@@ -1203,6 +1130,7 @@ onMounted(async () => {
text-align: left; text-align: left;
} }
} }
.dialog-box3-main { .dialog-box3-main {
margin-top: 16px; margin-top: 16px;
width: 446px; width: 446px;
...@@ -1220,18 +1148,22 @@ onMounted(async () => { ...@@ -1220,18 +1148,22 @@ onMounted(async () => {
width: 1218px; width: 1218px;
height: 784px; height: 784px;
margin: 5px auto; margin: 5px auto;
.right-main-content { .right-main-content {
width: 1150px; width: 1150px;
height: 720px; height: 720px;
margin: 4px 0 10px; margin: 4px 0 10px;
.right-main-content-header { .right-main-content-header {
height: 84px; height: 84px;
margin-left: 14px; margin-left: 14px;
margin-top: 16px; margin-top: 16px;
// background: orange; // background: orange;
display: flex; display: flex;
.header-item1 { .header-item1 {
width: 408px; width: 408px;
.header-item1-top { .header-item1-top {
position: relative; position: relative;
z-index: 3; z-index: 3;
...@@ -1246,18 +1178,22 @@ onMounted(async () => { ...@@ -1246,18 +1178,22 @@ onMounted(async () => {
font-weight: 700; font-weight: 700;
line-height: 28px; line-height: 28px;
} }
.header-item1-bottom { .header-item1-bottom {
display: flex; display: flex;
justify-content: center; justify-content: center;
.icon { .icon {
margin-top: 9px; margin-top: 9px;
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.text { .text {
margin-top: 7px; margin-top: 7px;
margin-left: 8px; margin-left: 8px;
...@@ -1270,9 +1206,11 @@ onMounted(async () => { ...@@ -1270,9 +1206,11 @@ onMounted(async () => {
} }
} }
} }
.header-item2 { .header-item2 {
margin-left: -8px; margin-left: -8px;
width: 408px; width: 408px;
.header-item2-top { .header-item2-top {
position: relative; position: relative;
z-index: 2; z-index: 2;
...@@ -1287,18 +1225,22 @@ onMounted(async () => { ...@@ -1287,18 +1225,22 @@ onMounted(async () => {
font-weight: 700; font-weight: 700;
line-height: 28px; line-height: 28px;
} }
.header-item2-bottom { .header-item2-bottom {
display: flex; display: flex;
justify-content: center; justify-content: center;
.icon { .icon {
margin-top: 9px; margin-top: 9px;
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.text { .text {
margin-top: 7px; margin-top: 7px;
margin-left: 8px; margin-left: 8px;
...@@ -1311,9 +1253,11 @@ onMounted(async () => { ...@@ -1311,9 +1253,11 @@ onMounted(async () => {
} }
} }
} }
.header-item3 { .header-item3 {
margin-left: -8px; margin-left: -8px;
width: 408px; width: 408px;
.header-item3-top { .header-item3-top {
position: relative; position: relative;
z-index: 1; z-index: 1;
...@@ -1328,18 +1272,22 @@ onMounted(async () => { ...@@ -1328,18 +1272,22 @@ onMounted(async () => {
font-weight: 700; font-weight: 700;
line-height: 28px; line-height: 28px;
} }
.header-item3-bottom { .header-item3-bottom {
display: flex; display: flex;
justify-content: center; justify-content: center;
.icon { .icon {
margin-top: 9px; margin-top: 9px;
width: 16px; width: 16px;
height: 16px; height: 16px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.text { .text {
margin-top: 7px; margin-top: 7px;
margin-left: 8px; margin-left: 8px;
...@@ -1353,12 +1301,15 @@ onMounted(async () => { ...@@ -1353,12 +1301,15 @@ onMounted(async () => {
} }
} }
} }
.right-main-content-main { .right-main-content-main {
height: 600px; height: 600px;
margin-top: 20px; margin-top: 20px;
} }
// background: orange; // background: orange;
} }
.box-footer { .box-footer {
width: 1218px; width: 1218px;
height: 40px; height: 40px;
...@@ -1367,16 +1318,19 @@ onMounted(async () => { ...@@ -1367,16 +1318,19 @@ onMounted(async () => {
margin: 0 auto; margin: 0 auto;
margin-top: 6px; margin-top: 6px;
background: rgba(246, 251, 255, 1); background: rgba(246, 251, 255, 1);
.box-footer-left { .box-footer-left {
margin-top: 10px; margin-top: 10px;
margin-left: 12px; margin-left: 12px;
width: 19px; width: 19px;
height: 20px; height: 20px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
.box-footer-center { .box-footer-center {
margin-left: 13px; margin-left: 13px;
margin-top: 8px; margin-top: 8px;
...@@ -1388,6 +1342,7 @@ onMounted(async () => { ...@@ -1388,6 +1342,7 @@ onMounted(async () => {
font-weight: 400; font-weight: 400;
line-height: 24px; line-height: 24px;
} }
.box-footer-right { .box-footer-right {
margin-left: 13px; margin-left: 13px;
margin-top: 8px; margin-top: 8px;
...@@ -1398,6 +1353,7 @@ onMounted(async () => { ...@@ -1398,6 +1353,7 @@ onMounted(async () => {
background: #e7f1ff; background: #e7f1ff;
box-sizing: border-box; box-sizing: border-box;
padding: 3px; padding: 3px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
......
<template> <template>
<div class="introduction-wrap"> <div class="introduction-wrap">
<WarningPane <WarningPane v-if="riskSignal" class="risk-signal-pane-top" :warnningLevel="riskSignal.riskLevel"
v-if="riskSignal" :warnningContent="riskSignal.riskContent" />
class="risk-signal-pane-top"
:warnningLevel="riskSignal.riskLevel"
:warnningContent="riskSignal.riskContent"
/>
<div class="introduction-wrap-content"> <div class="introduction-wrap-content">
<div class="introduction-wrap-left"> <div class="introduction-wrap-left">
<div class="introduction-wrap-left-box1"> <div class="introduction-wrap-left-box1">
...@@ -34,7 +30,8 @@ ...@@ -34,7 +30,8 @@
<div class="box1-right-item"> <div class="box1-right-item">
<div class="item-left">委员会报告:</div> <div class="item-left">委员会报告:</div>
<div class="item-right2" v-if="reportList.length"> <div class="item-right2" v-if="reportList.length">
<div class="right2-item" v-for="(item, index) in reportList" :key="getReportKey(item, index)"> <div class="right2-item" v-for="(item, index) in reportList"
:key="getReportKey(item, index)">
{{ item }} {{ item }}
</div> </div>
</div> </div>
...@@ -50,12 +47,8 @@ ...@@ -50,12 +47,8 @@
<div class="box1-right-item"> <div class="box1-right-item">
<div class="item-left">立案流程:</div> <div class="item-left">立案流程:</div>
<div class="item-right4"> <div class="item-right4">
<div <div v-for="(item, index) in reversedStageList" :key="getStageKey(item, index)"
v-for="(item, index) in reversedStageList" class="step" :style="{ zIndex: getStageZIndex(index) }">
:key="getStageKey(item, index)"
class="step"
:style="{ zIndex: getStageZIndex(index) }"
>
<div class="step-box" <div class="step-box"
:class="{ 'step-box-active': index === stageActiveIndex }"> :class="{ 'step-box-active': index === stageActiveIndex }">
{{ item }} {{ item }}
...@@ -86,14 +79,16 @@ ...@@ -86,14 +79,16 @@
<div class="name-box"> <div class="name-box">
<div class="person-box"> <div class="person-box">
<div class="person-item" :class="{ nameItemActive: box3BtnActive === item.name }" <div class="person-item" :class="{ nameItemActive: box3BtnActive === item.name }"
@click="handleClcikBox3Btn(item.name, index)" v-for="(item, index) in personList" :key="index"> @click="handleClcikBox3Btn(item.name, index)"
v-for="(item, index) in personList" :key="index">
{{ item.name }} {{ item.name }}
</div> </div>
</div> </div>
</div> </div>
<div class="info-box"> <div class="info-box">
<div class="info-left"> <div class="info-left">
<img class="person-avatar" :src="curPerson.imageUrl || defaultAvatar" alt="" @click="handleClickAvatar(curPerson)" /> <img class="person-avatar" :src="curPerson.imageUrl || defaultAvatar" alt=""
@click="handleClickAvatar(curPerson)" />
<div class="usr-icon1"> <div class="usr-icon1">
<img src="./assets/images/usr-icon1.png" alt="" /> <img src="./assets/images/usr-icon1.png" alt="" />
</div> </div>
...@@ -102,7 +97,8 @@ ...@@ -102,7 +97,8 @@
</div> </div>
</div> </div>
<div class="info-right"> <div class="info-right">
<div class="info-right-title" @click="handleClickAvatar(curPerson)">{{ curPerson.name }}</div> <div class="info-right-title" @click="handleClickAvatar(curPerson)">{{
curPerson.name }}</div>
<div class="info-right-item"> <div class="info-right-item">
<div class="item-left">英文名:</div> <div class="item-left">英文名:</div>
<div class="item-right">{{ curPerson.ename }}</div> <div class="item-right">{{ curPerson.ename }}</div>
...@@ -123,7 +119,7 @@ ...@@ -123,7 +119,7 @@
</div> </div>
</div> </div>
<div class="right-main-box2" v-if="curPerson.tagList && curPerson.tagList.length"> <div class="right-main-box2" v-if="curPerson.tagList && curPerson.tagList.length">
<div class="tag-box status"v-for="(tag, index) in curPerson.tagList" :key="index"> <div class="tag-box status" v-for="(tag, index) in curPerson.tagList" :key="index">
{{ tag }} {{ tag }}
</div> </div>
</div> </div>
...@@ -159,23 +155,58 @@ import WordCloudMap from "./WordCloudMap.vue"; ...@@ -159,23 +155,58 @@ import WordCloudMap from "./WordCloudMap.vue";
import STimeline from "./STimeline.vue"; import STimeline from "./STimeline.vue";
import WarningPane from "@/components/base/WarningPane/index.vue"; import WarningPane from "@/components/base/WarningPane/index.vue";
import { getBillInfo, getBillPerson, getBillEvent, getBillDyqk } from "@/api/bill"; import { getBillInfo, getBillPerson, getBillEvent, getBillDyqk } from "@/api/bill";
import { getPersonSummaryInfo } from "@/api/common/index";
import defaultAvatar from "../assets/images/default-icon1.png"; import defaultAvatar from "../assets/images/default-icon1.png";
import defaultNew from "../assets/images/default-icon-news.png"; import defaultNew from "../assets/images/default-icon-news.png";
import defaultBill from "./assets/images/image1.png" import defaultBill from "./assets/images/image1.png"
import { ElMessage } from "element-plus";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
// 跳转到人物页面 // 跳转到人物页面
const handleClickAvatar = item => { const handleClickAvatar = async item => {
window.sessionStorage.setItem('curTabName', item.name) if (!item?.id) return;
const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList") || "[]");
let type = 0;
let personTypeName = "";
const params = {
personId: item.id
};
try {
const res = await getPersonSummaryInfo(params);
if (res.code === 200 && res.data) {
const arr = personTypeList.filter(val => val.typeId === res.data.personType);
if (arr && arr.length > 0) {
personTypeName = arr[0].typeName;
if (personTypeName === "科技企业领袖") {
type = 1;
} else if (personTypeName === "国会议员") {
type = 2;
} else if (personTypeName === "智库研究人员") {
type = 3;
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
return;
}
window.sessionStorage.setItem("curTabName", item.name || "");
const routeData = router.resolve({ const routeData = router.resolve({
path: "/characterPage", path: "/characterPage",
query: { query: {
type,
personId: item.id personId: item.id
} }
}); });
window.open(routeData.href, "_blank"); window.open(routeData.href, "_blank");
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
}
} else {
ElMessage.warning("找不到当前人员的类型值!");
}
} catch (error) {}
}; };
// 获取URL地址里面的billId // 获取URL地址里面的billId
const billId = ref(route.query.billId); const billId = ref(route.query.billId);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论