riku
2024-10-18 c7bd6db3190ff5c4b55d004db0b9fa944604925f
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,32 @@
        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.length > 0 ? 16 : 24">
                  <CompMonitorPlan
                    :task="curTask.data"
                    @date-change="onDateChange"
                  ></CompMonitorPlan>
                </el-col>
                <el-col v-if="curSubTaskList.length > 0" :span="8">
                  <CompSubTaskList
                    :data="curSubTaskList"
                    height="56vh"
                    @add="subTaskDrawer = true"
                  ></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 +68,45 @@
        </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"
    ></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 +114,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 +125,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 +160,13 @@
      curTask: {},
      //操作按钮
      buttons: [
        // {
        //   name: '计划调整',
        //   color: 'success'
        // },
        {
          name: '一键创建总任务',
          color: 'success',
          click: () => {
            this.topTaskAddVisible = true;
          }
        }
        // {
        //   name: '场景调整',
        //   color: 'warning'
@@ -115,7 +175,11 @@
      // 子任务编辑弹出框
      subTaskDrawer: false,
      // 当前选择的日任务
      curDayTask: {}
      curDayTask: {},
      // 当前选择的日任务下的子任务
      curSubTaskList: [],
      // 总任务新增弹出框
      topTaskAddVisible: false
    };
  },
  computed: {
@@ -174,6 +238,7 @@
      this.task = task;
      this.sideLoading = false;
      this.mainLoading = true;
      this.curSubTaskList = []
      taskApi
        .fetchMonitorObjectVersion(task.data.tguid)
        .then((res) => {
@@ -203,8 +268,20 @@
      });
    },
    onDateChange(dayTask) {
      this.subTaskDrawer = true;
      // this.subTaskDrawer = true;
      this.curDayTask = dayTask;
      taskApi.fetchSubtaskByDayTask(dayTask.guid).then((res) => {
        this.curSubTaskList = res;
      });
    },
    navToTaskCreate(value) {
      this.topTaskAddVisible = false;
      this.$router.push({
        name: 'monitorTaskCreate',
        query: {
          task: encodeURIComponent(JSON.stringify(value))
        }
      });
    }
  },
  mounted() {
@@ -221,6 +298,6 @@
}
.el-scrollbar {
  height: calc((100vh - 60px * 2 - 20px * 2 - var(--height-toolbar)));
  height: calc((100vh - 60px - 20px * 2 - var(--height-toolbar)));
}
</style>