|
|
@ -3,31 +3,32 @@ |
|
|
|
<div class="wrap overflow-hidden"> |
|
|
|
<a-card title="任务目标"> |
|
|
|
<div class="flex flex-wrap justify-center"> |
|
|
|
<div class="achievements border-right text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border border-right border-bottom text-center"> |
|
|
|
<p class="num">{{ infoOne.thesis }}/{{ infoOne.totalThesis }}</p> |
|
|
|
<p class="name">论文</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-bottom text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border border-bottom text-center"> |
|
|
|
<p class="num">{{ infoOne.patent }}/{{ infoOne.totalPatent }}</p> |
|
|
|
<p class="name">专利</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-top text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border border-right text-center"> |
|
|
|
<p class="num">{{ infoOne.theSoft }}/{{ infoOne.totalTheSoft }}</p> |
|
|
|
<p class="name">软著</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-left text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border text-center"> |
|
|
|
<p class="num">{{ infoOne.meeting }}/{{ infoOne.totalMeeting }}</p> |
|
|
|
<p class="name">会议</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</a-card> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="wrap overflow-hidden"> |
|
|
|
<a-card title="概览"> |
|
|
|
<div class="topic"> |
|
|
|
<p>脑卒中远程康复与健康监护系统</p> |
|
|
|
<p>{{ infoOne.name }}</p> |
|
|
|
<a-progress |
|
|
|
:percent="30" |
|
|
|
:percent="infoOne.masterSchedule" |
|
|
|
:strokeWidth="22" |
|
|
|
:show-info="false" |
|
|
|
:stroke-color="'#1890FF'" |
|
|
@ -36,69 +37,37 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="sub-topic flex justify-between flex-wrap"> |
|
|
|
<div class="topic"> |
|
|
|
<p>穿戴式运动捕获单元</p> |
|
|
|
<a-progress |
|
|
|
:percent="30" |
|
|
|
:strokeWidth="22" |
|
|
|
:show-info="false" |
|
|
|
:stroke-color="colorList[0].color" |
|
|
|
:trail-color="colorList[0].bgColor" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="topic"> |
|
|
|
<p>穿戴式康复数据手套</p> |
|
|
|
<div class="topic" v-for="(item, index) in infoSec" :key="index"> |
|
|
|
<p>{{ item.name }}</p> |
|
|
|
<a-progress |
|
|
|
:percent="30" |
|
|
|
:percent="item.masterSchedule" |
|
|
|
:strokeWidth="22" |
|
|
|
:show-info="false" |
|
|
|
:stroke-color="colorList[1].color" |
|
|
|
:trail-color="colorList[1].bgColor" |
|
|
|
:stroke-color="colorList[index % 4].color" |
|
|
|
:trail-color="colorList[index % 4].bgColor" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</a-card> |
|
|
|
</div> |
|
|
|
<div class="wrap overflow-hidden"> |
|
|
|
<a-card title="穿戴式运动捕获单元"> |
|
|
|
<div class="flex flex-wrap justify-center"> |
|
|
|
<div class="achievements border-right text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<p class="name">论文</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-bottom text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<p class="name">专利</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-top text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<p class="name">软著</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-left text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<p class="name">会议</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</a-card> |
|
|
|
</div> |
|
|
|
<div class="wrap overflow-hidden"> |
|
|
|
<a-card title="穿戴式康复数据手套"> |
|
|
|
|
|
|
|
<div class="wrap overflow-hidden" v-for="(item, index) in infoSec" :key="index"> |
|
|
|
<a-card :title="item.name"> |
|
|
|
<div class="flex flex-wrap justify-center"> |
|
|
|
<div class="achievements border-right text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border border-right border-bottom text-center"> |
|
|
|
<p class="num">{{ item.thesis }}/{{ item.totalThesis }}</p> |
|
|
|
<p class="name">论文</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-bottom text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border border-bottom text-center"> |
|
|
|
<p class="num">{{ item.patent }}/{{ item.totalPatent }}</p> |
|
|
|
<p class="name">专利</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-top text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border border-right text-center"> |
|
|
|
<p class="num">{{ item.theSoft }}/{{ item.totalTheSoft }}</p> |
|
|
|
<p class="name">软著</p> |
|
|
|
</div> |
|
|
|
<div class="achievements border-left text-center"> |
|
|
|
<p class="num">1/6</p> |
|
|
|
<div class="achievements border text-center"> |
|
|
|
<p class="num">{{ item.meeting }}/{{ item.totalMeeting }}</p> |
|
|
|
<p class="name">会议</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -108,17 +77,40 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script setup> |
|
|
|
// import { computed, watch, ref } from 'vue'; |
|
|
|
import { ref } from 'vue'; |
|
|
|
import { ref, computed } from 'vue'; |
|
|
|
import { getExperimentProgress } from 'apis'; |
|
|
|
import { useStore } from 'vuex'; |
|
|
|
|
|
|
|
// import { useStore } from 'vuex'; |
|
|
|
const store = useStore(); |
|
|
|
const sessionProject = sessionStorage.getItem('project'); |
|
|
|
const projectId = computed(() => store.getters['projects/projectId']); |
|
|
|
const infoOne = ref({}); |
|
|
|
const infoSec = ref([]); |
|
|
|
|
|
|
|
// const store = useStore(); |
|
|
|
if (sessionProject) { |
|
|
|
const project = JSON.parse(sessionProject); |
|
|
|
store.commit('projects/setProject', project); |
|
|
|
} |
|
|
|
|
|
|
|
const colorList = ref([ |
|
|
|
{ color: '#FF9191', bgColor: 'rgba(255, 145, 145, 0.2)' }, |
|
|
|
{ color: '#FF934B', bgColor: 'rgba(255, 147, 75, 0.2)' }, |
|
|
|
{ color: '#B991FF', bgColor: 'rgba(185, 145, 255, 0.2)' }, |
|
|
|
{ color: '#91C1FF', bgColor: 'rgba(145, 193, 255, 0.2)' }, |
|
|
|
]); |
|
|
|
|
|
|
|
progress(); |
|
|
|
|
|
|
|
async function progress() { |
|
|
|
try { |
|
|
|
const params = { param: { projectId: projectId.value } }; |
|
|
|
const data = await getExperimentProgress(params); |
|
|
|
infoOne.value = data.target; |
|
|
|
infoSec.value = data.subTargetList; |
|
|
|
} catch (error) { |
|
|
|
console.log('error', error); |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style scoped> |
|
|
@ -160,22 +152,20 @@ const colorList = ref([ |
|
|
|
margin: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.border { |
|
|
|
border-color: #fff; |
|
|
|
} |
|
|
|
.border-right { |
|
|
|
border-right: 1px solid #cccccc; |
|
|
|
margin-right: -1px; |
|
|
|
border-right-color: #cccccc; |
|
|
|
} |
|
|
|
|
|
|
|
.border-left { |
|
|
|
border-left: 1px solid #cccccc; |
|
|
|
border-left-color: #cccccc; |
|
|
|
} |
|
|
|
|
|
|
|
.border-top { |
|
|
|
border-top: 1px solid #cccccc; |
|
|
|
margin-top: -1px; |
|
|
|
border-top-color: #cccccc; |
|
|
|
} |
|
|
|
|
|
|
|
.border-bottom { |
|
|
|
border-bottom: 1px solid #cccccc; |
|
|
|
border-bottom-color: #cccccc; |
|
|
|
} |
|
|
|
|
|
|
|
.achievements { |
|
|
|