zkl 4 лет назад
Родитель
Сommit
6b029a9bf2

+ 37 - 0
minggao/src/page/commandCenter/realTime.vue

@@ -0,0 +1,37 @@
+<!--  -->
+<template>
+  <div class="">
+      实时通信
+  </div>
+</template>
+
+<script>
+
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  data() {
+    //这里存放数据
+    return {};
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {},
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {},
+  beforeCreate() {}, //生命周期 - 创建之前
+  beforeMount() {}, //生命周期 - 挂载之前
+  beforeUpdate() {}, //生命周期 - 更新之前
+  updated() {}, //生命周期 - 更新之后
+  beforeDestroy() {}, //生命周期 - 销毁之前
+  destroyed() {}, //生命周期 - 销毁完成
+  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang='less' scoped>
+</style>

+ 34 - 21
minggao/src/page/systemmanger/customsManger.vue

@@ -8,15 +8,18 @@
           <!-- 组织搜索 -->
           <div class="search_box">
             <el-input
-              size="small"
+              size="mini"
               placeholder="请输入组织名称"
-              v-model="input"
+              v-model.trim="input"
+              @change="searchData"
               clearable
             >
             </el-input>
             <div class="btn_box">
-              <el-button type="primary" size="small">搜索</el-button>
-              <el-button type="primary" size="small" @click="addrUser"
+              <el-button type="primary" size="mini" @change="searchData"
+                >搜索</el-button
+              >
+              <el-button type="primary" size="mini" @click="addrUser"
                 >添加用户</el-button
               >
             </div>
@@ -38,6 +41,7 @@
 
       <!-- 分页 -->
       <el-pagination
+        style="position: absolute; bottom: 0; left: 50%"
         :page-size="10"
         @current-change="newPage"
         :current-page="page"
@@ -78,7 +82,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.name"
+            v-model.trim="form.name"
           ></el-input>
         </el-form-item>
 
@@ -168,13 +172,13 @@ export default {
 
     // 树形表格
     orderByFunc(val) {
-      alert("排序");
-      alert(val);
+      console.log("排序");
+      console.log(val);
     },
     // 编辑
     actionFunc(m) {
       console.log(m);
-      this.userData = m
+      this.userData = m;
       this.tltData = "编辑隶属海关"; //改变弹框标题
       if (m.level == 1) {
         this.$set(this.higherList, 0, {
@@ -213,16 +217,16 @@ export default {
             .then((res) => {
               if (res.data.data == true) {
                 this.$message({
-                  message: '删除成功了',
-                  type: 'success',
-                  duration: 1500
+                  message: "删除成功了",
+                  type: "success",
+                  duration: 1500,
                 });
-                this.tabListData()
+                this.tabListData();
               } else {
                 this.$message({
-                  message: '删除失败',
-                  type: 'error',
-                  duration: 1500
+                  message: "删除失败",
+                  type: "error",
+                  duration: 1500,
                 });
               }
               // console.log(res);
@@ -252,7 +256,7 @@ export default {
     },
     // 添加下级组织
     addOrganization(m) {
-      console.log(m)
+      console.log(m);
       this.tltData = "添加隶属海关"; //改变弹框标题
       this.$set(this.higherList, 0, {
         value: m.id,
@@ -288,7 +292,7 @@ export default {
 
     // 添加用户 || 编辑用户 -- 确定
     onSubmit() {
-      var that = this
+      var that = this;
       if (this.form.name == "") {
         this.$message({
           message: "请填写组织名称!",
@@ -318,7 +322,7 @@ export default {
             parent_org_id: that.higherList[0].value, // 上级组织id,没有上级组织表示创建的组织是顶级组织
           });
         }
- 
+
         this.$axios({
           method: "POST",
           url,
@@ -332,8 +336,8 @@ export default {
                 type: "success",
                 duration: 1500,
               });
-              this.addrUserVisible = false
-              this.tabListData()
+              this.addrUserVisible = false;
+              this.tabListData();
             } else {
               this.$message({
                 message: "失败!",
@@ -364,12 +368,20 @@ export default {
           if (res.data.data.total_item !== 0) {
             this.treeDataSource = res.data.data.page_list;
             this.tableSum = res.data.data.total_item;
+          } else {
+            this.treeDataSource = [];
+            this.tableSum = 0;
           }
         })
         .catch((err) => {
           // console.log(err);
         });
     },
+
+    // 搜索
+    searchData() {
+      this.tabListData();
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
@@ -410,7 +422,8 @@ export default {
 .search_box {
   display: flex;
   /deep/.el-input {
-    width: 300px;
+    // width: 300px;
+    width: 15%;
   }
   .btn_box {
     margin: 0 0 0 15px;

+ 61 - 10
minggao/src/page/systemmanger/dayRecord.vue

@@ -8,24 +8,37 @@
           <!-- 搜索 -->
           <div class="search_box">
             <el-input
-              size="small"
-              placeholder="请输入操作角色或者操作人员"
-              v-model="input"
+              size="mini"
+              placeholder="请输入操作人员"
+              v-model.trim="input"
+              @change="searchData"
+              clearable
+            >
+            </el-input>
+            <el-input
+              size="mini"
+              placeholder="请输入操作角色"
+              v-model.trim="input1"
+              @change="searchData"
               clearable
             >
             </el-input>
             <el-date-picker
-              size="small"
+              size="mini"
               v-model="value1"
+              @change="searchData"
               type="datetimerange"
+              range-separator="至"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
-              :default-time="['12:00:00']"
+              align="right"
             >
             </el-date-picker>
             <div class="btn_box">
-              <el-button type="primary" size="small">搜索</el-button>
-              <el-button type="primary" size="small">重置</el-button>
+              <el-button type="primary" size="mini" @click="searchData"
+                >搜索</el-button
+              >
+              <el-button type="primary" size="mini" @click="reset">重置</el-button>
             </div>
           </div>
         </el-col>
@@ -38,7 +51,7 @@
         </el-table-column>
         <el-table-column prop="user_name" label="操作人员" width="280">
         </el-table-column>
-        <el-table-column prop="account_name" label="操作账号"></el-table-column>
+        <el-table-column prop="role_name" label="操作账号"></el-table-column>
         <el-table-column prop="ip" label="IP"></el-table-column>
         <el-table-column label="操作">
           <template slot-scope="scope">
@@ -82,7 +95,10 @@ export default {
     return {
       fullHeight: document.documentElement.clientHeight - 116, //
       input: "",
+      input1: "",
       value1: "",
+      startTime: "",
+      endTime: "",
 
       // 表格
       tableData: [],
@@ -134,7 +150,7 @@ export default {
     // 详情
     detailsFunc(data) {
       this.objData = data;
-      this.dialogVisible = true
+      this.dialogVisible = true;
     },
 
     // 表格列表
@@ -145,6 +161,10 @@ export default {
         data: this.qs.stringify({
           page: this.page,
           page_item: "10",
+          user_name: this.input, // 用户名
+          role_name: this.input1, // 角色名称
+          start_time: this.startTime, // 开始时间
+          end_time: this.endTime, // 结束时间
         }),
       })
         .then((res) => {
@@ -158,6 +178,31 @@ export default {
           // console.log(err)
         });
     },
+
+    // 搜索
+    searchData() {
+      // this.startTime = this.formatTime(this.value1[0], "yyyy-MM-dd hh:mm:ss")
+      if (this.value1) {
+        this.startTime = this.formatTime(this.value1[0], "yyyy-MM-dd");
+        this.endTime = this.formatTime(this.value1[1], "yyyy-MM-dd");
+      } else {
+        this.startTime = "";
+        this.endTime = "";
+      }
+      // console.log(this.startTime)
+      // console.log(this.endTime)
+      this.tableList();
+    },
+
+    // 重置
+    reset() {
+      this.value1 = ''
+      this.input = ''
+      this.input1 = ''
+      this.startTime = ''
+      this.endTime = ''
+      this.tableList()
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
@@ -180,12 +225,18 @@ export default {
   .search_box {
     display: flex;
     /deep/.el-input {
-      width: 300px;
+      // width: 200px;
+      width: 15%;
       margin: 0 15px 0 0;
     }
     .btn_box {
       margin: 0 0 0 15px;
     }
+
+    /deep/.el-range-editor--mini.el-input__inner {
+      // width: 330px;
+      width: 20%;
+    }
   }
 
   a {

+ 13 - 11
minggao/src/page/systemmanger/harmfulBiology.vue

@@ -8,18 +8,18 @@
           <!-- 组织搜索 -->
           <div class="search_box">
             <el-input
-              size="small"
+              size="mini"
               placeholder="请输入有害生物名称"
-              v-model="input"
+              v-model.trim="input"
               @change="searchData"
               clearable
             >
             </el-input>
             <div class="btn_box">
-              <el-button type="primary" size="small" @click="searchData"
+              <el-button type="primary" size="mini" @click="searchData"
                 >搜索</el-button
               >
-              <el-button type="primary" size="small" @click="addrHarmfulBiology"
+              <el-button type="primary" size="mini" @click="addrHarmfulBiology"
                 >添加有害生物</el-button
               >
             </div>
@@ -83,7 +83,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.name"
+            v-model.trim="form.name"
           ></el-input>
         </el-form-item>
 
@@ -107,7 +107,7 @@
             size="mini"
             type="textarea"
             resize="none"
-            v-model="form.remark"
+            v-model.trim="form.remark"
           ></el-input>
         </el-form-item>
 
@@ -294,7 +294,8 @@ export default {
               pest_id: data.pest_id 
             })
           }).then((res) => {
-            if (res.data.data.message == '') {
+            console.log(res.data.data)
+            if (res.data.data == true) {
               this.$message({
                 type: "success",
                 message: "成功",
@@ -307,6 +308,7 @@ export default {
                 duration: 1500,
               });
             }
+            this.harmfulBiologyList()
           })
         })
         .catch(() => {
@@ -326,8 +328,8 @@ export default {
             var url = '/api/api_gateway?method=sysmenage.maintain.pest_add'
             var postData = this.qs.stringify({
               pest_name: this.form.name,
-              alien_specie: this.form.judge,
-              quarantine: this.form.judge2,
+              alien_specie: this.form.judge2,
+              quarantine: this.form.judge,
               messages: this.form.remark,
             })
           } else if (this.tltData == '编辑有害生物') {
@@ -335,8 +337,8 @@ export default {
             var postData = this.qs.stringify({
               pest_id: this.insectObj.pest_id,
               pest_name: this.form.name,
-              alien_specie: this.form.judge,
-              quarantine: this.form.judge2,
+              alien_specie: this.form.judge2,
+              quarantine: this.form.judge,
               messages: this.form.remark,
             })
           }

+ 2 - 2
minggao/src/page/systemmanger/motif.vue

@@ -64,7 +64,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.name"
+            v-model.trim="form.name"
           ></el-input>
         </el-form-item>
 
@@ -74,7 +74,7 @@
             size="mini"
             type="textarea"
             resize="none"
-            v-model="form.role_describe"
+            v-model.trim="form.role_describe"
           ></el-input>
         </el-form-item>
 

+ 20 - 8
minggao/src/page/systemmanger/role.vue

@@ -8,18 +8,18 @@
           <!-- 组织搜索 -->
           <div class="search_box">
             <el-input
-              size="small"
+              size="mini"
               placeholder="请输入角色名称"
-              v-model="input"
+              v-model.trim="input"
               @change="searchData"
               clearable
             >
             </el-input>
             <div class="btn_box">
-              <el-button type="primary" size="small" @click="searchData"
+              <el-button type="primary" size="mini" @click="searchData"
                 >搜索</el-button
               >
-              <el-button type="primary" size="small" @click="addrRole"
+              <el-button type="primary" size="mini" @click="addrRole"
                 >添加角色</el-button
               >
             </div>
@@ -76,7 +76,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.name"
+            v-model.trim="form.name"
           ></el-input>
         </el-form-item>
 
@@ -86,7 +86,7 @@
             size="mini"
             type="textarea"
             resize="none"
-            v-model="form.describe"
+            v-model.trim="form.describe"
           ></el-input>
         </el-form-item>
 
@@ -194,6 +194,12 @@ export default {
         }, 400);
       }
     },
+
+    setRightDialogVisible(val) {
+      if (val == false) {
+        this.defKeys = []
+      }
+    },
   },
   //方法集合
   methods: {
@@ -358,9 +364,11 @@ export default {
         .then((res) => {
           if (res.data.message == "") {
             var data = res.data.data.children;
+            this.rightsList = []
             this.rightsList = data;
             this.limitsList(); //获取当前角色的权限
           } else {
+            this.rightsList = []
             this.$message.error("获取权限列表失败!");
           }
         })
@@ -388,9 +396,12 @@ export default {
                 this.getLeafkeys(list[i], this.defKeys);
               }
             }
+            this.tableData = list;
+          } else {
+            this.tableData = []
           }
         //   this.tabListData = list;
-          this.tableData = list;
+          // this.tableData = list;
         })
         .catch((err) => {
           console.log(err);
@@ -494,7 +505,8 @@ export default {
   .search_box {
     display: flex;
     /deep/.el-input {
-      width: 300px;
+      // width: 300px;
+      width: 15%;
     }
     .btn_box {
       margin: 0 0 0 15px;

+ 86 - 45
minggao/src/page/systemmanger/userManger.vue

@@ -26,26 +26,26 @@
               <!-- 组织搜索 -->
               <div class="search_box">
                 <el-input
-                  size="small"
+                  size="mini"
                   placeholder="请输入用户姓名"
-                  v-model="nameVal"
+                  v-model.trim="nameVal"
                   @change="searchData"
                   clearable
                 >
                 </el-input>
                 <el-input
-                  size="small"
+                  size="mini"
                   placeholder="请输入手机号"
-                  v-model="phoneVal"
+                  v-model.trim="phoneVal"
                   @change="searchData"
                   clearable
                 >
                 </el-input>
                 <div class="btn_box">
-                  <el-button type="primary" size="small" @click="searchData"
+                  <el-button type="primary" size="mini" @click="searchData"
                     >搜索</el-button
                   >
-                  <el-button type="primary" size="small" @click="addrRole"
+                  <el-button type="primary" size="mini" @click="addrRole"
                     >添加用户</el-button
                   >
                 </div>
@@ -164,7 +164,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.user"
+            v-model.trim="form.user"
           ></el-input>
         </el-form-item>
 
@@ -176,7 +176,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.password"
+            v-model.trim="form.password"
           ></el-input>
         </el-form-item>
 
@@ -184,7 +184,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.name"
+            v-model.trim="form.name"
           ></el-input>
         </el-form-item>
 
@@ -225,7 +225,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.phone"
+            v-model.trim="form.phone"
           ></el-input>
         </el-form-item>
 
@@ -233,7 +233,7 @@
           <el-input
             style="width: 80%"
             size="mini"
-            v-model="form.mailbox"
+            v-model.trim="form.mailbox"
           ></el-input>
         </el-form-item>
 
@@ -264,7 +264,25 @@ export default {
   //import引入的组件需要注入到对象中才能使用
   components: {},
   data() {
-    //这里存放数据
+    //input验证 - 密码框 - 禁止输入汉字
+    const checkPath = (rule, value, callback) => {
+      this.form.password = value.replace(/[\u4E00-\u9FA5]/g, "");
+      // 一定要执行回调函数
+      // 否则不起效果
+      callback();
+    };
+    // input验证 - 验证手机号
+    var checkphone = (rule, value, callback) => {
+      // let phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
+      if (value == "") {
+        callback(new Error("请输入手机号"));
+      } else if (!this.isCellPhone(value)) {
+        //引入methods中封装的检查手机格式的方法
+        callback(new Error("请输入正确的手机号!"));
+      } else {
+        callback();
+      }
+    };
     return {
       fullHeight: document.documentElement.clientHeight - 116, //
 
@@ -293,7 +311,9 @@ export default {
         user: "", //账号
         password: "", // 密码
         name: "", // 姓名
-        judge: [], // 隶属海关
+        judge: [
+          [3, 4, 7],
+        ], // 隶属海关
         role: [], //角色
         phone: "", // 手机号码
         mailbox: "", //邮箱
@@ -306,6 +326,7 @@ export default {
         ],
         password: [
           { required: true, message: "请输入密码", trigger: "blur" },
+          { validator: checkPath, trigger: "change" },
           //   { min: 3, max: 5, message: "长度在 1 到 15 个字符", trigger: "blur" },
         ],
         name: [
@@ -324,12 +345,13 @@ export default {
           },
           //   { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
         ],
+        phone: [{ required: true, validator: checkphone, trigger: "blur" }],
       },
       roleData: [], // 角色下拉框
       refreshItem: 0, //清除角色、组织值
       tissueList: [], // 组织下拉框
       editorObj: {}, //点击编辑选中当前的行数据
-      org_id: '', //组织id
+      org_id: "", //组织id
     };
   },
   //监听属性 类似于data概念
@@ -369,10 +391,19 @@ export default {
       };
     },
 
+    // 验证手机号是否正确
+    isCellPhone(val) {
+      if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {
+        return false;
+      } else {
+        return true;
+      }
+    },
+
     // 树形图
     handleNodeClick(data) {
       console.log(data);
-      this.org_id = data.id
+      this.org_id = data.id;
       this.userListData();
     },
 
@@ -437,22 +468,29 @@ export default {
 
     // 重置密码
     resetPwd(data) {
-      this.$prompt('请输入新密码', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          inputPlaceholder: '@12345678',
-          // inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
-          inputErrorMessage: '手机号码格式不正确'
-        }).then(({ value }) => {
+      this.$prompt("请输入新密码", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPlaceholder: "默认密码为@12345678",
+        inputErrorMessage: "新密码格式不正确",
+        inputValidator: (val) => {
+          if (escape(val).indexOf("%u") != -1) {
+            return "不能输入汉字!";
+          } else if (val.split(" ").join("").length == 0) {
+            return "不能输入空格!";
+          }
+        },
+      })
+        .then(({ value }) => {
           this.$axios({
-            method: 'POST',
-            url: '/api/api_gateway?method=sysmenage.usermanager.password_modify',
+            method: "POST",
+            url: "/api/api_gateway?method=sysmenage.usermanager.password_modify",
             data: this.qs.stringify({
               user_id: data.user_id,
-              password: value == null ? '@12345678' : value
-            })
+              password: value == null ? "@12345678" : value,
+            }),
           }).then((res) => {
-            console.log(res)
+            console.log(res);
             if (res.data.data == true) {
               this.$message({
                 message: "成功!",
@@ -460,13 +498,14 @@ export default {
                 duration: 1500,
               });
             }
-            this.userListData()
-          })
-        }).catch(() => {
+            this.userListData();
+          });
+        })
+        .catch(() => {
           this.$message({
-            type: 'info',
-            message: '取消输入'
-          });       
+            type: "info",
+            message: "取消输入",
+          });
         });
     },
 
@@ -479,11 +518,11 @@ export default {
       })
         .then(() => {
           this.$axios({
-            method: 'POST',
-            url: '/api/api_gateway?method=sysmenage.usermanager.user_delete',
+            method: "POST",
+            url: "/api/api_gateway?method=sysmenage.usermanager.user_delete",
             data: this.qs.stringify({
-              user_id: data.user_id
-            })
+              user_id: data.user_id,
+            }),
           }).then((res) => {
             if (res.data.data == true) {
               this.$message({
@@ -498,8 +537,8 @@ export default {
                 duration: 1500,
               });
             }
-            this.userListData()
-          })
+            this.userListData();
+          });
         })
         .catch(() => {
           this.$message({
@@ -626,13 +665,13 @@ export default {
         .then((res) => {
           if (res.data.data.page_list.length !== 0) {
             var obj = {
-              org_name: '全部',
-              id: ''
-            }
+              org_name: "全部",
+              id: "",
+            };
+            var list = res.data.data.page_list;
+            this.tissueList = list; // 弹框组织列表
             var data = res.data.data.page_list;
-            // this.$set(data, 0, obj)
-            this.data = data; // 左侧组织列表
-            this.tissueList = data; // 弹框组织列表
+            this.data = [obj, ...data]; // 左侧组织列表
           }
         })
         .catch((err) => {
@@ -695,6 +734,8 @@ export default {
       padding: 5px;
       border: 1px solid #eeeeee;
       border-radius: 5px;
+      overflow: hidden;
+      overflow-y: auto;
     }
 
     // 搜索和表格

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

@@ -15,6 +15,9 @@ const harmfulBiology = () => import('@/Page/systemmanger/harmfulBiology') // 有
 const userManger = () => import('@/Page/systemmanger/userManger') // 用户管理
 const dayRecord = () => import('@/Page/systemmanger/dayRecord') // 用户管理
 
+//---------------------------------------指挥中心----------------------------------------------------
+const realTime = () => import('@/Page/commandCenter/realTime') //实时通信
+
 // *****************测报系统**********************
 import cbd from '@/page/forecasting/cbd/Cbd'//首页
 import cbdDataDetails from '@/page/forecasting/cbd/DataDetails'//数据详情
@@ -92,6 +95,15 @@ export default new Router({
           }
         },
         //------------------系统管理--------------------------
+        //------------------指挥中心--------------------------
+        {
+          path: 'realTime',
+          component: realTime,
+          meta: {
+            title: '实时通信'
+          }
+        },
+        //------------------指挥中心--------------------------
         {
           path: 'cbd',
           component: cbd