|
@@ -3,7 +3,7 @@
|
|
<el-row>
|
|
<el-row>
|
|
<el-col :span="24" class="animate__animated animate__backInRight" v-loading="loading">
|
|
<el-col :span="24" class="animate__animated animate__backInRight" v-loading="loading">
|
|
<div class="head">
|
|
<div class="head">
|
|
- <div class="head_1">孵化基地管理驾驶舱</div>
|
|
|
|
|
|
+ <div class="head_1">{{ info.name || '孵化器基地' }}管理驾驶舱</div>
|
|
<div class="head_2" id="showTime">{{ formattedTime }}</div>
|
|
<div class="head_2" id="showTime">{{ formattedTime }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="center">
|
|
<div class="center">
|
|
@@ -11,21 +11,12 @@
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<div class="center_1">
|
|
<div class="center_1">
|
|
<div class="boxall">
|
|
<div class="boxall">
|
|
- <div class="alltitle">孵化进度</div>
|
|
|
|
- <echarts3></echarts3>
|
|
|
|
- </div>
|
|
|
|
- <div class="boxall">
|
|
|
|
- <div class="alltitle">孵化项目列表</div>
|
|
|
|
- <div class="wraptit"><span>项目名称</span><span>金额</span><span>风险概率</span><span>时间</span></div>
|
|
|
|
- <div class="one">
|
|
|
|
- <vue3-seamless-scroll :list="oneList" :hover="true" :step="0.2" :wheel="true" :isWatch="true" class="scroll">
|
|
|
|
- <div class="wrap" v-for="(item, index) in oneList" :key="index">
|
|
|
|
- <div class="other">{{ item.name }}</div>
|
|
|
|
- <div class="other">{{ item.money }}</div>
|
|
|
|
- <div class="other">{{ item.number }}</div>
|
|
|
|
- <div class="other">{{ item.time }}</div>
|
|
|
|
- </div>
|
|
|
|
- </vue3-seamless-scroll>
|
|
|
|
|
|
+ <div class="alltitle">孵化基地汇总</div>
|
|
|
|
+ <!-- <echarts3></echarts3> -->
|
|
|
|
+ <div class="center_list">
|
|
|
|
+ <div class="list_num" v-for="(item, index) in thrList" :key="index">
|
|
|
|
+ {{ item.num }}<span>{{ item.name }}</span>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="boxall">
|
|
<div class="boxall">
|
|
@@ -36,7 +27,7 @@
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<div class="center_1">
|
|
<div class="center_1">
|
|
- <div class="boxall" style="height: 170px">
|
|
|
|
|
|
+ <div class="boxall" style="height: 175px">
|
|
<div class="clearfix navboxall" style="height: 100%">
|
|
<div class="clearfix navboxall" style="height: 100%">
|
|
<div class="pulll_left num">
|
|
<div class="pulll_left num">
|
|
<div class="numbt">总体情况<span>(单位:家)</span></div>
|
|
<div class="numbt">总体情况<span>(单位:家)</span></div>
|
|
@@ -44,36 +35,36 @@
|
|
</div>
|
|
</div>
|
|
<div class="pulll_right zhibiao">
|
|
<div class="pulll_right zhibiao">
|
|
<div class="zb1">
|
|
<div class="zb1">
|
|
- <span>工研院运营</span>
|
|
|
|
|
|
+ <span>从业人员</span>
|
|
<echarts5></echarts5>
|
|
<echarts5></echarts5>
|
|
</div>
|
|
</div>
|
|
<div class="zb2">
|
|
<div class="zb2">
|
|
- <span>参股孵化基地</span>
|
|
|
|
|
|
+ <span>高新技术企业</span>
|
|
<echarts6></echarts6>
|
|
<echarts6></echarts6>
|
|
</div>
|
|
</div>
|
|
<div class="zb3">
|
|
<div class="zb3">
|
|
- <span>合作孵化基地</span>
|
|
|
|
|
|
+ <span>专精特新企业</span>
|
|
<echarts7></echarts7>
|
|
<echarts7></echarts7>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="boxall">
|
|
<div class="boxall">
|
|
- <div class="alltitle">年度项目完成对比</div>
|
|
|
|
- <echarts2></echarts2>
|
|
|
|
|
|
+ <div class="alltitle">孵化基地荣誉</div>
|
|
|
|
+ <echarts4></echarts4>
|
|
</div>
|
|
</div>
|
|
<div class="boxall">
|
|
<div class="boxall">
|
|
- <div class="alltitle">投资收益对比</div>
|
|
|
|
- <echarts4></echarts4>
|
|
|
|
|
|
+ <div class="alltitle">孵化基地企业产业占比</div>
|
|
|
|
+ <echarts2></echarts2>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
<div class="center_1">
|
|
<div class="center_1">
|
|
<div class="boxall bottom">
|
|
<div class="boxall bottom">
|
|
- <div class="alltitle">视频监控</div>
|
|
|
|
|
|
+ <div class="alltitle">孵化基地风采</div>
|
|
<div v-for="(item, index) in twoList" :key="index">
|
|
<div v-for="(item, index) in twoList" :key="index">
|
|
- <el-image class="image" :src="item.url" fit="fill" />
|
|
|
|
|
|
+ <el-image class="image" :src="getUrl(item.uri)" fit="fill" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -86,6 +77,15 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
|
+// 用户信息
|
|
|
|
+import { UserStore } from '@/store/user'
|
|
|
|
+const userStore = UserStore()
|
|
|
|
+const user = computed(() => userStore.user)
|
|
|
|
+// 接口
|
|
|
|
+import { IncubatorStore } from '@/store/api/user/incubator'
|
|
|
|
+import { IncubatorYearStore } from '@/store/api/user/incubatorYear'
|
|
|
|
+const incubatorStore = IncubatorStore()
|
|
|
|
+const yearStore = IncubatorYearStore()
|
|
import echarts1 from './path/echarts1.vue'
|
|
import echarts1 from './path/echarts1.vue'
|
|
import echarts2 from './path/echarts2.vue'
|
|
import echarts2 from './path/echarts2.vue'
|
|
import echarts3 from './path/echarts3.vue'
|
|
import echarts3 from './path/echarts3.vue'
|
|
@@ -112,12 +112,34 @@ import video_3 from '/images/video_3.jpg'
|
|
import video_4 from '/images/video_4.jpg'
|
|
import video_4 from '/images/video_4.jpg'
|
|
const twoList = ref([{ url: video_1 }, { url: video_2 }, { url: video_3 }, { url: video_4 }])
|
|
const twoList = ref([{ url: video_1 }, { url: video_2 }, { url: video_3 }, { url: video_4 }])
|
|
|
|
|
|
|
|
+const thrList = ref([
|
|
|
|
+ { num: 266, name: '中试场地' },
|
|
|
|
+ { num: 266, name: '单位人数' },
|
|
|
|
+ { num: 266, name: '省级导师数' },
|
|
|
|
+ { num: 266, name: '开展活动总数' },
|
|
|
|
+ { num: 266, name: '参加活动人次' },
|
|
|
|
+ { num: 266, name: '合作孵化基地' },
|
|
|
|
+ { num: 266, name: '开展活动总数' },
|
|
|
|
+ { num: 266, name: '参加活动人次' },
|
|
|
|
+ { num: 266, name: '合作孵化基地' }
|
|
|
|
+])
|
|
|
|
+const info = ref({})
|
|
// 请求
|
|
// 请求
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
loading.value = true
|
|
loading.value = true
|
|
|
|
+ await search()
|
|
await updateTime()
|
|
await updateTime()
|
|
loading.value = false
|
|
loading.value = false
|
|
})
|
|
})
|
|
|
|
+const search = async () => {
|
|
|
|
+ if (user.value.id) {
|
|
|
|
+ let res = await incubatorStore.query({ user: user.value.id })
|
|
|
|
+ if (res.errcode == '0') {
|
|
|
|
+ info.value = res.data[0]
|
|
|
|
+ if (res.data[0].file && res.data[0].file.length > 0) twoList.value = res.data[0].file
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
// 创建一个函数来格式化时间并更新状态
|
|
// 创建一个函数来格式化时间并更新状态
|
|
const updateTime = () => {
|
|
const updateTime = () => {
|
|
const now = new Date()
|
|
const now = new Date()
|
|
@@ -142,6 +164,9 @@ onMounted(() => {
|
|
onBeforeUnmount(() => {
|
|
onBeforeUnmount(() => {
|
|
clearInterval(timer) // 组件卸载前清除计时器
|
|
clearInterval(timer) // 组件卸载前清除计时器
|
|
})
|
|
})
|
|
|
|
+const getUrl = (item) => {
|
|
|
|
+ if (item) return `${import.meta.env.VITE_APP_HOST}${item}`
|
|
|
|
+}
|
|
</script>
|
|
</script>
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
.elevenHatch {
|
|
.elevenHatch {
|
|
@@ -197,6 +222,64 @@ onBeforeUnmount(() => {
|
|
position: relative;
|
|
position: relative;
|
|
margin-bottom: 10px;
|
|
margin-bottom: 10px;
|
|
z-index: 10;
|
|
z-index: 10;
|
|
|
|
+ .center_list {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
+ .list_num {
|
|
|
|
+ position: relative;
|
|
|
|
+ width: 120px;
|
|
|
|
+ height: 120px;
|
|
|
|
+ line-height: 100%;
|
|
|
|
+ margin: 5px auto;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ font-size: 32px;
|
|
|
|
+ font-family: electronicFont;
|
|
|
|
+ color: #fef000;
|
|
|
|
+ span {
|
|
|
|
+ color: #fff !important;
|
|
|
|
+ font-size: 16px !important;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .list_num:before {
|
|
|
|
+ position: absolute;
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ content: '';
|
|
|
|
+ background: url(../elevenHatch/images/img1.png) center center;
|
|
|
|
+ border-radius: 100px;
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
+ opacity: 0.1;
|
|
|
|
+ left: 0;
|
|
|
|
+ top: 0;
|
|
|
|
+ animation: myfirst2 15s infinite linear;
|
|
|
|
+ }
|
|
|
|
+ .list_num:after {
|
|
|
|
+ position: absolute;
|
|
|
|
+ width: 86%;
|
|
|
|
+ background: url(../elevenHatch/images/img2.png) center center;
|
|
|
|
+ border-radius: 100px;
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
+ opacity: 0.1;
|
|
|
|
+ height: 86%;
|
|
|
|
+ content: '';
|
|
|
|
+ left: 7%;
|
|
|
|
+ top: 7%;
|
|
|
|
+ animation: myfirst 15s infinite linear;
|
|
|
|
+ }
|
|
|
|
+ @keyframes myfirst {
|
|
|
|
+ to {
|
|
|
|
+ transform: rotate(-360deg);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ @keyframes myfirst2 {
|
|
|
|
+ to {
|
|
|
|
+ transform: rotate(360deg);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
.bottom {
|
|
.bottom {
|
|
margin-bottom: 0;
|
|
margin-bottom: 0;
|