zhangsijie пре 1 година
родитељ
комит
b790d72c59

+ 4 - 4
minggao/config/index.js

@@ -1,8 +1,8 @@
 /*
  * @Author: zhangsijie 1935241421@qq.com
  * @Date: 2023-06-05 08:51:07
- * @LastEditors: zhangsijie 1935241421@qq.com
- * @LastEditTime: 2023-06-07 09:15:15
+ * @LastEditors: lin
+ * @LastEditTime: 2024-04-03 10:33:12
  * @FilePath: \project\minggao_vue\MingGao_vue\minggao\config\index.js
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -21,10 +21,10 @@ module.exports = {
       '/api': {
         ws: false,
         // target: 'http://192.168.1.52:12345', //翟毅飞
-         target: 'https://www.yhswjc.com', //线上
+        //  target: 'https://www.yhswjc.com', //线上
         // target: 'http://192.168.1.77:12345', //曹世祥
         // target: 'http://114.115.147.140:12345',
-        //  target: 'http://192.168.1.168:8000', //闫自林本地服务
+         target: 'http://192.168.0.117:8001', //闫自林本地服务
         changeOrigin: true,
         pathRewrite: {
           '^/api': '/api' //重写接口

+ 2 - 2
minggao/src/assets/css/global.css

@@ -51,7 +51,7 @@ p {
 }
 
 .is-background .el-pager li.active {
-  background-color: #17bb89 !important;
+  /* background-color: #17bb89 !important; */
 }
 
 .el-col {
@@ -112,7 +112,7 @@ p {
   color: #3eb984 !important;
 }
 
-/* 
+/*
 /* 蓝色 */
 .el-button.el-button--blueInfo {
   background: #3eafb9;

+ 570 - 0
minggao/src/page/recordForm/harmfulRecord.vue

@@ -0,0 +1,570 @@
+<!-- 有害生物记录表  -->
+<template>
+  <div class="form-page">
+    <div class="form-page__search">
+      <el-row type="flex" justify="space-between">
+        <el-col :span="24">
+          <el-select v-model="queryInfo.group" placeholder="请选择组织" clearable filterable size="mini" @change="search">
+            <el-option v-for="item in organizationList" :label="item.org_name" :value="item.org_name"
+              :key="item.id"></el-option>
+          </el-select>
+          <el-select v-model="queryInfo.category" size="mini" placeholder="请选择分类">
+            <el-option v-for="typeItem in typeList" :label="typeItem.label" :value="typeItem.value"
+              :key="typeItem.value"></el-option>
+          </el-select>
+          <el-date-picker v-model="queryInfo.time_range" type="monthrange" start-placeholder="开始日期"
+            end-placeholder="结束日期" @change="search" size="mini" :editable="false" value-format="timestamp">
+          </el-date-picker>
+          <el-input size="mini" v-model="queryInfo.name" placeholder="请输入名称"></el-input>
+          <el-button type="info" @click="search" size="mini">查询</el-button>
+          <el-button type="info" size="mini" @click="exportDialog = true; uploadForm.category = ''">导入</el-button>
+        </el-col>
+      </el-row>
+    </div>
+    <el-card style="margin-top: 15px">
+      <div class="form-page__table" v-loading="loading">
+        <el-table :data="tableData" style="width: 100%" :stripe="true" :height="48 * 13" ref="gridTable">
+          <el-table-column prop="index" label="编号" align="center" width="60px" fixed="left">
+            <template slot-scope="scope">
+              <span>{{ (queryInfo.page - 1) * 20 + (scope.$index + 1) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="group" label="组织" width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column prop="category" label="分类" show-overflow-tooltip>
+          </el-table-column>
+          <el-table-column prop="name" label="有害生物名称" show-overflow-tooltip>
+          </el-table-column>
+          <el-table-column prop="num" label="数量" show-overflow-tooltip width="80">
+          </el-table-column>
+          <el-table-column prop="occurs" label="是否检疫性" width="140" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ scope.row.is_quarantine ? '是' : '否' }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="occurs" label="是否外来物种" width="140" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ scope.row.is_export ? '是' : '否' }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="occurs" label="是否新物种" width="140" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ scope.row.is_new ? '是' : '否' }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="addtime_format" label="发现时间" show-overflow-tooltip>
+          </el-table-column>
+          <el-table-column label="操作" width="150" align="center" fixed="right">
+            <template slot-scope="scope">
+              <a class="reset" href="javascript:;" @click="handleEdit(scope.row)">编辑</a>
+              <i class="line"></i>
+              <a class="delete" href="javascript:;" @click="deleteData(scope.row.id)">删除</a>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <el-pagination background layout="prev, pager, next,jumper" :total="total" :page-size="20"
+        @current-change="pageChange" :current-page="queryInfo.page">
+      </el-pagination>
+    </el-card>
+    <!-- 弹框 -->
+    <el-dialog title="导入" :visible.sync="exportDialog" width="500px" :close-on-click-modal="false">
+      <div class="downloadbox">
+        <el-form :model="uploadForm" :rules="uploadrules" size="mini" ref="ruleForm" label-width="100px"
+          class="demo-ruleForm">
+          <el-form-item label="分类" prop="category">
+            <el-select v-model="uploadForm.category" placeholder="请选择">
+              <el-option v-for="typeItem in typeList" :label="typeItem.label" :value="typeItem.value"
+                :key="typeItem.value"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-upload action="" :auto-upload="false" accept=".xlsx, .xls" :show-file-list="false" :on-change="handle">
+              <el-button type="success" size="mini">点击上传</el-button>
+            </el-upload>
+          </el-form-item>
+        </el-form>
+        <p class="tishi">
+          <span>注:请先下模板,在模板中填入数据上传</span><span @click="download">下载模板</span>
+        </p>
+      </div>
+      <!-- <span slot="footer" class="dialog-footer">
+        <el-button @click="downloadtf = false">取 消</el-button>
+        <el-button type="primary" @click="downloadtf = false">确 定</el-button>
+      </span> -->
+    </el-dialog>
+    <!-- 新增/修改弹框 -->
+    <el-dialog title="编辑" :visible.sync="dialogVisible" width="500px" :close-on-click-modal="false">
+      <el-form :model="baseForm" :rules="rules" size="mini" ref="upDateForm" label-width="100px" class="updateForm">
+        <el-form-item label="分类" prop="category">
+          <el-select v-model="baseForm.category" placeholder="请选择">
+            <el-option v-for="typeItem in typeList" :label="typeItem.label" :value="typeItem.value"
+              :key="typeItem.value"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="发现年月" prop="addtime">
+          <el-date-picker v-model="baseForm.addtime" value-format="timestamp" type="month" placeholder="选择月">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="组织" prop="group">
+          <el-select v-model="baseForm.group" filterable placeholder="请选择">
+            <el-option v-for="item in organizationList" :label="item.org_name" :value="item.org_name"
+              :key="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="害虫名称" prop="name">
+          <el-select v-model="baseForm.name" filterable placeholder="请选择">
+            <el-option v-for="item in pestLibrary" :label="item.pest_name" :value="item.pest_name"
+              :key="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="害虫数量" prop="num">
+          <el-input size="mini" type="number" v-model="baseForm.num" placeholder="请输入"></el-input>
+        </el-form-item>
+        <el-form-item label="是否检疫性" prop="is_quarantine">
+          <el-radio-group v-model="baseForm.is_quarantine">
+            <el-radio :label="true">是</el-radio>
+            <el-radio :label="false">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="是否外来物种" prop="is_export">
+          <el-radio-group v-model="baseForm.is_export">
+            <el-radio :label="true">是</el-radio>
+            <el-radio :label="false">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="是否新物种" prop="is_new">
+          <el-radio-group v-model="baseForm.is_new">
+            <el-radio :label="true">是</el-radio>
+            <el-radio :label="false">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="confirmUpdate('upDateForm')" size="mini">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { assign, omit } from 'lodash-es';
+import { downFile } from '@/util/downloadFile.js';
+
+export default {
+  data() {
+    //这里存放数据
+    return {
+      exportDialog: false,
+      firstLoad: true,
+      queryInfo: {
+        page: 1,
+        time_range: null, //
+        group: '', //
+        category: '', //
+        name: ''
+      },
+      tableData: [],
+      total: 10,
+      loading: false,
+      organizationList: [], // 组织列表
+      pestLibrary: [], //害虫名称列表
+      dialogVisible: false,
+      dialogSubmitLoading: false,
+      typeList: [{
+        label: '林木害虫',
+        value: '林木害虫',
+      },
+      {
+        label: '实蝇',
+        value: '实蝇',
+      },
+      {
+        label: '外来有害杂草',
+        value: '外来有害杂草',
+      }],
+      uploadForm: {
+        category: '',
+        file: null
+      },
+      uploadrules: {
+        category: [
+          { required: true, message: '请选择分类', trigger: 'blur' }
+          // { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
+        ],
+      },
+      baseForm: {
+        id: '', //id
+        category: '', // 类别
+        group: '', // 组织,
+        num: '', // 害虫数量,
+        name: '', // 害虫名称,
+        is_quarantine: false, // 是否检测,
+        is_export: false, // 是否外来输入,
+        is_new: false, //是否新物种
+        device_id: '', // 设备ID
+        addtime: '' // 所属年月
+      },
+      rules: {
+        category: [
+          // { required: true, message: '请选择分类', trigger: 'blur' }
+          // { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
+        ]
+      },
+      exportLoading: false
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {
+    // 'queryInfo.user_id'(val) {
+    //   console.log('queryInfo.user_id', val);
+    //   if (val && this.firstLoad) {
+    //     this.firstLoad = false;
+    //     this.getDataList();
+    //   }
+    // }
+  },
+  //方法集合
+  methods: {
+    // 导入
+    handle(ev) {
+      if (!this.uploadForm.category) {
+        this.$message.error('请选择类别');
+        return
+      }
+      var datas = new FormData();
+      datas.append('category', this.uploadForm.category);
+      datas.append('file', ev.raw);
+      datas.append('token', localStorage.getItem('session'));
+      this.$axios({
+        method: 'POST',
+        url: '/api/api_gateway?method=data_report.alerm.add_pest',
+        data: datas
+      }).then(res => {
+        console.log(res);
+        // this.downloadFile(res, 'allot_result.xls');
+      });
+    },
+    download() {
+      //下载模板
+      // http://192.168.1.17:12345
+      window.location.href = this.$deriveData + '/api/api_gateway?method=data_report.alerm.pest_model';
+    },
+    // 导出
+    // exportData() {
+    //   if (this.exportLoading) {
+    //     return;
+    //   }
+
+    //   if (!this.queryInfo.user_id) {
+    //     this.$message.error('请选择踏查人');
+    //     return;
+    //   }
+
+    //   if (!this.queryInfo.time_range) {
+    //     this.$message.error('请选择踏查时间');
+    //     return;
+    //   }
+
+    //   if (!this.tableData.length) {
+    //     this.$message.error('当前无数据可导出');
+    //     return;
+    //   }
+
+    //   this.exportLoading = true;
+    //   this.$axios({
+    //     method: 'POST',
+    //     url: '/api/api_gateway?method=data_report.info.export_inspect_info',
+    //     responseType: 'blob',
+    //     data: this.qs.stringify({
+    //       user_id: this.queryInfo.user_id,
+    //       time_range: this.queryInfo.time_range // 查询时间
+    //     })
+    //   })
+    //     .then(res => {
+    //       downFile({
+    //         data: res.data,
+    //         fileName: `踏查记录表-${this.queryInfo.time_range}.docx`
+    //       });
+
+    //       setTimeout(() => {
+    //         this.exportLoading = false;
+    //       }, 1500);
+    //     })
+    //     .catch(err => {
+    //       setTimeout(() => {
+    //         this.exportLoading = false;
+    //       }, 1500);
+    //     });
+    // },
+    getDataList() {
+      //获取列表
+      this.loading = true;
+      this.$axios({
+        method: 'POST',
+        url: '/api/api_gateway?method=data_report.alerm.pest_list',
+        data: this.qs.stringify({
+          page: this.queryInfo.page,
+          user_id: this.queryInfo.user_id, //
+          group: this.queryInfo.group, //
+          category: this.queryInfo.category,
+          name: this.queryInfo.name,
+          time_range: this.queryInfo.time_range //
+        })
+      }).then(res => {
+        this.loading = false;
+        console.log(res.data.data);
+        if (!res.data.data) {
+          return;
+        }
+
+        this.total = res.data.data.total;
+        this.tableData = res.data.data.data;
+
+        this.$nextTick(() => {
+          this.$refs.gridTable.bodyWrapper.scrollTop = 0;
+        });
+      });
+    },
+    search() {
+      this.queryInfo.page = 1;
+      this.getDataList();
+    },
+    pageChange(e) {
+      this.queryInfo.page = e;
+      this.getDataList();
+    },
+    deleteData(id) {
+      this.$confirm('此操作将永久删除, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          this.$axios({
+            method: 'POST',
+            url: '/api/api_gateway?method=data_report.alerm.delete_pest',
+            data: this.qs.stringify({
+              id
+            })
+          }).then(res => {
+            console.log(res.data.data);
+            if (res.data.data == true) {
+              this.$message.success('操作成功');
+              this.getDataList()
+            } else {
+              this.$message.error(res.data.message)
+            }
+          })
+        })
+    },
+    handleEdit(row) {
+      this.resetFormData();
+      if (row.id) {
+        this.baseForm = assign({}, row);
+        this.baseForm.addtime = this.baseForm.addtime * 1000;
+      }
+
+      this.dialogVisible = true;
+    },
+    confirmUpdate(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.dialogSubmitLoading = true;
+
+          if (!this.baseForm.id) {
+            // 添加
+            // const payload = omit(this.baseForm, []);
+            // this.$axios({
+            //   method: 'POST',
+            //   url: '/api/api_gateway?method=data_report.info.inspect_add',
+            //   data: this.qs.stringify(payload)
+            // })
+            //   .then(res => {
+            //     this.$message({
+            //       type: 'success',
+            //       message: '新增成功!',
+            //       duration: 1500
+            //     });
+            //     this.resetForm(formName);
+            //     this.search();
+            //   })
+            //   .finally(() => {
+            //     this.dialogSubmitLoading = false;
+            //   });
+          } else {
+            // 编辑
+            this.$axios({
+              method: 'POST',
+              url: '/api/api_gateway?method=data_report.alerm.change_pest',
+              data: this.qs.stringify(this.baseForm)
+            })
+              .then(res => {
+                this.$message({
+                  type: 'success',
+                  message: '更新成功!',
+                  duration: 1500
+                });
+                this.resetForm(formName);
+                this.search();
+              })
+              .finally(() => {
+                this.dialogSubmitLoading = false;
+              });
+          }
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+      this.resetFormData();
+      this.dialogVisible = false;
+    },
+    resetFormData() {
+      this.baseForm = {
+        id: '', //id
+        category: '', // 类别
+        group: '', // 组织,
+        num: '', // 害虫数量,
+        name: '', // 害虫名称,
+        is_quarantine: false, // 是否检测,
+        is_export: false, // 是否外来输入,
+        is_new: false, //是否新物种
+        device_id: '', // 设备ID
+        addtime: '' // 所属年月
+      };
+    },
+    getOrganizationList() {
+      this.$axios({
+        method: 'POST',
+        url: '/api/api_gateway?method=sysmenage.usermanager.org_list'
+      }).then(res => {
+        this.organizationList = res.data.data.page_list[0].childrens;
+      });
+      this.$axios({
+        method: 'POST',
+        url: '/api/api_gateway?method=data_report.alerm.pests_list_info'
+      }).then(res => {
+        this.pestLibrary = res.data.data.data;
+      });
+    }
+  },
+  beforeCreate() { }, //生命周期 - 创建之前
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() { },
+  beforeMount() { }, //生命周期 - 挂载之前
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.getOrganizationList();
+    this.getDataList();
+  },
+  beforeUpdate() { }, //生命周期 - 更新之前
+  updated() { }, //生命周期 - 更新之后
+  beforeDestroy() { }, //生命周期 - 销毁之前
+  destroyed() { }, //生命周期 - 销毁完成
+  activated() { } //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style scoped lang="less">
+.updateForm {
+
+  /deep/ .el-select,
+  /deep/ .el-date-editor {
+    width: 100%;
+  }
+}
+
+a {
+  text-decoration: none;
+}
+
+.reset {
+  color: #1890ff;
+}
+
+.delete {
+  color: #f56c6c;
+}
+
+.line {
+  display: inline-block;
+  width: 1px;
+  background: rgba(0, 0, 0, 0.09);
+  margin: 0 11px;
+  height: 14px;
+}
+
+.downloadbox {
+  .tishi {
+    padding-left: 100px;
+    margin-top: 15px;
+    display: flex;
+    justify-content: space-between;
+    color: #409eff;
+
+    span:last-child {
+      cursor: pointer;
+    }
+  }
+}
+
+.form-page {
+  &__search {
+    overflow: hidden;
+
+    // height: 40px;
+    /deep/.el-select {
+      width: 220px;
+      margin-right: 15px;
+    }
+
+    /deep/.el-input {
+      width: 220px;
+      margin-right: 15px;
+    }
+
+    /deep/.el-date-editor {
+      width: 250px !important;
+      margin-right: 15px;
+    }
+  }
+
+  &__table {
+    margin-top: 15px;
+
+    /deep/.el-table__header-wrapper {
+      th {
+        // background-color: #fafafa;
+      }
+    }
+  }
+}
+
+/deep/.el-button--info {
+  background-color: #409eff;
+  border-color: #409eff;
+}
+
+/deep/.el-date-editor {
+  cursor: pointer;
+
+  .el-range-input {
+    cursor: pointer;
+  }
+}
+
+.character {
+  font-size: 14px;
+  margin-left: 10px;
+  margin-right: 10px;
+}
+
+.mr10 {
+  margin-right: 10px;
+}
+</style>

+ 7 - 0
minggao/src/router/index.js

@@ -401,6 +401,13 @@ export default new Router({
           meta: {
             title: '风吸式太阳诱虫灯-详情'
           }
+        },
+        {
+          path:'harmfulRecord',
+          component:() => import('@/page/recordForm/harmfulRecord'),
+          meta: {
+            title: '有害生物记录表'
+          }
         }
       ]
     }

+ 2 - 1
minggao/src/util/http.js

@@ -44,7 +44,8 @@ axios.interceptors.request.use(
       url !== 'monitor_manage.cbd_manage.add_img' &&
       req.url.indexOf('trap_export') == -1 &&
       url !== 'monitor_manage.home_map.home_theme' &&
-      req.url.indexOf('monitor_point_export') == -1
+      req.url.indexOf('monitor_point_export') == -1 &&
+      req.url.indexOf('data_report.alerm.add_pest') == -1
     ) {
       req.data = req.data ? req.data + '&token=' + session : 'token=' + session;
     }