116 lines
2.9 KiB
Vue
116 lines
2.9 KiB
Vue
<template>
|
||
<Card title="进度任务">
|
||
<div class="tabs">
|
||
<div :class="['tab', { checked: activeTab == 0 }]" @click="handleTabClick(0)">待办事项</div>
|
||
<div :class="['tab', { checked: activeTab == 1 }]" @click="handleTabClick(1)">未来提醒</div>
|
||
</div>
|
||
<div class="list" style="position: relative;">
|
||
<vue-scroll v-if="todoList.length">
|
||
<div class="list-item" v-for="(item, i) in todoList" :key="i">
|
||
<div class="todo">{{ item.subitemProjectName }}</div>
|
||
<div class="startTime">
|
||
<span class="grey">计划开始时间:</span><span class="blue">{{ item.startTime }}</span>
|
||
</div>
|
||
<div class="endTime">
|
||
<span class="grey">计划结束时间:</span><span class="blue">{{ item.endTime }}</span>
|
||
</div>
|
||
<div class="delay orange" v-if="item.deferreddays > 0">已延期 {{ item.deferreddays }} 天</div>
|
||
</div>
|
||
</vue-scroll>
|
||
<div v-else class="empty" style="position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);">
|
||
<img src="@/assets/images/noData3.png">
|
||
<div style="text-align: center;color: #5b626b;font-size: 14px;">暂无数据</div>
|
||
</div>
|
||
</div>
|
||
</Card>
|
||
</template>
|
||
|
||
<script>
|
||
import { listProgressOfTheTask } from '@/assets/js/api/zhongjianFourth'
|
||
import { mapState } from 'vuex'
|
||
|
||
import Card from '../components/Card.vue'
|
||
export default {
|
||
components: { Card },
|
||
data() {
|
||
return {
|
||
// 激活的tab
|
||
activeTab: 0,
|
||
// 待办事项列表
|
||
todoList: [],
|
||
}
|
||
},
|
||
created() {
|
||
this.getList()
|
||
},
|
||
computed: {
|
||
...mapState(['projectSn'])
|
||
},
|
||
methods: {
|
||
/** 查询待办事项列表 */
|
||
getList() {
|
||
if (this.activeTab == 0) {
|
||
listProgressOfTheTask({ projectSn: this.projectSn, state: 1 }).then(res => {
|
||
console.log('查询待办事项列表: ', res);
|
||
this.todoList = res.result;
|
||
})
|
||
} else {
|
||
listProgressOfTheTask({ projectSn: this.projectSn, state: 0 }).then(res => {
|
||
console.log('查询未来提醒列表: ', res);
|
||
this.todoList = res.result;
|
||
})
|
||
}
|
||
},
|
||
/** tab点击事件 */
|
||
handleTabClick(index) {
|
||
if (this.activeTab == index) return
|
||
this.activeTab = index;
|
||
this.getList()
|
||
},
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="less" scoped>
|
||
.tabs {
|
||
display: flex;
|
||
color: #fff;
|
||
.tab {
|
||
width: 100px;
|
||
height: 40px;
|
||
line-height: 40px;
|
||
text-align: center;
|
||
cursor: pointer;
|
||
&.checked {
|
||
color: #2de1fa;
|
||
}
|
||
}
|
||
}
|
||
.list {
|
||
padding-left: 20px;
|
||
height: calc(100% - 40px);
|
||
color: #fff;
|
||
.list-item {
|
||
&:not(:last-child) {
|
||
margin-bottom: 30px;
|
||
}
|
||
div {
|
||
&:not(:first-child) {
|
||
font-size: 12px;
|
||
margin-top: 6px;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.grey {
|
||
color: #ccc;
|
||
}
|
||
.blue {
|
||
color: #2de1fa;
|
||
}
|
||
.orange {
|
||
color: #f56c36;
|
||
}
|
||
</style>
|