|
@@ -44,40 +44,119 @@
|
|
|
</div>
|
|
|
<div class="thr">
|
|
|
<div class="thr_1">
|
|
|
- <BorderBox13 class="boxall boxall_1" title="产业链图谱">
|
|
|
- <div class="title center">
|
|
|
- <div class="titleRight">产业链图谱</div>
|
|
|
+ <div class="boxall_1">
|
|
|
+ <BorderBox13 class="boxall boxall_1_1" title="产业分布">
|
|
|
+ <div class="title center">
|
|
|
+ <div class="titleRight">产业分布</div>
|
|
|
+ </div>
|
|
|
+ <div class="select">
|
|
|
+ <div class="select_1">
|
|
|
+ <div class="select_left">指标:</div>
|
|
|
+ <div class="select_right">
|
|
|
+ <el-select v-model="form.industry" clearable placeholder="请选择" style="width: 14rem" :teleported="false">
|
|
|
+ <el-option v-for="(item, index) in industryList" :key="index" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="select_1">
|
|
|
+ <div class="select_left">对比对象:</div>
|
|
|
+ <div class="select_right">
|
|
|
+ <el-cascader placeholder="请选择" v-model="form.area" :props="{ value: 'label', label: 'label' }" :options="cityList" style="width: 14rem" :teleported="false" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <echarts1></echarts1>
|
|
|
+ </BorderBox13>
|
|
|
+ <BorderBox13 class="boxall boxall_1_2" title="产业人才">
|
|
|
+ <div class="title center">
|
|
|
+ <div class="titleRight">产业人才</div>
|
|
|
+ </div>
|
|
|
+ <div class="list flex">
|
|
|
+ <div class="list_1" v-for="(item, index) in list_1" :key="index">
|
|
|
+ <div class="titleList">{{ item.name || '暂无' }}</div>
|
|
|
+ <div class="num">{{ item.total || '暂无' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </BorderBox13>
|
|
|
+ </div>
|
|
|
+ <div class="boxall boxall_2" title="关系图谱">
|
|
|
+ <div class="title">
|
|
|
+ <div class="titleRight">关系图谱</div>
|
|
|
</div>
|
|
|
- </BorderBox13>
|
|
|
+ </div>
|
|
|
+ <div class="boxall_3">
|
|
|
+ <BorderBox13 class="boxall boxall_3_1" title="院士">
|
|
|
+ <div class="title">
|
|
|
+ <div class="titleRight">院士</div>
|
|
|
+ <div class="titleleft">搜索</div>
|
|
|
+ </div>
|
|
|
+ <div class="list flex">
|
|
|
+ <div class="list_2" v-for="(item, index) in list_4" :key="index">
|
|
|
+ <div class="list_title">{{ item.name || '暂无' }}</div>
|
|
|
+ <div class="list_school">{{ item.school || '暂无' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </BorderBox13>
|
|
|
+ <BorderBox13 class="boxall boxall_3_2" title="成果完成人">
|
|
|
+ <div class="title center">
|
|
|
+ <div class="titleRight">成果完成人</div>
|
|
|
+ </div>
|
|
|
+ </BorderBox13>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="thr_2">
|
|
|
- <BorderBox13 class="boxall boxall_2" title="完整性">
|
|
|
+ <BorderBox13 class="boxall boxall_4" title="国内人才分布">
|
|
|
<div class="title">
|
|
|
- <div class="titleRight">完整性</div>
|
|
|
+ <div class="titleRight">国内人才分布</div>
|
|
|
</div>
|
|
|
+ <map1></map1>
|
|
|
</BorderBox13>
|
|
|
- <BorderBox13 class="boxall boxall_3" title="安全性">
|
|
|
+ <BorderBox13 class="boxall boxall_5" title="上市公司人才">
|
|
|
<div class="title center">
|
|
|
- <div class="titleRight">安全性</div>
|
|
|
+ <div class="titleRight">上市公司人才</div>
|
|
|
</div>
|
|
|
- </BorderBox13>
|
|
|
- <BorderBox13 class="boxall boxall_4" title="韧性">
|
|
|
- <div class="title">
|
|
|
- <div class="titleRight">韧性</div>
|
|
|
- <div class="titleLeft">更多</div>
|
|
|
+ <div class="table">
|
|
|
+ <div class="table-head">
|
|
|
+ <div class="label" v-for="(item, index) in column" :key="index" :style="item.style">
|
|
|
+ {{ item.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="table-value">
|
|
|
+ <div class="value" v-for="(item, index) in list_2" :key="index">
|
|
|
+ <div class="table-colunm">{{ index + 1 }}</div>
|
|
|
+ <div class="table-colunm textOne">{{ item.company || '暂无' }}</div>
|
|
|
+ <div class="table-colunm textOne">{{ item.name || '暂无' }}</div>
|
|
|
+ <div class="table-colunm textOne">{{ item.gender || '暂无' }}</div>
|
|
|
+ <div class="table-colunm textOne">{{ item.education || '暂无' }}</div>
|
|
|
+ <div class="table-colunm textOne">{{ item.title || '暂无' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="total">
|
|
|
+ <el-pagination background layout="prev, pager, next" :total="total" :page-size="limit" v-model:current-page="currentPage" @current-change="changePage" @size-change="sizeChange" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</BorderBox13>
|
|
|
- <BorderBox13 class="boxall boxall_5" title="稳定性">
|
|
|
- <div class="title">
|
|
|
- <div class="titleRight">稳定性</div>
|
|
|
- <div class="titleLeft">更多</div>
|
|
|
+ <BorderBox13 class="boxall boxall_6" title="职业技术人才">
|
|
|
+ <div class="title center">
|
|
|
+ <div class="titleRight">职业技术人才</div>
|
|
|
</div>
|
|
|
+ <echarts2></echarts2>
|
|
|
</BorderBox13>
|
|
|
- <BorderBox13 class="boxall boxall_6" title="可靠性">
|
|
|
+ <BorderBox13 class="boxall boxall_7" title="专家舆情">
|
|
|
<div class="title">
|
|
|
- <div class="titleRight">可靠性</div>
|
|
|
+ <div class="titleRight">专家舆情</div>
|
|
|
<div class="titleLeft">更多</div>
|
|
|
</div>
|
|
|
+ <div class="list">
|
|
|
+ <div class="list_3" v-for="(item, index) in list_3" :key="index">
|
|
|
+ <div class="list_title textOne">
|
|
|
+ <span>{{ item.name || '暂无' }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="list_person" v-if="item.person">
|
|
|
+ <span>{{ item.person || '暂无' }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</BorderBox13>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -89,7 +168,10 @@
|
|
|
<script setup>
|
|
|
import { BorderBox13 } from '@dataview/datav-vue3'
|
|
|
import myMain from '@/components/dataV/myMain.vue'
|
|
|
-// 图片引入
|
|
|
+// 组件
|
|
|
+import echarts1 from './four/echarts1.vue'
|
|
|
+import echarts2 from './four/echarts2.vue'
|
|
|
+import map1 from './four/map.vue'
|
|
|
import { UserStore } from '@/store/user'
|
|
|
import { getCity } from '@/utils/city'
|
|
|
const userStore = UserStore()
|
|
@@ -110,6 +192,45 @@ const list = ref([
|
|
|
{ label: '营商环境监测', route: '/brain/five' },
|
|
|
{ label: '优质企业梯度培育', route: '/brain/six' }
|
|
|
])
|
|
|
+const list_1 = ref([
|
|
|
+ { name: '标准专家', total: 24 },
|
|
|
+ { name: '获奖完成人', total: 8 },
|
|
|
+ { name: '院士', total: 2 },
|
|
|
+ { name: '项目完成人', total: 257 }
|
|
|
+])
|
|
|
+const column = ref([
|
|
|
+ { name: '序号', style: { width: '16.5%' }, key: 'key' },
|
|
|
+ { name: '公司名称', style: { width: '16.5%' }, key: 'company' },
|
|
|
+ { name: '姓名', style: { width: '16.5%' }, key: 'name' },
|
|
|
+ { name: '性别', style: { width: '16.5%' }, key: 'gender' },
|
|
|
+ { name: '学历', style: { width: '16.5%' }, key: 'education' },
|
|
|
+ { name: '职务', style: { width: '16.5%' }, key: 'title' }
|
|
|
+])
|
|
|
+// 列表
|
|
|
+const list_2 = ref([
|
|
|
+ { company: '长春×××公司', name: '丁建中', gender: '男', education: '硕士', title: '总经理' },
|
|
|
+ { company: '长春×××公司', name: '丁建中', gender: '男', education: '硕士', title: '总经理' },
|
|
|
+ { company: '长春×××公司', name: '丁建中', gender: '男', education: '硕士', title: '总经理' },
|
|
|
+ { company: '长春×××公司', name: '丁建中', gender: '男', education: '硕士', title: '总经理' }
|
|
|
+])
|
|
|
+let skip = 0
|
|
|
+let limit = 15
|
|
|
+const total = ref(0)
|
|
|
+// 科技舆情
|
|
|
+const list_3 = ref([
|
|
|
+ { name: '长春市发展改革委关于长春慧天云网新能源开始实时改革…', person: '长春市政策-发改委', time: '2024-06-27' },
|
|
|
+ { name: '长春市发展改革委关于长春慧天云网新能源开始实时改革…', person: '长春市政策-发改委', time: '2024-06-27' },
|
|
|
+ { name: '长春市发展改革委关于长春慧天云网新能源开始实时改革…', person: '长春市政策-发改委', time: '2024-06-27' },
|
|
|
+ { name: '长春市发展改革委关于长春慧天云网新能源开始实时改革…', person: '长春市政策-发改委', time: '2024-06-27' }
|
|
|
+])
|
|
|
+const list_4 = ref([
|
|
|
+ { name: '颜德岳', school: '吉林大学' },
|
|
|
+ { name: '颜德岳', school: '吉林大学' },
|
|
|
+ { name: '颜德岳', school: '吉林大学' },
|
|
|
+ { name: '颜德岳', school: '吉林大学' },
|
|
|
+ { name: '颜德岳', school: '吉林大学' },
|
|
|
+ { name: '颜德岳', school: '吉林大学' }
|
|
|
+])
|
|
|
// 字典表
|
|
|
const cityList = ref([])
|
|
|
const industryList = ref([{ label: '智能网联汽车', value: '0' }])
|
|
@@ -227,41 +348,60 @@ const toView = (item) => {
|
|
|
}
|
|
|
}
|
|
|
.thr {
|
|
|
- display: flex;
|
|
|
width: 100%;
|
|
|
height: 89%;
|
|
|
.thr_1 {
|
|
|
- width: 50%;
|
|
|
- height: 100%;
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ height: 65%;
|
|
|
.boxall_1 {
|
|
|
- width: 100%;
|
|
|
+ width: 25%;
|
|
|
height: 100%;
|
|
|
+ .boxall_1_1 {
|
|
|
+ width: 100%;
|
|
|
+ height: 60%;
|
|
|
+ }
|
|
|
+ .boxall_1_2 {
|
|
|
+ width: 100%;
|
|
|
+ height: 40%;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- .thr_2 {
|
|
|
- display: flex;
|
|
|
- flex-wrap: wrap;
|
|
|
- width: 50%;
|
|
|
- height: 100%;
|
|
|
.boxall_2 {
|
|
|
width: 50%;
|
|
|
- height: 35%;
|
|
|
+ height: 100%;
|
|
|
}
|
|
|
.boxall_3 {
|
|
|
- width: 50%;
|
|
|
- height: 35%;
|
|
|
+ width: 25%;
|
|
|
+ height: 100%;
|
|
|
+ .boxall_3_1 {
|
|
|
+ width: 100%;
|
|
|
+ height: 50%;
|
|
|
+ }
|
|
|
+ .boxall_3_2 {
|
|
|
+ width: 100%;
|
|
|
+ height: 50%;
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
+ .thr_2 {
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ height: 35%;
|
|
|
.boxall_4 {
|
|
|
- width: 50%;
|
|
|
- height: 35%;
|
|
|
+ width: 25%;
|
|
|
+ height: 100%;
|
|
|
}
|
|
|
.boxall_5 {
|
|
|
- width: 50%;
|
|
|
- height: 35%;
|
|
|
+ width: 35%;
|
|
|
+ height: 100%;
|
|
|
}
|
|
|
.boxall_6 {
|
|
|
- width: 100%;
|
|
|
- height: 30%;
|
|
|
+ width: 20%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ .boxall_7 {
|
|
|
+ width: 20%;
|
|
|
+ height: 100%;
|
|
|
}
|
|
|
}
|
|
|
.boxall {
|
|
@@ -270,7 +410,8 @@ const toView = (item) => {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
background-color: rgba($color: #18459d, $alpha: 0.3);
|
|
|
- padding: 0.8rem;
|
|
|
+ padding: 0.4rem;
|
|
|
+ font-size: 1.2rem;
|
|
|
border-bottom: 0.3rem solid #18459d;
|
|
|
-webkit-animation: twinkling 2s infinite ease-in-out; /*1秒钟的开始结束都慢的无限次动画*/
|
|
|
}
|
|
@@ -295,6 +436,112 @@ const toView = (item) => {
|
|
|
0 1px 0 rgb(56, 201, 226);
|
|
|
}
|
|
|
}
|
|
|
+ .select {
|
|
|
+ margin: 0.5rem 0;
|
|
|
+ .select_1 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin: 0 0 0.5rem 0;
|
|
|
+ .select_left {
|
|
|
+ width: 5rem;
|
|
|
+ margin: 0 0.2rem 0 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .list {
|
|
|
+ margin: 0.5rem 0 0 0;
|
|
|
+ height: 80%;
|
|
|
+ width: 100%;
|
|
|
+ .list_1 {
|
|
|
+ background: url(/images/brain/title-bg.png);
|
|
|
+ background-size: 100% 100%;
|
|
|
+ height: 45%;
|
|
|
+ width: 25%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ color: #ffffff;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ }
|
|
|
+ .list_2 {
|
|
|
+ height: 45%;
|
|
|
+ width: 31.5%;
|
|
|
+ background-color: rgba($color: #75f9fd, $alpha: 0.3);
|
|
|
+ padding: 0.5rem;
|
|
|
+ margin: 0.5rem 0.5rem 0 0;
|
|
|
+ .list_title {
|
|
|
+ margin: 0.5rem 0;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ color: #75f9fd;
|
|
|
+ }
|
|
|
+ .list_school {
|
|
|
+ font-size: 1rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .list_2:nth-child(3n) {
|
|
|
+ margin: 0.5rem 0 0 0;
|
|
|
+ }
|
|
|
+ .list_3 {
|
|
|
+ width: 100%;
|
|
|
+ .list_title {
|
|
|
+ margin: 0.5rem 0;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ color: #75f9fd;
|
|
|
+ }
|
|
|
+ .list_person {
|
|
|
+ font-size: 1rem;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .flex {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ .table {
|
|
|
+ width: 100%;
|
|
|
+ height: 88%;
|
|
|
+ margin: 0.5rem 0;
|
|
|
+ .table-head {
|
|
|
+ width: 100%;
|
|
|
+ height: 15%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ background-color: rgba(255, 255, 255, 0.1);
|
|
|
+ padding: 0.5rem 0;
|
|
|
+ .label {
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .table-value {
|
|
|
+ width: 100%;
|
|
|
+ height: 75%;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ .value {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 0.5rem 0;
|
|
|
+ .table-colunm {
|
|
|
+ width: 16.5%;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .value:nth-child(2n) {
|
|
|
+ background-color: rgba(255, 255, 255, 0.1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .total {
|
|
|
+ width: 100%;
|
|
|
+ height: 10%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -338,5 +585,17 @@ const toView = (item) => {
|
|
|
color: #fff !important;
|
|
|
margin: 0 0.7vh !important;
|
|
|
}
|
|
|
+ :deep(.el-pagination.is-background .btn-prev:disabled) {
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
+ color: #ffffff !important;
|
|
|
+ }
|
|
|
+ :deep(.el-pagination.is-background .btn-next:disabled) {
|
|
|
+ background-color: rgba($color: #ffffff, $alpha: 0.1) !important;
|
|
|
+ color: #ffffff !important;
|
|
|
+ }
|
|
|
+ :deep(.el-pagination.is-background .el-pager li.is-active) {
|
|
|
+ background-color: #4d5b87 !important;
|
|
|
+ color: #ffffff !important;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|