فهرست منبع

2022/1/22 zkl

zkl 4 سال پیش
والد
کامیت
3be4ea056c

+ 2 - 2
minggao/config/index.js

@@ -12,8 +12,8 @@ module.exports = {
     assetsPublicPath: '/',
     proxyTable: {
       '/api': {
-        // target: 'http://192.168.1.17:12345', //翟毅飞
-        target: 'http://192.168.1.77:12345', //曹世祥
+        target: 'http://192.168.1.17:12345', //翟毅飞
+        // target: 'http://192.168.1.77:12345', //曹世祥
         changeOrigin: true,
         pathRewrite: { 
           '^/api': '/api' //重写接口

+ 3 - 3
minggao/package-lock.json

@@ -10928,9 +10928,9 @@
       "dev": true
     },
     "v-viewer": {
-      "version": "1.6.4",
-      "resolved": "https://registry.npmmirror.com/v-viewer/download/v-viewer-1.6.4.tgz",
-      "integrity": "sha1-OeNrU0uqs0B2+4FnBManNN4Nxy8=",
+      "version": "1.5.1",
+      "resolved": "https://registry.nlark.com/v-viewer/download/v-viewer-1.5.1.tgz?cache=0&sync_timestamp=1632202257840&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fv-viewer%2Fdownload%2Fv-viewer-1.5.1.tgz",
+      "integrity": "sha1-lIBNg4FMylZuaRM5/h5keTSG8gA=",
       "dev": true,
       "requires": {
         "throttle-debounce": "^2.0.1",

+ 9 - 9
minggao/package.json

@@ -30,9 +30,12 @@
     "chalk": "^2.0.1",
     "copy-webpack-plugin": "^4.0.1",
     "css-loader": "^0.28.0",
+    "echarts": "^4.7.0",
+    "echarts-extension-amap": "^1.9.2",
     "extract-text-webpack-plugin": "^3.0.0",
     "file-loader": "^1.1.4",
     "friendly-errors-webpack-plugin": "^1.6.1",
+    "highcharts": "^8.0.4",
     "html-webpack-plugin": "^2.30.1",
     "less-loader": "^5.0.0",
     "mockjs": "^1.1.0",
@@ -46,23 +49,20 @@
     "rimraf": "^2.6.0",
     "semver": "^5.3.0",
     "shelljs": "^0.7.6",
+    "swiper": "^3.4.2",
     "uglifyjs-webpack-plugin": "^1.1.1",
     "url-loader": "^0.5.8",
+    "v-viewer": "^1.5.1",
+    "vue-highcharts": "^0.1.0",
+    "vue-lazyload": "^1.3.3",
     "vue-loader": "^13.3.0",
+    "vue-picture-bd-marker": "^1.3.8",
     "vue-style-loader": "^3.0.1",
     "vue-template-compiler": "^2.5.2",
     "webpack": "^3.6.0",
     "webpack-bundle-analyzer": "^2.9.0",
     "webpack-dev-server": "^2.9.1",
-    "webpack-merge": "^4.1.0",
-    "highcharts": "^8.0.4",
-    "echarts": "^4.7.0",
-    "echarts-extension-amap": "^1.9.2",
-    "vue-picture-bd-marker": "^1.3.8",
-    "v-viewer": "^1.5.1",
-    "swiper": "^3.4.2",
-    "vue-lazyload": "^1.3.3",
-    "vue-highcharts": "^0.1.0"
+    "webpack-merge": "^4.1.0"
   },
   "engines": {
     "node": ">= 6.0.0",

+ 8 - 2
minggao/src/main.js

@@ -1,5 +1,3 @@
-// The Vue build version to load with the `import` command
-// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
 import Vue from 'vue'
 import App from './App'
 import ElementUI from 'element-ui';
@@ -8,6 +6,14 @@ import store from '@/store/store.js'
 import less from 'less'
 Vue.use(less)
 
+import Viewer from 'v-viewer'
+import 'viewerjs/dist/viewer.css'
+Vue.use(Viewer, {
+  defaultOptions: {
+    "zIndex": 9999,
+  }
+})
+
 Vue.prototype.$store = store
 
 import 'element-ui/lib/theme-chalk/index.css'

+ 169 - 9
minggao/src/page/systemmanger/dayRecord.vue

@@ -1,29 +1,170 @@
 <!--  -->
 <template>
-  <div class="">日志管理</div>
+  <div class="dayRecord_box">
+    <el-card :style="'height:' + fullHeight + 'px'">
+      <!-- 筛选 -->
+      <el-row>
+        <el-col>
+          <!-- 搜索 -->
+          <div class="search_box">
+            <el-input
+              size="small"
+              placeholder="请输入操作角色或者操作人员"
+              v-model="input"
+              clearable
+            >
+            </el-input>
+            <el-date-picker
+              size="small"
+              v-model="value1"
+              type="datetimerange"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              :default-time="['12:00:00']"
+            >
+            </el-date-picker>
+            <div class="btn_box">
+              <el-button type="primary" size="small">搜索</el-button>
+              <el-button type="primary" size="small">重置</el-button>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+
+      <!-- 表格 -->
+      <el-table :data="tableData" stripe style="width: 100%">
+        <el-table-column prop="id" label="序号" width="180"> </el-table-column>
+        <el-table-column prop="create_time" label="操作时间" width="200">
+        </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="ip" label="IP"></el-table-column>
+        <el-table-column label="操作">
+          <template slot-scope="scope">
+            <a class="reset" href="javascript:;" @click="detailsFunc(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>
+
+    <!-- 详情弹框 -->
+    <el-dialog title="动作详情" :visible.sync="dialogVisible" width="30%">
+      <div>
+        <span>{{ objData.action }}:</span>
+        <span>{{ objData.op_details }}</span>
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
-//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
-//例如:import 《组件名称》 from '《组件路径》';
-
 export default {
   //import引入的组件需要注入到对象中才能使用
   components: {},
   data() {
     //这里存放数据
-    return {};
+    return {
+      fullHeight: document.documentElement.clientHeight - 116, //
+      input: "",
+      value1: "",
+
+      // 表格
+      tableData: [],
+
+      // 分页
+      page: 1,
+      tableSum: 0,
+
+      // 弹框
+      dialogVisible: false,
+      objData: {},
+    };
   },
   //监听属性 类似于data概念
   computed: {},
   //监控data中的数据变化
-  watch: {},
+  watch: {
+    fullHeight(val) {
+      //监控浏览器高度变化
+      if (!this.timer) {
+        this.fullHeight = val;
+        this.timer = true;
+        let that = this;
+        setTimeout(function () {
+          //防止过度调用监测事件,导致卡顿
+          that.timer = false;
+        }, 400);
+      }
+    },
+  },
   //方法集合
-  methods: {},
+  methods: {
+    //动态获取浏览器高度
+    get_boderHeight() {
+      const that = this;
+      window.onresize = () => {
+        return (() => {
+          window.fullHeight = document.documentElement.clientHeight;
+          that.fullHeight = window.fullHeight;
+        })();
+      };
+    },
+
+    // 下一页
+    newPage(page) {
+      this.page = page;
+    },
+
+    // 详情
+    detailsFunc(data) {
+      this.objData = data;
+      this.dialogVisible = true
+    },
+
+    // 表格列表
+    tableList() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=log.szmg_log.operation_log_list",
+        data: this.qs.stringify({
+          page: this.page,
+          page_item: "10",
+        }),
+      })
+        .then((res) => {
+          console.log(res);
+          if (res.data.data.page_item !== 0) {
+            this.tableData = res.data.data.page_list;
+            this.tableSum = res.data.data.page_item;
+          }
+        })
+        .catch((err) => {
+          // console.log(err)
+        });
+    },
+  },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted() {},
+  mounted() {
+    this.tableList();
+  },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
   beforeUpdate() {}, //生命周期 - 更新之前
@@ -34,5 +175,24 @@ export default {
 };
 </script>
 <style lang='less' scoped>
-//@import url(); 引入公共css类
+.dayRecord_box {
+  // 搜索
+  .search_box {
+    display: flex;
+    /deep/.el-input {
+      width: 300px;
+      margin: 0 15px 0 0;
+    }
+    .btn_box {
+      margin: 0 0 0 15px;
+    }
+  }
+
+  a {
+    text-decoration: none;
+  }
+  .reset {
+    color: #1890ff;
+  }
+}
 </style>

+ 111 - 29
minggao/src/page/systemmanger/harmfulBiology.vue

@@ -30,17 +30,20 @@
       <!-- 列表 -->
       <el-table :data="tableData" stripe style="width: 100%">
         <el-table-column prop="ind" label="序号" width="120"> </el-table-column>
-        <el-table-column prop="name" label="有害生物名称" width="280">
+        <el-table-column prop="pest_name" label="有害生物名称" width="280">
         </el-table-column>
-        <el-table-column prop="judge" label="检疫性有害生物(是/否)" width="180">
+        <el-table-column prop="quarantine" label="检疫性有害生物(是/否)" width="180">
         </el-table-column>
-        <el-table-column prop="judge2" label="是否外来物种" width="180">
+        <el-table-column prop="alien_specie" label="是否外来物种" width="180">
         </el-table-column>
-        <el-table-column prop="remark" label="备注" width="280">
+        <el-table-column prop="messages" label="备注" width="280">
+          <template slot-scope="scope">
+            <span>{{ scope.row.messages || '无' }}</span>
+          </template>
         </el-table-column>
-        <el-table-column prop="addDate" label="添加时间" width="180">
+        <el-table-column prop="create_time" label="添加时间" width="180">
         </el-table-column>
-        <el-table-column prop="endDate" label="最后修改时间" width="180">
+        <el-table-column prop="modify_time" label="最后修改时间" width="180">
         </el-table-column>
         <el-table-column label="操作">
           <template slot-scope="scope">
@@ -86,15 +89,15 @@
 
         <el-form-item label="检疫性有害生物: " prop="judge">
           <el-select v-model="form.judge" placeholder="请选择检疫性有害生物">
-            <el-option label="区域一" value="shanghai"></el-option>
-            <el-option label="区域二" value="beijing"></el-option>
+            <el-option label="是" value="是"></el-option>
+            <el-option label="否" value="否"></el-option>
           </el-select>
         </el-form-item>
 
         <el-form-item label="是否外来入侵物种: " prop="judge2">
           <el-select v-model="form.judge2" placeholder="请选择否外来入侵物种">
-            <el-option label="区域一" value="shanghai"></el-option>
-            <el-option label="区域二" value="beijing"></el-option>
+            <el-option label="是" value="是"></el-option>
+            <el-option label="否" value="否"></el-option>
           </el-select>
         </el-form-item>
 
@@ -112,7 +115,7 @@
           <el-button size="small" type="primary" @click="submitForm"
             >确定</el-button
           >
-          <el-button size="small" @click="addrUserVisible = false"
+          <el-button size="small" @click="cancel"
             >取消</el-button
           >
         </el-form-item>
@@ -144,15 +147,6 @@ export default {
           addDate: "2016-05-02 10:00:00",
           endDate: "2021-01-06 10:00:00",
         },
-        {
-          ind: "2",
-          name: "冥蛾引诱剂",
-          judge: "是",
-          judge2: "是",
-          remark: "这是一个有害虫类",
-          addDate: "2016-05-02 10:00:00",
-          endDate: "2021-01-06 10:00:00",
-        },
       ],
 
       // 编辑、 添加
@@ -181,11 +175,12 @@ export default {
           },
           //   { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
         ],
-        remark: [
-          { required: true, message: "请输入备注", 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: {},
     };
   },
   //监听属性 类似于data概念
@@ -204,6 +199,12 @@ export default {
         }, 400);
       }
     },
+
+    addrInsectVisible(val) {
+      if (val == false) {
+        this.$refs["form"].resetFields();
+      }
+    }
   },
   //方法集合
   methods: {
@@ -219,7 +220,9 @@ export default {
     },
 
     // 搜索
-    searchData() {},
+    searchData() {
+      this.harmfulBiologyList()
+    },
 
     // 添加有害生物
     addrHarmfulBiology() {
@@ -239,7 +242,18 @@ export default {
         }),
       })
         .then((res) => {
-          console.log(res);
+          if (res.data.data.total_item !== 0) {
+            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)
+            });
+            this.tableData = list                     
+          } else {
+            this.tableData = []
+          }
         })
         .catch((err) => {
           console.log(err);
@@ -255,6 +269,13 @@ export default {
     // 编辑
     actionFunc(data) {
       this.tltData = "编辑有害生物";
+      this.insectObj = data
+      this.form = {
+        name: data.pest_name, //有害生物名称
+        judge: data.quarantine, // 检疫性有害生物
+        judge2: data.alien_specie, //是否外来入侵物种
+        remark: data.messages, // 备注
+      }
       this.addrInsectVisible = true;
     },
 
@@ -265,7 +286,29 @@ export default {
         cancelButtonText: "取消",
         type: "warning",
       })
-        .then(() => {})
+        .then(() => {
+          this.$axios({
+            method: 'POST',
+            url: '/api/api_gateway?method=sysmenage.maintain.pest_delete',
+            data: this.qs.stringify({
+              pest_id: data.pest_id 
+            })
+          }).then((res) => {
+            if (res.data.data.message == '') {
+              this.$message({
+                type: "success",
+                message: "成功",
+                duration: 1500,
+              });
+            } else {
+              this.$message({
+                type: "error",
+                message: "失败",
+                duration: 1500,
+              });
+            }
+          })
+        })
         .catch(() => {
           this.$message({
             type: "info",
@@ -278,19 +321,58 @@ export default {
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
-          alert("完成");
+
+          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.judge,
+              quarantine: this.form.judge2,
+              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.judge,
+              quarantine: this.form.judge2,
+              messages: this.form.remark,
+            })
+          }
+          this.$axios({
+            method: 'POST',
+            url,
+            data: postData
+          }).then((res) => {
+            console.log(res)
+            if (res.data.message == '') {
+              this.$message({
+                type: "success",
+                message: "成功",
+                duration: 1500,
+              });
+            }
+            this.$refs["form"].resetFields();
+            this.addrInsectVisible = false
+            this.harmfulBiologyList()
+          })
         } else {
           //   console.log("error submit!!");
           return false;
         }
       });
     },
+    cancel() {
+      this.$refs["form"].resetFields();
+      this.addrInsectVisible = false
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    // this.harmfulBiologyList()
+    this.harmfulBiologyList()
   },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前

+ 46 - 28
minggao/src/page/systemmanger/motif.vue

@@ -6,18 +6,18 @@
         <li class="motif_list">
           <div class="list_left">系统LOGO:</div>
           <div class="list_right">
-            <img src="../../assets/images/newImg/12.jpg" alt="" class="" />
+            <!-- <img  v-viewer id="viewerDom" src="../../assets/images/newImg/12.jpg" alt="" class="" /> -->
+            <img  v-viewer id="viewerDom" :src="objData.logo_url" alt="" class="" />
           </div>
         </li>
         <li class="motif_list">
           <div class="list_left">系统名称:</div>
-          <div class="list_right">有害生物监测预警及指挥平台</div>
+          <div class="list_right">{{ objData.sys_name }}</div>
         </li>
         <li class="motif_list">
           <div class="list_left">版权信息:</div>
           <div class="list_right">
-            Copyright©2007-2019 All Rrights
-            Resvered 版权所有:河南云飞科技发展有限公司
+            {{ objData.copyright_info }}
           </div>
         </li>
         <li>
@@ -116,6 +116,7 @@ export default {
       // 上传图片
       fileList: [],
       userDetail: {},
+      objData: {},
     };
   },
   //监听属性 类似于data概念
@@ -134,6 +135,14 @@ export default {
         }, 400);
       }
     },
+
+    redactVisible(val) {
+      if (val == false) {
+        this.form.img = ''
+        this.form.name = ''
+        this.form.role_describe = ''
+      }
+    } 
   },
   //方法集合
   methods: {
@@ -196,6 +205,9 @@ export default {
 
     // 按钮编辑
     btnEdit() {
+      this.form.img = this.objData.logo_url
+      this.form.name = this.objData.sys_name
+      this.form.role_describe = this.objData.copyright_info
       this.redactVisible = true;
     },
 
@@ -213,6 +225,21 @@ export default {
             })
           }).then((res) => {
               console.log(res)
+              if (res.data.data == true) {
+                this.$message({
+                  message: "成功!",
+                  type: "success",
+                  duration: 1500,
+                });
+                this.motifAxios()
+              } else {
+                this.$message({
+                  message: "失败!",
+                  type: "success",
+                  duration: 1500,
+                });
+              }
+              this.redactVisible = false
           }).catch((err) => {
               console.log(err)
           })
@@ -221,36 +248,27 @@ export default {
           return false;
         }
       });
+    },
 
-      //   if (this.form.img == "") {
-      //     // 图片
-      //     this.$message({
-      //       message: "系统LOGO不能为空!",
-      //       type: "warning",
-      //       duration: 1500
-      //     });
-      //   } else if (this.form.name == "") {
-      //     // 系统名称
-      //     this.$message({
-      //       message: "系统名称不能为空!",
-      //       type: "warning",
-      //       duration: 1500
-      //     });
-      //   } else if (this.form.role_describe == "") {
-      //     // 版本信息
-      //     this.$message({
-      //       message: "版本信息不能为空!",
-      //       type: "warning",
-      //       duration: 1500
-      //     });
-      //   } else {
-      //   }
+    // 主题数据
+    motifAxios() {
+      this.$axios({
+        method: 'POST',
+        url: '/api/api_gateway?method=sysmenage.usermanager.user_info',
+      }).then((res) => {
+        console.log(res)
+        this.objData = res.data.data.theme_info
+      }).catch((err) => {
+        console.log(err)
+      })
     },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted() {},
+  mounted() {
+    this.motifAxios()
+  },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
   beforeUpdate() {}, //生命周期 - 更新之前

+ 373 - 119
minggao/src/page/systemmanger/userManger.vue

@@ -57,17 +57,27 @@
           <el-table :data="tableData" stripe style="width: 100%">
             <el-table-column prop="ind" label="序号" width="90">
             </el-table-column>
-            <el-table-column prop="name" label="姓名" width="190">
+            <el-table-column prop="real_name" label="姓名" width="190">
             </el-table-column>
-            <el-table-column prop="user" label="账号名称" width="200">
+            <el-table-column prop="username" label="账号名称" width="200">
             </el-table-column>
-            <el-table-column prop="phone" label="手机号" width="120">
+            <el-table-column prop="mobile" label="手机号" width="120">
+              <template slot-scope="scope">
+                <span>{{ scope.row.mobile || "无" }}</span>
+              </template>
             </el-table-column>
-            <el-table-column prop="texture" label="所属组织" width="280">
+            <el-table-column prop="org_list" label="所属组织" width="280">
+              <template slot-scope="scope">
+                <span
+                  v-for="(item, index) in scope.row.org_list"
+                  :key="index"
+                  >{{ item.org_name }}</span
+                >
+              </template>
             </el-table-column>
             <el-table-column prop="state" label="状态" width="120">
               <template slot-scope="scope">
-                <span v-if="scope.row.state == '1'">
+                <span v-if="scope.row.state == '正常'">
                   <span
                     style="
                       width: 6px;
@@ -80,7 +90,7 @@
                   ></span>
                   <span>正常</span>
                 </span>
-                <span v-if="scope.row.state == '0'">
+                <span v-if="scope.row.state == '已停用'">
                   <span
                     style="
                       width: 6px;
@@ -104,8 +114,16 @@
                   >编辑</a
                 >
                 <i class="line"></i>
-                <a class="delete" href="javascript:;" @click="outUse(scope.row)"
-                  >停用</a
+                <a
+                  class="delete"
+                  :style="
+                    scope.row.state == '已停用'
+                      ? 'color: #1890ff'
+                      : 'color: #f56c6c;'
+                  "
+                  href="javascript:;"
+                  @click="outUse(scope.row)"
+                  >{{ scope.row.state == "已停用" ? "启用" : "停用" }}</a
                 >
                 <i class="line"></i>
                 <a
@@ -150,7 +168,11 @@
           ></el-input>
         </el-form-item>
 
-        <el-form-item label="密码: " prop="password">
+        <el-form-item
+          v-if="tltData == '添加用户'"
+          label="密码: "
+          prop="password"
+        >
           <el-input
             style="width: 80%"
             size="mini"
@@ -167,17 +189,36 @@
         </el-form-item>
 
         <el-form-item label="隶属海关: " prop="judge">
-          <el-select v-model="form.judge" placeholder="请选择">
-            <el-option label="区域一" value="shanghai"></el-option>
-            <el-option label="区域二" value="beijing"></el-option>
-          </el-select>
+          <el-cascader
+            :v-model="form.judge"
+            :key="refreshItem"
+            :options="tissueList"
+            @change="judgeData"
+            :props="{
+              multiple: true,
+              label: 'org_name',
+              value: 'id',
+              emitPath: false,
+              children: 'childrens',
+            }"
+            clearable
+          ></el-cascader>
         </el-form-item>
 
         <el-form-item label="角色: " prop="role">
-          <el-select v-model="form.role" placeholder="请选择否">
-            <el-option label="区域一" value="shanghai"></el-option>
-            <el-option label="区域二" value="beijing"></el-option>
-          </el-select>
+          <el-cascader
+            :v-model="form.role"
+            :key="refreshItem"
+            :options="roleData"
+            @change="roleChange"
+            :props="{
+              value: 'id',
+              label: 'role_name',
+              multiple: true,
+              emitPath: false,
+            }"
+            clearable
+          ></el-cascader>
         </el-form-item>
 
         <el-form-item label="手机号码: " prop="phone">
@@ -188,23 +229,30 @@
           ></el-input>
         </el-form-item>
 
-        <el-form-item label="备注: " prop="remark">
+        <el-form-item label="邮箱: " prop="mailbox">
           <el-input
             style="width: 80%"
             size="mini"
-            type="textarea"
-            resize="none"
-            v-model="form.remark"
+            v-model="form.mailbox"
           ></el-input>
         </el-form-item>
 
+        <el-form-item
+          v-if="tltData == '添加用户'"
+          label="账号状态: "
+          prop="state"
+        >
+          <el-select size="mini" v-model="form.state" placeholder="请选择">
+            <el-option label="正常" value="1"></el-option>
+            <el-option label="停用" value="4"></el-option>
+          </el-select>
+        </el-form-item>
+
         <el-form-item>
           <el-button size="small" type="primary" @click="submitForm"
             >确定</el-button
           >
-          <el-button size="small" @click="addrUserVisible = false"
-            >取消</el-button
-          >
+          <el-button size="small" @click="resetForm">取消</el-button>
         </el-form-item>
       </el-form>
     </el-dialog>
@@ -221,66 +269,10 @@ export default {
       fullHeight: document.documentElement.clientHeight - 116, //
 
       // 树形图
-      data: [
-        {
-          label: "一级 1",
-          children: [
-            {
-              label: "二级 1-1",
-              children: [
-                {
-                  label: "三级 1-1-1",
-                },
-              ],
-            },
-          ],
-        },
-        {
-          label: "一级 2",
-          children: [
-            {
-              label: "二级 2-1",
-              children: [
-                {
-                  label: "三级 2-1-1",
-                },
-              ],
-            },
-            {
-              label: "二级 2-2",
-              children: [
-                {
-                  label: "三级 2-2-1",
-                },
-              ],
-            },
-          ],
-        },
-        {
-          label: "一级 3",
-          children: [
-            {
-              label: "二级 3-1",
-              children: [
-                {
-                  label: "三级 3-1-1",
-                },
-              ],
-            },
-            {
-              label: "二级 3-2",
-              children: [
-                {
-                  label: "三级 3-2-1",
-                },
-              ],
-            },
-          ],
-        },
-      ],
+      data: [],
       defaultProps: {
-        children: "children",
-        label: "label",
+        children: "childrens",
+        label: "org_name",
       },
 
       // 搜索
@@ -288,24 +280,7 @@ export default {
       phoneVal: "",
 
       // 表格
-      tableData: [
-        {
-          ind: "1",
-          name: "王小虎",
-          user: "王小虎的账号",
-          phone: "18538403123",
-          texture: "海关局-检测部门",
-          state: "1", // 1正常 0停用
-        },
-        {
-          ind: "2",
-          name: "王小虎",
-          user: "王小虎的账号",
-          phone: "18538403123",
-          texture: "海关局-检测部门",
-          state: "0", // 1正常 0停用
-        },
-      ],
+      tableData: [],
 
       // 分页
       page: 1, //当前页码
@@ -313,14 +288,16 @@ export default {
 
       // 弹框
       tltData: "添加用户",
-      userVisible: true,
+      userVisible: false,
       form: {
         user: "", //账号
-        password: '', // 密码
-        name: '', // 姓名
-        judge: "", // 隶属海关
-        role: "", //角色
+        password: "", // 密码
+        name: "", // 姓名
+        judge: [], // 隶属海关
+        role: [], //角色
         phone: "", // 手机号码
+        mailbox: "", //邮箱
+        state: "", // 账号状态
       },
       rules: {
         user: [
@@ -347,11 +324,12 @@ export default {
           },
           //   { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
         ],
-        phone: [
-          { required: true, message: "请输入手机号码", trigger: "blur" },
-          //   { min: 3, max: 5, message: "长度在 1 到 30 个字符", trigger: "blur" },
-        ],
       },
+      roleData: [], // 角色下拉框
+      refreshItem: 0, //清除角色、组织值
+      tissueList: [], // 组织下拉框
+      editorObj: {}, //点击编辑选中当前的行数据
+      org_id: '', //组织id
     };
   },
   //监听属性 类似于data概念
@@ -370,6 +348,13 @@ export default {
         }, 400);
       }
     },
+
+    userVisible(val) {
+      if (val == false) {
+        this.$refs["form"].resetFields();
+        this.refreshItem++;
+      }
+    },
   },
   //方法集合
   methods: {
@@ -387,19 +372,142 @@ export default {
     // 树形图
     handleNodeClick(data) {
       console.log(data);
+      this.org_id = data.id
+      this.userListData();
     },
 
     // 编辑
-    actionFunc(data) {},
+    actionFunc(data) {
+      this.tltData = "编辑用户";
+      console.log(data);
+      this.editorObj = data;
+      this.form = {
+        user: data.username,
+        password: "",
+        name: data.real_name,
+        judge: data.org_list,
+        role: data.role_list,
+        phone: data.mobile,
+        mailbox: data.email,
+        state: data.state,
+      };
+      console.log(this.form);
+      this.userVisible = true;
+    },
 
     // 停用
-    outUse(data) {},
+    outUse(data) {
+      console.log(data);
+      if (data.state == "已停用") {
+        var msg = "启用";
+      } else if (data.state == "正常") {
+        var msg = "停用";
+      }
+      this.$confirm("此操作将" + msg + "该账号, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$axios({
+            method: "POST",
+            url: "/api/api_gateway?method=sysmenage.usermanager.user_disable",
+            data: this.qs.stringify({
+              user_id: data.user_id,
+              state: msg == "启用" ? 1 : 4,
+            }),
+          }).then((res) => {
+            if (res.data.data == true) {
+              this.$message({
+                type: "success",
+                message: "成功",
+                duration: 1500,
+              });
+              this.userListData();
+            }
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消",
+          });
+        });
+    },
 
     // 重置密码
-    resetPwd() {},
+    resetPwd(data) {
+      this.$prompt('请输入新密码', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          inputPlaceholder: '@12345678',
+          // inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
+          inputErrorMessage: '手机号码格式不正确'
+        }).then(({ value }) => {
+          this.$axios({
+            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
+            })
+          }).then((res) => {
+            console.log(res)
+            if (res.data.data == true) {
+              this.$message({
+                message: "成功!",
+                type: "success",
+                duration: 1500,
+              });
+            }
+            this.userListData()
+          })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '取消输入'
+          });       
+        });
+    },
 
     // 删除
-    deleteFunc(data) {},
+    deleteFunc(data) {
+      this.$confirm("此操作将永久删除该账号, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$axios({
+            method: 'POST',
+            url: '/api/api_gateway?method=sysmenage.usermanager.user_delete',
+            data: this.qs.stringify({
+              user_id: data.user_id
+            })
+          }).then((res) => {
+            if (res.data.data == true) {
+              this.$message({
+                message: "成功!",
+                type: "success",
+                duration: 1500,
+              });
+            } else {
+              this.$message({
+                message: "失败!",
+                type: "error",
+                duration: 1500,
+              });
+            }
+            this.userListData()
+          })
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
 
     // 分页
     changeList(page) {
@@ -407,27 +515,165 @@ export default {
     },
 
     // 搜索
-    searchData() {},
+    searchData() {
+      this.userListData();
+    },
 
     // 添加用户
-    addrRole() {},
+    addrRole() {
+      this.tltData = "添加用户";
+      this.userVisible = true;
+    },
 
     // 添加 - 编辑 确定
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
-          alert("完成");
+          if (this.tltData == "添加用户") {
+            var postData = this.qs.stringify({
+              username: this.form.user, // 登录账号 必
+              real_name: this.form.name, // 用户名 必
+              password: this.form.password, // 密码 必
+              org_id_list: JSON.stringify(this.form.judge), //组织id数组 必
+              role_id_list: JSON.stringify(this.form.role), // 角色id数组 必
+              state: this.form.state, //用户状态
+              mobile: this.form.phone, // 手机号
+              email: this.form.mailbox, //邮箱地址
+            });
+            var url = "/api/api_gateway?method=sysmenage.usermanager.user_add";
+          } else if (this.tltData == "编辑用户") {
+            var postData = this.qs.stringify({
+              user_id: this.editorObj.user_id, // 用户id 必
+              real_name: this.form.name, // 用户名 必
+              org_id_list: JSON.stringify(this.form.judge), //组织id数组 必
+              role_id_list: JSON.stringify(this.form.role), //角色id数组 必
+              mobile: this.form.phone, //手机号
+              email: this.form.mailbox, //邮箱地址
+            });
+            var url =
+              "/api/api_gateway?method=sysmenage.usermanager.user_modify";
+          }
+          this.$axios({
+            method: "POST",
+            url,
+            data: postData,
+          }).then((res) => {
+            console.log(res);
+            if (res.data.data == true) {
+              this.$message({
+                message: "成功!",
+                type: "success",
+                duration: 1500,
+              });
+            }
+            this.$refs["form"].resetFields();
+            this.userVisible = false;
+            this.userListData();
+          });
         } else {
-          //   console.log("error submit!!");
           return false;
         }
       });
     },
+    // 取消
+    resetForm() {
+      this.$refs["form"].resetFields();
+      this.refreshItem++;
+      this.userVisible = false;
+    },
+
+    // 获取用户列表
+    userListData() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=sysmenage.usermanager.user_list",
+        data: this.qs.stringify({
+          page: this.page,
+          page_item: "10",
+          real_name: this.nameVal, // 用户名称
+          mobile: this.phoneVal, //电话
+          org_id: this.org_id,
+        }),
+      })
+        .then((res) => {
+          if (res.data.data.page_item !== 0) {
+            var data = res.data.data.page_list;
+            var list = [];
+            data.forEach((item, index) => {
+              item.ind = index + 1;
+              list.push(item);
+            });
+            this.tableData = list;
+            this.pageSum = res.data.data.page_item;
+          }
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+
+    // 获取左侧组织列表
+    organizationData() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=sysmenage.usermanager.org_list",
+        data: this.qs.stringify({
+          page: this.page,
+          page_item: "100000000",
+          org_name: "",
+        }),
+      })
+        .then((res) => {
+          if (res.data.data.page_list.length !== 0) {
+            var obj = {
+              org_name: '全部',
+              id: ''
+            }
+            var data = res.data.data.page_list;
+            // this.$set(data, 0, obj)
+            this.data = data; // 左侧组织列表
+            this.tissueList = data; // 弹框组织列表
+          }
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+
+    // 获取角色列表
+    roleAxios() {
+      this.$axios({
+        method: "POST",
+        url: "/api/api_gateway?method=sysmenage.usermanager.role_list",
+        data: this.qs.stringify({
+          page: this.page,
+          page_item: "10000000",
+          role_name: "",
+        }),
+      })
+        .then((res) => {
+          if (res.data.data.total_item !== 0) {
+            this.roleData = res.data.data.page_list;
+          }
+        })
+        .catch((err) => {});
+    },
+    judgeData(item) {
+      console.log(item);
+      this.form.judge = item;
+    },
+    roleChange(item) {
+      this.form.role = item;
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted() {},
+  mounted() {
+    this.userListData(); //表格数据
+    this.organizationData(); //左侧组织数据
+    this.roleAxios(); // 角色列表
+  },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
   beforeUpdate() {}, //生命周期 - 更新之前
@@ -484,5 +730,13 @@ export default {
       }
     }
   }
+
+  /deep/.el-select {
+    width: 80%;
+  }
+
+  /deep/.el-cascader {
+    width: 80%;
+  }
 }
 </style>