riku
2024-10-24 3d3e7f45086799fdd7a412e2079710a6cdf8dc2b
src/views/fysp/task/TaskManage.vue
@@ -1,7 +1,7 @@
<template>
  <BaseContentLayout>
    <template #header>
      <FYSearchBar @search="search">
      <!-- <FYSearchBar @search="search">
        <template #options>
          <FYOptionLocation
            :allOption="true"
@@ -10,7 +10,7 @@
            v-model:value="formSearch.locations"
          ></FYOptionLocation>
        </template>
      </FYSearchBar>
      </FYSearchBar> -->
    </template>
    <template #aside>
      <SideList
@@ -32,14 +32,36 @@
        v-loading="mainLoading"
      >
        <el-row justify="space-between">
          <div><el-text>监管计划</el-text></div>
          <!-- <div><el-text>监管计划</el-text></div>
          <el-button type="warning" size="small" @click="editPlan"
            >计划调整</el-button
          >
          <CompMonitorPlan
            :task="curTask.data"
            @date-change="onDateChange"
          ></CompMonitorPlan>
          > -->
          <el-tabs model-value="first">
            <el-tab-pane label="监管计划" name="first">
              <el-row>
                <el-col :span="curSubTaskList ? 16 : 24">
                  <CompMonitorPlan
                    ref="planRef"
                    :task="curTask.data"
                    @date-change="onDateChange"
                  ></CompMonitorPlan>
                </el-col>
                <el-col v-if="curSubTaskList" :span="8">
                  <CompSubTaskList
                    create
                    v-model="curSubTaskList"
                    :loading="subTaskLoading"
                    height="56vh"
                    @add="subTaskDrawer = true"
                    @submit="handleSubtaskSubmit"
                  ></CompSubTaskList>
                </el-col>
              </el-row>
            </el-tab-pane>
            <!-- <el-tab-pane label="监管地图" name="second">
              <CompTaskMap></CompTaskMap>
            </el-tab-pane> -->
          </el-tabs>
        </el-row>
        <el-divider></el-divider>
        <el-row justify="space-between">
@@ -50,18 +72,46 @@
        </el-row>
        <CompMonitorObj :data="curMonitorObjList"></CompMonitorObj>
      </el-scrollbar>
      <el-empty v-else description="暂无记录" v-loading="mainLoading" />
      <div v-else>
        <el-empty description="暂无记录" v-loading="mainLoading" />
        <el-row v-if="!mainLoading" justify="center">
          <el-button
            type="primary"
            size="default"
            @click="navToTaskCreate(curTask.data)"
            >添加监管场景</el-button
          >
        </el-row>
      </div>
    </template>
  </BaseContentLayout>
  <el-drawer
    v-model="subTaskDrawer"
    title="单日计划"
    title="日计划管理"
    direction="btt"
    size="80%"
    size="96%"
    destroy-on-close
  >
    <CompDayTask :day-task="curDayTask"></CompDayTask>
    <CompDayTask
      :day-task="curDayTask"
      :mObjList="curMonitorObjList"
      @submit="handleSubtaskSubmit"
    ></CompDayTask>
  </el-drawer>
  <el-dialog
    v-model="topTaskAddVisible"
    width="600"
    title="一键创建总任务"
    destroy-on-close
    :close-on-click-modal="false"
    :close-on-press-escape="false"
    :show-close="false"
  >
    <CompTaskEdit
      @submit="navToTaskCreate"
      @cancel="topTaskAddVisible = false"
    ></CompTaskEdit>
  </el-dialog>
</template>
<script>
@@ -69,6 +119,9 @@
import CompMonitorObj from './components/CompMonitorObj.vue';
import CompMonitorPlan from './components/CompMonitorPlan.vue';
import CompDayTask from './components/CompDayTask.vue';
import CompTaskMap from './components/CompTaskMap.vue';
import CompTaskEdit from './components/CompTaskEdit.vue';
import CompSubTaskList from './components/CompSubTaskList.vue';
export default {
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被验证前调用
@@ -77,10 +130,19 @@
    next((vm) => {
      if (from.name == 'monitorObjEdit' && vm.task) {
        vm.chooseTask(vm.task);
      } else if (from.name == 'monitorTaskCreate') {
        vm.search();
      }
    });
  },
  components: { CompMonitorObj, CompMonitorPlan, CompDayTask },
  components: {
    CompMonitorObj,
    CompMonitorPlan,
    CompDayTask,
    CompTaskMap,
    CompTaskEdit,
    CompSubTaskList
  },
  data() {
    return {
      formSearch: {
@@ -103,10 +165,13 @@
      curTask: {},
      //操作按钮
      buttons: [
        // {
        //   name: '计划调整',
        //   color: 'success'
        // },
        {
          name: '一键创建总任务',
          color: 'success',
          click: () => {
            this.topTaskAddVisible = true;
          }
        }
        // {
        //   name: '场景调整',
        //   color: 'warning'
@@ -115,7 +180,12 @@
      // 子任务编辑弹出框
      subTaskDrawer: false,
      // 当前选择的日任务
      curDayTask: {}
      curDayTask: {},
      // 当前选择的日任务下的子任务
      curSubTaskList: undefined,
      subTaskLoading: false,
      // 总任务新增弹出框
      topTaskAddVisible: false
    };
  },
  computed: {
@@ -174,11 +244,12 @@
      this.task = task;
      this.sideLoading = false;
      this.mainLoading = true;
      this.curSubTaskList = undefined;
      this.curTask = task;
      taskApi
        .fetchMonitorObjectVersion(task.data.tguid)
        .then((res) => {
          this.curMonitorObjList = res;
          this.curTask = task;
        })
        .finally(() => {
          this.mainLoading = false;
@@ -203,8 +274,34 @@
      });
    },
    onDateChange(dayTask) {
      this.subTaskDrawer = true;
      this.curDayTask = dayTask;
      if (dayTask) {
        this.subTaskLoading = true;
        // this.subTaskDrawer = true;
        this.curDayTask = dayTask;
        taskApi
          .fetchSubtaskByDayTask(dayTask.guid)
          .then((res) => {
            this.curSubTaskList = res;
          })
          .finally(() => (this.subTaskLoading = false));
      } else {
        this.curSubTaskList = [];
      }
    },
    navToTaskCreate(value) {
      this.topTaskAddVisible = false;
      this.$router.push({
        name: 'monitorTaskCreate',
        query: {
          task: encodeURIComponent(JSON.stringify(value))
        }
      });
    },
    handleSubtaskSubmit() {
      this.subTaskLoading = true;
      this.$refs.planRef
        .fetchDayTasks()
        .finally(() => (this.subTaskLoading = false));
    }
  },
  mounted() {
@@ -221,6 +318,6 @@
}
.el-scrollbar {
  height: calc((100vh - 60px * 2 - 20px * 2 - var(--height-toolbar)));
  height: calc((100vh - 60px - 20px * 2 - var(--height-toolbar)));
}
</style>