|
|
|
|
@ -143,11 +143,12 @@
|
|
|
|
|
<!-- 地图区域 -->
|
|
|
|
|
<div class="map-container warehouse-table">
|
|
|
|
|
<div class="map-title">
|
|
|
|
|
<div style="font-size: 1.1vw; font-weight: bold; color: #93ccfd;">学员分布地图</div>
|
|
|
|
|
<div class="map-tabs">
|
|
|
|
|
<div class="tab" :class="{ active: mapType === 'suzhou' }" @click="mapType = 'suzhou'">苏州</div>
|
|
|
|
|
<div class="tab" :class="{ active: mapType === 'national' }" @click="mapType = 'national'">全国</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div style="font-size: 1.1vw; font-weight: bold; color: #fff;" v-if="mapType == 'suzhou'">校友分布</div>
|
|
|
|
|
<!-- <div style="font-size: 1.1vw; font-weight: bold; color: #fff;" v-if="mapType == 'suzhou'">校友分布</div> -->
|
|
|
|
|
</div>
|
|
|
|
|
<div class="map-chart-wrapper">
|
|
|
|
|
<div class="suzhou-map-wrapper" v-show="mapType === 'suzhou'">
|
|
|
|
|
@ -367,14 +368,10 @@ export default {
|
|
|
|
|
// 动态信息
|
|
|
|
|
activeTab: 'alumni',
|
|
|
|
|
newsTabs: [
|
|
|
|
|
{ key: 'alumni', label: '校友动态' },
|
|
|
|
|
{ key: 'industry', label: '业界动态' },
|
|
|
|
|
{ key: 'needs', label: '校友需求' }
|
|
|
|
|
{ key: 'alumni', label: '校友动态' }
|
|
|
|
|
],
|
|
|
|
|
newsData: {
|
|
|
|
|
alumni: [],
|
|
|
|
|
industry: [],
|
|
|
|
|
needs: []
|
|
|
|
|
alumni: []
|
|
|
|
|
},
|
|
|
|
|
scrollTimer: null
|
|
|
|
|
}
|
|
|
|
|
@ -703,14 +700,6 @@ export default {
|
|
|
|
|
if (res.article.xiaoyou && Array.isArray(res.article.xiaoyou)) {
|
|
|
|
|
this.newsData.alumni = res.article.xiaoyou.map(item => item.title || '')
|
|
|
|
|
}
|
|
|
|
|
// 业界动态
|
|
|
|
|
if (res.article.yejie && Array.isArray(res.article.yejie)) {
|
|
|
|
|
this.newsData.industry = res.article.yejie.map(item => item.title || '')
|
|
|
|
|
}
|
|
|
|
|
// 校友需求
|
|
|
|
|
if (res.article.supply_demands && Array.isArray(res.article.supply_demands)) {
|
|
|
|
|
this.newsData.needs = res.article.supply_demands.map(item => item.title || '')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 处理课程体系数据 - 从 yearConfigs 获取
|
|
|
|
|
if (res && res.yearConfigs && Array.isArray(res.yearConfigs)) {
|
|
|
|
|
@ -737,7 +726,7 @@ export default {
|
|
|
|
|
this.courseSystemList = courseList
|
|
|
|
|
this.courseSystemTotal = { name: '累计', sessions: totalSessions, people: totalPeople }
|
|
|
|
|
}
|
|
|
|
|
// 处理苏州地图及排行数据
|
|
|
|
|
// 处理苏州地图及排行数据(直接使用 home-v2.suzhou)
|
|
|
|
|
if (res && res.suzhou && Array.isArray(res.suzhou)) {
|
|
|
|
|
// 后端字段 company_area(区域名称),company_total(校友数量)
|
|
|
|
|
// 与现有 name 对应关系中,部分字段需要特殊映射
|
|
|
|
|
@ -752,10 +741,10 @@ export default {
|
|
|
|
|
}, {})
|
|
|
|
|
|
|
|
|
|
res.suzhou.forEach(item => {
|
|
|
|
|
const rawName = item.area || ''
|
|
|
|
|
const rawName = item.area || item.company_area || ''
|
|
|
|
|
const mappedName = nameMap[rawName] || rawName
|
|
|
|
|
if (baseMap[mappedName]) {
|
|
|
|
|
baseMap[mappedName].value = item.total || 0
|
|
|
|
|
baseMap[mappedName].value = item.total_unique || item.total || item.company_total || 0
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
@ -1926,43 +1915,41 @@ export default {
|
|
|
|
|
|
|
|
|
|
.news-container {
|
|
|
|
|
flex: 4;
|
|
|
|
|
background: rgba(6, 19, 54, 0.85);
|
|
|
|
|
border: 1px solid rgba(71, 148, 255, 0.35);
|
|
|
|
|
background: linear-gradient(135deg, rgba(59, 130, 246, 0.2) 0%, rgba(99, 102, 241, 0.1) 100%);
|
|
|
|
|
border: 1px solid rgba(59, 130, 246, 0.3);
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
padding: 1vh 1vw;
|
|
|
|
|
padding: 3.4vh 1.5vw !important;
|
|
|
|
|
min-height: 0;
|
|
|
|
|
gap: 1vh!important;
|
|
|
|
|
gap: 1.5vh !important;
|
|
|
|
|
backdrop-filter: blur(10px);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.news-tabs {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
gap: 1.5vw;
|
|
|
|
|
// margin-bottom: 1vh;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
gap: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.news-tab {
|
|
|
|
|
flex: 1;
|
|
|
|
|
flex: 0 0 auto;
|
|
|
|
|
text-align: center;
|
|
|
|
|
padding: 0.6vh 0.5vw;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
color: #fff;
|
|
|
|
|
border-radius: 2vw;
|
|
|
|
|
border:1px solid #3185ed;
|
|
|
|
|
// background: rgba(30, 60, 120, 0.4);
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
padding: 0;
|
|
|
|
|
cursor: default;
|
|
|
|
|
border: none;
|
|
|
|
|
background: transparent;
|
|
|
|
|
font-size: 1.3vw;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
color: #93ccfd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.news-tab.active {
|
|
|
|
|
color: #fff;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
background: #3185ed;
|
|
|
|
|
box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4);
|
|
|
|
|
color: #93ccfd;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
background: transparent;
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.news-content {
|
|
|
|
|
@ -1983,7 +1970,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.news-item {
|
|
|
|
|
color: #e7f5ff;
|
|
|
|
|
color: #fff;
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|