|
|
@ -1,11 +1,12 @@ |
|
|
|
<template> |
|
|
|
<view class="px-3 pb-10"> |
|
|
|
<view class="px-3 py-5"> |
|
|
|
<view :key="index" v-for="(item, index) in tasks"> |
|
|
|
<view class="flex items-center"> |
|
|
|
<view class="flex"> |
|
|
|
<TimeStatus :content="JSON.stringify(item.process)" :status="item.process" /> |
|
|
|
<view class="flex justify-between flex-1 ml-2"> |
|
|
|
<view>{{ +item.planStart | date('mm-dd hh:MM') }}</view> |
|
|
|
<!-- {{ item.planDuration }} --> |
|
|
|
<view class="flex justify-between items-center flex-1 ml-2"> |
|
|
|
<view> |
|
|
|
<span>{{ $moment(+item.planStart).format('MM-DD HH:mm') }}</span> |
|
|
|
</view> |
|
|
|
<view> |
|
|
|
<view class="flex justify-between" style="min-width: 180rpx"> |
|
|
|
<u-icon custom-prefix="custom-icon" name="C-bxl-redux" size="34"></u-icon> |
|
|
@ -17,20 +18,34 @@ |
|
|
|
</view> |
|
|
|
<view class="border-l-2 border-gray-300 ml-3.5 my-2"> |
|
|
|
<view class="ml-4 overflow-hidden shadow-lg task-box"> |
|
|
|
<u-card :show-foot="false" :show-head="false" :style="{ height: setHeight(item.panel) }" class="h-16" margin="0"> |
|
|
|
<u-card |
|
|
|
:show-foot="false" |
|
|
|
:show-head="false" |
|
|
|
:style="{ height: setHeight(item.panel) }" |
|
|
|
@click="changeTimeNode(item.planStart)" |
|
|
|
class="h-16" |
|
|
|
margin="0" |
|
|
|
v-if="item.plugins && item.plugins.length" |
|
|
|
> |
|
|
|
<!-- 任务面板插件 --> |
|
|
|
<view slot="body"> |
|
|
|
<view :key="pluginIndex" class="p-0 u-col-between u-skeleton" v-for="(plugin, pluginIndex) in item.plugins"> |
|
|
|
<!-- <view :key="p.pluginId" v-for="p in plugin"> |
|
|
|
<p-task-title :item="item" v-if="p.pluginId === 1" /> |
|
|
|
<p-task-description :item="item" v-if="p.pluginId === 2" /> |
|
|
|
<p-task-duration-delay :item="item" v-if="p.pluginId === 3" /> |
|
|
|
<p-task-start-time-delay :item="item" v-if="p.pluginId === 4" /> |
|
|
|
<p-deliverable :item="item" v-if="p.pluginId === 5" /> |
|
|
|
<p-subtasks :item="item" v-if="p.pluginId === 6" /> |
|
|
|
<p-subproject :item="item" v-if="p.pluginId === 7" /> |
|
|
|
<p-task-countdown :item="item" v-if="p.pluginId === 8" /> |
|
|
|
</view>--> |
|
|
|
<view v-if="!item.plugins && !item.plugins.length && taskLoading"> |
|
|
|
<skeleton :banner="false" :loading="true" :row="4" animate class="mt-2 u-line-2 skeleton"></skeleton> |
|
|
|
</view> |
|
|
|
<view class="p-0 u-col-between" v-else> |
|
|
|
<view :key="pIndex" v-for="(p, pIndex) in item.plugins"> |
|
|
|
<view class="grid gap-2" v-if="p.length"> |
|
|
|
<Plugin |
|
|
|
:class="getClass(plugin.colspan, plugin.rowspan)" |
|
|
|
:item="item" |
|
|
|
:key="pluginIndex" |
|
|
|
:pluginId="plugin.pluginId" |
|
|
|
:styleType="styleType" |
|
|
|
@changeLoading="taskLoading = false" |
|
|
|
v-for="(plugin, pluginIndex) in p" |
|
|
|
/> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</u-card> |
|
|
@ -44,12 +59,13 @@ |
|
|
|
<script> |
|
|
|
import { mapState, mapMutations } from 'vuex'; |
|
|
|
import TimeStatus from './TimeStatus.vue'; |
|
|
|
import Skeleton from '@/components/Skeleton/Skeleton'; |
|
|
|
|
|
|
|
export default { |
|
|
|
name: 'TimeBox', |
|
|
|
components: { TimeStatus }, |
|
|
|
components: { TimeStatus, Skeleton }, |
|
|
|
data() { |
|
|
|
return { currentComponent: '' }; |
|
|
|
return { currentComponent: '', styleType: 0, taskLoading: true }; |
|
|
|
}, |
|
|
|
|
|
|
|
computed: mapState('home', ['roleId', 'timeNode', 'timeUnit', 'tasks']), |
|
|
@ -57,7 +73,7 @@ export default { |
|
|
|
created() {}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
...mapMutations('home', ['setTipsContent', 'setTipsContent']), |
|
|
|
...mapMutations('home', ['setTipsContent', 'setTipsContent', 'setTimeNode']), |
|
|
|
|
|
|
|
// 设置任务面板高度 |
|
|
|
setHeight(panel) { |
|
|
@ -67,6 +83,16 @@ export default { |
|
|
|
return 'auto'; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击任务面板 修改store时间基准点 |
|
|
|
changeTimeNode(time) { |
|
|
|
this.setTimeNode(time); |
|
|
|
}, |
|
|
|
|
|
|
|
// 设置网格布局 |
|
|
|
getClass(col, row) { |
|
|
|
return [`row-span-${row}`, `col-span-${col}`]; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|