移动端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

169 lines
3.9 KiB

<template>
<scroll-view scroll-y flex-enable class="view-container">
<view
class="box"
@tap="goDetail(task)"
v-for="task in list"
:key="task.id"
>
<view class="wd-font-bold" style="color: #071437">
{{ task.title }}
</view>
<view class="tagList">
<view class="tag" v-if="task.deptName">
{{ task.deptName }}
</view>
<view class="tag" v-if="task.priority">
{{ $dict.echoDicValue(dictMap.task_priority, task.priority) }}
</view>
<view
v-for="(tag, index) in task.tagList"
:key="index"
class="tag"
>
{{ tag }}
</view>
</view>
<view
class="wd-flex wd-text-13"
style="justify-content: space-between"
>
<view class="wd-flex" style="align-items: center; gap: 8rpx">
<u-icon name="calendar" color="#17C653" />
<text class="wd-text-13 wd-ml-4px" style="color: #252f4a">
{{
`${$util.formatDate(
task.startDate,
'YYYY/M/D'
)} ~ ${$util.formatDate(task.endDate, 'YYYY/M/D')}`
}}
</text>
</view>
</view>
<cs-text-more :value="task.description"></cs-text-more>
<view class="status">
<cs-dict-tag
:dict="dictMap.task_state"
:value="task.status"
></cs-dict-tag>
</view>
</view>
<u-loadmore
:status="load"
marginTop="12"
marginBottom="12"
v-if="load != 'nomore'"
/>
</scroll-view>
</template>
<script>
import { getDictBatchByType } from '@/api/system/dict.js'
import { getTaskList } from '@/api/enterprise/index.js'
export default {
data() {
return {
queryParams: {
enterpriseId: '',
pageNo: 1,
pageSize: 10
},
list: [],
dictMap: {},
load: 'loadmore'
}
},
onLoad(res) {
uni.setNavigationBarTitle({
title: res.enterprisesName
})
this.queryParams.enterpriseId = res.enterprisesId
this.getDict()
this.getList()
},
onReachBottom() {
this.loadMore()
},
onPullDownRefresh() {
this.reset()
},
methods: {
/**
* 获取字典
*/
async getDict() {
const dict = await getDictBatchByType({
type: ['task_state', 'task_priority'].join(',')
})
this.dictMap = {
...dict.data
}
},
async getList() {
uni.showToast({
title: '加载中',
mask: true,
icon: 'loading'
})
this.load = 'loading'
const res = await getTaskList(this.queryParams)
this.list.push(...res.data.list)
this.load = 'loadmore'
if (this.list.length == res.data.total) {
this.load = 'nomore'
}
uni.hideToast()
},
loadMore() {
if (this.load == 'nomore') {
uni.showToast({
title: '没有更多了',
icon: 'none'
})
return
}
this.queryParams.pageNo++
this.getList()
},
reset() {
this.queryParams.pageNo = 1
this.getList()
},
goDetail(task) {
console.log(task)
uni.navigateTo({
url: `/sub/inspection/record?taskId=${task.inspectionsId}&taskName=${task.title}`
})
}
}
}
</script>
<style lang="scss" scoped>
.view-container {
padding: 24rpx;
flex-direction: column;
white-space: nowrap;
.box {
border-radius: 24rpx;
padding: 24rpx;
display: flex;
flex-direction: column;
gap: 24rpx;
background-color: #fff;
position: relative;
margin-bottom: 24rpx;
overflow: hidden;
.status {
position: absolute;
right: -19px;
top: 6px;
transform: rotateZ(45deg) translateX(20px) translateY(-20px);
transform-origin: 50% 50%;
padding: 4px 20px;
font-size: 24rpx;
text-align: center;
}
}
}
</style>