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.
103 lines
3.1 KiB
103 lines
3.1 KiB
<template>
|
|
<view class="px-3 py-5">
|
|
<view :key="index" v-for="(item, index) in tasks">
|
|
<view class="flex">
|
|
<TimeStatus :content="JSON.stringify(item.process)" :status="item.process" />
|
|
<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>
|
|
<u-icon custom-prefix="custom-icon" name="attachment" size="42"></u-icon>
|
|
<u-icon custom-prefix="custom-icon" name="moneycollect" size="40"></u-icon>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</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) }"
|
|
@click="changeTimeNode(item.planStart)"
|
|
class="h-16"
|
|
margin="0"
|
|
v-if="item.plugins"
|
|
>
|
|
<!-- 任务面板插件 -->
|
|
<view slot="body">
|
|
<view v-if="!item.plugins.length">
|
|
<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.col, plugin.row)"
|
|
:item="item"
|
|
:key="plugin.pluginTaskId"
|
|
:pluginId="plugin.pluginId"
|
|
:styleType="styleType || 0"
|
|
v-for="plugin in p"
|
|
/>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</u-card>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<Tips />
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapState, mapMutations } from 'vuex';
|
|
import TimeStatus from './TimeStatus.vue';
|
|
import Skeleton from '@/components/Skeleton/Skeleton';
|
|
|
|
export default {
|
|
name: 'TimeBox',
|
|
components: { TimeStatus, Skeleton },
|
|
data() {
|
|
return { currentComponent: '', styleType: 0 };
|
|
},
|
|
|
|
computed: mapState('home', ['roleId', 'timeNode', 'timeUnit', 'tasks', 'taskLoading']),
|
|
|
|
created() {},
|
|
|
|
methods: {
|
|
...mapMutations('home', ['setTipsContent', 'setTipsContent', 'setTimeNode']),
|
|
|
|
// 设置任务面板高度
|
|
setHeight(panel) {
|
|
if (panel && panel.height) {
|
|
return panel.height + 'px';
|
|
} else {
|
|
return 'auto';
|
|
}
|
|
},
|
|
|
|
// 点击任务面板 修改store时间基准点
|
|
changeTimeNode(time) {
|
|
this.setTimeNode(time);
|
|
},
|
|
|
|
// 设置网格布局
|
|
getClass(col, row) {
|
|
return [`row-span-${row}`, `col-span-${col}`];
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.task-box {
|
|
border-radius: 24rpx;
|
|
}
|
|
</style>
|
|
|