Browse Source

诊断任务管理

humingshi-7@163.com 11 tháng trước cách đây
mục cha
commit
ac41a15dd5

+ 23 - 3
src/api/iot/diagnoseMission.js

@@ -1,10 +1,10 @@
 import request from '@/utils/request'
 
 
-//列表
-export function list(query) {
+//摄像机关联列表
+export function cameraList(query) {
     return request({
-      url: '/iot/diagnoseMission/list',
+      url: '/iot/diagnoseMission/cameraList',
       method: 'post',
       data: query
     })
@@ -37,3 +37,23 @@ export function unbindMission(query) {
     data: query
   })
 }
+
+
+
+//任务管理列表
+export function list(query) {
+  return request({
+    url: '/iot/diagnoseMission/list',
+    method: 'get',
+    data: query
+  })
+}
+
+
+//删除任务
+export function deleteMission(missionId) {
+  return request({
+    url: `/iot/diagnoseMission/deleteMission/${missionId}`,
+    method: 'get'
+  })
+}

+ 41 - 321
src/views/iot/diagnoseMission/index.vue

@@ -1,339 +1,59 @@
 <template>
-  <div class="app-container">
-    <el-row :gutter="20">
-      <el-col :span="24" :xs="24">
-        <div class="main-right-box">
-          <div class="main-search-box">
-            <el-form
-              :model="queryParams"
-              ref="queryForm"
-              size="small"
-              :inline="true"
-              v-show="showSearch"
-            >
-              <el-form-item label="组织机构">
-                <org-tree
-                  v-model="queryParams.orgId"
-                  @defaultKey="getDefaultKey"
-                  @defaultOrg="getDefaultOrg"
-                  @checkChange="checkChange"
-                  @click="clickTreeNode"
-                  ref="orgTree"
-                ></org-tree>
-              </el-form-item>
-              <el-form-item label="设备名称" prop="deviceName">
-                <el-input
-                  v-model="queryParams.deviceName"
-                  clearable
-                  placeholder="请输入关键字"
-                  @keyup.enter.native="handleQuery"/>
-              </el-form-item>
-              <el-form-item label="绑定任务" prop="state">
-                <el-select
-                  v-model="queryParams.state" clearable
-                  label="绑定任务" placeholder="请选择绑定状态" prop="state">
-                  <el-option
-                    v-for="item in bindTypes"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"/>
-                </el-select>
-              </el-form-item>
-              <el-form-item label="任务名称" prop="missionCode">
-                <el-select
-                  v-model="queryParams.missionCode"
-                  clearable
-                  label="任务名称"
-                  placeholder="请选择任务名称"
-                  prop="missionCode"
-                >
-                  <el-option
-                    v-for="item in deviceTypes"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-form>
+  <div class="diagnoseMission app-container">
 
-            <el-row :gutter="10">
-              <el-col :span="1.5">
-                <el-button
-                  type="primary"
-                  icon="el-icon-search"
-                  size="mini"
-                  @click="handleQuery"
-                  >搜索
-                </el-button>
-              </el-col>
-              <el-col :span="1.5">
-                <el-button
-                  type="primary"
-                  icon="el-icon-refresh"
-                  size="mini"
-                  @click="resetQuery"
-                  >重置
-                </el-button>
-              </el-col>
-              <el-col :span="1.5">
-                <el-button
-                  type="primary"
-                  icon="el-icon-refresh"
-                  size="mini"
-                  @click="unbindMission()"
-                  >解绑任务
-                </el-button>
-              </el-col>
-              <el-col :span="1.5">
-                <el-button
-                  type="primary"
-                  icon="el-icon-refresh"
-                  size="mini"
-                  @click="bindMission()"
-                  >绑定任务
-                </el-button>
-              </el-col>
+    <el-tabs v-model="activeName" @tab-click="handleClick">
+      <el-tab-pane  label="任务关联摄像机" name="任务关联摄像机">
 
-              <el-col :span="1.5">
-                <el-button
-                  type="primary"
-                  icon="el-icon-download"
-                  size="mini"
-                  @click="handleExport"
-                >导出数据
-                </el-button>
-              </el-col>
+      </el-tab-pane>
+      <el-tab-pane label="任务管理" name="任务管理">
 
-              <right-toolbar
-                :showSearch.sync="showSearch"
-                @queryTable="getList"
-              ></right-toolbar>
-            </el-row>
-          </div>
+      </el-tab-pane>
+    </el-tabs>
+
+    <index-camera v-if="activeName==='任务关联摄像机'"></index-camera>
+    <index-mission  v-if="activeName==='任务管理'"></index-mission>
 
-          <el-table
-            v-loading="loading"
-            :data="dataList"
-            border
-            height="600"
-            size="small"
-          >
-          <el-table-column label="序号" type="index" align="center" width="70">
-          <template slot-scope="scope">
-            {{
-              (queryParams.pageNum - 1) * queryParams.pageSize +
-              scope.$index +
-              1
-            }}
-          </template>
-        </el-table-column>
-            <el-table-column label="地区" align="center" prop="firstOrgName" width="180"/>
-            <el-table-column label="行社名称" align="center" prop="secondOrgName" width="220"/>
-            <el-table-column label="所属机构" align="center" prop="orgName" width="220"/>
-            <el-table-column label="设备名称" align="center" prop="deviceName" width="300"/>
-            <el-table-column label="所属主机" align="center" prop="hostName" width="280"/>
-            <el-table-column label="任务" align="center" prop="missionName" width="380"/>
-          </el-table>
-          <pagination
-            v-show="total > 0"
-            :total="total"
-            :page.sync="queryParams.pageNum"
-            :limit.sync="queryParams.pageSize"
-            @pagination="getList"
-          />
-        </div>
-      </el-col>
-    </el-row>
-    <dialog-bind-mission ref="bindMissionDialog" @success="getList()"></dialog-bind-mission>
   </div>
 </template>
 
 <script>
-import { list,missionTypeList,unbindMission} from "@/api/iot/diagnoseMission";
-import DialogBindMission from "./dialog.bindMission.vue";
-import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
-import { mapGetters } from "vuex";
-import dayjs from "dayjs";
+import IndexCamera from './indexCamera'
+import IndexMission from './indexMission'
+
 export default {
-  components: { OrgTree,DialogBindMission },
-  name: "Task",
-  dicts: ["sys_org_type",'sensor_alarm_status','sensor_device_type'],
+  components:{
+    IndexCamera,
+    IndexMission
+  },
   data() {
     return {
-      bindTypes:[
-            {
-              value: '0',
-              label: '未绑定'
-            },
-            {
-              value: '1',
-              label: '已绑定'
-            }
-      ],
-      deviceTypes: [],
-      // 遮罩层
-      loading: false,
-      // 选中数组
-      ids: [],
-      // 非单个停用
-      single: true,
-      // 非多个停用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 1,
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        checkSub: true,
-        missionCode: null,
-        state: null,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {},
-      timeClearable: true,
-      showOverflowTooltip:true,
-      dataList:[],
+      activeName:'任务关联摄像机'
     };
   },
-  created() {
-    this.queryParams.orgId = this.$store.getters.orgId;
-    this.initDeviceTypeList();
-  },
-  computed: {
-    ...mapGetters(["orgId"]),
-  },
-  methods: {
-    initDeviceTypeList(){
-          missionTypeList()
-            .then((r) => {
-              // 使用 map 而不是 filter 进行数据转换
-              const transformedList = r.map((item) => ({
-                value: item.value,
-                label: item.label,
-                type: item.type,
-              }));
-
-              // 将转换后的数据推送到 this.deviceTypeList
-              this.deviceTypes.push(...transformedList);
-            })
-            .catch((error) => {
-              // 处理错误
-              console.error('Error fetching device type list:', error);
-            });
-    },
-    /** 查询列表 */
-    getList() {
-      this.loading = true;
-      list(this.queryParams).then((response) => {
-        this.dataList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消弹框
-    closeHandler() {
-      this.reset();
-    },
-    handleImport() {},
-    getDefaultOrg(org) {
-      this.orgName = org.name;
-      this.selectedOrgName = org.shortName;
-    },
+  methods:{
+    handleClick(){
 
-    getDefaultKey(key) {
-      this.queryParams.orgId = key;
-      this.getList();
-    },
-    checkChange(state) {
-      this.queryParams.checkSub = state;
-      this.handleQuery();
-    },
-    // 节点单击事件
-    clickTreeNode(data) {
-      this.queryParams.orgId = data.id;
-      this.orgName = data.name;
-      this.selectedOrgName = data.shortName;
-      this.handleQuery();
     },
-    /** 下穿状态改变*/
-    changeCheckBox() {
-      this.getList();
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        orgId: null,
-        orgPath: null,
-        orgName: null
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.queryParams.orgId = this.orgId;
-      this.selectedOrgName = this.orgName;
-      this.queryParams.checkSub = true;
-      this.queryParams.planStartTime = null;
-      this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub);
-      this.handleQuery();
-    },
-    /** 绑定任务 */
-    bindMission() {
-      this.$refs["bindMissionDialog"].show(this.queryParams, this.deviceTypes);
-    },
-    /** 解绑任务 */
-    unbindMission() {
-      this.loading = true;
-      unbindMission(this.queryParams).then((response) => {
-           this.loading = false;
-           this.getList();
-      });
-    },
-
-    /** 导出按钮操作 */
-    handleExport() {
-      if (this.total==null || this.total===0){
-        this.$modal.alert("暂无可用数据导出");
-        return;
-      }
-      if (this.total>50000){
-        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
-        return;
-      }
-      this.download(
-        "iot/sensor/export",
-        {
-          ...this.queryParams,
-        },
-        `${
-          this.selectedOrgName
-        }-${this.$tab.getCurrentTabName()}-${dayjs().format("YYYYMMDD")}.xlsx`
-      );
-    },
-  },
+  }
 };
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss">
+.diagnoseMission{
+  .el-tabs__header{
+    margin-bottom: 10px;
+    background-color: #fff;
+    padding: 0 10px;
+    box-shadow: 0 2px 8px #eee;
+
+  }
+  .el-tabs__nav-wrap::after{
+    background-color: #fff;
+  }
+  .el-tabs__item{
+    font-size: 16px;
+  }
+}
+</style>
+<style lang="scss" scoped>
+
+</style>

+ 339 - 0
src/views/iot/diagnoseMission/indexCamera.vue

@@ -0,0 +1,339 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <el-col :span="24" :xs="24">
+        <div class="main-right-box">
+          <div class="main-search-box">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+            >
+              <el-form-item label="组织机构">
+                <org-tree
+                  v-model="queryParams.orgId"
+                  @defaultKey="getDefaultKey"
+                  @defaultOrg="getDefaultOrg"
+                  @checkChange="checkChange"
+                  @click="clickTreeNode"
+                  ref="orgTree"
+                ></org-tree>
+              </el-form-item>
+              <el-form-item label="设备名称" prop="deviceName">
+                <el-input
+                  v-model="queryParams.deviceName"
+                  clearable
+                  placeholder="请输入关键字"
+                  @keyup.enter.native="handleQuery"/>
+              </el-form-item>
+              <el-form-item label="绑定任务" prop="state">
+                <el-select
+                  v-model="queryParams.state" clearable
+                  label="绑定任务" placeholder="请选择绑定状态" prop="state">
+                  <el-option
+                    v-for="item in bindTypes"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"/>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="任务名称" prop="missionCode">
+                <el-select
+                  v-model="queryParams.missionCode"
+                  clearable
+                  label="任务名称"
+                  placeholder="请选择任务名称"
+                  prop="missionCode"
+                >
+                  <el-option
+                    v-for="item in deviceTypes"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-form>
+
+            <el-row :gutter="10">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="mini"
+                  @click="handleQuery"
+                  >搜索
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-refresh"
+                  size="mini"
+                  @click="resetQuery"
+                  >重置
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-refresh"
+                  size="mini"
+                  @click="unbindMission()"
+                  >解绑任务
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-refresh"
+                  size="mini"
+                  @click="bindMission()"
+                  >绑定任务
+                </el-button>
+              </el-col>
+
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-download"
+                  size="mini"
+                  @click="handleExport"
+                >导出数据
+                </el-button>
+              </el-col>
+
+              <right-toolbar
+                :showSearch.sync="showSearch"
+                @queryTable="getList"
+              ></right-toolbar>
+            </el-row>
+          </div>
+
+          <el-table
+            v-loading="loading"
+            :data="dataList"
+            border
+            height="600"
+            size="small"
+          >
+          <el-table-column label="序号" type="index" align="center" width="70">
+          <template slot-scope="scope">
+            {{
+              (queryParams.pageNum - 1) * queryParams.pageSize +
+              scope.$index +
+              1
+            }}
+          </template>
+        </el-table-column>
+            <el-table-column label="地区" align="center" prop="firstOrgName" width="180"/>
+            <el-table-column label="行社名称" align="center" prop="secondOrgName" width="220"/>
+            <el-table-column label="所属机构" align="center" prop="orgName" width="220"/>
+            <el-table-column label="设备名称" align="center" prop="deviceName" width="300"/>
+            <el-table-column label="所属主机" align="center" prop="hostName" width="280"/>
+            <el-table-column label="任务" align="center" prop="missionName" width="380"/>
+          </el-table>
+          <pagination
+            v-show="total > 0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </el-col>
+    </el-row>
+    <dialog-bind-mission ref="bindMissionDialog" @success="getList()"></dialog-bind-mission>
+  </div>
+</template>
+
+<script>
+import { cameraList,missionTypeList,unbindMission} from "@/api/iot/diagnoseMission";
+import DialogBindMission from "./dialog.bindMission.vue";
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
+import { mapGetters } from "vuex";
+import dayjs from "dayjs";
+export default {
+  components: { OrgTree,DialogBindMission },
+  name: "Task",
+  dicts: ["sys_org_type",'sensor_alarm_status','sensor_device_type'],
+  data() {
+    return {
+      bindTypes:[
+            {
+              value: '0',
+              label: '未绑定'
+            },
+            {
+              value: '1',
+              label: '已绑定'
+            }
+      ],
+      deviceTypes: [],
+      // 遮罩层
+      loading: false,
+      // 选中数组
+      ids: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 1,
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        checkSub: true,
+        missionCode: null,
+        state: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+      timeClearable: true,
+      showOverflowTooltip:true,
+      dataList:[],
+    };
+  },
+  created() {
+    this.queryParams.orgId = this.$store.getters.orgId;
+    this.initDeviceTypeList();
+  },
+  computed: {
+    ...mapGetters(["orgId"]),
+  },
+  methods: {
+    initDeviceTypeList(){
+          missionTypeList()
+            .then((r) => {
+              // 使用 map 而不是 filter 进行数据转换
+              const transformedList = r.map((item) => ({
+                value: item.value,
+                label: item.label,
+                type: item.type,
+              }));
+
+              // 将转换后的数据推送到 this.deviceTypeList
+              this.deviceTypes.push(...transformedList);
+            })
+            .catch((error) => {
+              // 处理错误
+              console.error('Error fetching device type list:', error);
+            });
+    },
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      cameraList(this.queryParams).then((response) => {
+        this.dataList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消弹框
+    closeHandler() {
+      this.reset();
+    },
+    handleImport() {},
+    getDefaultOrg(org) {
+      this.orgName = org.name;
+      this.selectedOrgName = org.shortName;
+    },
+
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.orgName = data.name;
+      this.selectedOrgName = data.shortName;
+      this.handleQuery();
+    },
+    /** 下穿状态改变*/
+    changeCheckBox() {
+      this.getList();
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orgId: null,
+        orgPath: null,
+        orgName: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.orgId = this.orgId;
+      this.selectedOrgName = this.orgName;
+      this.queryParams.checkSub = true;
+      this.queryParams.planStartTime = null;
+      this.$refs["orgTree"].setCheckSub(this.queryParams.checkSub);
+      this.handleQuery();
+    },
+    /** 绑定任务 */
+    bindMission() {
+      this.$refs["bindMissionDialog"].show(this.queryParams, this.deviceTypes);
+    },
+    /** 解绑任务 */
+    unbindMission() {
+      this.loading = true;
+      unbindMission(this.queryParams).then((response) => {
+           this.loading = false;
+           this.getList();
+      });
+    },
+
+    /** 导出按钮操作 */
+    handleExport() {
+      if (this.total==null || this.total===0){
+        this.$modal.alert("暂无可用数据导出");
+        return;
+      }
+      if (this.total>50000){
+        this.$modal.alert("导出数据超过5万条,请缩小查询范围后重试");
+        return;
+      }
+      this.download(
+        "iot/sensor/export",
+        {
+          ...this.queryParams,
+        },
+        `${
+          this.selectedOrgName
+        }-${this.$tab.getCurrentTabName()}-${dayjs().format("YYYYMMDD")}.xlsx`
+      );
+    },
+  },
+};
+</script>
+<style lang="scss" scoped></style>

+ 226 - 0
src/views/iot/diagnoseMission/indexMission.vue

@@ -0,0 +1,226 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <el-col :span="24" :xs="24">
+        <div class="main-right-box">
+          <div class="main-search-box">
+            <el-form
+              :model="queryParams"
+              ref="queryForm"
+              size="small"
+              :inline="true"
+              v-show="showSearch"
+            ></el-form>
+            <el-row :gutter="10">
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="mini"
+                  @click="handleQuery"
+                  >搜索
+                </el-button>
+              </el-col>
+              <el-col :span="1.5">
+                <el-button
+                  type="primary"
+                  icon="el-icon-refresh"
+                  size="mini"
+                  @click="bindMission()"
+                  >添加
+                </el-button>
+              </el-col>
+
+              <right-toolbar
+                :showSearch.sync="showSearch"
+                @queryTable="getList"
+              ></right-toolbar>
+            </el-row>
+          </div>
+
+          <el-table
+            v-loading="loading"
+            :data="dataList"
+            border
+            height="600"
+            size="small"
+          >
+          <el-table-column label="序号" type="index" align="center" width="70">
+          <template slot-scope="scope">
+            {{
+
+              scope.$index +
+              1
+            }}
+          </template>
+        </el-table-column>
+            <el-table-column label="任务名称" align="center" prop="name" width="340"/>
+            <el-table-column label="开始时间" align="center" prop="beginTime" width="220"/>
+            <el-table-column label="结束时间" align="center" prop="endTime" width="220"/>
+            <el-table-column label="周期(小时)" align="center" prop="cycle" width="150"/>
+            <el-table-column label="启用/禁用" align="center" prop="enabled" width="150"/>
+            <el-table-column label="创建时间" align="center" prop="createTime" width="220"/>
+            <el-table-column
+                          label="操作"
+                          fixed="right"
+                          align="center"
+                        >
+                          <template slot-scope="scope">
+                            <el-button
+                              size="mini"
+                              type="text"
+                              icon="el-icon-edit-outline"
+                              v-if="!scope.row.doTime"
+                              @click="dealAlarm(scope.row)"
+                              v-hasPermi="['core:task:query']"
+                              >编辑</el-button>
+                              <el-button
+                              size="mini"
+                              type="text"
+                              icon="el-icon-view"
+                              @click="deleteMission(scope.row.missionId)"
+                              v-hasPermi="['core:task:query']"
+                              >删除</el-button>
+                          </template>
+             </el-table-column>
+          </el-table>
+        </div>
+      </el-col>
+    </el-row>
+    <dialog-bind-mission ref="bindMissionDialog" @success="getList()"></dialog-bind-mission>
+  </div>
+</template>
+
+<script>
+import { list,deleteMission} from "@/api/iot/diagnoseMission";
+import DialogBindMission from "./dialog.bindMission.vue";
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
+import { mapGetters } from "vuex";
+import dayjs from "dayjs";
+export default {
+  components: { OrgTree,DialogBindMission },
+  name: "Task",
+  data() {
+    return {
+      bindTypes:[
+            {
+              value: '0',
+              label: '未绑定'
+            },
+            {
+              value: '1',
+              label: '已绑定'
+            }
+      ],
+      // 遮罩层
+      loading: false,
+      // 选中数组
+      ids: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 1,
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        checkSub: true,
+        missionCode: null,
+        state: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+      timeClearable: true,
+      showOverflowTooltip:true,
+      dataList:[],
+    };
+  },
+  created() {
+    this.queryParams.orgId = this.$store.getters.orgId;
+    this.getList();
+  },
+  computed: {
+    ...mapGetters(["orgId"]),
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      list(this.queryParams).then((response) => {
+        this.dataList = response;
+        this.loading = false;
+      });
+    },
+    // 取消弹框
+    closeHandler() {
+      this.reset();
+    },
+    handleImport() {},
+    getDefaultOrg(org) {
+      this.orgName = org.name;
+      this.selectedOrgName = org.shortName;
+    },
+
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.handleQuery();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.orgName = data.name;
+      this.selectedOrgName = data.shortName;
+      this.handleQuery();
+    },
+    /** 下穿状态改变*/
+    changeCheckBox() {
+      this.getList();
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orgId: null,
+        orgPath: null,
+        orgName: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 编辑任务 */
+    bindMission() {
+      this.$refs["bindMissionDialog"].show(this.queryParams, this.deviceTypes);
+    },
+    /** 删除任务 */
+    deleteMission(missionId) {
+      this.loading = true;
+      deleteMission(missionId).then((response) => {
+           this.loading = false;
+           this.getList();
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped></style>