<template>
|
<div class="task oa-bgcolor">
|
<div class="header">
|
<el-button
|
type="primary"
|
class="new-btn"
|
@click="newBtn">新建任务</el-button>
|
<el-tabs
|
v-model="activeName"
|
@tab-click="handleClick">
|
<el-tab-pane
|
v-for="(item, index) in tabData"
|
:label="item.label"
|
:name="item.key"
|
:key="index">
|
<my-task
|
v-loading="loading"
|
:list="listData"
|
:list-type="item.key"
|
:ref="item.key"
|
:sub-user-list-data="subUserListData"
|
:load-more-loading="loadMoreLoading"
|
@selectChange="selectChange">
|
<div
|
slot="searchInput"
|
class="search-input">
|
<el-input
|
v-model="searchValue"
|
size="medium"
|
placeholder="搜索任务名称"
|
suffix-icon="el-icon-search"
|
@input="searchChange"/>
|
</div>
|
</my-task>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
<!-- 新增任务弹出框 newDialog-->
|
<new-dialog
|
:new-dialog-visible="dialogVisible"
|
:new-loading="newLoading"
|
@handleClose="handleClose"
|
@dialogVisibleSubmit="dialogVisibleSubmit"/>
|
</div>
|
</template>
|
|
<script>
|
import myTask from './components/myTask'
|
import newDialog from './components/newDialog'
|
// import { taskListAPI, addTask } from '@/api/oamanagement/task'
|
// import { usersList } from '@/api/common'
|
|
export default {
|
components: {
|
myTask,
|
newDialog
|
},
|
data () {
|
return {
|
activeName: 'mytask',
|
activePramas: { status: '1', priority: '' },
|
tabData: [
|
{ label: '我的任务', key: 'mytask' },
|
{ label: '我下属的任务', key: 'subtask' }
|
],
|
listData: [],
|
// 新建
|
dialogVisible: false,
|
newLoading: false,
|
loading: true,
|
// 输入框搜索
|
searchValue: '',
|
// 负责人
|
subUserListData: [],
|
// 页数
|
pageNum: 1,
|
loadText: '加载更多',
|
loadMoreLoading: true,
|
// 判断是否在请求数据
|
isPost: false
|
}
|
},
|
watch: {
|
$route (to, from) {
|
this.$router.go(0)
|
}
|
},
|
beforeRouteUpdate (to, from, next) {
|
if (to.query.routerKey === 1) {
|
this.newBtn()
|
}
|
next()
|
},
|
created () {
|
if (this.$route.query.routerKey === 1) {
|
this.newBtn()
|
}
|
// 负责人
|
this.subUserFun()
|
},
|
mounted () {
|
// 分批次加载
|
for (const dom of document.getElementsByClassName('list-box-container')) {
|
dom.onscroll = () => {
|
const scrollOff = dom.scrollTop + dom.clientHeight - dom.scrollHeight
|
// 滚动条到底部的条件
|
if (Math.abs(scrollOff) < 10 && this.loadMoreLoading === true) {
|
if (!this.isPost) {
|
this.isPost = true
|
this.pageNum++
|
this.getList()
|
} else {
|
this.loadMoreLoading = false
|
}
|
}
|
}
|
}
|
this.getList()
|
},
|
methods: {
|
// 负责人
|
subUserFun () {
|
// usersList({ pageType: 0 })
|
// .then(res => {
|
// this.subUserListData = res.data
|
// this.subUserListData.unshift({
|
// userId: '',
|
// realname: ' 全部'
|
// })
|
// })
|
// .catch(() => {})
|
},
|
handleClick () {
|
this.activePramas = this.$refs[this.activeName][0].fromData
|
this.refreshList()
|
},
|
newBtn () {
|
this.dialogVisible = true
|
},
|
// 新建关闭
|
handleClose (tip) {
|
if (tip === 'shortcut') {
|
this.$router.push('task')
|
} else {
|
if (this.$route.query.routerKey === 1) {
|
this.$router.go(-1)
|
} else {
|
this.dialogVisible = false
|
}
|
}
|
},
|
// 新建提交
|
dialogVisibleSubmit (val) {
|
this.newLoading = true
|
// addTask(val)
|
// .then(res => {
|
// this.refreshList()
|
// this.handleClose('shortcut')
|
// this.$message.success('新建成功')
|
// this.newLoading = false
|
// this.dialogVisible = false
|
// })
|
// .catch(() => {
|
// this.newLoading = false
|
// this.dialogVisible = false
|
// })
|
},
|
selectChange (data) {
|
const params = {
|
status: data.data.status,
|
type: data.data.type,
|
priority: data.data.priority,
|
date: data.data.date
|
}
|
if (data.type === 'subtask') {
|
params.userId = data.data.subUser
|
} else {
|
params.userId = ''
|
}
|
this.activePramas = params
|
|
this.refreshList()
|
},
|
refreshList () {
|
this.pageNum = 1
|
this.listData = []
|
this.loadMoreLoading = true
|
this.getList()
|
},
|
searchChange () {
|
this.refreshList()
|
},
|
getList () {
|
this.loading = true
|
var params = this.activePramas
|
params.limit = 15
|
params.page = this.pageNum
|
params.search = this.searchValue
|
if (this.activeName === 'subtask') {
|
params.mold = 1
|
}
|
// taskListAPI(params)
|
// .then(res => {
|
// for (const item of res.data.list) {
|
// if (item.status === 5) {
|
// item.checked = true
|
// }
|
// }
|
// this.listData = this.listData.concat(res.data.list)
|
|
// if (res.data.list.length < 15) {
|
// this.loadText = '没有更多了'
|
// this.loadMoreLoading = false
|
// } else {
|
// this.loadText = '加载更多'
|
// this.loadMoreLoading = true
|
// }
|
// this.isPost = false
|
// this.loading = false
|
// })
|
// .catch(() => {
|
// this.isPost = false
|
// this.loading = false
|
// })
|
}
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
@import '../styles/tabs.scss';
|
|
.task {
|
.header {
|
position: relative;
|
height: 100%;
|
.new-btn {
|
position: absolute;
|
top: 10px;
|
right: 40px;
|
z-index: 9;
|
}
|
.el-tabs {
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
}
|
.el-tabs /deep/ .el-tabs__content {
|
padding: 0 30px;
|
flex: 1;
|
margin-bottom: 20px;
|
.el-tab-pane {
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
overflow-y: hidden;
|
}
|
}
|
.search-input {
|
.el-input {
|
width: 328px;
|
}
|
}
|
}
|
}
|
</style>
|