<template>
|
<el-row justify="space-between">
|
<el-text>单日计划</el-text>
|
<div>
|
<el-button
|
type="success"
|
size="small"
|
plain
|
@click="handleInspectFileDownload"
|
>单据下载</el-button
|
>
|
<el-button
|
v-show="create && data && data.length > 0"
|
type="success"
|
size="small"
|
@click="add"
|
>任务调整</el-button
|
>
|
</div>
|
</el-row>
|
<el-divider />
|
<div>
|
<el-scrollbar v-loading="loading" :height="height">
|
<el-space
|
v-if="data && data.length > 0"
|
fill
|
:fill-ratio="100"
|
direction="vertical"
|
style="width: 100%"
|
>
|
<ItemSubTask v-for="s in data" :key="s.guid" :item="s">
|
<template #default="{ item }">
|
<el-space direction="vertical">
|
<el-button
|
:disabled="item.status != '未执行'"
|
plain
|
type="primary"
|
size="small"
|
@click="edit(item)"
|
>编辑</el-button
|
>
|
<el-button
|
:disabled="item.status != '未执行'"
|
type="default"
|
size="small"
|
@click="remove(item)"
|
>移除</el-button
|
>
|
</el-space>
|
</template>
|
</ItemSubTask>
|
</el-space>
|
<div v-else>
|
<el-empty description="无任务记录" />
|
<el-row v-if="create" justify="center">
|
<el-button
|
type="success"
|
size="small"
|
:loading="createLoading"
|
@click="add"
|
>添加任务</el-button
|
>
|
</el-row>
|
</div>
|
</el-scrollbar>
|
</div>
|
<el-dialog
|
v-model="dialogVisible"
|
width="600"
|
title="巡查任务编辑"
|
destroy-on-close
|
:close-on-click-modal="false"
|
:close-on-press-escape="false"
|
:show-close="false"
|
>
|
<CompSubTaskEdit
|
v-model="activeItem"
|
@submit="onEditSubmit"
|
@cancel="dialogVisible = false"
|
></CompSubTaskEdit>
|
</el-dialog>
|
<SceneInspectFile v-model="downloadDialog" :value="downloadSceneList"></SceneInspectFile>
|
</template>
|
<script setup>
|
import { ref, computed, watch, onMounted, onUnmounted } from 'vue';
|
import { ElMessageBox, ElNotification, ElMessage } from 'element-plus';
|
import CompSubTaskEdit from './CompSubTaskEdit.vue';
|
import SceneInspectFile from "@/views/fysp/scene/SceneInspectFile.vue";
|
import subtaskApi from '@/api/fysp/subtaskApi';
|
|
const props = defineProps({
|
modelValue: Array,
|
height: {
|
type: String,
|
default: '70vh'
|
},
|
// 是否显示添加任务按钮
|
create: Boolean,
|
loading: Boolean,
|
createLoading: Boolean
|
});
|
|
const dialogVisible = ref(false);
|
const activeItem = ref(null);
|
const data = computed(() => props.modelValue);
|
const downloadDialog = ref(false);
|
const downloadSceneList = ref([])
|
|
const emit = defineEmits(['submit', 'add', 'remove', 'update:modelValue']);
|
|
function remove(item) {
|
if (item.status == '未执行') {
|
ElMessageBox.confirm('是否移除监管任务', `移除确认`, {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
return subtaskApi.deleteSubtask(item.stguid).then((res) => {
|
if (res == 1) {
|
const index = data.value.indexOf(item);
|
data.value.splice(index, 1);
|
|
emit('update:modelValue', data.value);
|
emit('remove', item);
|
} else {
|
Promise.reject('删除巡查任务失败');
|
}
|
});
|
});
|
}
|
}
|
|
function edit(item) {
|
activeItem.value = item;
|
dialogVisible.value = true;
|
}
|
|
function onEditSubmit(item) {
|
dialogVisible.value = false;
|
const index = data.value.findIndex((v) => {
|
return item.stguid == v.stguid;
|
});
|
data.value.splice(index, 1, item);
|
emit('update:modelValue', data.value);
|
emit('submit');
|
}
|
|
function add() {
|
emit('add');
|
}
|
|
onUnmounted(() => {
|
dialogVisible.value = false;
|
});
|
|
function handleInspectFileDownload() {
|
downloadSceneList.value = data.value.map(v=>v.scenseid)
|
downloadDialog.value = true
|
}
|
</script>
|