Преглед изворни кода

Merge http://39.104.94.153:3000/yf_zy/MingGao_vue

zhangyun пре 4 година
родитељ
комит
e9bfd5c731

+ 1 - 1
minggao/config/index.js

@@ -22,7 +22,7 @@ module.exports = {
     },
 
     // Various Dev Server settings
-    host: '192.168.1.29', // can be overwritten by process.env.HOST
+    host: 'localhost', // can be overwritten by process.env.HOST
     port: 8888, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
     autoOpenBrowser: false,
     errorOverlay: true,

+ 7 - 3
minggao/package-lock.json

@@ -3328,7 +3328,6 @@
       "version": "4.9.0",
       "resolved": "https://registry.npmmirror.com/echarts/download/echarts-4.9.0.tgz",
       "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
-      "dev": true,
       "requires": {
         "zrender": "4.3.2"
       }
@@ -5251,6 +5250,12 @@
       "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
       "dev": true
     },
+    "jquery": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.6.0.tgz",
+      "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",
+      "dev": true
+    },
     "js-base64": {
       "version": "2.6.4",
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
@@ -12159,8 +12164,7 @@
     "zrender": {
       "version": "4.3.2",
       "resolved": "https://registry.nlark.com/zrender/download/zrender-4.3.2.tgz",
-      "integrity": "sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY=",
-      "dev": true
+      "integrity": "sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY="
     }
   }
 }

+ 15 - 8
minggao/src/App.vue

@@ -8,18 +8,13 @@
 export default {
   name: "App",
   data() {
-    return {
-    }
-  },
-  methods: {
-
+    return {};
   },
-  mounted() {
-  }
+  methods: {},
+  mounted() {}
 };
 </script>
 
-
 <style lang="less">
 @import "./assets/css/global.css";
 html,
@@ -62,4 +57,16 @@ body {
 .custom-ffffff .el-dialog__header {
   border-radius: 5px 5px 0 0;
 }
+
+/*全局滚动条样式*/
+::-webkit-scrollbar {
+  width: 5px;
+  height: 14px;
+}
+
+::-webkit-scrollbar-thumb {
+  /* background-color: #01c8dc;
+border-radius: 3px; */
+  background-color: #b6b6b6;
+}
 </style>

+ 107 - 27
minggao/src/page/commandCenter/laboratory.vue

@@ -155,7 +155,7 @@
             </span>
           </template>
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column label="操作" fixed="right">
           <template slot-scope="scope">
             <a
               v-if="scope.row.discern_status == '待接收'"
@@ -203,14 +203,18 @@
       title="填报"
       v-loading="loading1"
       :visible.sync="dialogVisible"
-      width="30%"
+      width="50%"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
     >
       <ul class="fill_ul">
         <li class="fill_listTlt">
-          <div class="fill_tltie">有害生物</div>
-          <div class="fill_tltie">数量</div>
+          <div class="fill_div">
+            <div class="fill_tltie">有害生物</div>
+            <div class="fill_tltie">
+              数量
+            </div>
+          </div>
         </li>
 
         <li class="fill_list1" v-if="fillList.length !== 0">
@@ -248,20 +252,30 @@
 
         <!-- 添加 -->
         <li class="fill_list">
-          <el-input
-            placeholder="请输入有害生物"
-            size="mini"
+          <el-select
+            style="margin: 0 0 0 -8px;"
             v-model="insectVal"
+            size="mini"
             clearable
-            style="width: 37%; margin: 0 0 0 -8px"
+            placeholder="请选择"
+            filterable
           >
-          </el-input>
+            <el-option
+              v-for="item1 in options2"
+              :key="item1.value"
+              :label="item1.label"
+              :value="item1.value"
+            >
+            </el-option>
+          </el-select>
 
           <el-input
             placeholder="请输入数量"
             size="mini"
             v-model="numVal"
             clearable
+            onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)));"
+            @keyup.native="proving2($event)"
             type="number"
             style="width: 30%"
           >
@@ -274,12 +288,6 @@
           >
         </li>
       </ul>
-      <!-- <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="compileInsect"
-          >确 定</el-button
-        >
-      </span> -->
     </el-dialog>
   </div>
 </template>
@@ -321,12 +329,8 @@ export default {
 
       // 填报弹框
       dialogVisible: false,
-      options1: [
-        {
-          value: "选项1",
-          label: "黄金糕"
-        }
-      ],
+      options1: [],
+      options2: [], //新增有害生物
       value2: "",
       input2: "",
       loading: false, // 加载
@@ -365,6 +369,11 @@ export default {
         this.fillList = [];
         this.spareData = []; // 备用数据
       }
+    },
+
+    // 填报 - 新添加数据
+    numValZ(val) {
+      console.log(val);
     }
   },
   //方法集合
@@ -541,6 +550,37 @@ export default {
           this.spareData = list; // 备用数据
           this.models = arr;
           this.dialogVisible = true;
+          this.addEditor(); // 新添加 - 编辑接口
+        })
+        .catch(err => {
+          console.log(err);
+        });
+    },
+
+    // 新添加 -编辑
+    addEditor() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=sysmenage.maintain.pest_list",
+        data: this.qs.stringify({
+          page: 1, // 页码
+          page_item: "1000000000000000000000000000", // 每页条目数,默认10
+          pest_name: "" // 有害生物
+        })
+      })
+        .then(res => {
+          if (res.data.data.total_item !== 0) {
+            var data = res.data.data;
+            var list = [];
+            for (var i = 0; i < data.page_list.length; i++) {
+              var obj = {};
+              obj["id"] = data.page_list[i].pest_id;
+              obj["value"] = data.page_list[i].pest_name;
+              obj["label"] = data.page_list[i].pest_name;
+              list.push(obj);
+            }
+            this.options2 = list;
+          }
         })
         .catch(err => {
           console.log(err);
@@ -720,6 +760,28 @@ export default {
             message: "已取消编辑"
           });
         });
+    },
+
+    getBit(value, bit) {
+      let str = Number(value);
+      str = str.toFixed(bit);
+      return str;
+    },
+    proving2(e) {
+      var keynum = window.event ? e.keyCode : e.which; //获取键盘码
+      var keychar = String.fromCharCode(keynum); //获取键盘码对应的字符
+      if (keynum == 189 || keynum == 109) {
+        //禁止输入负数
+        this.$message.warning("禁止输入负数");
+        e.target.value = 0;
+      }
+
+      if (String(e.target.value).indexOf("-") == -1) {
+      } else {
+        //禁止输入负数
+        this.$message.warning("禁止输入负数");
+        e.target.value = 0;
+      }
     }
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -754,6 +816,9 @@ export default {
     }
     .btn_box {
       margin: 0 0 0 15px;
+      // width: 50%;
+      display: flex;
+      justify-content: start;
     }
 
     /deep/.el-range-editor--mini.el-input__inner {
@@ -771,12 +836,18 @@ export default {
   // 填报弹框
   .fill_ul {
     .fill_listTlt {
-      display: flex;
-      width: 50%;
-      margin: 0 0 0 24px;
-      justify-content: space-between;
-      .fill_tltie {
-        margin: 0 0 10px 0;
+      width: 95%;
+      .fill_div {
+        width: 60%;
+        margin: 0 0 0 60px;
+        display: flex;
+        justify-content: space-between;
+
+        .fill_tltie {
+          margin: 0 0 10px 0;
+          width: 35%;
+          display: inline-block;
+        }
       }
     }
     .fill_list {
@@ -808,4 +879,13 @@ export default {
     overflow-y: auto;
   }
 }
+
+// 去除elementui input数字框里上下箭头
+/deep/ input::-webkit-outer-spin-button,
+/deep/ input::-webkit-inner-spin-button {
+  -webkit-appearance: none !important;
+}
+/deep/ input[type="number"] {
+  -moz-appearance: textfield !important;
+}
 </style>

+ 8 - 6
minggao/src/page/commandCenter/realTime.vue

@@ -53,7 +53,7 @@
           <el-table :data="tableData" stripe style="width: 100%">
             <el-table-column prop="ind" label="序号" width="180">
             </el-table-column>
-            <el-table-column prop="real_name" label="组织成员" width="250">
+            <el-table-column prop="real_name" label="组织成员" width="330">
             </el-table-column>
             <el-table-column prop="mobile" label="手机号" width="250">
               <template slot-scope="scope">
@@ -67,7 +67,7 @@
                 >
               </template>
             </el-table-column>
-            <el-table-column label="操作" width="280">
+            <el-table-column label="操作" width="200" fixed="right">
               <template slot-scope="scope">
                 <span
                   style="
@@ -75,7 +75,7 @@
                     display: inline-block;
                     margin: 0 0 0 0;
                     position: absolute;
-                    left: -24px;
+                    left: 0;
                     top: 11px;
                   "
                 >
@@ -87,7 +87,7 @@
                     />
                   </el-badge>
                 </span>
-                <span style="position: absolute; top: 12px; left: 40px">
+                <span style="position: absolute; top: 12px; left: 60px">
                   <img
                     @click="videoAxios(scope.row)"
                     src="../../assets/images/realTime/shipin.png"
@@ -791,8 +791,8 @@ export default {
                 duration: 2500
               });
               this.videoVisible = false;
-            }, 60000);
-            // }, 6000)
+            }, 5000);
+            // }, 60000);
           }
           if (state == "DISCONNECTED") {
             // 与房间断开了连接
@@ -920,6 +920,8 @@ export default {
           margin: 0 15px 0 0;
         }
         .btn_box {
+          display: flex;
+          justify-content: start;
         }
       }
       a {

+ 8 - 5
minggao/src/page/commandCenter/supervise.vue

@@ -80,15 +80,15 @@
         <el-table-column prop="ind" label="序号" width="180"> </el-table-column>
         <el-table-column prop="supervisor_user" label="监督人" width="180">
         </el-table-column>
-        <el-table-column prop="supervisor_type" label="监督形式">
+        <el-table-column prop="supervisor_type" label="监督形式" width="180">
         </el-table-column>
-        <el-table-column prop="supervisor_depa" label="监督单位">
+        <el-table-column prop="supervisor_depa" label="监督单位" width="180">
         </el-table-column>
-        <el-table-column prop="supervisor_msg" label="监督情况">
+        <el-table-column prop="supervisor_msg" label="监督情况" width="380">
         </el-table-column>
-        <el-table-column prop="supervisor_time" label="监督时间">
+        <el-table-column prop="supervisor_time" label="监督时间" width="280">
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column label="操作" fixed="right">
           <template slot-scope="scope">
             <a
               class="reset"
@@ -341,6 +341,9 @@ export default {
     }
     .btn_box {
       margin: 0 0 0 15px;
+      // width: 50%;
+      display: flex;
+      justify-content: start;
     }
 
     /deep/.el-range-editor--mini.el-input__inner {

+ 21 - 9
minggao/src/page/commandCenter/superviseAdmin.vue

@@ -108,21 +108,30 @@
         <el-table-column prop="ind" label="序号" width="80"> </el-table-column>
         <el-table-column prop="task_id" label="任务编号" width="100">
         </el-table-column>
-        <el-table-column prop="task_type" label="任务类型"> </el-table-column>
-        <el-table-column prop="operator_user" label="任务处理人">
+        <el-table-column prop="task_type" label="任务类型" width="180">
         </el-table-column>
-        <el-table-column prop="owner_user" label="任务发布人">
+        <el-table-column prop="operator_user" label="任务处理人" width="180">
         </el-table-column>
-        <el-table-column prop="supervisor_user" label="任务监督人">
+        <el-table-column prop="owner_user" label="任务发布人" width="180">
         </el-table-column>
-        <el-table-column prop="start_time" label="任务时间"></el-table-column>
-        <el-table-column prop="start_time" label="任务结束"></el-table-column>
-        <el-table-column prop="end_time" label="任务完成时间">
+        <el-table-column prop="supervisor_user" label="任务监督人" width="180">
+        </el-table-column>
+        <el-table-column
+          prop="start_time"
+          label="任务时间"
+          width="180"
+        ></el-table-column>
+        <el-table-column
+          prop="start_time"
+          label="任务结束"
+          width="180"
+        ></el-table-column>
+        <el-table-column prop="end_time" label="任务完成时间" width="180">
           <template slot-scope="scope">
             <span>{{ scope.row.end_time || "暂无" }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="task_status" label="任务状态">
+        <el-table-column prop="task_status" label="任务状态" width="180">
           <template slot-scope="scope">
             <div v-for="(item, index) in type_status" :key="index">
               <span
@@ -133,7 +142,7 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column label="操作" width="180" fixed="right">
           <template slot-scope="scope">
             <a
               class="reset"
@@ -428,6 +437,9 @@ export default {
     }
     .btn_box {
       margin: 0 0 0 15px;
+      // width: 50%;
+      display: flex;
+      justify-content: start;
     }
 
     /deep/.el-range-editor--mini.el-input__inner {

+ 132 - 13
minggao/src/page/commandCenter/superviseAdminDetails.vue

@@ -1,14 +1,16 @@
 <!--  -->
 <template>
   <div class="superviseAdminDetails_box">
-    <el-card :style="'height:' + fullHeight + 'px'">
-      <el-row>
+    <el-card :style="'height:' + fullHeight + 'px'" v-loading="loading">
+      <el-row v-if="taskObj.task_id">
         <!-- 任务信息 -->
         <el-col :span="24">
           <div class="list_box">
             <div class="list_tlt">
               <span>任务信息</span>
-              <el-button type="primary" size="mini">监督</el-button>
+              <el-button type="primary" size="mini" @click="overseer"
+                >监督</el-button
+              >
             </div>
 
             <ul class="list_ul">
@@ -63,10 +65,7 @@
               <li class="list_sing_li">
                 <div class="list_sing_div">
                   <span class="list_div_tlt">签到图片:</span>
-                  <p
-                    v-if="taskObj.img_list.length !== 0"
-                    style="display: flex;"
-                  >
+                  <p v-if="taskObj.img_list.length !== 0" style="display: flex">
                     <span
                       class="list_div_img"
                       v-for="(item, index) in taskObj.img_list"
@@ -75,7 +74,7 @@
                       <img v-viewer :src="item" alt="" />
                     </span>
                   </p>
-                  <span>暂无签到图片</span>
+                  <span v-else>暂无签到图片</span>
                 </div>
 
                 <div class="list_sing_div">
@@ -107,7 +106,7 @@
                       <span
                         v-if="scope.row.report_status == '已登记'"
                         @click="examine(scope.row)"
-                        style="color: #409EFF; cursor: pointer;"
+                        style="color: #409eff; cursor: pointer"
                         >查看</span
                       >
                       <span v-else>{{ scope.row.report_status || "无" }}</span>
@@ -130,7 +129,9 @@
             <div class="list_tlt">任务汇报</div>
 
             <ul class="list_report_ul">
-              <li class="list_report_li">{{ taskObj.report_msg || "暂无" }}</li>
+              <li class="list_report_li">
+                {{ taskObj.report_msg || "暂无任务汇报" }}
+              </li>
             </ul>
           </div>
         </el-col>
@@ -156,17 +157,66 @@
         </li>
       </ul>
     </el-dialog>
+
+    <!-- 监督弹框 -->
+    <el-dialog
+      title="监督"
+      :visible.sync="superviseVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      width="30%"
+    >
+      <el-form
+        v-loading="loading2"
+        :model="ruleForm2"
+        :rules="rules2"
+        ref="ruleForm2"
+        label-width="100px"
+        class="demo-ruleForm"
+      >
+        <el-form-item label="监督形式" prop="resource">
+          <el-radio-group v-model="ruleForm2.resource">
+            <el-radio label="现场监督"></el-radio>
+            <el-radio label="远程监督"></el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="监督单位" prop="region">
+          <el-input v-model="ruleForm2.region" size="mini"></el-input>
+        </el-form-item>
+        <el-form-item label="监督情况" prop="desc">
+          <el-input type="textarea" v-model="ruleForm2.desc"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="superviseSubmitForm('ruleForm2')">取 消</el-button>
+          <el-button type="primary" @click="superviseAxiso('ruleForm2')"
+            >发 布</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 export default {
-  //import引入的组件需要注入到对象中才能使用
+  // filters: {
+  //   ellipsis(value) {
+  //     var str = "abd def";
+  //     var arr = new Array();
+  //     arr = str.split(" ");
+  //     if (arr.length != 1) {
+  //       undefined;
+  //       // alert("字符串含有空格!");
+  //       return false;
+  //     }
+  //   },
+  // },
   components: {},
   data() {
     //这里存放数据
     return {
       fullHeight: document.documentElement.clientHeight - 116, //
+      loading: true, // 加载
 
       // 详情总数据
       taskObj: {},
@@ -183,7 +233,26 @@ export default {
         "2、途中发生了什么事情",
         "3、对这次任务有什么总结",
         "4、我对这次任务有哪些建议"
-      ]
+      ],
+
+      // 监督弹框
+      superviseVisible: false,
+      // 监督弹框
+      ruleForm2: {
+        resource: "", // 监督形式
+        region: "", // 监督单位
+        desc: "" // 监督情况
+      },
+      rules2: {
+        region: [
+          { required: true, message: "请选择活动区域", trigger: "change" }
+        ],
+        resource: [
+          { required: true, message: "请选择活动资源", trigger: "change" }
+        ],
+        desc: [{ required: true, message: "请填写活动形式", trigger: "blur" }]
+      },
+      loading2: false //加载
     };
   },
   //监听属性 类似于data概念
@@ -236,7 +305,6 @@ export default {
         })
         .catch(err => {
           this.loading = false;
-          console.log(err);
         });
     },
 
@@ -245,6 +313,57 @@ export default {
       this.titleData = "设备编号:" + data.trap_number;
       this.insectList = data.pest_list;
       this.dialogVisible = true;
+    },
+
+    // 监督
+    superviseAxiso(formName) {
+      this.loading2 = true;
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.$axios({
+            method: "POST",
+            url: "/api/api_gateway?method=control_center.task.supervisor_add",
+            data: this.qs.stringify({
+              task_id: this.$route.query.id, //任务id
+              supervisor_type: this.ruleForm2.resource, // 监督类型
+              supervisor_depa: this.ruleForm2.region, // 监督部门
+              supervisor_msg: this.ruleForm2.desc // 监督内容
+            })
+          })
+            .then(res => {
+              if (res.data.data == true) {
+                this.$message({
+                  message: "成功!",
+                  type: "success",
+                  duration: 1500
+                });
+                this.superviseVisible = false;
+              }
+              this.loading2 = false;
+            })
+            .catch(err => {
+              this.$message({
+                message: "失败!",
+                type: "error",
+                duration: 1500
+              });
+            });
+          this.loading2 = false;
+        } else {
+          this.loading2 = false;
+          return false;
+        }
+      });
+    },
+
+    // 监督 - 取消
+    superviseSubmitForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+
+    // 监督 - 弹框
+    overseer() {
+      this.superviseVisible = true;
     }
   },
   //生命周期 - 创建完成(可以访问当前this实例)

+ 145 - 57
minggao/src/page/commandCenter/superviseDetails.vue

@@ -1,46 +1,55 @@
 <!--  -->
 <template>
   <div class="superviseDetails_box">
-    <el-card :style="'height:' + fullHeight + 'px'">
-      <el-row>
+    <el-card :style="'height:' + fullHeight + 'px'" v-loading="loading">
+      <el-row v-if="taskObj.task_id">
         <!-- 监督信息 -->
         <el-col :span="24">
           <div class="list_box">
             <div class="list_tlt">
               <span>监督信息</span>
-              <el-button type="primary" size="mini">监督</el-button>
             </div>
 
             <ul class="list_ul">
               <li class="list_li">
                 <div class="list_div">
                   <span class="list_div_tlt">督查人:</span>
-                  <span class="list_div_val">有害生物</span>
+                  <span class="list_div_val">{{
+                    taskObj.actual_supervisor
+                  }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">任务监督人:</span>
-                  <span class="list_div_val">胡军</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_user
+                  }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">监督时间:</span>
-                  <span class="list_div_val">2022-01-14 16:00:00</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_time
+                  }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">监督形式:</span>
-                  <span class="list_div_val">胡适</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_type
+                  }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">监督单位:</span>
-                  <span class="list_div_val">刑天</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_depa
+                  }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">监督情况:</span>
-                  <span class="list_div_val">已完成</span>
+                  <span class="list_div_val">{{ taskObj.supervisor_msg }}</span>
                 </div>
               </li>
             </ul>
@@ -52,46 +61,48 @@
           <div class="list_box">
             <div class="list_tlt">
               <span>任务信息</span>
-              <el-button type="primary" size="mini">监督</el-button>
             </div>
 
             <ul class="list_ul">
               <li class="list_li">
                 <div class="list_div">
                   <span class="list_div_tlt">任务类型:</span>
-                  <span class="list_div_val">有害生物</span>
+                  <span class="list_div_val">{{ taskObj.task_type }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">任务监督人:</span>
-                  <span class="list_div_val">胡军</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_user
+                  }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">任务时间:</span>
-                  <span class="list_div_val">2022-01-14 16:00:00</span>
+                  <span class="list_div_val">{{ taskObj.start_time }}</span>
+                  <span v-if="taskObj.end_time">
+                    - {{ taskObj.end_time }}
+                  </span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">任务发布人:</span>
-                  <span class="list_div_val">胡适</span>
+                  <span class="list_div_val">{{ taskObj.owner_user }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">任务处理人:</span>
-                  <span class="list_div_val">刑天</span>
+                  <span class="list_div_val">{{ taskObj.operator_user }}</span>
                 </div>
 
                 <div class="list_div">
                   <span class="list_div_tlt">任务状态:</span>
-                  <span class="list_div_val">已完成</span>
+                  <span class="list_div_val">{{ taskObj.task_status }}</span>
                 </div>
 
                 <div class="list_div">
-                  <span class="list_div_tlt">任务类型:</span>
-                  <span class="list_div_val"
-                    >去安徽监测点的诱捕器虫类手机一下,记得拍照</span
-                  >
+                  <span class="list_div_tlt">任务描述:</span>
+                  <span class="list_div_val">{{ taskObj.tesk_msg }}</span>
                 </div>
               </li>
             </ul>
@@ -107,17 +118,23 @@
               <li class="list_sing_li">
                 <div class="list_sing_div">
                   <span class="list_div_tlt">签到图片:</span>
-                  <span class="list_div_img">
-                    <img src="../../assets/images/newImg/12.jpg" alt="" />
-                  </span>
-                  <span class="list_div_img">
-                    <img src="../../assets/images/newImg/12.jpg" alt="" />
-                  </span>
+                  <p v-if="taskObj.img_list.length !== 0" style="display: flex">
+                    <span
+                      class="list_div_img"
+                      v-for="(item, index) in taskObj.img_list"
+                      :key="index"
+                    >
+                      <img v-viewer :src="item" alt="" />
+                    </span>
+                  </p>
+                  <span v-else>暂无签到图片</span>
                 </div>
 
                 <div class="list_sing_div">
                   <span class="list_div_tlt">签到时间:</span>
-                  <span class="list_div_val">2022-2-8 12:00:00</span>
+                  <span class="list_div_val">{{
+                    taskObj.end_time || "暂无"
+                  }}</span>
                 </div>
               </li>
             </ul>
@@ -125,17 +142,33 @@
         </el-col>
 
         <!-- 任务填报信息 -->
-        <el-col :span="24">
+        <el-col :span="24" v-if="taskObj.task_type == '有害生物监测'">
           <div class="list_box">
             <div class="list_tlt">任务填报信息</div>
             <ul class="list_table_ul">
               <li class="list_li">
                 <el-table :data="tableData" stripe style="width: 100%">
-                  <el-table-column prop="date" label="日期" width="180">
+                  <el-table-column prop="trap_number" label="设备编号">
                   </el-table-column>
-                  <el-table-column prop="name" label="姓名" width="180">
+                  <el-table-column prop="monitor_point" label="监测点">
                   </el-table-column>
-                  <el-table-column prop="address" label="地址">
+                  <el-table-column prop="inducer_type" label="诱剂">
+                  </el-table-column>
+                  <el-table-column prop="report_status" label="有害生物登记">
+                    <template slot-scope="scope">
+                      <span
+                        v-if="scope.row.report_status == '已登记'"
+                        @click="examine(scope.row)"
+                        style="color: #409eff; cursor: pointer"
+                        >查看</span
+                      >
+                      <span v-else>{{ scope.row.report_status || "无" }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="report_time" label="录入时间">
+                    <template slot-scope="scope">
+                      <span>{{ scope.row.report_time || "无" }}</span>
+                    </template>
                   </el-table-column>
                 </el-table>
               </li>
@@ -149,14 +182,34 @@
             <div class="list_tlt">任务汇报</div>
 
             <ul class="list_report_ul">
-              <li class="list_report_li" v-for="item in reportList" :key="item">
-                {{ item }}
+              <li class="list_report_li">
+                {{ taskObj.report_msg || "暂无任务汇报" }}
               </li>
             </ul>
           </div>
         </el-col>
       </el-row>
     </el-card>
+
+    <!-- 填报信息弹框 -->
+    <el-dialog
+      :title="titleData"
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      width="30%"
+    >
+      <ul class="insect_ul">
+        <li
+          class="insect_list"
+          v-for="(item, index) in insectList"
+          :key="index"
+        >
+          <div>{{ item.pest_name + ":" }}</div>
+          <div style="margin: 0 0 0 20px">{{ item.pest_number }}</div>
+        </li>
+      </ul>
+    </el-dialog>
   </div>
 </template>
 
@@ -168,30 +221,16 @@ export default {
     //这里存放数据
     return {
       fullHeight: document.documentElement.clientHeight - 116, //
+      loading: true, // 加载
+
+      // 详情总数据
+      taskObj: {},
 
       // 任务填报信息
-      tableData: [
-        {
-          date: "2016-05-02",
-          name: "王小虎",
-          address: "上海市普陀区金沙江路 1518 弄"
-        },
-        {
-          date: "2016-05-04",
-          name: "王小虎",
-          address: "上海市普陀区金沙江路 1517 弄"
-        },
-        {
-          date: "2016-05-01",
-          name: "王小虎",
-          address: "上海市普陀区金沙江路 1519 弄"
-        },
-        {
-          date: "2016-05-03",
-          name: "王小虎",
-          address: "上海市普陀区金沙江路 1516 弄"
-        }
-      ],
+      tableData: [],
+      dialogVisible: false, // 弹框
+      titleData: "", // 弹框标题
+      insectList: [], //害虫列表
 
       // 任务汇报
       reportList: [
@@ -230,12 +269,47 @@ export default {
           that.fullHeight = window.fullHeight;
         })();
       };
+    },
+
+    // 详情界面数据
+    detailsData() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=control_center.task.task_info",
+        data: this.qs.stringify({
+          task_id: this.$route.query.id
+        })
+      })
+        .then(res => {
+          if (res.data.data) {
+            var data = res.data.data;
+            data.img_list = JSON.parse(data.img_list);
+            this.taskObj = data;
+            this.tableData = data.trap_record_list;
+          }
+          this.loading = false;
+        })
+        .catch(err => {
+          this.loading = false;
+          console.log(err);
+        });
+    },
+
+    // 查看
+    examine(data) {
+      this.titleData = "设备编号:" + data.trap_number;
+      this.insectList = data.pest_list;
+      this.dialogVisible = true;
     }
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted() {},
+  mounted() {
+    this.loading = true; //加载
+    this.get_boderHeight(); // 动态获取浏览器高度
+    this.detailsData(); // 详情界面数据
+  },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
   beforeUpdate() {}, //生命周期 - 更新之前
@@ -278,7 +352,7 @@ export default {
         justify-content: space-between;
         .list_sing_div {
           margin: 0 0 25px 0;
-          width: 33%;
+          width: 40%;
           font-size: 14px;
           display: flex;
           color: #333333;
@@ -333,5 +407,19 @@ export default {
     overflow: hidden;
     overflow-y: auto;
   }
+
+  // 害虫弹框
+  .insect_ul {
+    .insect_list {
+      display: flex;
+      margin: 0 0 20px 0;
+      div {
+        font-size: 18px;
+        width: 20%;
+        text-align: right;
+        margin: 0px 0 0 -35px;
+      }
+    }
+  }
 }
 </style>

+ 14 - 8
minggao/src/page/commandCenter/superviseLog.vue

@@ -57,17 +57,20 @@
         stripe
         style="width: 100%"
       >
-        <el-table-column prop="ind" label="序号" width="180"> </el-table-column>
-        <el-table-column prop="owner_user" label="监测人员" width="180">
+        <el-table-column prop="ind" label="序号" width="100"> </el-table-column>
+        <el-table-column prop="owner_user" label="监测人员" width="200">
         </el-table-column>
-        <el-table-column prop="monitor_time" label="监测时间">
+        <el-table-column prop="monitor_time" label="监测时间" width="250">
         </el-table-column>
-        <el-table-column prop="weather" label="天气"> </el-table-column>
-        <el-table-column prop="temperature" label="温度"> </el-table-column>
-        <el-table-column prop="address" label="地点"> </el-table-column>
-        <el-table-column prop="monitor_time" label="提交时间">
+        <el-table-column prop="weather" label="天气" width="200">
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column prop="temperature" label="温度" width="200">
+        </el-table-column>
+        <el-table-column prop="address" label="地点" width="280">
+        </el-table-column>
+        <el-table-column prop="monitor_time" label="提交时间" width="180">
+        </el-table-column>
+        <el-table-column label="操作" width="180" fixed="right">
           <template slot-scope="scope">
             <a
               href="javascript:;"
@@ -316,6 +319,9 @@ export default {
     }
     .btn_box {
       margin: 0 0 0 15px;
+      // width: 50%;
+      display: flex;
+      justify-content: start;
     }
 
     /deep/.el-range-editor--mini.el-input__inner {

+ 56 - 24
minggao/src/page/commandCenter/taskRegulator.vue

@@ -103,37 +103,47 @@
         stripe
         style="width: 100%"
       >
-        <el-table-column prop="ind" label="序号" width="80"> </el-table-column>
+        <el-table-column prop="ind" label="序号" width="80"></el-table-column>
         <el-table-column prop="task_id" label="任务编号" width="100">
         </el-table-column>
-        <el-table-column prop="task_type" label="任务类型"> </el-table-column>
-        <el-table-column prop="operator_user" label="任务处理人">
+        <el-table-column prop="task_type" label="任务类型" width="180">
         </el-table-column>
-        <el-table-column prop="owner_user" label="任务发布人">
+        <el-table-column prop="operator_user" label="任务处理人" width="180">
         </el-table-column>
-        <el-table-column prop="supervisor_user" label="任务监督人">
+        <el-table-column prop="owner_user" label="任务发布人" width="180">
         </el-table-column>
-        <el-table-column prop="start_time" label="任务时间"></el-table-column>
+        <el-table-column prop="supervisor_user" label="任务监督人" width="180">
+        </el-table-column>
+        <el-table-column
+          prop="start_time"
+          label="任务时间"
+          width="180"
+        ></el-table-column>
         <el-table-column
           prop="last_time"
           label="任务结束时间"
+          width="180"
         ></el-table-column>
-        <el-table-column prop="end_time" label="任务完成时间">
+        <el-table-column prop="end_time" label="任务完成时间" width="180">
           <template slot-scope="scope">
             <span>{{ scope.row.end_time || "暂无" }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="actual_operator" label="实际处理人">
+        <el-table-column prop="actual_operator" label="实际处理人" width="180">
           <template slot-scope="scope">
             <span>{{ scope.row.actual_operator || "暂无" }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="actual_supervisor" label="实际监督人">
+        <el-table-column
+          prop="actual_supervisor"
+          label="实际监督人"
+          width="180"
+        >
           <template slot-scope="scope">
             <span>{{ scope.row.actual_supervisor || "暂无" }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="task_status" label="任务状态">
+        <el-table-column prop="task_status" label="任务状态" width="180">
           <template slot-scope="scope">
             <div v-for="(item, index) in type_status" :key="index">
               <span
@@ -144,7 +154,7 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column fixed="right" label="操作" width="180">
           <template slot-scope="scope">
             <a
               class="reset"
@@ -185,6 +195,7 @@
     <!-- 新增任务 -->
     <el-dialog
       :title="titleData"
+      :show-close="false"
       :visible.sync="dialogVisible"
       width="45%"
       :close-on-click-modal="false"
@@ -197,7 +208,7 @@
         label-width="100px"
         class="demo-ruleForm"
       >
-        <div style="display: flex; flex-wrap: wrap;">
+        <div style="display: flex; flex-wrap: wrap">
           <!-- 任务处理人 -->
           <el-form-item label="任务处理人" prop="region">
             <el-select
@@ -218,7 +229,7 @@
               ></el-option>
             </el-select>
             <el-input
-              style="width: 66%;"
+              style="width: 66%"
               v-else
               placeholder="请输入内容"
               clearable
@@ -249,7 +260,7 @@
               ></el-option>
             </el-select>
             <el-input
-              style="width: 63%;"
+              style="width: 63%"
               v-else
               placeholder="请输入内容"
               clearable
@@ -301,7 +312,7 @@
             v-if="ruleForm.type == '有害生物监测'"
             label="诱捕器"
             prop="checkList"
-            style="width: 90%;"
+            style="width: 90%"
           >
             <ul class="form_ul">
               <li class="form_li">
@@ -329,7 +340,7 @@
         </transition>
 
         <!-- 任务描述 -->
-        <el-form-item label="任务描述" style="width: 86%;">
+        <el-form-item label="任务描述" style="width: 86%">
           <el-input
             size="mini"
             type="textarea"
@@ -490,7 +501,7 @@ export default {
         {
           value: "逾期完成",
           label: "逾期完成"
-        },
+        }
       ], // 任务状态 - 列表
       value2: "", //时间筛选
       startTime: "", // 开始时间
@@ -631,13 +642,20 @@ export default {
     },
 
     // 新增编辑任务弹框
-    dialogVisible(val) {
-      if (val == false) {
-        this.ruleForm.desc = "";
-        this.taskObj = {};
-        this.$refs["ruleForm"].resetFields();
-      }
-    },
+    // dialogVisible(val) {
+    //   if (val == false) {
+    //     this.taskObj = {};
+    //     this.ruleForm.region = ""; // 任务处理人
+    //     this.ruleForm.overseer = ""; //任务监督人
+    //     this.ruleForm.date = ""; // 任务时间
+    //     this.ruleForm.startTime = ""; // 开始时间
+    //     this.ruleForm.endTime = ""; // 结束时间
+    //     this.ruleForm.type = ""; // 任务类型
+    //     this.ruleForm.checkList = ""; // 诱捕器
+    //     this.ruleForm.desc = ""; // 任务描述
+    //     this.$refs["ruleForm"].resetFields();
+    //   }
+    // },
 
     // 选择诱捕器弹框
     deviceVisible(val) {
@@ -999,6 +1017,17 @@ export default {
 
     // 新建任务 - 取消
     resetForm(formName) {
+      this.ruleForm.region = ""; // 任务处理人
+      this.ruleForm.overseer = ""; //任务监督人
+      this.ruleForm.date = ""; // 任务时间
+      this.ruleForm.startTime = ""; // 开始时间
+      this.ruleForm.endTime = ""; // 结束时间
+      this.ruleForm.type = ""; // 任务类型
+      this.ruleForm.checkList = ""; // 诱捕器
+      this.ruleForm.desc = ""; // 任务描述
+      if (this.titleData == "编辑任务") {
+        location.reload();
+      }
       this.$refs[formName].resetFields();
       this.dialogVisible = false;
     },
@@ -1181,6 +1210,9 @@ export default {
     }
     .btn_box {
       margin: 0 0 0 15px;
+      // width: 50%;
+      display: flex;
+      justify-content: start;
     }
 
     /deep/.el-range-editor--mini.el-input__inner {

+ 2 - 2
minggao/src/page/commandCenter/taskRegulatorDetails.vue

@@ -2,7 +2,7 @@
 <template>
   <div class="taskRegulatorDetails_box">
     <el-card :style="'height:' + fullHeight + 'px'" v-loading="loading">
-      <el-row>
+      <el-row v-if="taskObj.task_id">
         <!-- 任务信息 -->
         <el-col :span="24">
           <div class="list_box">
@@ -303,7 +303,7 @@ export default {
         justify-content: space-between;
         .list_sing_div {
           margin: 0 0 25px 0;
-          width: 33%;
+          width: 40%;
           font-size: 14px;
           display: flex;
           color: #333333;

+ 361 - 0
minggao/src/page/superviseModule/superviseModule.vue

@@ -0,0 +1,361 @@
+<!--  -->
+<template>
+  <div class="superviseModule_box">
+    <el-card :style="'height:' + fullHeight + 'px'">
+      <!-- 筛选 -->
+      <el-row>
+        <el-col>
+          <div class="search_box">
+            <!-- 监督人 -->
+            <el-select
+              filterable
+              v-model="input"
+              clearable
+              @change="searchData"
+              placeholder="请选择监督人"
+              size="mini"
+            >
+              <el-option
+                v-for="item in conductorList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+
+            <!-- 监督形式 -->
+            <el-select
+              filterable
+              v-model="input2"
+              clearable
+              @change="searchData"
+              placeholder="请选择监督形式"
+              size="mini"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+
+            <!-- 时间筛选 -->
+            <el-date-picker
+              size="mini"
+              v-model="value"
+              @change="searchData"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              align="right"
+            >
+            </el-date-picker>
+
+            <div class="btn_box">
+              <el-button type="primary" size="mini" @click="searchData"
+                >搜索</el-button
+              >
+              <el-button size="mini" @click="reset">重置</el-button>
+
+              <el-button type="primary" size="mini" @click="exportData">
+                <i v-if="loadingShow" class="el-icon-loading"></i>
+                导出数据</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+
+      <!-- 表格 -->
+      <el-table
+        :data="tableData"
+        v-loading="loading"
+        stripe
+        style="width: 100%"
+      >
+        <el-table-column prop="ind" label="序号" width="180"> </el-table-column>
+        <el-table-column prop="supervisor_user" label="监督人" width="180">
+        </el-table-column>
+        <el-table-column prop="supervisor_type" label="监督形式" width="180">
+        </el-table-column>
+        <el-table-column prop="supervisor_depa" label="监督单位" width="180">
+        </el-table-column>
+        <el-table-column prop="supervisor_msg" label="监督情况" width="380">
+        </el-table-column>
+        <el-table-column prop="supervisor_time" label="监督时间" width="280">
+        </el-table-column>
+        <el-table-column label="操作" fixed="right">
+          <template slot-scope="scope">
+            <a
+              class="reset"
+              href="javascript:;"
+              @click="examineDetail(scope.row)"
+              >查看</a
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <!-- 分页 -->
+      <el-pagination
+        style="margin: 60px 0 0 0"
+        :page-size="10"
+        @current-change="newPage"
+        :current-page="page"
+        v-if="tableData.length > 0"
+        background
+        layout="prev, pager, next, jumper"
+        :total="tableSum"
+      >
+      </el-pagination>
+    </el-card>
+  </div>
+</template>
+
+<script>
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      fullHeight: document.documentElement.clientHeight - 116, //
+
+      // 筛选
+      input: "", // 监督人
+      conductorList: [], // 监督人 - 列表
+      input2: "", // 监督形式
+      // 监督形式 - 列表
+      options: [
+        {
+          value: "远程监督",
+          label: "远程监督"
+        },
+        {
+          value: "现场监督",
+          label: "现场监督"
+        }
+      ],
+      value: "", // 时间筛选
+      startTime: "", // 开始时间
+      endTime: "", // 结束时间
+      loadingShow: false, // 导出加载
+
+      // 表格
+      tableData: [],
+      loading: false, // 加载
+
+      // 分页
+      page: 1, // 当期页码
+      tableSum: 0 // 总页数
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {
+    fullHeight(val) {
+      //监控浏览器高度变化
+      if (!this.timer) {
+        this.fullHeight = val;
+        this.timer = true;
+        let that = this;
+        setTimeout(function() {
+          //防止过度调用监测事件,导致卡顿
+          that.timer = false;
+        }, 400);
+      }
+    }
+  },
+  //方法集合
+  methods: {
+    //动态获取浏览器高度
+    get_boderHeight() {
+      const that = this;
+      window.onresize = () => {
+        return (() => {
+          window.fullHeight = document.documentElement.clientHeight;
+          that.fullHeight = window.fullHeight;
+        })();
+      };
+    },
+
+    // 表格
+    tableList() {
+      this.$axios({
+        method: "POST",
+        url:
+          "/api/api_gateway?method=control_center.task.supervisor_record_list",
+        data: this.qs.stringify({
+          page: this.page,
+          page_item: "10",
+          supervisor_user_id: this.input, // 监督人id
+          start_time: this.startTime, // 开始时间
+          end_time: this.endTime, // 结束时间
+          supervisor_type: this.input2 // 监督形式
+        })
+      })
+        .then(res => {
+          if (res.data.data.total_item !== 0) {
+            var data = res.data.data;
+            this.tableSum = data.total_item;
+            var list = [];
+            data.page_list.forEach((item, index) => {
+              item.ind = index + 1;
+              list.push(item);
+            });
+            this.tableData = list;
+          }
+          this.loading = false;
+        })
+        .catch(err => {
+          this.loading = false;
+        });
+    },
+
+    // 监督人列表
+    conductorAxios() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=control_center.task.task_user_list",
+        data: this.qs.stringify({
+          user_type: "supervisor", // 用户类型,operator(任务处理人), supervisor(任务监督人), owner(任务发布人)
+          operator_id: "", // 已经选择的任务处理人id
+          supervisor_id: "", // 已经选择的任务监督人id
+          owner_id: "" // 已经选择的任务发布人id
+        })
+      })
+        .then(res => {
+          if (res.data.data.length !== 0) {
+            var data = res.data.data;
+            var list = [];
+            data.forEach(item => {
+              var obj = {};
+              obj["value"] = item.user_id;
+              obj["label"] = item.real_name;
+              list.push(obj);
+            });
+            this.conductorList = list;
+          }
+        })
+        .catch(err => {});
+    },
+
+    // 搜索
+    searchData() {
+      this.loading = true;
+      this.tableData = [];
+      this.tableList();
+    },
+
+    // 重置
+    reset() {
+      this.input = ""; // 监督人
+      this.input2 = ""; // 监督形式
+      this.value = ""; // 时间筛选
+      this.startTime = ""; // 开始时间
+      this.endTime = ""; // 结束时间
+      this.loading = true;
+      this.tableData = [];
+      this.tableList();
+    },
+
+    // 导出数据
+    exportData() {
+      this.loadingShow = true;
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=control_center.task.supervisor_export",
+        responseType: "blob"
+      })
+        .then(res => {
+          this.downloadFile(res, "监督记录.xls");
+          this.loadingShow = false;
+        })
+        .catch(err => {
+          this.loadingShow = false;
+          // console.log(err);
+        });
+    },
+
+    // 流文件下载
+    downloadFile(res, name) {
+      let link = document.createElement("a");
+      link.href = window.URL.createObjectURL(new Blob([res.data]));
+      link.target = "_blank";
+      // 文件名和格式
+      link.download = name;
+      document.body.appendChild(link);
+      link.click();
+      document.body.removeChild(link);
+    },
+
+    // 分页
+    newPage(page) {
+      this.page = page;
+      this.tableList();
+    },
+
+    // 查看
+    examineDetail(data) {
+      this.$router.push({
+        path: "/index/superviseDetails",
+        query: {
+          id: data.id
+        }
+      });
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.loading = true;
+    this.get_boderHeight(); // 动态获取浏览器高度
+    this.conductorAxios(); // 监督人 - 筛选列表
+    this.tableList(); // 表格
+  },
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroyed() {}, //生命周期 - 销毁完成
+  activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang="less" scoped>
+.superviseModule_box {
+  // 搜索
+  .search_box {
+    display: flex;
+    /deep/.el-select {
+      margin: 0 15px 0 0;
+    }
+    /deep/.el-input {
+      margin: 0 15px 0 0;
+    }
+    .btn_box {
+      margin: 0 0 0 15px;
+      // width: 50%;
+      display: flex;
+      justify-content: start;
+    }
+
+    /deep/.el-range-editor--mini.el-input__inner {
+      width: 20%;
+    }
+  }
+
+  a {
+    text-decoration: none;
+  }
+  .reset {
+    color: #1890ff;
+  }
+}
+</style>

+ 425 - 0
minggao/src/page/superviseModule/superviseModuleDetails.vue

@@ -0,0 +1,425 @@
+<!--  -->
+<template>
+  <div class="superviseModuleDetails_box">
+    <el-card :style="'height:' + fullHeight + 'px'" v-loading="loading">
+      <el-row v-if="taskObj.task_id">
+        <!-- 监督信息 -->
+        <el-col :span="24">
+          <div class="list_box">
+            <div class="list_tlt">
+              <span>监督信息</span>
+            </div>
+
+            <ul class="list_ul">
+              <li class="list_li">
+                <div class="list_div">
+                  <span class="list_div_tlt">督查人:</span>
+                  <span class="list_div_val">{{
+                    taskObj.actual_supervisor
+                  }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务监督人:</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_user
+                  }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">监督时间:</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_time
+                  }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">监督形式:</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_type
+                  }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">监督单位:</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_depa
+                  }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">监督情况:</span>
+                  <span class="list_div_val">{{ taskObj.supervisor_msg }}</span>
+                </div>
+              </li>
+            </ul>
+          </div>
+        </el-col>
+
+        <!-- 任务信息 -->
+        <el-col :span="24">
+          <div class="list_box">
+            <div class="list_tlt">
+              <span>任务信息</span>
+            </div>
+
+            <ul class="list_ul">
+              <li class="list_li">
+                <div class="list_div">
+                  <span class="list_div_tlt">任务类型:</span>
+                  <span class="list_div_val">{{ taskObj.task_type }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务监督人:</span>
+                  <span class="list_div_val">{{
+                    taskObj.supervisor_user
+                  }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务时间:</span>
+                  <span class="list_div_val">{{ taskObj.start_time }}</span>
+                  <span v-if="taskObj.end_time">
+                    - {{ taskObj.end_time }}
+                  </span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务发布人:</span>
+                  <span class="list_div_val">{{ taskObj.owner_user }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务处理人:</span>
+                  <span class="list_div_val">{{ taskObj.operator_user }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务状态:</span>
+                  <span class="list_div_val">{{ taskObj.task_status }}</span>
+                </div>
+
+                <div class="list_div">
+                  <span class="list_div_tlt">任务描述:</span>
+                  <span class="list_div_val">{{ taskObj.tesk_msg }}</span>
+                </div>
+              </li>
+            </ul>
+          </div>
+        </el-col>
+
+        <!-- 签到信息 -->
+        <el-col :span="24">
+          <div class="list_box">
+            <div class="list_tlt">签到信息</div>
+
+            <ul class="list_ul">
+              <li class="list_sing_li">
+                <div class="list_sing_div">
+                  <span class="list_div_tlt">签到图片:</span>
+                  <p v-if="taskObj.img_list.length !== 0" style="display: flex">
+                    <span
+                      class="list_div_img"
+                      v-for="(item, index) in taskObj.img_list"
+                      :key="index"
+                    >
+                      <img v-viewer :src="item" alt="" />
+                    </span>
+                  </p>
+                  <span v-else>暂无签到图片</span>
+                </div>
+
+                <div class="list_sing_div">
+                  <span class="list_div_tlt">签到时间:</span>
+                  <span class="list_div_val">{{
+                    taskObj.end_time || "暂无"
+                  }}</span>
+                </div>
+              </li>
+            </ul>
+          </div>
+        </el-col>
+
+        <!-- 任务填报信息 -->
+        <el-col :span="24" v-if="taskObj.task_type == '有害生物监测'">
+          <div class="list_box">
+            <div class="list_tlt">任务填报信息</div>
+            <ul class="list_table_ul">
+              <li class="list_li">
+                <el-table :data="tableData" stripe style="width: 100%">
+                  <el-table-column prop="trap_number" label="设备编号">
+                  </el-table-column>
+                  <el-table-column prop="monitor_point" label="监测点">
+                  </el-table-column>
+                  <el-table-column prop="inducer_type" label="诱剂">
+                  </el-table-column>
+                  <el-table-column prop="report_status" label="有害生物登记">
+                    <template slot-scope="scope">
+                      <span
+                        v-if="scope.row.report_status == '已登记'"
+                        @click="examine(scope.row)"
+                        style="color: #409eff; cursor: pointer"
+                        >查看</span
+                      >
+                      <span v-else>{{ scope.row.report_status || "无" }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="report_time" label="录入时间">
+                    <template slot-scope="scope">
+                      <span>{{ scope.row.report_time || "无" }}</span>
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </li>
+            </ul>
+          </div>
+        </el-col>
+
+        <!-- 任务汇报 -->
+        <el-col :span="24">
+          <div class="list_box">
+            <div class="list_tlt">任务汇报</div>
+
+            <ul class="list_report_ul">
+              <li class="list_report_li">
+                {{ taskObj.report_msg || "暂无任务汇报" }}
+              </li>
+            </ul>
+          </div>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <!-- 填报信息弹框 -->
+    <el-dialog
+      :title="titleData"
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      width="30%"
+    >
+      <ul class="insect_ul">
+        <li
+          class="insect_list"
+          v-for="(item, index) in insectList"
+          :key="index"
+        >
+          <div>{{ item.pest_name + ":" }}</div>
+          <div style="margin: 0 0 0 20px">{{ item.pest_number }}</div>
+        </li>
+      </ul>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      fullHeight: document.documentElement.clientHeight - 116, //
+      loading: true, // 加载
+
+      // 详情总数据
+      taskObj: {},
+
+      // 任务填报信息
+      tableData: [],
+      dialogVisible: false, // 弹框
+      titleData: "", // 弹框标题
+      insectList: [], //害虫列表
+
+      // 任务汇报
+      reportList: [
+        "1、今天做了检测完成任务了没有",
+        "2、途中发生了什么事情",
+        "3、对这次任务有什么总结",
+        "4、我对这次任务有哪些建议"
+      ]
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {
+    fullHeight(val) {
+      //监控浏览器高度变化
+      if (!this.timer) {
+        this.fullHeight = val;
+        this.timer = true;
+        let that = this;
+        setTimeout(function() {
+          //防止过度调用监测事件,导致卡顿
+          that.timer = false;
+        }, 400);
+      }
+    }
+  },
+  //方法集合
+  methods: {
+    //动态获取浏览器高度
+    get_boderHeight() {
+      const that = this;
+      window.onresize = () => {
+        return (() => {
+          window.fullHeight = document.documentElement.clientHeight;
+          that.fullHeight = window.fullHeight;
+        })();
+      };
+    },
+
+    // 详情界面数据
+    detailsData() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=control_center.task.task_info",
+        data: this.qs.stringify({
+          task_id: this.$route.query.id
+        })
+      })
+        .then(res => {
+          if (res.data.data) {
+            var data = res.data.data;
+            data.img_list = JSON.parse(data.img_list);
+            this.taskObj = data;
+            this.tableData = data.trap_record_list;
+          }
+          this.loading = false;
+        })
+        .catch(err => {
+          this.loading = false;
+          console.log(err);
+        });
+    },
+
+    // 查看
+    examine(data) {
+      this.titleData = "设备编号:" + data.trap_number;
+      this.insectList = data.pest_list;
+      this.dialogVisible = true;
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.loading = true; //加载
+    this.get_boderHeight(); // 动态获取浏览器高度
+    this.detailsData(); // 详情界面数据
+  },
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroyed() {}, //生命周期 - 销毁完成
+  activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang="less" scoped>
+.superviseModuleDetails_box {
+  // 任务信息
+  .list_box {
+    margin: 0 0 20px 0;
+    .list_tlt {
+      display: flex;
+      justify-content: space-between;
+      width: 95%;
+      margin: 0 auto;
+      font-size: 20px;
+    }
+
+    .list_ul {
+      margin: 20px 0 0 0;
+      padding: 20px 40px 20px 40px;
+      background: #f6f8fa;
+      .list_li {
+        display: flex;
+        flex-wrap: wrap;
+        .list_div {
+          margin: 0 0 25px 0;
+          width: 33%;
+          font-size: 14px;
+          color: #333333;
+        }
+      }
+
+      .list_sing_li {
+        display: flex;
+        justify-content: space-between;
+        .list_sing_div {
+          margin: 0 0 25px 0;
+          width: 40%;
+          font-size: 14px;
+          display: flex;
+          color: #333333;
+          .list_div_img {
+            width: 113px;
+            margin: 0 15px 0 0;
+            display: flex;
+            img {
+              width: 100%;
+              height: 100%;
+            }
+          }
+        }
+      }
+    }
+
+    // 任务填报信息
+    .list_table_ul {
+      margin: 20px 0 0 0;
+      padding: 20px 40px 20px 40px;
+      // background: #f6f8fa;
+      .list_li {
+        display: flex;
+        flex-wrap: wrap;
+        .list_div {
+          margin: 0 0 25px 0;
+          width: 33%;
+          font-size: 14px;
+          color: #333333;
+        }
+      }
+    }
+
+    // 任务汇报
+    .list_report_ul {
+      margin: 20px 0 0 0;
+      padding: 20px 40px 20px 40px;
+      background: #f6f8fa;
+      .list_report_li {
+        font-size: 14px;
+        margin: 0 0 10px 0;
+        color: #333333;
+      }
+    }
+  }
+
+  /deep/.el-table th.el-table__cell {
+    background-color: #f6f8fa;
+  }
+
+  /deep/.el-card {
+    overflow: hidden;
+    overflow-y: auto;
+  }
+
+  // 害虫弹框
+  .insect_ul {
+    .insect_list {
+      display: flex;
+      margin: 0 0 20px 0;
+      div {
+        font-size: 18px;
+        width: 20%;
+        text-align: right;
+        margin: 0px 0 0 -35px;
+      }
+    }
+  }
+}
+</style>

+ 72 - 66
minggao/src/page/systemmanger/harmfulBiology.vue

@@ -32,13 +32,17 @@
         <el-table-column prop="ind" label="序号" width="120"> </el-table-column>
         <el-table-column prop="pest_name" label="有害生物名称" width="280">
         </el-table-column>
-        <el-table-column prop="quarantine" label="检疫性有害生物(是/否)" width="180">
+        <el-table-column
+          prop="quarantine"
+          label="检疫性有害生物(是/否)"
+          width="180"
+        >
         </el-table-column>
         <el-table-column prop="alien_specie" label="是否外来物种" width="180">
         </el-table-column>
         <el-table-column prop="messages" label="备注" width="280">
           <template slot-scope="scope">
-            <span>{{ scope.row.messages || '无' }}</span>
+            <span>{{ scope.row.messages || "无" }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="create_time" label="添加时间" width="180">
@@ -115,9 +119,7 @@
           <el-button size="small" type="primary" @click="submitForm"
             >确定</el-button
           >
-          <el-button size="small" @click="cancel"
-            >取消</el-button
-          >
+          <el-button size="small" @click="cancel">取消</el-button>
         </el-form-item>
       </el-form>
     </el-dialog>
@@ -145,8 +147,8 @@ export default {
           judge2: "是",
           remark: "这是一个有害虫类",
           addDate: "2016-05-02 10:00:00",
-          endDate: "2021-01-06 10:00:00",
-        },
+          endDate: "2021-01-06 10:00:00"
+        }
       ],
 
       // 编辑、 添加
@@ -156,31 +158,31 @@ export default {
         name: "", //有害生物名称
         judge: "", // 检疫性有害生物
         judge2: "", //是否外来入侵物种
-        remark: "", // 备注
+        remark: "" // 备注
       },
       rules: {
         name: [
-          { required: true, message: "请输入有害生物名称", trigger: "blur" },
+          { required: true, message: "请输入有害生物名称", trigger: "blur" }
           //   { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
         ],
         judge: [
-          { required: true, message: "请选检疫性有害生物", trigger: "blur" },
+          { required: true, message: "请选检疫性有害生物", trigger: "blur" }
           //   { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
         ],
         judge2: [
           {
             required: true,
             message: "请选择是否外来入侵物种",
-            trigger: "blur",
-          },
+            trigger: "blur"
+          }
           //   { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
-        ],
+        ]
         // remark: [
         //   { required: true, message: "请输入备注", trigger: "blur" },
         //   //   { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
         // ],
       },
-      insectObj: {},
+      insectObj: {}
     };
   },
   //监听属性 类似于data概念
@@ -193,7 +195,7 @@ export default {
         this.fullHeight = val;
         this.timer = true;
         let that = this;
-        setTimeout(function () {
+        setTimeout(function() {
           //防止过度调用监测事件,导致卡顿
           that.timer = false;
         }, 400);
@@ -202,7 +204,12 @@ export default {
 
     addrInsectVisible(val) {
       if (val == false) {
-        this.$refs["form"].resetFields();
+        console.log("gsjdgsjdgjsgdjsgdghj");
+        this.form.name = ""; // 有害生物名称
+        this.form.judge = ""; // 检疫性有害生物
+        this.form.judge2 = ""; // 是否外来入侵物种
+        this.form.remark = ""; // 备注
+        // this.$refs["form"].resetFields();
       }
     }
   },
@@ -221,7 +228,7 @@ export default {
 
     // 搜索
     searchData() {
-      this.harmfulBiologyList()
+      this.harmfulBiologyList();
     },
 
     // 添加有害生物
@@ -238,24 +245,24 @@ export default {
         data: this.qs.stringify({
           page: this.page,
           page_item: "10",
-          pest_name: this.input,
-        }),
+          pest_name: this.input
+        })
       })
-        .then((res) => {
+        .then(res => {
           if (res.data.data.total_item !== 0) {
-            var data = res.data.data
-            this.pageSum = data.total_item
-            var list = []
+            var data = res.data.data;
+            this.pageSum = data.total_item;
+            var list = [];
             data.page_list.forEach((item, index) => {
-              item.ind = index + 1
-              list.push(item)
+              item.ind = index + 1;
+              list.push(item);
             });
-            this.tableData = list                     
+            this.tableData = list;
           } else {
-            this.tableData = []
+            this.tableData = [];
           }
         })
-        .catch((err) => {
+        .catch(err => {
           console.log(err);
         });
     },
@@ -269,13 +276,13 @@ export default {
     // 编辑
     actionFunc(data) {
       this.tltData = "编辑有害生物";
-      this.insectObj = data
+      this.insectObj = data;
       this.form = {
         name: data.pest_name, //有害生物名称
         judge: data.quarantine, // 检疫性有害生物
         judge2: data.alien_specie, //是否外来入侵物种
-        remark: data.messages, // 备注
-      }
+        remark: data.messages // 备注
+      };
       this.addrInsectVisible = true;
     },
 
@@ -284,81 +291,80 @@ export default {
       this.$confirm("此操作将永久删除, 是否继续?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
-        type: "warning",
+        type: "warning"
       })
         .then(() => {
           this.$axios({
-            method: 'POST',
-            url: '/api/api_gateway?method=sysmenage.maintain.pest_delete',
+            method: "POST",
+            url: "/api/api_gateway?method=sysmenage.maintain.pest_delete",
             data: this.qs.stringify({
-              pest_id: data.pest_id 
+              pest_id: data.pest_id
             })
-          }).then((res) => {
-            console.log(res.data.data)
+          }).then(res => {
+            console.log(res.data.data);
             if (res.data.data == true) {
               this.$message({
                 type: "success",
                 message: "成功",
-                duration: 1500,
+                duration: 1500
               });
             } else {
               this.$message({
                 type: "error",
                 message: "失败",
-                duration: 1500,
+                duration: 1500
               });
             }
-            this.harmfulBiologyList()
-          })
+            this.harmfulBiologyList();
+          });
         })
         .catch(() => {
           this.$message({
             type: "info",
-            message: "已取消删除",
+            message: "已取消删除"
           });
         });
     },
 
     // 添加 - 编辑 确定
     submitForm() {
-      this.$refs["form"].validate((valid) => {
+      this.$refs["form"].validate(valid => {
         if (valid) {
-
-          if (this.tltData == '添加有害生物') {
-            var url = '/api/api_gateway?method=sysmenage.maintain.pest_add'
+          if (this.tltData == "添加有害生物") {
+            var url = "/api/api_gateway?method=sysmenage.maintain.pest_add";
             var postData = this.qs.stringify({
               pest_name: this.form.name,
               alien_specie: this.form.judge2,
               quarantine: this.form.judge,
-              messages: this.form.remark,
-            })
-          } else if (this.tltData == '编辑有害生物') {
-            var url = '/api/api_gateway?method=sysmenage.maintain.pest_modify'
+              messages: this.form.remark
+            });
+          } else if (this.tltData == "编辑有害生物") {
+            var url = "/api/api_gateway?method=sysmenage.maintain.pest_modify";
             var postData = this.qs.stringify({
               pest_id: this.insectObj.pest_id,
               pest_name: this.form.name,
               alien_specie: this.form.judge2,
               quarantine: this.form.judge,
-              messages: this.form.remark,
-            })
+              messages: this.form.remark
+            });
           }
           this.$axios({
-            method: 'POST',
+            method: "POST",
             url,
             data: postData
-          }).then((res) => {
-            console.log(res)
-            if (res.data.message == '') {
+          }).then(res => {
+            console.log(res);
+            if (res.data.message == "") {
               this.$message({
                 type: "success",
                 message: "成功",
-                duration: 1500,
+                duration: 1500
               });
             }
             this.$refs["form"].resetFields();
-            this.addrInsectVisible = false
-            this.harmfulBiologyList()
-          })
+            this.addrInsectVisible = false;
+            this.harmfulBiologyList();
+          });
         } else {
           //   console.log("error submit!!");
           return false;
@@ -367,14 +373,14 @@ export default {
     },
     cancel() {
       this.$refs["form"].resetFields();
-      this.addrInsectVisible = false
-    },
+      this.addrInsectVisible = false;
+    }
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    this.harmfulBiologyList()
+    this.harmfulBiologyList();
   },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
@@ -382,10 +388,10 @@ export default {
   updated() {}, //生命周期 - 更新之后
   beforeDestroy() {}, //生命周期 - 销毁之前
   destroyed() {}, //生命周期 - 销毁完成
-  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+  activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
 };
 </script>
-<style lang='less' scoped>
+<style lang="less" scoped>
 .harmfulBiology_box {
   .search_box {
     display: flex;
@@ -418,4 +424,4 @@ export default {
     width: 80%;
   }
 }
-</style>
+</style>

+ 21 - 9
minggao/src/router/index.js

@@ -7,10 +7,10 @@ import Login from '@/page/login/login'
 
 // *****************首页**********************
 import Index from '@/page/home/index'
-import facilitydistribute from '@/page/homepage/facilitydistribute'//设备分布
+import facilitydistribute from '@/page/homepage/facilitydistribute' //设备分布
 // import facilitydistribute from '@/page/homepage/home'//设备分布
 
-import pestdistribute from '@/page/homepage/pestdistribute'//有害生物分布
+import pestdistribute from '@/page/homepage/pestdistribute' //有害生物分布
 //---------------------------------------系统管理----------------------------------------------------
 const customsManger = () => import('@/Page/systemmanger/customsManger') //隶属海关
 const role = () => import('@/Page/systemmanger/role') // 角色管理
@@ -31,18 +31,21 @@ const superviseDetails = () => import('@/Page/commandCenter/superviseDetails') /
 const superviseLog = () => import('@/Page/commandCenter/superviseLog') //监测日志
 const superviseLogDetails = () => import('@/Page/commandCenter/superviseLogDetails') //监测日志 - 详情
 
+//---------------------------------------监督记录----------------------------------------------------
+const superviseModule = () => import('@/Page/superviseModule/superviseModule') //监督记录 
+
 // *****************测报系统**********************
-import cbd from '@/page/forecasting/cbd/Cbd'//首页
-import DataDetails from '@/page/forecasting/cbd/DataDetails'//数据详情
-import DataPhotos from '@/page/forecasting/cbd/cbdDataPhotos'//图片详情
-import PestsStats from '@/page/forecasting/cbd/pestsStats'//害虫统计
-import tongji from '@/page/forecasting/cbd/tongji'//害虫分析
-import deviceTongji from '@/page/forecasting/cbd/deviceTongji'//害虫排行
+import cbd from '@/page/forecasting/cbd/Cbd' //首页
+import DataDetails from '@/page/forecasting/cbd/DataDetails' //数据详情
+import DataPhotos from '@/page/forecasting/cbd/cbdDataPhotos' //图片详情
+import PestsStats from '@/page/forecasting/cbd/pestsStats' //害虫统计
+import tongji from '@/page/forecasting/cbd/tongji' //害虫分析
+import deviceTongji from '@/page/forecasting/cbd/deviceTongji' //害虫排行
 // ********************监控**************************
 import surveillancevideo from '@/page/monitor/Monitor'
 import photoView from '@/page/monitor/PhotoView'
 //*********************诱捕器系统********************
-import maintain from '@/page/forecasting/maintain/maintain'//监测点维护
+import maintain from '@/page/forecasting/maintain/maintain' //监测点维护
 import trap from '@/page/forecasting/trap/trap' //诱捕器
 import fillinrecord from '@/page/forecasting/trap/fillinrecord' //填报记录
 import bait from '@/page/forecasting/trap/bait' //诱剂维护
@@ -205,6 +208,15 @@ export default new Router({
           }
         },
         //------------------指挥中心--------------------------
+        //------------------监督记录--------------------------
+        {
+          path: 'superviseModule',
+          component: superviseModule,
+          meta: {
+            title: '监督记录'
+          }
+        },
+        //------------------监督记录--------------------------
         {
           path: 'cbd',
           component: cbd