askin 2 years ago
parent
commit
3eebaf232e
36 changed files with 3105 additions and 1982 deletions
  1. 2 0
      sources/client/vrv-platform/src/App.vue
  2. 113 0
      sources/client/vrv-platform/src/components/HelloWorld.vue
  3. 14 0
      sources/client/vrv-platform/src/config/api.js
  4. 148 32
      sources/client/vrv-platform/src/router/index.js
  5. 416 0
      sources/client/vrv-platform/src/views/device/list.vue
  6. 453 0
      sources/client/vrv-platform/src/views/deviceAlarmRecord/list.vue
  7. 380 0
      sources/client/vrv-platform/src/views/gateway/list.vue
  8. 3 0
      sources/client/vrv-platform/src/views/home/home.vue
  9. 44 128
      sources/client/vrv-platform/src/views/login/login.vue
  10. 66 70
      sources/client/vrv-platform/src/views/menu/menu.vue
  11. 408 0
      sources/client/vrv-platform/src/views/operator/list.vue
  12. 298 0
      sources/client/vrv-platform/src/views/operatorLog/list.vue
  13. 297 0
      sources/client/vrv-platform/src/views/powerSet/list.vue
  14. 81 13
      sources/client/vrv-platform/src/views/project/project.vue
  15. 283 0
      sources/client/vrv-platform/src/views/roleSet/list.vue
  16. 56 17
      sources/client/vrv-platform/src/views/user/user.vue
  17. 0 5
      sources/client/vrv11/postcss.config.js
  18. 0 17
      sources/client/vrv11/public/index.html
  19. 0 20
      sources/client/vrv11/src/App.vue
  20. 0 156
      sources/client/vrv11/src/components/menu-choose-box/MenuChooseBox.vue
  21. 0 115
      sources/client/vrv11/src/config/api.js
  22. 0 182
      sources/client/vrv11/src/main.js
  23. 0 299
      sources/client/vrv11/src/views/Login.vue
  24. 0 0
      sources/client/vrv11/src/views/device-alarm-record/List.vue
  25. 0 0
      sources/client/vrv11/src/views/device/List.vue
  26. 0 0
      sources/client/vrv11/src/views/gateway/List.vue
  27. 0 569
      sources/client/vrv11/src/views/home/Home.vue
  28. 0 0
      sources/client/vrv11/src/views/operator-log/List.vue
  29. 0 0
      sources/client/vrv11/src/views/operator/List.vue
  30. 0 334
      sources/client/vrv11/src/views/project/List.vue
  31. 0 0
      sources/client/vrv11/src/views/user/List.vue
  32. 16 13
      sources/server/vrv/pom.xml
  33. 6 0
      sources/server/vrv/vrv-core-service/src/main/java/com/kuyuntech/vrv/coreservice/service/core/impl/GatewayServiceImpl.java
  34. 14 10
      sources/server/vrv/vrv-platform/src/main/java/com/kuyuntech/vrv/platform/controller/auth/AuthController.java
  35. 4 0
      sources/server/vrv/vrv-platform/src/main/java/com/kuyuntech/vrv/platform/controller/core/OperatorLogController.java
  36. 3 2
      sources/server/vrv/vrv-platform/src/main/resources/application.properties

+ 2 - 0
sources/client/vrv-platform/src/App.vue

@@ -5,6 +5,7 @@
 </template>
 
 <script>
+
 export default {
   name: 'App'
 }
@@ -16,6 +17,7 @@ export default {
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
   text-align: center;
+  text-align: left;
   color: #2c3e50;
   margin-top: 60px;
 }

+ 113 - 0
sources/client/vrv-platform/src/components/HelloWorld.vue

@@ -0,0 +1,113 @@
+<template>
+  <div class="hello">
+    <h1>{{ msg }}</h1>
+    <h2>Essential Links</h2>
+    <ul>
+      <li>
+        <a
+          href="https://vuejs.org"
+          target="_blank"
+        >
+          Core Docs
+        </a>
+      </li>
+      <li>
+        <a
+          href="https://forum.vuejs.org"
+          target="_blank"
+        >
+          Forum
+        </a>
+      </li>
+      <li>
+        <a
+          href="https://chat.vuejs.org"
+          target="_blank"
+        >
+          Community Chat
+        </a>
+      </li>
+      <li>
+        <a
+          href="https://twitter.com/vuejs"
+          target="_blank"
+        >
+          Twitter
+        </a>
+      </li>
+      <br>
+      <li>
+        <a
+          href="http://vuejs-templates.github.io/webpack/"
+          target="_blank"
+        >
+          Docs for This Template
+        </a>
+      </li>
+    </ul>
+    <h2>Ecosystem</h2>
+    <ul>
+      <li>
+        <a
+          href="http://router.vuejs.org/"
+          target="_blank"
+        >
+          vue-router
+        </a>
+      </li>
+      <li>
+        <a
+          href="http://vuex.vuejs.org/"
+          target="_blank"
+        >
+          vuex
+        </a>
+      </li>
+      <li>
+        <a
+          href="http://vue-loader.vuejs.org/"
+          target="_blank"
+        >
+          vue-loader
+        </a>
+      </li>
+      <li>
+        <a
+          href="https://github.com/vuejs/awesome-vue"
+          target="_blank"
+        >
+          awesome-vue
+        </a>
+      </li>
+    </ul>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'HelloWorld',
+  data () {
+    return {
+      msg: 'Welcome to Your Vue.js App'
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+h1, h2 {
+  font-weight: normal;
+}
+ul {
+  list-style-type: none;
+  padding: 0;
+}
+li {
+  display: inline-block;
+  margin: 0 10px;
+}
+a {
+  color: #42b983;
+}
+</style>

+ 14 - 0
sources/client/vrv-platform/src/config/api.js

@@ -92,6 +92,20 @@ const api = {
       userInfo: `${root}/auth/userInfo`,
       logout: `${root}/auth/logout`,
     },
+    role: {
+      list: `${root}/role/list`,
+      add: `${root}/role/add`,
+      update: `${root}/role/update`,
+      detail: `${root}/role/detail`,
+      delete: `${root}/role/delete`,
+    },
+    power: {
+      list: `${root}/power/list`,
+      add: `${root}/power/add`,
+      update: `${root}/power/update`,
+      detail: `${root}/power/detail`,
+      delete: `${root}/power/delete`,
+    },
     menu: {}
   }
 ;

+ 148 - 32
sources/client/vrv-platform/src/router/index.js

@@ -1,59 +1,175 @@
 import Vue from 'vue'
 import Router from 'vue-router'
 
-
 import project from '@/views/project/project'
-import user from '@/views/user/user'
 import login from '@/views/login/login'
 import menu from '@/views/menu/menu'
 import operator from '@/views/operator/list'
 import gateway from '@/views/gateway/list'
 import device from '@/views/device/list'
-
+import deviceAlarmRecord from '@/views/deviceAlarmRecord/list'
+import operatorLog from '@/views/operatorLog/list'
+import user from '@/views/user/list'
+import powerSet from '@/views/powerSet/list'
+import roleSet from '@/views/roleSet/list'
 
 import operatorList from "../views/operator/list";
 import gatewayList from "../views/gateway/list";
 import deviceList from "../views/device/list";
+import deviceAlarmRecordList from "../views/deviceAlarmRecord/list";
+import operatorLogList from "../views/operatorLog/list";
+import userList from "../views/user/list";
+import powerSetList from "../views/powerSet/list";
+import roleSetList from "../views/roleSet/list";
+
+import menuList from "../views/menu/menu";
+
+
 
 Vue.use(Router)
 
 export default new Router({
   routes: [
     {
-      path: '/project',
-      name: 'project',
-      component: project
-    }, {
-      path: '/user',
-      name: 'user',
-      component: user
+      path: '/menu',
+      name: 'menu',
+      component: menuList,
+      children:[
+        {
+          path: '/project',
+          name: 'project',
+          component: project
+        }, {
+          path: '/user',
+          name: 'user',
+          component: user
+        },
+        {
+          path: '/',
+          name: 'login',
+          component: login
+        },
+
+        {
+          path: '/operator',
+          name: 'operator',
+          component: operatorList
+        }
+        ,
+        {
+          path: '/gateway',
+          name: 'gateway',
+          component: gatewayList
+        }
+        ,
+        {
+          path: '/device',
+          name: 'device',
+          component: deviceList
+        }
+        ,
+        {
+          path: '/deviceAlarmRecord',
+          name: 'deviceAlarmRecord',
+          component: deviceAlarmRecordList
+        },
+        {
+          path: '/operatorLog',
+          name: 'operatorLog',
+          component: operatorLogList
+        }
+        ,
+        {
+          path: '/user',
+          name: 'user',
+          component: userList
+        }
+        ,
+        {
+          path: '/powerSet',
+          name: 'powerSet',
+          component: powerSetList
+        }
+        ,
+        {
+          path: '/roleSet',
+          name: 'roleSet',
+          component: roleSetList
+        }]
     },
+    // {
+    //   path: '/project',
+    //   name: 'project',
+    //   component: project
+    // }, {
+    //   path: '/user',
+    //   name: 'user',
+    //   component: user
+    // },
     {
       path: '/',
       name: 'login',
       component: login
     },
-    {
-      path: '/menu',
-      name: 'menu',
-      component: menu
-    },
-    {
-      path: '/operator',
-      name: 'operator',
-      component: operatorList
-    }
-    ,
-    {
-      path: '/gateway',
-      name: 'gateway',
-      component: gatewayList
-    }
-    ,
-    {
-      path: '/device',
-      name: 'device',
-      component: deviceList
-    }
+    //
+    // {
+    //   path: '/operator',
+    //   name: 'operator',
+    //   component: operatorList
+    // }
+    // ,
+    // {
+    //   path: '/gateway',
+    //   name: 'gateway',
+    //   component: gatewayList
+    // }
+    // ,
+    // {
+    //   path: '/device',
+    //   name: 'device',
+    //   component: deviceList
+    // }
+    // ,
+    // {
+    //   path: '/deviceAlarmRecord',
+    //   name: 'deviceAlarmRecord',
+    //   component: deviceAlarmRecordList
+    // },
+    // {
+    //   path: '/operatorLog',
+    //   name: 'operatorLog',
+    //   component: operatorLogList
+    // }
+    // ,
+    // {
+    //   path: '/user',
+    //   name: 'user',
+    //   component: userList
+    // }
+    // ,
+    // {
+    //   path: '/powerSet',
+    //   name: 'powerSet',
+    //   component: powerSetList
+    // }
+    // ,
+    // {
+    //   path: '/roleSet',
+    //   name: 'roleSet',
+    //   component: roleSetList
+    // }
   ]
 })
+
+
+// //全局路由守卫
+// router.beforeEach((to, from, next) => {
+//   if (to.path === '/')
+//     return next();
+//   // 取出token
+//   const token = window.sessionStorage.getItem('token');
+//   if (!token)   //没有token的时候 跳转到登陆页面
+//     return next('/');
+//
+//   next();
+// })

+ 416 - 0
sources/client/vrv-platform/src/views/device/list.vue

@@ -0,0 +1,416 @@
+<template>
+  <div id="project">
+    <el-container>
+
+      <el-main>
+        <el-form :inline="true" :model="searchFormData">
+          <el-form-item label="设备名称">
+            <el-input placeholder="设备名称" size="small" v-model="searchFormData.name"></el-input>
+          </el-form-item>
+          <el-form-item label="设备ip">
+            <el-input placeholder="设备ip" size="small" v-model="searchFormData.ip"></el-input>
+          </el-form-item>
+          <el-form-item label="设备SN">
+            <el-input placeholder="设备SN" size="small" v-model="searchFormData.sn"></el-input>
+          </el-form-item>
+          <el-form-item label="设备类型">
+            <el-input placeholder="设备类型" size="small" v-model="searchFormData.type"></el-input>
+          </el-form-item>
+          <el-form-item label="运营商编号">
+            <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+          </el-form-item>
+          <el-form-item label="项目编号">
+            <el-input placeholder="项目编号" size="small" v-model="searchFormData.projectNumber"></el-input>
+          </el-form-item>
+          <el-form-item label="网关编号">
+            <el-input placeholder="网关编号" size="small" v-model="searchFormData.gatewayNumber"></el-input>
+          </el-form-item>
+
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+          </el-form-item>
+
+
+          <el-dialog title="设备" :visible.sync="dialogFormVisible">
+            <el-form label-position="left" :model="formData">
+              <el-form-item label="设备名称">
+                <el-input v-model="formData.name"></el-input>
+              </el-form-item>
+              <el-form-item label="设备ip">
+                <el-input v-model="formData.ip"></el-input>
+              </el-form-item>
+              <el-form-item label="设备sn">
+                <el-input v-model="formData.sn"></el-input>
+              </el-form-item>
+              <el-form-item label="设备类型">
+                <el-input v-model="formData.type"></el-input>
+              </el-form-item>
+
+              <el-form-item label="运营商编号">
+                <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+              </el-form-item>
+              <el-form-item label="项目编号">
+                <el-input placeholder="项目编号" size="small" v-model="searchFormData.projectNumber"></el-input>
+              </el-form-item>
+              <el-form-item label="网关编号">
+                <el-input placeholder="网关编号" size="small" v-model="searchFormData.gatewayNumber"></el-input>
+              </el-form-item>
+
+
+            </el-form>
+
+            <div slot="footer" class="dialog-footer">
+              <el-button @click="cancel()">取 消</el-button>
+              <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+            </div>
+          </el-dialog>
+
+        </el-form>
+
+
+        <el-table :data="tableData">
+
+          <el-table-column prop="name" label="设备名称"></el-table-column>
+          <el-table-column prop="ip" label="设备ip"></el-table-column>
+          <el-table-column prop="sn" label="设备sn"></el-table-column>
+          <el-table-column prop="type" label="设备类型"></el-table-column>
+
+          <el-table-column label="设备状态">
+            <template slot-scope="scope">
+              {{ String(scope.row.deviceStatus) === '0' ? '已禁用' : '正常' }}
+            </template>
+          </el-table-column>
+
+
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button type="primary" size="small" @click="showEdit(scope.row)">编辑</el-button>
+              <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+
+              <el-button
+                type="primary"
+                size="small"
+                class="delBut non"
+                @click="statusHandle(scope.row)"
+              >
+                {{ scope.row.deviceStatus == '1' ? '禁用' : '启用' }}
+              </el-button>
+
+              <el-button type="primary" size="small" @click="manage(scope.row)">管理</el-button>
+
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :page-size="pager.pageSize"
+          :current-page="pager.pageIndex"
+          :total="pager.itemCount"
+          @current-change="handleCurrentChange"
+        >
+        </el-pagination>
+      </el-main>
+
+    </el-container>
+  </div>
+</template>
+
+
+<script>
+import axios from "axios";
+
+export default {
+  name: 'project',
+  data() {
+    return {
+      value: true,
+
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          name: '',
+          ip: '',
+          sn: '',
+          type: '',
+          deviceStatus: '1'
+        }],
+      formData: {
+        name: '',
+        ip: '',
+        sn: '',
+        type: '',
+        deviceStatus: '1',
+        operatorNumber: '',
+        projectNumber: '',
+        gatewayNumber: ''
+      },
+      searchFormData:
+        {
+          name: '',
+          ip: '',
+          sn: '',
+          type: '',
+          deviceStatus: '1',
+          operatorNumber: '',
+          projectNumber: '',
+          gatewayNumber: ''
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.device.list, {
+        params: {
+          pageSize: 5,
+          pageIndex: index ? index : 1,
+
+          name: this.searchFormData.name,
+          ip: this.searchFormData.ip,
+          sn: this.searchFormData.sn,
+          type: this.searchFormData.type,
+
+          operatorNumber: this.searchFormData.operatorNumber,
+          projectNumber: this.searchFormData.projectNumber,
+          gatewayNumber: this.searchFormData.gatewayNumber,
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.devices;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.name = '',
+        this.formData.ip = '',
+        this.formData.sn = '',
+        this.formData.type = '',
+
+        this.formData.operatorNumber = '',
+        this.formData.projectNumber = '',
+        this.formData.gatewayNumber = ''
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.device.update, {
+          params: {
+            name: this.formData.name,
+            ip: this.formData.ip,
+            sn: this.formData.sn,
+            type: this.formData.type,
+
+            operatorNumber: this.formData.operatorNumber,
+            projectNumber: this.formData.projectNumber,
+            gatewayNumber: this.formData.gatewayNumber,
+            operatorCode: this.formData.operatorCode,
+            projectCode: this.formData.projectCode,
+            gatewayCode: this.formData.gatewayCode,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.device.add, {
+          params: {
+            name: this.formData.name,
+            ip: this.formData.ip,
+            sn: this.formData.sn,
+            type: this.formData.type,
+
+            operatorNumber: this.formData.operatorNumber,
+            projectNumber: this.formData.projectNumber,
+            gatewayNumber: this.formData.gatewayNumber,
+            operatorCode: this.formData.operatorCode,
+            projectCode: this.formData.projectCode,
+            gatewayCode: this.formData.gatewayCode,
+          }
+        })
+          .then((response) => {
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.device.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+    },
+
+    //启用/停用设备
+    statusHandle(row) {
+      const vm = this;
+      this.$confirm('是否进行此操作', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.device.update, {
+          params: {
+            name: row.name,
+            sn: row.sn,
+            type: row.type,
+            ip: row.ip,
+
+            operatorNumber: row.operatorNumber,
+            projectNumber: row.projectNumber,
+            operatorCode: row.operatorCode,
+            projectCode: row.projectCode,
+            gatewayCode: row.gatewayCode,
+            gatewayNumber: row.gatewayNumber,
+
+            code: row.code,
+            valid: row.valid,
+            deviceStatus: row.deviceStatus == 1 ? 0 : 1,
+          }
+        })
+          .then((response) => {
+            console.log(row)
+            // console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+              value:false
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '操作取消'
+          })
+        });
+
+    },
+
+    manage(){
+      let vm = this;
+      vm.$router.push('/runningState')
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 453 - 0
sources/client/vrv-platform/src/views/deviceAlarmRecord/list.vue

@@ -0,0 +1,453 @@
+<template>
+  <div id="project">
+    <el-container>
+
+      <el-main>
+        <el-form :inline="true" :model="searchFormData">
+          <el-form-item label="报警名称">
+            <el-input placeholder="报警名称" size="small" v-model="searchFormData.alarmName"></el-input>
+          </el-form-item>
+          <el-form-item label="报警类型">
+            <el-input placeholder="设备类型" size="small" v-model="searchFormData.alarmType"></el-input>
+          </el-form-item>
+          <el-form-item label="设备SN">
+            <el-input placeholder="设备SN" size="small" v-model="searchFormData.sn"></el-input>
+          </el-form-item>
+          <el-form-item label="运营商编号">
+            <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+          </el-form-item>
+          <el-form-item label="项目编号">
+            <el-input placeholder="项目编号" size="small" v-model="searchFormData.projectNumber"></el-input>
+          </el-form-item>
+          <el-form-item label="网关编号">
+            <el-input placeholder="网关编号" size="small" v-model="searchFormData.gatewayNumber"></el-input>
+          </el-form-item>
+          <el-form-item label="变量id">
+            <el-input placeholder="变量id" size="small" v-model="searchFormData.variableId"></el-input>
+          </el-form-item>
+          <el-form-item label="开始时间">
+            <el-input placeholder="开始时间" size="small" v-model="searchFormData.startTime"></el-input>
+          </el-form-item>
+          <el-form-item label="结束时间">
+            <el-input placeholder="结束时间" size="small" v-model="searchFormData.endTime"></el-input>
+          </el-form-item>
+
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+          </el-form-item>
+
+
+          <el-dialog title="报警" :visible.sync="dialogFormVisible">
+            <el-form label-position="left" :model="formData">
+              <el-form-item label="报警名称">
+                <el-input v-model="formData.alarmName"></el-input>
+              </el-form-item>
+              <el-form-item label="报警类型">
+                <el-input v-model="formData.alarmType"></el-input>
+              </el-form-item>
+              <el-form-item label="告警内容">
+                <el-input v-model="formData.content"></el-input>
+              </el-form-item>
+              <el-form-item label="开始时间">
+                <el-input v-model="formData.startTime"></el-input>
+              </el-form-item>
+              <el-form-item label="结束时间">
+                <el-input v-model="formData.endTime"></el-input>
+              </el-form-item>
+
+              <el-form-item label="设备sn">
+                <el-input v-model="formData.sn"></el-input>
+              </el-form-item>
+              <el-form-item label="变量id">
+                <el-input v-model="formData.variableId"></el-input>
+              </el-form-item>
+
+              <el-form-item label="运营商编号">
+                <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+              </el-form-item>
+              <el-form-item label="项目编号">
+                <el-input placeholder="项目编号" size="small" v-model="searchFormData.projectNumber"></el-input>
+              </el-form-item>
+              <el-form-item label="网关编号">
+                <el-input placeholder="网关编号" size="small" v-model="searchFormData.gatewayNumber"></el-input>
+              </el-form-item>
+
+            </el-form>
+
+            <div slot="footer" class="dialog-footer">
+              <el-button @click="cancel()">取 消</el-button>
+              <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+            </div>
+          </el-dialog>
+
+        </el-form>
+
+
+        <el-table :data="tableData">
+
+          <el-table-column prop="alarmName" label="报警名称"></el-table-column>
+          <el-table-column prop="alarmType" label="报警类型"></el-table-column>
+          <el-table-column prop="content" label="告警内容"></el-table-column>
+          <el-table-column prop="startTime" label="开始时间"></el-table-column>
+          <el-table-column prop="endTime" label="结束时间"></el-table-column>
+
+          <el-table-column label="状态">
+            <template slot-scope="scope">
+              <el-button
+                type="primary"
+                size="small"
+                class="delBut non"
+                @click="statusHandle(scope.row)"
+              >
+                {{ scope.row.status == '未处理' ? '未处理' : '已处理' }}
+              </el-button>
+            </template>
+          </el-table-column>
+
+
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button type="primary" size="small" @click="showEdit(scope.row)">编辑</el-button>
+              <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+
+              <el-button type="primary" size="small" @click="manage(scope.row)">查看</el-button>
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :page-size="pager.pageSize"
+          :current-page="pager.pageIndex"
+          :total="pager.itemCount"
+          @current-change="handleCurrentChange"
+        >
+        </el-pagination>
+      </el-main>
+
+    </el-container>
+  </div>
+</template>
+
+
+<script>
+import axios from "axios";
+
+export default {
+  name: 'project',
+  data() {
+    return {
+      value: true,
+
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          alarmName: '',
+          alarmType: '',
+          content: '',
+          startTime: '',
+          endTime: '',
+        }],
+      formData: {
+        alarmName: '',
+        alarmType: '',
+        content: '',
+        startTime: '',
+        endTime: '',
+
+        sn: '',
+        variableId: '',
+        operatorNumber: '',
+        projectNumber: '',
+        gatewayNumber: ''
+      },
+      searchFormData:
+        {
+          alarmName: '',
+          alarmType: '',
+          content: '',
+          startTime: '',
+          endTime: '',
+
+          sn: '',
+          variableId: '',
+          operatorNumber: '',
+          projectNumber: '',
+          gatewayNumber: ''
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.deviceAlarmRecord.list, {
+        params: {
+          pageSize: 5,
+          pageIndex: index ? index : 1,
+
+          alarmName: this.searchFormData.alarmName,
+          alarmType: this.searchFormData.alarmType,
+          startTime: this.searchFormData.startTime,
+          endTime: this.searchFormData.endTime,
+
+          operatorNumber: this.searchFormData.operatorNumber,
+          projectNumber: this.searchFormData.projectNumber,
+          gatewayNumber: this.searchFormData.gatewayNumber,
+          sn: this.searchFormData.sn,
+          variableId: this.searchFormData.variableId,
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.deviceAlarmRecords;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.alarmName = '',
+        this.formData.alarmType = '',
+        this.formData.content = '',
+        this.formData.startTime = '',
+        this.formData.endTime = '',
+
+        this.formData.operatorNumber = '',
+        this.formData.projectNumber = '',
+        this.formData.gatewayNumber = ''
+      this.formData.sn = ''
+      this.formData.variableId = ''
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.deviceAlarmRecord.update, {
+          params: {
+            alarmName: this.formData.alarmName,
+            alarmType: this.formData.alarmType,
+            content: this.formData.content,
+            startTime: this.formData.startTime,
+            endTime: this.formData.endTime,
+
+            operatorNumber: this.formData.operatorNumber,
+            projectNumber: this.formData.projectNumber,
+            gatewayNumber: this.formData.gatewayNumber,
+            sn: this.formData.sn,
+            variableId: this.formData.variableId,
+
+            operatorCode: this.formData.operatorCode,
+            projectCode: this.formData.projectCode,
+            gatewayCode: this.formData.gatewayCode,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.deviceAlarmRecord.add, {
+          params: {
+            alarmName: this.formData.alarmName,
+            alarmType: this.formData.alarmType,
+            content: this.formData.content,
+            startTime: this.formData.startTime,
+            endTime: this.formData.endTime,
+
+            operatorNumber: this.formData.operatorNumber,
+            projectNumber: this.formData.projectNumber,
+            gatewayNumber: this.formData.gatewayNumber,
+            sn: this.formData.sn,
+            variableId: this.formData.variableId,
+
+            operatorCode: this.formData.operatorCode,
+            projectCode: this.formData.projectCode,
+            gatewayCode: this.formData.gatewayCode,
+          }
+        })
+          .then((response) => {
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.deviceAlarmRecord.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+    },
+
+    //启用/停用设备
+    statusHandle(row) {
+      const vm = this;
+      this.$confirm('是否进行此操作', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.deviceAlarmRecord.update, {
+          params: {
+            alarmName: row.alarmName,
+            alarmType: row.alarmType,
+            content: row.content,
+            startTime: row.startTime,
+            endTime: row.endTime,
+
+            sn: row.sn,
+            variableId: row.variable,
+            operatorNumber: row.operatorNumber,
+            projectNumber: row.projectNumber,
+            gatewayNumber: row.gatewayNumber,
+
+            operatorCode: row.operatorCode,
+            projectCode: row.projectCode,
+            gatewayCode: row.gatewayCode,
+
+            code: row.code,
+            valid: row.valid,
+            status: row.status == '未处理' ? '已处理' : '未处理',
+          }
+        })
+          .then((response) => {
+            console.log(row)
+            // console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+              value:false
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '操作取消'
+          })
+        });
+
+    },
+
+    manage() {
+      let vm = this;
+      vm.$router.push('/deviceAlarmRecordDetail')
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 380 - 0
sources/client/vrv-platform/src/views/gateway/list.vue

@@ -0,0 +1,380 @@
+<template>
+  <div id="project">
+    <el-container>
+
+      <el-main>
+        <el-form :inline="true" :model="searchFormData">
+          <el-form-item label="编号">
+            <el-input placeholder="编号" size="small" v-model="searchFormData.number"></el-input>
+          </el-form-item>
+          <el-form-item label="网关ip">
+            <el-input placeholder="网关ip" size="small" v-model="searchFormData.ip"></el-input>
+          </el-form-item>
+          <el-form-item label="定位">
+            <el-input placeholder="定位" size="small" v-model="searchFormData.location"></el-input>
+          </el-form-item>
+          <el-form-item label="运营商编号">
+            <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+          </el-form-item>
+          <el-form-item label="项目编号">
+            <el-input placeholder="项目编号" size="small" v-model="searchFormData.projectNumber"></el-input>
+          </el-form-item>
+
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+          </el-form-item>
+
+
+          <el-dialog title="网关" :visible.sync="dialogFormVisible">
+            <el-form label-position="left" :model="formData">
+              <el-form-item label="编号">
+                <el-input v-model="formData.number"></el-input>
+              </el-form-item>
+              <el-form-item label="网关ip">
+                <el-input v-model="formData.ip"></el-input>
+              </el-form-item>
+              <el-form-item label="定位">
+                <el-input v-model="formData.location"></el-input>
+              </el-form-item>
+              <el-form-item label="运营商编号">
+                <el-input v-model="formData.operatorNumber"></el-input>
+              </el-form-item>
+              <el-form-item label="项目编号">
+                <el-input v-model="formData.projectNumber"></el-input>
+              </el-form-item>
+
+
+            </el-form>
+
+            <div slot="footer" class="dialog-footer">
+              <el-button @click="cancel()">取 消</el-button>
+              <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+            </div>
+          </el-dialog>
+
+        </el-form>
+
+
+        <el-table :data="tableData">
+
+          <el-table-column prop="number" label="编号"></el-table-column>
+          <el-table-column prop="ip" label="网关ip"></el-table-column>
+          <el-table-column prop="location" label="定位"></el-table-column>
+
+          <el-table-column label="网关状态">
+            <template slot-scope="scope">
+              {{ String(scope.row.useStatus) === '0' ? '已禁用' : '正常' }}
+            </template>
+          </el-table-column>
+
+
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button type="primary" size="small" @click="showEdit(scope.row)">编辑</el-button>
+              <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+              <el-button type="primary" size="small" @click="device">设备</el-button>
+
+              <el-button
+                type="primary"
+                size="small"
+                class="delBut non"
+                @click="statusHandle(scope.row)"
+              >
+                {{ scope.row.useStatus == '1' ? '禁用' : '启用' }}
+              </el-button>
+
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :page-size="pager.pageSize"
+          :current-page="pager.pageIndex"
+          :total="pager.itemCount"
+          @current-change="handleCurrentChange"
+        >
+        </el-pagination>
+      </el-main>
+
+    </el-container>
+  </div>
+</template>
+
+
+<script>
+import axios from "axios";
+
+export default {
+  name: 'project',
+  data() {
+    return {
+      value: true,
+
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          number: '',
+          ip: '',
+          location: '',
+          useStatus: '1'
+        }],
+      formData: {
+        number: '',
+        ip: '',
+        location: '',
+        useStatus: '1',
+        operatorNumber: '',
+        projectNumber: ''
+      },
+      searchFormData:
+        {
+          number: '',
+          ip: '',
+          location: '',
+          useStatus: '1',
+          operatorNumber: '',
+          projectNumber: ''
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.gateway.list, {
+        params: {
+          pageSize: 5,
+          pageIndex: index ? index : 1,
+
+          number: this.searchFormData.number,
+          ip: this.searchFormData.ip,
+          location: this.searchFormData.location,
+          operatorNumber: this.searchFormData.operatorNumber,
+          projectNumber: this.searchFormData.projectNumber,
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.gateways;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.number = '',
+        this.formData.ip = '',
+        this.formData.location = '',
+        this.formData.operatorNumber = '',
+        this.formData.projectNumber = ''
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.gateway.update, {
+          params: {
+            number: this.formData.number,
+            ip: this.formData.ip,
+            location: this.formData.location,
+            useStatus: this.formData.useStatus,
+            operatorNumber: this.formData.operatorNumber,
+            projectNumber: this.formData.projectNumber,
+            operatorCode: this.formData.operatorCode,
+            projectCode: this.formData.projectCode,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.gateway.add, {
+          params: {
+            number: this.formData.number,
+            ip: this.formData.ip,
+            location: this.formData.location,
+            useStatus: this.formData.useStatus,
+            operatorNumber: this.formData.operatorNumber,
+            projectNumber: this.formData.projectNumber,
+            operatorCode: this.formData.operatorCode,
+            projectCode: this.formData.projectCode,
+          }
+        })
+          .then((response) => {
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.gateway.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+    },
+
+    //启用/停用网关
+    statusHandle(row) {
+      const vm = this;
+      this.$confirm('是否进行此操作', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.gateway.update, {
+          params: {
+            number: row.number,
+            ip: row.ip,
+            location: row.location,
+            operatorNumber: row.operatorNumber,
+            projectNumber: row.projectNumber,
+            operatorCode: row.operatorCode,
+            projectCode: row.projectCode,
+
+            code: row.code,
+            valid: row.valid,
+            useStatus: row.useStatus == 1 ? 0 : 1,
+          }
+        })
+          .then((response) => {
+            console.log(row)
+            // console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+              value:false
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '操作取消'
+          })
+        });
+
+    },
+
+    device() {
+      let vm = this;
+      vm.$router.push('/device')
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 3 - 0
sources/client/vrv-platform/src/views/home/home.vue

@@ -0,0 +1,3 @@
+<template>
+
+</template>

+ 44 - 128
sources/client/vrv-platform/src/views/login/login.vue

@@ -2,76 +2,32 @@
   <transition name="el-fade-in-linear">
     <div id="login">
       <div class="login-box">
-
-        <!--        <div class="slider-banner-box">-->
-        <!--          <img src="../assets/logo_banner.jpg" width="100%" height="100%" alt="">-->
-        <!--        </div>-->
-
         <div class="login-form">
 
-          <div style="display: inline-block;text-align: left;width: 80%">
-
-            <div class="title">
-              <!--              <img v-if="appInfo.logo" :src="`${$api.commonFile.download}?code=${appInfo.logo}`" style="height: 50px;"-->
-              <!--                   alt="">-->
-              <!--              <img v-else src="../assets/cloudgo_logo.png" style="height: 50px;" alt="">-->
-            </div>
-
-            <el-form ref="form" :rules="formRules" :model="form">
-
-              <el-form-item prop="account">
+          <div style="display: inline-block;text-align: left;width: 25%">
 
-                <div class="input-group">
-                  <el-input
-                    prefix-icon="el-icon-user"
-                    :autofocus="true"
-                    placeholder="请输入用户名"
-                    v-model="form.account">
-                  </el-input>
-                </div>
+            <el-form :model="form">
+              <el-form-item>
+                <el-input placeholder="请输入用户名" size="small" v-model="form.account"></el-input>
               </el-form-item>
-
-              <el-form-item prop="password">
-                <div class="input-group">
-                  <el-input
-                    prefix-icon="el-icon-lock"
-                    placeholder="请输入密码"
-                    type="password"
-                    v-model="form.password">
-                  </el-input>
-                </div>
+              <el-form-item>
+                <el-input placeholder="请输入密码" size="small" v-model="form.password"></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-input placeholder="请输入验证码" size="small" v-model="form.verifyCode"></el-input>
               </el-form-item>
 
-              <el-form-item prop="verifyCode" :error="formErrorMsg.verifyCode">
-                <div class="input-group">
-                  <el-input
-                    prefix-icon="el-icon-circle-check"
-                    placeholder="请输入图形验证码"
-                    class="verify-input"
-                    v-model="form.verifyCode">
-                  </el-input>
-
-                  <img @click="handleRefreshVerifyCode" class="verify-img" :src="verifyCodeUrl" style="cursor: pointer"
-                       alt="">
-                </div>
+              <el-form-item>
+                <el-button type="primary" size="small" @click="handleRefreshVerifyCode">获取验证码</el-button>
               </el-form-item>
 
 
-              <!--                            <div class="input-group" style="margin-bottom: 20px;">-->
-              <!--                                <label>记住我?</label>-->
-              <!--                                <el-switch-->
-              <!--                                        v-model="rememberMe"-->
-              <!--                                        on-text=""-->
-              <!--                                        off-text="">-->
-              <!--                                </el-switch>-->
-              <!--                            </div>-->
               <div class="input-group">
-                <el-button @click="login" type="primary" :loading="isBtnLoading">{{ btnText }}
-                </el-button>
+                <el-button @click="login" type="primary">登录</el-button>
               </div>
-
             </el-form>
 
+            <img :src="verifyCodeUrl" @click="onResetVerify()" >
 
           </div>
 
@@ -87,37 +43,14 @@ export default {
   name: "login",
   data() {
     return {
-      // appInfo: {},
+
       form: {
         account: '',
         password: '',
         verifyCode: '',
       },
-      formErrorMsg: {
-        account: '',
-        password: '',
-        verifyCode: '',
-      },
-      formRules: {
-        account: [
-          {required: true, message: '请输入用户名', trigger: 'blur'},
-        ],
-        password: [
-          {required: true, message: '请输入密码', trigger: 'blur'},
-        ],
-        verifyCode: [
-          {required: true, message: '请输入验证码', trigger: 'blur'},
-        ]
-      },
-      rememberMe: false,
-      isBtnLoading: false,
-      verifyCodeUrl: '',
-    };
-  },
-  computed: {
-    btnText() {
-      if (this.isBtnLoading) return '登录中...';
-      return '登录';
+
+      verifyCodeUrl: this.api.auth.verifyCode,
     }
   },
 
@@ -126,67 +59,50 @@ export default {
   },
 
   methods: {
-
+    onResetVerify() {
+      this.verifyCodeUrl = this.api.auth.verifyCode + '?now=' + new Date().getTime()
+    },
     handleRefreshVerifyCode() {
       let vm = this;
-      vm.axios.get(vm.api.auth.verifyCode).then((resp) => {
-        console.log(resp)
-      })
+      vm.verifyCodeUrl = vm.axios.get(vm.api.auth.verifyCode)
     },
 
     login() {
-
-      this.isBtnLoading = true;
       let vm = this;
 
-      vm.axios.post(vm.api.auth.login, vm.form).then((resp) => {
+      vm.axios.get(vm.api.auth.login, {
+        params: {
+          account: this.form.account,
+          password: this.form.password,
+          verifyCode: this.form.verifyCode,
+        }
+      }).then((resp) => {
+
+        console.log(resp)
 
-        //  vm.router.push({path: '/project'});
-        vm.$router.push('/menu')
         // if (resp.data.status === 200) {
+        //   vm.$router.push('/menu')
+        // }
+        // if (resp.data.status === 400) {
+        //   this.$message({
+        //       type: 'info',
+        //       message: resp.data.data.errorFields[0].message
         //
-        //   console.log(resp.data.data)
-        //
-        //   //存储登录用户信息
-        //   sessionStorage.setItem('login-user-info', resp.data.data.userBean);
-        //   sessionStorage.setItem('remember-me', vm.rememberMe);
-        //
-        //   vm.router.push({path: '/project'});
-        // } else if (resp.data.status === 400) {
-        //
-        //
-        //   resp.data.data.errorFields.forEach(function (a) {
-        //
-        //     vm.formErrorMsg[a.name] = '';
-        //     vm.$nextTick(() => {
-        //       vm.formErrorMsg[a.name] = a.message;
-        //     });
-        //
-        //
-        //   });
-        //
-        //   if (resp.data.desc) {
-        //     vm.$message({
-        //       type: "error",
-        //       message: resp.data.desc
-        //     });
-        //   }
-        //   vm.isBtnLoading = false;
-        //
-        //
-        // } else {
-        //   vm.$message({
+        //     }
+        //   );
+        // }
+        // if (response.data.status == 500) {
+        //   this.$message({
         //     type: 'error',
-        //     message: resp.data.desc
-        //   });
-        //   vm.isBtnLoading = false;
+        //     showClose: true,
+        //     message: response.data.desc
+        //   })
         // }
 
       });
 
     }
-  },
-
+  }
 }
 </script>
 

+ 66 - 70
sources/client/vrv-platform/src/views/menu/menu.vue

@@ -1,79 +1,80 @@
 <template>
   <div id="menu">
-    <el-aside>
-      <el-row class="tac">
-        <el-col :span="24">
-          <el-menu
-            default-active="1"
-            class="el-menu-vertical-demo"
-            @open="handleOpen"
-            @close="handleClose">
-
-
-            <el-submenu index="1">
-              <template slot="title">
-                <span>数据可视化大屏</span>
-              </template>
-            </el-submenu>
-
-            <el-submenu index="2">
-              <template slot="title">
-                <i class="iconfont"></i>
-                <span @click="operator">运营商管理</span>
-              </template>
-            </el-submenu>
-
-            <el-submenu index="3">
-              <template slot="title">
-                <span @click="project">项目管理</span>
-              </template>
-
-              <el-submenu index="3-1">
-                <template slot="title">
-                  <span @click="gateway">网关管理</span>
-                </template>
-
-                <el-submenu index="3-2">
+
+    <div style="width: 100%; height: 100%; border:1px #2c3e50; display: flex;flex-direction: row">
+
+      <div style="width: 20%">
+        <el-aside width="100%">
+
+              <el-menu
+                :router=true
+                :default-active="$route.name"
+                class="el-menu-vertical-demo"
+                @open="handleOpen"
+                @close="handleClose">
+
+                <el-menu-item index="/">数据可视化大屏</el-menu-item>
+
+                <el-menu-item index="/operator">运营商管理</el-menu-item>
+
+                <el-submenu index="3">
                   <template slot="title">
-                    <span @click="device">设备管理</span>
+                    <span @click="project(index)">项目管理</span>
                   </template>
 
+                  <el-submenu index="3-1">
+                    <template slot="title">
+                      <span @click="gateway(index)">网关管理</span>
+                    </template>
+
+                    <el-submenu index="3-2">
+                      <template slot="title">
+                        <span @click="device(index)">设备管理</span>
+                      </template>
+
+                      <el-menu-item index="/">运行状态</el-menu-item>
+                      <el-menu-item index="/">数据取消</el-menu-item>
+                      <el-menu-item index="/">参数设定</el-menu-item>
+                      <el-menu-item index="/">系统参数</el-menu-item>
+                      <el-menu-item index="/">报警设置</el-menu-item>
+                      <el-menu-item index="/">报警记录</el-menu-item>
+                      <el-menu-item index="/">维保记录</el-menu-item>
+
+                    </el-submenu>
+
+                  </el-submenu>
+
                 </el-submenu>
 
-              </el-submenu>
+                <el-menu-item index="/deviceAlarmRecord">报警管理</el-menu-item>
+
+                <el-menu-item index="/operatorLog">操作日志</el-menu-item>
+
 
-            </el-submenu>
+                <el-menu-item index="/user">用户管理</el-menu-item>
 
-            <el-submenu index="4">
-              <template slot="title">
-                <span>报警管理</span>
-              </template>
-            </el-submenu>
 
-            <el-submenu index="5">
-              <template slot="title">
-                <span>操作日志</span>
-              </template>
-            </el-submenu>
+                <el-submenu index="7">
+                  <template slot="title">
+                    <span>权限设置</span>
+                  </template>
 
-            <el-submenu index="6">
-              <template slot="title">
-                <span>用户管理</span>
-              </template>
-            </el-submenu>
+                  <el-menu-item index="/roleSet">角色管理</el-menu-item>
+                  <el-menu-item index="/powerSet" >权限管理</el-menu-item>
+
+                </el-submenu>
 
-            <el-submenu index="7">
-              <template slot="title">
-                <span>权限设置</span>
-              </template>
-            </el-submenu>
+              </el-menu>
 
+        </el-aside>
+      </div>
 
-          </el-menu>
-        </el-col>
-      </el-row>
-    </el-aside>
 
+      <div style="width: 80%">
+        <router-view></router-view>
+      </div>
+
+  </div>
   </div>
 
 </template>
@@ -87,13 +88,11 @@ export default {
       index: '1',
 
     }
-
-
   },
 
   created: function () {
     let vm = this;
-   // vm.$router.push('/project')
+    // vm.$router.push('/project')
     this.project(index);
   },
 
@@ -109,18 +108,15 @@ export default {
       let vm = this;
       vm.$router.push('/project')
     },
-    operator(index){
-      let vm = this;
-      vm.$router.push('/operator')
-    },
     gateway(index) {
       let vm = this;
       vm.$router.push('/gateway')
     },
-    device(index){
+    device(index) {
       let vm = this;
       vm.$router.push('/device')
-    }
+    },
+
   }
 }
 </script>

+ 408 - 0
sources/client/vrv-platform/src/views/operator/list.vue

@@ -0,0 +1,408 @@
+<template>
+  <div id="project">
+    <el-container>
+
+      <el-main>
+        <el-form :inline="true" :model="searchFormData">
+          <el-form-item label="运营商名称">
+            <el-input placeholder="运营商名称" size="small" v-model="searchFormData.name"></el-input>
+          </el-form-item>
+          <el-form-item label="运营商编号">
+            <el-input placeholder="运营商编号" size="small" v-model="searchFormData.number"></el-input>
+          </el-form-item>
+          <el-form-item label="联系人">
+            <el-input placeholder="联系人" size="small" v-model="searchFormData.contact"></el-input>
+          </el-form-item>
+          <el-form-item label="联系电话">
+            <el-input placeholder="联系电话" size="small" v-model="searchFormData.tel"></el-input>
+          </el-form-item>
+          <el-form-item label="省份">
+            <el-input placeholder="省份" size="small" v-model="searchFormData.province"></el-input>
+          </el-form-item>
+          <el-form-item label="城市">
+            <el-input placeholder="城市" size="small" v-model="searchFormData.city"></el-input>
+          </el-form-item>
+          <el-form-item label="具体地址">
+            <el-input placeholder="具体地址" size="small" v-model="searchFormData.address"></el-input>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+          </el-form-item>
+
+
+          <el-dialog title="运营商" :visible.sync="dialogFormVisible">
+            <el-form label-position="left" :model="formData">
+              <el-form-item label="运营商名称">
+                <el-input v-model="formData.name"></el-input>
+              </el-form-item>
+              <el-form-item label="运营商编号">
+                <el-input v-model="formData.number"></el-input>
+              </el-form-item>
+              <el-form-item label="联系人">
+                <el-input v-model="formData.contact"></el-input>
+              </el-form-item>
+              <el-form-item label="联系电话">
+                <el-input v-model="formData.tel"></el-input>
+              </el-form-item>
+              <el-form-item label="省份">
+                <el-input v-model="formData.province"></el-input>
+              </el-form-item>
+              <el-form-item label="城市">
+                <el-input v-model="formData.city"></el-input>
+              </el-form-item>
+              <el-form-item label="具体地址">
+                <el-input v-model="formData.address"></el-input>
+              </el-form-item>
+
+            </el-form>
+
+            <div slot="footer" class="dialog-footer">
+              <el-button @click="cancel()">取 消</el-button>
+              <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+            </div>
+          </el-dialog>
+
+        </el-form>
+
+
+        <el-table :data="tableData">
+
+          <el-table-column prop="name" label="运营商名称"></el-table-column>
+          <el-table-column prop="number" label="运营商编号"></el-table-column>
+          <el-table-column prop="contact" label="联系人"></el-table-column>
+          <el-table-column prop="tel" label="联系电话"></el-table-column>
+
+          <el-table-column prop="province" label="省份"></el-table-column>
+          <el-table-column prop="city" label="城市"></el-table-column>
+          <el-table-column prop="address" label="具体地址"></el-table-column>
+          <el-table-column label="账号状态">
+            <template slot-scope="scope">
+              {{ String(scope.row.status) === '0' ? '已禁用' : '正常' }}
+            </template>
+          </el-table-column>
+
+
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button type="primary" size="small" @click="showEdit(scope.row)">编辑</el-button>
+              <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+              <el-button type="primary" size="small" @click="project">项目</el-button>
+
+              <el-button
+                type="primary"
+                size="small"
+                class="delBut non"
+                @click="statusHandle(scope.row)"
+              >
+                {{ scope.row.status == '1' ? '禁用' : '启用' }}
+              </el-button>
+
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :page-size="pager.pageSize"
+          :current-page="pager.pageIndex"
+          :total="pager.itemCount"
+          @current-change="handleCurrentChange"
+        >
+        </el-pagination>
+      </el-main>
+
+    </el-container>
+  </div>
+</template>
+
+
+<script>
+import axios from "axios";
+
+export default {
+  name: 'project',
+  data() {
+    return {
+      value: true,
+
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          name: '1',
+          contact: '1',
+          tel: '1',
+          province: '1',
+          city: '1',
+          address: '',
+          code: '',
+          valid: '',
+          number:'',
+          status: 1
+        }],
+      formData: {
+        name: '',
+        contact: '',
+        tel: '',
+        province: '',
+        city: '',
+        address: '',
+        number:'',
+        code: '',
+        valid: '',
+      },
+      searchFormData:
+        {
+          name: '',
+          contact: '',
+          tel: '',
+          province: '',
+          city: '',
+          address: '',
+          number:'',
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.operator.list, {
+        params: {
+          pageSize: 5,
+          pageIndex: index ? index : 1,
+
+          name: this.searchFormData.name,
+          contact: this.searchFormData.contact,
+          tel: this.searchFormData.tel,
+          province: this.searchFormData.province,
+          city: this.searchFormData.city,
+          address: this.searchFormData.address,
+          number: this.searchFormData.number,
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.operators;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.name = '';
+      this.formData.province = '';
+      this.formData.city = '';
+      this.formData.address = '';
+      this.formData.contact = '';
+      this.formData.tel = '';
+      this.formData.number = '';
+      this.addOrEdit = 1
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.operator.update, {
+          params: {
+            code: this.formData.code,
+            name: this.formData.name,
+            province: this.formData.province,
+            city: this.formData.city,
+            contact: this.formData.contact,
+            tel: this.formData.tel,
+            address: this.formData.address,
+            number: this.formData.number,
+            status: 1,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.operator.add, {
+          params: {
+            name: this.formData.name,
+            contact: this.formData.contact,
+            tel: this.formData.tel,
+            province: this.formData.province,
+            city: this.formData.city,
+            address: this.formData.address,
+            number: this.formData.number,
+            status: 1,
+          }
+        })
+          .then((response) => {
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.operator.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+    },
+
+    //启用/停用运营商
+    statusHandle(row) {
+      const vm = this;
+      this.$confirm('是否进行此操作', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.operator.update, {
+          params: {
+            code: row.code,
+            name: row.name,
+            contact: row.contact,
+            tel: row.tel,
+            province: row.province,
+            city: row.city,
+            address: row.address,
+            number: row.number,
+            status: row.status == 1 ? 0 : 1,
+          }
+        })
+          .then((response) => {
+            console.log(row)
+            // console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+              value:false
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '操作取消'
+          })
+        });
+
+    },
+
+    project() {
+      let vm = this;
+      vm.$router.push('/project')
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 298 - 0
sources/client/vrv-platform/src/views/operatorLog/list.vue

@@ -0,0 +1,298 @@
+<template>
+  <div id="project">
+    <el-container>
+
+      <el-main>
+        <el-form :inline="true" :model="searchFormData">
+          <el-form-item label="用户姓名">
+            <el-input placeholder="用户姓名" size="small" v-model="searchFormData.userRealname"></el-input>
+          </el-form-item>
+          <el-form-item label="用户账号">
+            <el-input placeholder="用户账号" size="small" v-model="searchFormData.userAccount"></el-input>
+          </el-form-item>
+          <el-form-item label="运营商编号">
+            <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+          </el-form-item>
+
+
+          <el-dialog title="日志" :visible.sync="dialogFormVisible">
+            <el-form label-position="left" :model="formData">
+
+              <el-form-item label="用户姓名">
+                <el-input v-model="formData.userRealname"></el-input>
+              </el-form-item>
+              <el-form-item label="用户账号">
+                <el-input v-model="formData.userAccount"></el-input>
+              </el-form-item>
+              <el-form-item label="操作内容">
+                <el-input v-model="formData.content"></el-input>
+              </el-form-item>
+              <el-form-item label="运营商编号">
+                <el-input v-model="formData.operatorNumber"></el-input>
+              </el-form-item>
+            </el-form>
+
+            <div slot="footer" class="dialog-footer">
+              <el-button @click="cancel()">取 消</el-button>
+              <el-button type="primary" @click="addOrEditMehtond">确 定</el-button>
+            </div>
+          </el-dialog>
+
+        </el-form>
+
+
+        <el-table :data="tableData">
+
+          <el-table-column prop="userRealname" label="用户姓名"></el-table-column>
+          <el-table-column prop="userAccount" label="用户账号"></el-table-column>
+          <el-table-column prop="content" label="操作内容"></el-table-column>
+          <el-table-column prop="operatorNumber" label="运营商编号"></el-table-column>
+
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :page-size="pager.pageSize"
+          :current-page="pager.pageIndex"
+          :total="pager.itemCount"
+          @current-change="handleCurrentChange"
+        >
+        </el-pagination>
+      </el-main>
+
+    </el-container>
+  </div>
+</template>
+
+
+<script>
+import axios from "axios";
+
+export default {
+  name: 'project',
+  data() {
+    return {
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          userRealname: '1',
+          userAccount: '1',
+          content: '1',
+          operatorNumber: '1',
+
+        }],
+      formData: {
+        userRealname: '1',
+        userAccount: '1',
+        content: '1',
+        operatorNumber: '1',
+      },
+      searchFormData:
+        {
+          userRealname: '',
+          userAccount: '',
+          operatorNumber: '',
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.operatorLog.list, {
+        params: {
+          pageSize: 5,
+          pageIndex: index ? index : 1,
+
+          operatorNumber: this.searchFormData.operatorNumber,
+          userRealname: this.searchFormData.userRealname,
+          userAccount: this.searchFormData.userAccount,
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.operatorLogs;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.operatorNumber = '',
+        this.formData.userAccount = '',
+        this.formData.userRealname = '',
+        this.formData.content = ''
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.operatorLog.update, {
+          params: {
+            content: this.formData.content,
+            userAccount: this.formData.userAccount,
+            userRealname: this.formData.userRealname,
+            operatorNumber: this.formData.operatorNumber,
+
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.operatorLog.add, {
+          params: {
+            content: this.formData.content,
+            userAccount: this.formData.userAccount,
+            userRealname: this.formData.userRealname,
+            operatorNumber: this.formData.operatorNumber,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+
+            if (response.data.status == 401) {
+
+              this.$message({
+                type: 'info',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.operatorLog.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+    },
+
+  }
+
+
+}
+</script>
+
+<style scoped>
+
+</style>

+ 297 - 0
sources/client/vrv-platform/src/views/powerSet/list.vue

@@ -0,0 +1,297 @@
+<template>
+  <div id="user">
+    <el-main>
+      <el-form :inline="true" :model="searchFormData">
+        <el-form-item label="权限名称">
+          <el-input placeholder="权限名称" size="small" v-model="searchFormData.name"></el-input>
+        </el-form-item>
+        <el-form-item label="权限标识">
+          <el-input placeholder="权限标识" size="small" v-model="searchFormData.flag"></el-input>
+        </el-form-item>
+        <el-form-item label="权限类型">
+          <el-input placeholder="权限类型" size="small" v-model="searchFormData.type"></el-input>
+        </el-form-item>
+        <el-form-item label="描述">
+          <el-input placeholder="描述" size="small" v-model="searchFormData.description"></el-input>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+        </el-form-item>
+
+        <el-dialog title="权限" :visible.sync="dialogFormVisible">
+          <el-form label-position="left" :model="formData">
+            <el-form-item label="权限名称">
+              <el-input v-model="formData.name"></el-input>
+            </el-form-item>
+            <el-form-item label="权限标识">
+              <el-input v-model="formData.flag"></el-input>
+            </el-form-item>
+            <el-form-item label="权限类型">
+              <el-input v-model="formData.type"></el-input>
+            </el-form-item>
+            <el-form-item label="描述">
+              <el-input v-model="formData.description"></el-input>
+            </el-form-item>
+          </el-form>
+
+          <div slot="footer" class="dialog-footer">
+            <el-button @click="cancel()">取 消</el-button>
+            <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+          </div>
+        </el-dialog>
+
+      </el-form>
+
+
+      <el-table :data="tableData">
+
+        <el-table-column prop="name" label="权限名称"></el-table-column>
+        <el-table-column prop="flag" label="权限标识"></el-table-column>
+        <el-table-column prop="type" label="权限类型"></el-table-column>
+        <el-table-column prop="description" label="描述"></el-table-column>
+
+
+        <el-table-column label="操作">
+          <template slot-scope="scope">
+            <el-button type="primary" size="small" @click="showEdit(scope.row)">编辑</el-button>
+            <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+          </template>
+        </el-table-column>
+
+      </el-table>
+
+      <el-pagination
+        background
+        layout="prev, pager, next"
+        :page-size="pager.pageSize"
+        :current-page="pager.pageIndex"
+        :total="pager.itemCount"
+        @current-change="handleCurrentChange"
+      >
+      </el-pagination>
+
+    </el-main>
+  </div>
+
+</template>
+
+<script>
+export default {
+  name: 'user',
+  data() {
+    return {
+
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          name: '',
+          flag: '',
+          type: '',
+          description: '',
+        }],
+      formData: {
+        name: '',
+        flag: '',
+        type: '',
+        description: '',
+      },
+      searchFormData:
+        {
+          name: '',
+          flag: '',
+          type: '',
+          description: '',
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.power.list, {
+        params: {
+          pageSize: 3,
+          pageIndex: index ? index : 1,
+
+          name: this.searchFormData.name,
+          flag: this.searchFormData.flag,
+          type: this.searchFormData.type,
+          description: this.searchFormData.description,
+
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          //console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.powers;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.name = '';
+      this.formData.description = '';
+      this.formData.type = '';
+      this.formData.flag = '';
+
+
+      this.addOrEdit = 1
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.power.update, {
+          params: {
+            name: this.formData.name,
+            flag: this.formData.flag,
+            type: this.formData.type,
+            description: this.formData.description,
+
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.power.add, {
+          params: {
+            name: this.formData.name,
+            flag: this.formData.flag,
+            type: this.formData.type,
+            description: this.formData.description,
+          }
+        })
+          .then((response) => {
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.power.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+
+    },
+
+  }
+}
+</script>
+
+<style>
+#app {
+  font-family: 'Avenir', Helvetica, Arial, sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  text-align: center;
+  color: #2c3e50;
+  margin-top: 60px;
+}
+</style>

+ 81 - 13
sources/client/vrv-platform/src/views/project/project.vue

@@ -7,12 +7,32 @@
           <el-form-item label="项目名称">
             <el-input placeholder="项目名称" size="small" v-model="searchFormData.name"></el-input>
           </el-form-item>
+          <el-form-item label="项目编号">
+            <el-input placeholder="项目编号" size="small" v-model="searchFormData.number"></el-input>
+          </el-form-item>
+          <el-form-item label="项目描述">
+            <el-input placeholder="项目描述" size="small" v-model="searchFormData.description"></el-input>
+          </el-form-item>
+          <el-form-item label="客户名称">
+            <el-input placeholder="客户名称" size="small" v-model="searchFormData.customer"></el-input>
+          </el-form-item>
+          <el-form-item label="客户电话">
+            <el-input placeholder="客户电话" size="small" v-model="searchFormData.customerTel"></el-input>
+          </el-form-item>
           <el-form-item label="省份">
             <el-input placeholder="省份" size="small" v-model="searchFormData.province"></el-input>
           </el-form-item>
           <el-form-item label="城市">
             <el-input placeholder="城市" size="small" v-model="searchFormData.city"></el-input>
           </el-form-item>
+          <el-form-item label="具体地址">
+            <el-input placeholder="具体地址" size="small" v-model="searchFormData.address"></el-input>
+          </el-form-item>
+
+          <el-form-item label="运营商编号">
+            <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
+          </el-form-item>
+
           <el-form-item>
             <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
           </el-form-item>
@@ -24,14 +44,14 @@
 
           <el-dialog title="项目" :visible.sync="dialogFormVisible">
             <el-form label-position="left" :model="formData">
-              <el-form-item label="目名称">
+              <el-form-item label="目名称">
                 <el-input v-model="formData.name"></el-input>
               </el-form-item>
-              <el-form-item label="项目省份">
-                <el-input v-model="formData.province"></el-input>
+              <el-form-item label="项目编号">
+                <el-input v-model="formData.number"></el-input>
               </el-form-item>
-              <el-form-item label="项目城市">
-                <el-input v-model="formData.city"></el-input>
+              <el-form-item label="项目编号">
+                <el-input v-model="formData.description"></el-input>
               </el-form-item>
               <el-form-item label="客户名称">
                 <el-input v-model="formData.customer"></el-input>
@@ -39,11 +59,23 @@
               <el-form-item label="客户电话">
                 <el-input v-model="formData.customerTel"></el-input>
               </el-form-item>
+              <el-form-item label="项目省份">
+                <el-input v-model="formData.province"></el-input>
+              </el-form-item>
+              <el-form-item label="项目城市">
+                <el-input v-model="formData.city"></el-input>
+              </el-form-item>
+              <el-form-item label="具体地址">
+                <el-input v-model="formData.address"></el-input>
+              </el-form-item>
+              <el-form-item label="运营商编号">
+                <el-input v-model="formData.operatorNumber"></el-input>
+              </el-form-item>
             </el-form>
 
             <div slot="footer" class="dialog-footer">
               <el-button @click="cancel()">取 消</el-button>
-              <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+              <el-button type="primary" @click="addOrEditMehtond">确 定</el-button>
             </div>
           </el-dialog>
 
@@ -53,10 +85,14 @@
         <el-table :data="tableData">
 
           <el-table-column prop="name" label="项目名称"></el-table-column>
+          <el-table-column prop="number" label="项目编号"></el-table-column>
+          <el-table-column prop="description" label="项目描述"></el-table-column>
           <el-table-column prop="customer" label="客户名称"></el-table-column>
           <el-table-column prop="customerTel" label="客户电话"></el-table-column>
-          <el-table-column prop="province" label="项目省份"></el-table-column>
-          <el-table-column prop="city" label="项目城市"></el-table-column>
+
+          <el-table-column prop="province" label="省份"></el-table-column>
+          <el-table-column prop="city" label="城市"></el-table-column>
+          <el-table-column prop="address" label="具体地址"></el-table-column>
 
           <el-table-column label="操作">
             <template slot-scope="scope">
@@ -104,27 +140,37 @@ export default {
       tableData:
         [{
           name: '1',
+          number: '1',
+          description: '1',
           customer: '1',
           customerTel: '1',
           province: '1',
           city: '1',
-          code: '',
-          valid: '',
+          address: '1',
         }],
       formData: {
         name: '1',
+        number: '1',
+        description: '1',
         customer: '1',
         customerTel: '1',
         province: '1',
         city: '1',
+        address: '1',
+        operatorNumber: '1',
         code: '',
         valid: '',
       },
       searchFormData:
         {
           name: '',
+          number: '',
+          customer: '',
+          customerTel: '',
           province: '',
-          city: ''
+          city: '',
+          address: '',
+          operatorNumber: '',
         }
     }
   },
@@ -145,9 +191,15 @@ export default {
         params: {
           pageSize: 5,
           pageIndex: index ? index : 1,
+
           name: this.searchFormData.name,
+          number: this.searchFormData.number,
           province: this.searchFormData.province,
           city: this.searchFormData.city,
+          address: this.searchFormData.address,
+          customer: this.searchFormData.customer,
+          customerTel: this.searchFormData.customerTel,
+          operatorNumber: this.searchFormData.operatorNumber,
         }
       })
         .then((response) => {
@@ -171,6 +223,11 @@ export default {
       this.formData.city = '';
       this.formData.customer = '';
       this.formData.customerTel = '';
+      this.formData.address = '';
+      this.formData.number = '';
+      this.formData.operatorNumber = '',
+        this.formData.description = '';
+
       this.addOrEdit = 1
     },
 
@@ -193,15 +250,21 @@ export default {
           params: {
             code: this.formData.code,
             name: this.formData.name,
+            number: this.formData.number,
+            description: this.formData.description,
             province: this.formData.province,
             city: this.formData.city,
+            address: this.formData.address,
+            operatorNumber: this.formData.operatorNumber,
             customer: this.formData.customer,
             customerTel: this.formData.customerTel,
+
           }
         })
           .then((response) => {
             console.log(response)
 
+
             if (response.data.status == 200) {
 
               this.$message({
@@ -223,11 +286,16 @@ export default {
       if (this.addOrEdit == 1) {
         vm.axios.get('http://localhost:8088/project/add', {
           params: {
+            code: this.formData.code,
             name: this.formData.name,
+            number: this.formData.number,
+            description: this.formData.description,
             province: this.formData.province,
             city: this.formData.city,
+            operatorNumber: this.formData.operatorNumber,
+            address: this.formData.address,
             customer: this.formData.customer,
-            customerTel: this.formData.customerTel
+            customerTel: this.formData.customerTel,
           }
         })
           .then((response) => {
@@ -288,7 +356,7 @@ export default {
       this.dialogFormVisible = false;
     },
 
-    gateway(){
+    gateway() {
       let vm = this;
       vm.$router.push('/gateway')
     }

+ 283 - 0
sources/client/vrv-platform/src/views/roleSet/list.vue

@@ -0,0 +1,283 @@
+<template>
+  <div id="user">
+    <el-main>
+      <el-form :inline="true" :model="searchFormData">
+        <el-form-item label="角色名称">
+          <el-input placeholder="角色名称" size="small" v-model="searchFormData.name"></el-input>
+        </el-form-item>
+        <el-form-item label="角色标识">
+          <el-input placeholder="角色标识" size="small" v-model="searchFormData.flag"></el-input>
+        </el-form-item>
+        <el-form-item label="描述">
+          <el-input placeholder="描述" size="small" v-model="searchFormData.description"></el-input>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="primary" size="small" @click="showAdd">新增</el-button>
+        </el-form-item>
+
+        <el-dialog title="角色" :visible.sync="dialogFormVisible">
+          <el-form label-position="left" :model="formData">
+            <el-form-item label="角色名称">
+              <el-input v-model="formData.name"></el-input>
+            </el-form-item>
+            <el-form-item label="角色标识">
+              <el-input v-model="formData.flag"></el-input>
+            </el-form-item>
+            <el-form-item label="描述">
+              <el-input v-model="formData.description"></el-input>
+            </el-form-item>
+          </el-form>
+
+          <div slot="footer" class="dialog-footer">
+            <el-button @click="cancel()">取 消</el-button>
+            <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
+          </div>
+        </el-dialog>
+
+      </el-form>
+
+
+      <el-table :data="tableData">
+
+        <el-table-column prop="name" label="角色名称"></el-table-column>
+        <el-table-column prop="flag" label="角色标识"></el-table-column>
+        <el-table-column prop="description" label="描述"></el-table-column>
+
+
+        <el-table-column label="操作">
+          <template slot-scope="scope">
+            <el-button type="primary" size="small" @click="showEdit(scope.row)">编辑</el-button>
+            <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
+          </template>
+        </el-table-column>
+
+      </el-table>
+
+      <el-pagination
+        background
+        layout="prev, pager, next"
+        :page-size="pager.pageSize"
+        :current-page="pager.pageIndex"
+        :total="pager.itemCount"
+        @current-change="handleCurrentChange"
+      >
+      </el-pagination>
+
+    </el-main>
+  </div>
+
+</template>
+
+<script>
+export default {
+  name: 'user',
+  data() {
+    return {
+
+      addOrEdit: 1,
+
+      dialogFormVisible: false,
+
+      pager: {
+        pageSize: 2,
+        pageIndex: 1,
+        itemCount: 0,
+      },
+
+      tableData:
+        [{
+          name: '',
+          flag: '',
+          description: '',
+        }],
+      formData: {
+        name: '',
+        flag: '',
+        description: '',
+      },
+      searchFormData:
+        {
+          name: '',
+          flag: '',
+          description: '',
+        }
+    }
+  },
+
+  created: function () {
+    this.loadData();
+  },
+
+  methods: {
+    //切换页码
+    handleCurrentChange(index) {
+      this.loadData(index)
+    },
+
+    loadData(index) {
+      const vm = this;
+      vm.axios.get(vm.api.role.list, {
+        params: {
+          pageSize: 3,
+          pageIndex: index ? index : 1,
+
+          name: this.searchFormData.name,
+          flag: this.searchFormData.flag,
+          description: this.searchFormData.description,
+
+        }
+      })
+        .then((response) => {
+          // vm.paper = response.data.data.paper;
+          console.log(response.data.data);
+
+          vm.pager = response.data.data.pager
+
+          vm.tableData = response.data.data.roles;
+        })
+    },
+    search(searchFormData) {
+      //console.log(this.searchFormData)
+      this.loadData();
+    },
+    showAdd() {
+      this.dialogFormVisible = true;
+
+      this.formData.name = '';
+      this.formData.description = '';
+      this.formData.flag = '';
+
+
+      this.addOrEdit = 1
+    },
+
+    showEdit(row) {
+
+      console.log(row)
+
+      this.dialogFormVisible = true;
+
+      this.formData = row
+
+      this.addOrEdit = 2
+    },
+
+
+    addOrEditMehtond() {
+      const vm = this;
+      if (this.addOrEdit == 2) {
+        vm.axios.get(vm.api.role.update, {
+          params: {
+            name: this.formData.name,
+            flag: this.formData.flag,
+            description: this.formData.description,
+
+          }
+        })
+          .then((response) => {
+            console.log(response)
+
+            if (response.data.status == 200) {
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+            }
+
+            this.dialogFormVisible = false;
+
+            this.loadData();
+
+          })
+          .catch(() => {
+          });
+      }
+
+      if (this.addOrEdit == 1) {
+        vm.axios.get(vm.api.role.add, {
+          params: {
+            name: this.formData.name,
+            flag: this.formData.flag,
+            description: this.formData.description,
+          }
+        })
+          .then((response) => {
+            if (response.data.status == 200) {
+
+              this.dialogFormVisible = false;
+
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+              this.loadData();
+            }
+          })
+      }
+    },
+
+    del(row) {
+      const vm = this;
+      this.$confirm('确认删除', '提示', {
+        type: 'warning'
+      }).then(() => {
+        vm.axios.get(vm.api.role.delete, {
+          params: {
+            code: row.code,
+          }
+        })
+          .then((response) => {
+            console.log(response)
+            if (response.data.status == 200) {
+              this.$message({
+                type: 'success',
+                showClose: true,
+                message: response.data.desc
+              })
+
+            }
+            this.loadData();
+          })
+      })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            showClose: true,
+            message: '取消删除'
+          })
+        });
+    },
+    cancel() {
+      this.$message({
+        message: '操作取消',
+        showClose: true,
+        type: 'info'
+      });
+
+      this.dialogFormVisible = false;
+
+    },
+
+  }
+}
+</script>
+
+<style>
+#app {
+  font-family: 'Avenir', Helvetica, Arial, sans-serif;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  text-align: center;
+  color: #2c3e50;
+  margin-top: 60px;
+}
+</style>

+ 56 - 17
sources/client/vrv-platform/src/views/user/user.vue

@@ -2,14 +2,20 @@
   <div id="user">
     <el-main>
       <el-form :inline="true" :model="searchFormData">
-        <el-form-item label="用户名称">
-          <el-input placeholder="用户名称" size="small" v-model="searchFormData.realname"></el-input>
+        <el-form-item label="姓名">
+          <el-input placeholder="姓名" size="small" v-model="searchFormData.realname"></el-input>
         </el-form-item>
         <el-form-item label="账号">
           <el-input placeholder="账号" size="small" v-model="searchFormData.account"></el-input>
         </el-form-item>
-        <el-form-item label="密码">
-          <el-input placeholder="密码" size="small" v-model="searchFormData.roleFlag"></el-input>
+        <el-form-item label="手机号">
+          <el-input placeholder="手机号" size="small" v-model="searchFormData.phone"></el-input>
+        </el-form-item>
+        <el-form-item label="角色">
+          <el-input placeholder="角色" size="small" v-model="searchFormData.roleFlag"></el-input>
+        </el-form-item>
+        <el-form-item label="运营商编号">
+          <el-input placeholder="运营商编号" size="small" v-model="searchFormData.operatorNumber"></el-input>
         </el-form-item>
 
         <el-form-item>
@@ -22,15 +28,24 @@
 
         <el-dialog title="用户" :visible.sync="dialogFormVisible">
           <el-form label-position="left" :model="formData">
-            <el-form-item label="用户名称">
+            <el-form-item label="姓名">
               <el-input v-model="formData.realname"></el-input>
             </el-form-item>
             <el-form-item label="账号">
               <el-input v-model="formData.account"></el-input>
             </el-form-item>
+            <el-form-item label="手机号">
+              <el-input v-model="formData.phone"></el-input>
+            </el-form-item>
+            <el-form-item label="密码">
+              <el-input v-model="formData.password"></el-input>
+            </el-form-item>
             <el-form-item label="角色">
               <el-input v-model="formData.roleFlag"></el-input>
             </el-form-item>
+            <el-form-item label="运营商编号">
+              <el-input v-model="formData.operatorNumber"></el-input>
+            </el-form-item>
           </el-form>
 
           <div slot="footer" class="dialog-footer">
@@ -44,9 +59,12 @@
 
       <el-table :data="tableData">
 
-        <el-table-column prop="realname" label="用户名称"></el-table-column>
+        <el-table-column prop="realname" label="姓名"></el-table-column>
         <el-table-column prop="account" label="账号"></el-table-column>
+        <el-table-column prop="phone" label="手机号"></el-table-column>
+        <el-table-column prop="password" label="密码"></el-table-column>
         <el-table-column prop="roleFlag" label="角色"></el-table-column>
+        <el-table-column prop="operatorNumber" label="运营商编号"></el-table-column>
 
 
         <el-table-column label="操作">
@@ -93,22 +111,30 @@ export default {
         [{
           realname: '',
           account: '',
+          phone: '',
+          password: '',
+
           roleFlag: '',
-          code: '',
-          valid: '',
+          operatorNumber: '',
+
         }],
       formData: {
         realname: '',
         account: '',
+        phone: '',
+        password: '',
+
         roleFlag: '',
-        code: '',
-        valid: '',
+        operatorNumber: '',
       },
       searchFormData:
         {
           realname: '',
           account: '',
+          phone: '',
+
           roleFlag: '',
+          operatorNumber: '',
         }
     }
   },
@@ -125,13 +151,16 @@ export default {
 
     loadData(index) {
       const vm = this;
-      vm.axios.get('http://localhost:8088/user/list', {
+      vm.axios.get(vm.api.user.list, {
         params: {
           pageSize: 3,
           pageIndex: index ? index : 1,
+
           realname: this.searchFormData.realname,
           account: this.searchFormData.account,
-          password: this.searchFormData.roleFlag,
+          phone: this.searchFormData.phone,
+          roleFlag: this.searchFormData.roleFlag,
+          operatorNumber: this.searchFormData.operatorNumber,
         }
       })
         .then((response) => {
@@ -153,6 +182,9 @@ export default {
       this.formData.realname = '';
       this.formData.account = '';
       this.formData.roleFlag = '';
+      this.formData.operatorNumber = '';
+      this.formData.phone = '';
+      this.formData.password = '';
 
       this.addOrEdit = 1
     },
@@ -172,12 +204,15 @@ export default {
     addOrEditMehtond() {
       const vm = this;
       if (this.addOrEdit == 2) {
-        vm.axios.get('http://localhost:8088/user/update', {
+        vm.axios.get(vm.api.user.update, {
           params: {
             code: this.formData.code,
             realname: this.formData.realname,
             account: this.formData.account,
-            password: this.formData.roleFlag
+            roleFlag: this.formData.roleFlag,
+            operatorNumber: this.formData.operatorNumber,
+            phone: this.formData.phone,
+            password: this.formData.password,
           }
         })
           .then((response) => {
@@ -202,11 +237,15 @@ export default {
       }
 
       if (this.addOrEdit == 1) {
-        vm.axios.get('http://localhost:8088/user/add', {
+        vm.axios.get(vm.api.user.add, {
           params: {
+            code: this.formData.code,
             realname: this.formData.realname,
             account: this.formData.account,
-            password: this.formData.roleFlag
+            roleFlag: this.formData.roleFlag,
+            operatorNumber: this.formData.operatorNumber,
+            phone: this.formData.phone,
+            password: this.formData.password,
           }
         })
           .then((response) => {
@@ -231,7 +270,7 @@ export default {
       this.$confirm('确认删除', '提示', {
         type: 'warning'
       }).then(() => {
-        vm.axios.get('http://localhost:8088/user/delete', {
+        vm.axios.get(vm.api.user.delete, {
           params: {
             code: row.code,
           }

+ 0 - 5
sources/client/vrv11/postcss.config.js

@@ -1,5 +0,0 @@
-module.exports = {
-  plugins: {
-    autoprefixer: {}
-  }
-}

+ 0 - 17
sources/client/vrv11/public/index.html

@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
-<!--    <link rel="icon" href="<%= BASE_URL %>favicon.ico">-->
-    <title>系统正在加载中....</title>
-  </head>
-  <body>
-    <noscript>
-      <strong>We're sorry but cloudgo-acs-platform doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
-    </noscript>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>

+ 0 - 20
sources/client/vrv11/src/App.vue

@@ -1,20 +0,0 @@
-<template>
-  <div id="app">
-    <transition name="el-fade-in-linear">
-      <router-view/>
-    </transition>
-  </div>
-</template>
-
-<style lang="scss">
-
-  * {
-    font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
-  }
-
-  html, body, #app {
-    height: 100%;
-    position: relative;
-    overflow: hidden;
-  }
-</style>

+ 0 - 156
sources/client/vrv11/src/components/menu-choose-box/MenuChooseBox.vue

@@ -1,156 +0,0 @@
-<template>
-    <el-tabs type="border-card" v-model="currentTabName" class="menu-choose-box" @tab-click="handleTabClick" style="padding: 0">
-        <el-tab-pane v-for="menu in menus" v-bind:key="menu.code" :label="menu.name" :name="menu.code" :style="{height: height ? height : 'auto'}"
-                     style="overflow-y: scroll;padding: 15px">
-
-            <el-tree
-
-                    :default-expand-all="true"
-                    :check-strictly="true"
-                    @check-change="handleCheckChange"
-                    :default-checked-keys="checkMenuItemCodes"
-                    :data="menu.tree"
-                    show-checkbox
-                    node-key="code"
-                    :props="defaultProps">
-            </el-tree>
-
-            <input type="hidden" v-model="value">
-
-        </el-tab-pane>
-    </el-tabs>
-</template>
-
-<script>
-    export default {
-        name: "MenuChooseBox",
-        props:{
-            value: {
-                type: Array,
-                default:function () {
-                    return [] ;
-                }
-            },
-            height: {
-                type: String,
-                default:''
-            },
-        },
-        data() {
-            return {
-                menus: [],
-                currentTabName: '',
-                defaultProps: {
-                    children: 'children',
-                    label: 'name'
-                },
-                checkMenuItemCodes: [],
-            }
-        },
-        watch:{
-
-            value(n,o){
-
-                if(!o.length && n.length){
-                    this.checkMenuItemCodes = this.value;
-
-                }
-
-
-            },
-
-            checkMenuItemCodes:{
-                deep:true,
-                handler:function (e) {
-                    this.$emit('input',e);
-                }
-            }
-        },
-        methods: {
-
-            handleCheckChange(e, check) {
-
-                let vm = this;
-
-                if (check) {
-
-                    if (this.checkMenuItemCodes.indexOf(e.code) === -1) {
-                        vm.checkMenuItemCodes.push(e.code);
-                    }
-
-                } else {
-
-                    if (this.checkMenuItemCodes.indexOf(e.code) !== -1) {
-                        vm.checkMenuItemCodes.splice(this.checkMenuItemCodes.indexOf(e.code),1);
-                    }
-
-                }
-            },
-
-            handleTabClick(tab) {
-
-
-                let vm = this;
-
-                let menu = vm.menus.find((m) => {
-                    return m.code === tab.name
-                });
-
-
-                if (menu && !menu.tree) {
-
-                    vm.$http.post(vm.$api.menu.tree, vm.$qs.stringify({code: tab.name})).then((resp) => {
-                        vm.$set(menu, 'tree', resp.data.data.menuItems);
-                    });
-
-                }
-            }
-        },
-        created() {
-
-            let vm = this;
-
-            //加载菜单数据
-            vm.$http.post(vm.$api.menu.list, vm.$qs.stringify({onPage: false})).then((resp) => {
-                vm.menus = resp.data.data.menus;
-
-
-                //加载第一个菜单项
-                vm.$http.post(vm.$api.menu.tree, vm.$qs.stringify({code: vm.menus[0].code})).then((resp) => {
-                    vm.$set(vm.menus[0], 'tree', resp.data.data.menuItems);
-                    vm.currentTabName = vm.menus[0].code;
-                });
-
-            })
-
-
-        }
-    }
-</script>
-
-<style lang="scss" scoped>
-
-    .el-tabs--border-card {
-        box-shadow: none;
-    }
-
-
-</style>
-
-<style lang="scss">
-
-    .menu-choose-box {
-
-
-        .el-tabs__header {
-            background-color: #ffffff;
-
-        }
-
-        .el-tabs__content{
-            padding: 0 !important;
-        }
-
-    }
-
-</style>

+ 0 - 115
sources/client/vrv11/src/config/api.js

@@ -1,115 +0,0 @@
-//域名
-const domain = window.location.host + "/api";
-
-//端口
-const port = null;
-
-//路径
-const root = window.location.protocol + "//" + domain + (port ? (":" + port) : "");
-
-//接口auth
-const api = {
-        user: {
-            list: `${root}/user/list`,
-            add: `${root}/user/add`,
-            update: `${root}/user/update`,
-            detail: `${root}/user/detail`,
-            delete: `${root}/user/delete`,
-            batchDelete: `${root}/user/batchDelete`,
-            bindRole: `${root}/user/bindRole`,
-            bindOperator: `${root}/user/bindOperator`,
-        },
-        operator: {
-            list: `${root}/operator/list`,
-            add: `${root}/operator/add`,
-            update: `${root}/operator/update`,
-            detail: `${root}/operator/detail`,
-            delete: `${root}/operator/delete`,
-            batchDelete: `${root}/operator/batchDelete`
-        },
-        project: {
-            list: `${root}/project/list`,
-            add: `${root}/project/add`,
-            update: `${root}/project/update`,
-            detail: `${root}/project/detail`,
-            delete: `${root}/project/delete`,
-            batchDelete: `${root}/project/batchDelete`
-        },
-        gateway: {
-            list: `${root}/gateway/list`,
-            add: `${root}/gateway/add`,
-            update: `${root}/gateway/update`,
-            detail: `${root}/gateway/detail`,
-            delete: `${root}/gateway/delete`,
-            batchDelete: `${root}/gateway/batchDelete`
-        },
-        device: {
-            list: `${root}/device/list`,
-            add: `${root}/device/add`,
-            update: `${root}/device/update`,
-            detail: `${root}/device/detail`,
-            delete: `${root}/device/delete`,
-            batchDelete: `${root}/device/batchDelete`,
-        },
-        deviceParam: {
-            list: `${root}/deviceParam/list`,
-            add: `${root}/deviceParam/add`,
-            update: `${root}/deviceParam/update`,
-            detail: `${root}/deviceParam/detail`,
-            delete: `${root}/deviceParam/delete`,
-            batchDelete: `${root}/deviceParam/batchDelete`,
-        },
-        deviceAlarmRecord: {
-            list: `${root}/deviceAlarmRecord/list`,
-            add: `${root}/deviceAlarmRecord/add`,
-            update: `${root}/deviceAlarmRecord/update`,
-            detail: `${root}/deviceAlarmRecord/detail`,
-            delete: `${root}/deviceAlarmRecord/delete`,
-            batchDelete: `${root}/deviceAlarmRecord/batchDelete`,
-        },
-        deviceAlarmConfig: {
-            list: `${root}/deviceAlarmConfig/list`,
-            add: `${root}/deviceAlarmConfig/add`,
-            update: `${root}/deviceAlarmConfig/update`,
-            detail: `${root}/deviceAlarmConfig/detail`,
-            delete: `${root}/deviceAlarmConfig/delete`,
-            batchDelete: `${root}/deviceAlarmConfig/batchDelete`,
-        },
-        deviceAlarmRepairRecord: {
-            list: `${root}/deviceAlarmRepairRecord/list`,
-            add: `${root}/deviceAlarmRepairRecord/add`,
-            update: `${root}/deviceAlarmRepairRecord/update`,
-            detail: `${root}/deviceAlarmRepairRecord/detail`,
-            delete: `${root}/deviceAlarmRepairRecord/delete`,
-            batchDelete: `${root}/deviceAlarmRepairRecord/batchDelete`,
-        },
-        operatorLog: {
-            list: `${root}/operatorLog/list`,
-            add: `${root}/operatorLog/add`,
-            update: `${root}/operatorLog/update`,
-            detail: `${root}/operatorLog/detail`,
-            delete: `${root}/operatorLog/delete`,
-            batchDelete: `${root}/operatorLog/batchDelete`,
-        },
-        auth: {
-            verifyCode: `${root}/auth/verifyCode`,
-            login: `${root}/auth/login`,
-            updateUserPassword: `${root}/auth/updateUserPassword`,
-            userInfo: `${root}/auth/userInfo`,
-            logout: `${root}/auth/logout`,
-        }
-    }
-;
-
-export default Object.assign(
-    {
-        $base: {
-            domain: domain,
-            port: port,
-            root: root,
-        },
-
-
-    },
-    api
-)

+ 0 - 182
sources/client/vrv11/src/main.js

@@ -1,182 +0,0 @@
-import Vue from 'vue'
-import App from './App.vue'
-import _ from 'lodash'
-import router from './router'
-import store from './store'
-console.log(router);
-
-//引入element
-import ElementUI from 'element-ui';
-import {Message} from 'element-ui';
-import 'element-ui/lib/theme-chalk/index.css';
-Vue.use(ElementUI);
-
-
-//引入Fastboot UI库
-import  FastbootUI from 'fastboot-ui/src/components';
-import 'fastboot-ui/src/scss/element-theme.scss'
-
-Vue.use(FastbootUI);
-
-// import FastbootAdmin from 'fastboot-admin';
-// import DictSelect from "fastboot-admin/src/components/DictSelect.vue";
-// import OrgCascader from "fastboot-admin/src/components/OrgCascader.vue";
-// import DictText from "fastboot-admin/src/components/DictText.vue";
-// import AreaCascader from "fastboot-admin/src/components/AreaCascader.vue";
-// import RoleSelect from "fastboot-admin/src/components/RoleSelect.vue";
-
-// Vue.component(DictSelect.name,DictSelect);
-// Vue.component(OrgCascader.name,OrgCascader);
-// Vue.component(AreaCascader.name,AreaCascader);
-// Vue.component(DictText.name,DictText);
-// Vue.component(RoleSelect.name,RoleSelect);
-
-
-//引入全局工具和配置
-import qs from 'qs'
-import axios from 'axios'
-
-//引入接口
-import baseApi from './config/api'
-let api = _.defaultsDeep(baseApi);
-// router.addRoutes(FastbootAdmin.routes)
-
-import moment from 'moment'
-
-import utils from './util/utils'
-
-Vue.prototype.$moment = moment;
-Vue.prototype.$api = api ;
-Vue.prototype.$http = axios;
-Vue.prototype.$qs = qs;
-Vue.prototype.$utils = utils;
-axios.defaults.withCredentials = true;
-
-Vue.config.productionTip = false
-
-
-//http响应拦截器
-Vue.prototype.$http.interceptors.response.use(resp => {
-
-
-  //如果未授权,则跳转至授权页面
-  if(resp.data.status === 401){
-
-    if(sessionStorage.getItem("login-user-info") != null){
-      Message.warning("30分钟未操作自动退出登录");
-    }
-
-    sessionStorage.removeItem("login-user-info");
-
-
-
-
-    router.push("/login");
-
-
-  }
-
-  //如果未授权,则跳转至授权页面
-  if(resp.data.status === 403){
-    router.push("/no-permission");
-  }
-
-  return resp;
-
-}, error => {
-  console.log(error);
-  return Promise.reject(error)
-});
-
-
-
-
-
-
-//加载系统信息
-// axios.post(api.app.appInfo).then((resp)=>{
-//
-//   window.appInfo = resp.data.data.appInfo;
-//   try {
-//     window.appSetting = JSON.parse(resp.data.data.appInfo.setting);
-//   }catch (e) {
-//     window.appSetting = {};
-//   }
-//
-//   if(!window.appSetting){
-//     window.appSetting={};
-//   }
-//
-//   if(window.appInfo.logo){
-//     window.appInfo.logoUrl = `${api.commonFile.download}?code=${window.appInfo.logo}`;
-//   }
-//
-//
-//   if(window.appInfo.name){
-//     document.title=window.appInfo.name;
-//   }else{
-//     document.title="未配置系统名称";
-//   }
-//
-//
-//   //路由拦截器
-//   router.beforeEach((to,form,next)=>{
-//
-//
-//
-//
-//     if(to.path.startsWith('/update-user-password')){
-//       next();
-//       if(window.updatePassword){
-//         Message.warning("请修改密码再进行操作!");
-//       }
-//       return;
-//     }
-//
-//
-//     if(sessionStorage.getItem("login-user-info") != null){
-//
-//
-//       let userInfo = JSON.parse(sessionStorage.getItem("login-user-info"));
-//
-//
-//
-//
-//       if(window.appSetting["UPDATE_PWD_INTERVAL"] && window.appSetting["UPDATE_PWD_INTERVAL"].value !== "0"){
-//
-//         if(!userInfo.lastUpdatePwdTime){
-//           window.updatePassword = true;
-//
-//           next('/update-user-password')
-//           return ;
-//         }
-//
-//         if(userInfo.lastUpdatePwdTime <= parseInt(window.appSetting["UPDATE_PWD_INTERVAL"]) * 24 * 60 * 60 * 1000){
-//           next('/update-user-password');
-//           return;
-//         }
-//
-//         next();
-//
-//
-//
-//       }else{
-//         next();
-//       }
-//
-//     }else{
-//       next();
-//     }
-//
-//   });
-//
-//   window.routeViewType = 'route';
-//
-//   new Vue({
-//     router,
-//     store,
-//     render: h => h(App)
-//   }).$mount('#app');
-//
-// });
-

+ 0 - 299
sources/client/vrv11/src/views/Login.vue

@@ -1,299 +0,0 @@
-<template>
-  <transition name="el-fade-in-linear">
-    <div id="login-page">
-      <div class="login-box">
-
-        <div class="slider-banner-box">
-          <img src="../assets/logo_banner.jpg" width="100%" height="100%" alt="">
-        </div>
-
-        <div class="login-form">
-
-          <div style="display: inline-block;text-align: left;width: 80%">
-
-            <div class="title">
-<!--              <img v-if="appInfo.logo" :src="`${$api.commonFile.download}?code=${appInfo.logo}`" style="height: 50px;"-->
-<!--                   alt="">-->
-<!--              <img v-else src="../assets/cloudgo_logo.png" style="height: 50px;" alt="">-->
-            </div>
-
-            <el-form ref="form" :rules="formRules" :model="form">
-
-              <el-form-item prop="account">
-
-                <div class="input-group">
-                  <el-input
-                      prefix-icon="el-icon-user"
-                      :autofocus="true"
-                      placeholder="请输入用户名"
-                      v-model="form.account">
-                  </el-input>
-                </div>
-              </el-form-item>
-
-              <el-form-item prop="password">
-                <div class="input-group">
-                  <el-input
-                      prefix-icon="el-icon-lock"
-                      placeholder="请输入密码"
-                      type="password"
-                      v-model="form.password">
-                  </el-input>
-                </div>
-              </el-form-item>
-
-              <el-form-item prop="verifyCode" :error="formErrorMsg.verifyCode">
-                <div class="input-group">
-                  <el-input
-                      prefix-icon="el-icon-circle-check"
-                      placeholder="请输入图形验证码"
-                      class="verify-input"
-                      v-model="form.verifyCode"
-                  >
-                  </el-input>
-
-                  <img @click="handleRefreshVerifyCode" class="verify-img" :src="verifyCodeUrl" style="cursor: pointer"
-                       alt="">
-                </div>
-              </el-form-item>
-
-
-              <!--                            <div class="input-group" style="margin-bottom: 20px;">-->
-              <!--                                <label>记住我?</label>-->
-              <!--                                <el-switch-->
-              <!--                                        v-model="rememberMe"-->
-              <!--                                        on-text=""-->
-              <!--                                        off-text="">-->
-              <!--                                </el-switch>-->
-              <!--                            </div>-->
-              <div class="input-group">
-                <el-button @click="login" type="primary" :loading="isBtnLoading">{{ btnText }}
-                </el-button>
-              </div>
-
-            </el-form>
-
-
-          </div>
-
-        </div>
-
-      </div>
-    </div>
-  </transition>
-</template>
-
-<script>
-export default {
-  name: "Login",
-  data() {
-    return {
-      // appInfo: {},
-      form: {
-        account: '',
-        password: '',
-        verifyCode: '',
-      },
-      formErrorMsg: {
-        account: '',
-        password: '',
-        verifyCode: '',
-      },
-      formRules: {
-        account: [
-          {required: true, message: '请输入用户名', trigger: 'blur'},
-        ],
-        password: [
-          {required: true, message: '请输入密码', trigger: 'blur'},
-        ],
-        verifyCode: [
-          {required: true, message: '请输入验证码', trigger: 'blur'},
-        ]
-      },
-      rememberMe: false,
-      isBtnLoading: false,
-      verifyCodeUrl: '',
-    };
-  },
-  computed: {
-    btnText() {
-      if (this.isBtnLoading) return '登录中...';
-      return '登录';
-    }
-  },
-  methods: {
-
-    handleRefreshVerifyCode() {
-      let vm = this;
-      vm.$http.get(vm.api.auth.verifyCode)
-    },
-
-    login() {
-
-      this.isBtnLoading = true;
-      let vm = this;
-
-      this.$refs.form.validate((valid) => {
-
-        if (valid) {
-
-          vm.$http.post(vm.api.auth.login, vm.$qs.stringify(vm.form)).then((resp) => {
-
-            if (resp.data.status === 200) {
-
-              console.log(resp.data.data)
-
-              //存储登录用户信息
-              sessionStorage.setItem('login-user-info', JSON.stringify(resp.data.data.userbran));
-              sessionStorage.setItem('remember-me', JSON.stringify(vm.rememberMe));
-
-              vm.$router.push({path: '/'});
-            } else if (resp.data.status === 400) {
-
-
-              resp.data.data.errorFields.forEach(function (a) {
-
-                vm.formErrorMsg[a.name] = '';
-                vm.$nextTick(() => {
-                  vm.formErrorMsg[a.name] = a.message;
-                });
-
-
-              });
-
-              if (resp.data.desc) {
-                vm.$message({
-                  type: "error",
-                  message: resp.data.desc
-                });
-              }
-              vm.isBtnLoading = false;
-
-
-            } else {
-              vm.$message({
-                type: 'error',
-                message: resp.data.desc
-              });
-              vm.isBtnLoading = false;
-            }
-
-          });
-
-        } else {
-          vm.isBtnLoading = false;
-        }
-
-      });
-
-
-    }
-  },
-  created() {
-    // this.appInfo = window.appInfo ? window.appInfo : {};
-    this.handleRefreshVerifyCode();
-  }
-}
-</script>
-
-<style lang="scss">
-
-
-#login-page {
-  width: 100vw;
-  height: 100vh;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  background-image: url("../assets/login_bg.png");
-  background-position: center;
-  background-size: 100%;
-
-  /*.el-form-item{*/
-  /*     margin-bottom: 0;*/
-  /*}*/
-
-
-  .login-box {
-    position: relative;
-    display: flex;
-    /*flex-direction: column;*/
-    /*align-items: center;*/
-    width: 930px;
-    height: 420px;
-    /*border-radius: 10px;*/
-    background: rgba(255, 255, 255, 1);
-    top: -40px;
-
-
-    .slider-banner-box {
-      width: 530px;
-      display: inline-block;
-      float: left
-    }
-
-    .login-form {
-      width: calc(100% - 530px);
-      float: left;
-      display: inline-block;
-      text-align: center;
-
-      .title {
-        position: relative;
-        color: #c01920;
-        font-weight: bold;
-        font-size: 30px;
-        text-align: center;
-        line-height: 2.2;
-        margin-bottom: 20px;
-        margin-top: 20px;
-        width: 100%;
-        /*text-shadow: #000000 0 0 5px ;*/
-        display: inline-block;
-      }
-
-
-      .input-group {
-        /*margin-bottom: 20px;*/
-        display: inline-block;
-        width: 100%;
-
-        .verify-input {
-          width: 50%;
-          /*float: left*/
-        }
-
-        .verify-img {
-          height: 40px;
-          width: calc(50% - 10px);
-          display: inline-block;
-          vertical-align: bottom;
-          margin-left: 10px;
-          float: right;
-        }
-
-        button {
-          width: 100%;
-          border: none;
-        }
-      }
-    }
-
-
-  }
-
-  .login-footer {
-
-    position: absolute;
-    bottom: -40px;
-    text-align: center;
-    color: #242C37;
-    font-weight: bold;
-    width: 100%;
-    left: 0px;
-
-  }
-
-}
-
-</style>

+ 0 - 0
sources/client/vrv11/src/views/device-alarm-record/List.vue


+ 0 - 0
sources/client/vrv11/src/views/device/List.vue


+ 0 - 0
sources/client/vrv11/src/views/gateway/List.vue


+ 0 - 569
sources/client/vrv11/src/views/home/Home.vue

@@ -1,569 +0,0 @@
-<template>
-    <div class="home-box">
-
-        <el-row>
-            <el-col :span="6">
-                <el-card class="top-count">
-                    <div class="top-count-title">总派件数量</div>
-                    <div class="top-count-size">{{taskCount.allDeliveryRecordCount}}</div>
-                </el-card>
-            </el-col>
-            <el-col :span="6">
-                <el-card class="top-count">
-                    <div class="top-count-title">待派件数量</div>
-                    <div class="top-count-size">{{taskCount.allWaitDeliveryRecordCount}}</div>
-                </el-card>
-            </el-col>
-            <el-col :span="6">
-                <el-card class="top-count">
-                    <div class="top-count-title">总揽件数量</div>
-                    <div class="top-count-size">{{taskCount.allReceivingRecordCount}}</div>
-                </el-card>
-            </el-col>
-            <el-col :span="6">
-                <el-card class="top-count">
-                    <div class="top-count-title">待揽件数量</div>
-                    <div class="top-count-size">{{taskCount.allWaitReceivingRecordCount}}</div>
-                </el-card>
-            </el-col>
-        </el-row>
-
-        <el-row>
-            <div class="btn-box" style="margin-bottom: 0;">
-                <el-button type="info" @click="showSendMsgBox()">发送消息通知</el-button>
-            </div>
-
-        </el-row>
-
-        <el-row>
-            <div class="btn-box">上午(派/揽)件情况</div>
-
-            <fb-list-body :pager="morningPager"
-                          @handlePagerSizeChange="handleMorningPagerSizeChange"
-                          @handlePagerIndexChange="handleMorningPagerIndexChange">
-                <template slot="btn-group">
-                    <div></div>
-                </template>
-                <template slot="search-form">
-                    <div>
-                        <el-form>
-                            <el-form-item class="search-form-item" label="区域楼栋">
-                                <el-cascader
-                                        ref="morningSearchBuildings"
-                                        :props="{value:'code',label:'name', checkStrictly: true }"
-                                        v-model="morningSearchForm.buildingCode"
-                                        :options="tree"
-                                        @change="handleMorningChange"></el-cascader>
-                            </el-form-item>
-                        </el-form>
-                    </div>
-                </template>
-                <template slot="table">
-                    <el-table
-                            v-loading="morningLoading"
-                            :data="morningTables"
-                            border
-                            ref="mTable"
-                            column-key="buildingName"
-                            :filter-method="filterBuildingName">
-                        <el-table-column
-                                fixed
-                                prop="buildingName"
-                                label="楼栋名称"
-                                width="200">
-                        </el-table-column>
-                        <el-table-column
-                                prop="deliveryRecordCount"
-                                label="总派件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="signedDeliveryRecordCount"
-                                label="已派件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="waitDeliveryRecordCount"
-                                label="待派件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="receivingRecordCount"
-                                label="总揽件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="receivedReceivingRecordCount"
-                                label="已揽件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="waitReceivingRecordCount"
-                                label="待揽件数">
-                        </el-table-column>
-
-                        <el-table-column
-                                v-bind:key="item.code"
-                                v-for="item in morningHeads"
-                                :prop="item.code"
-                                :label="item.times">
-                            <template slot-scope="scope">
-                                <div>待派/已派:{{getDeliveryDesc(scope.row, item)}}件</div>
-                                <div>待揽/已揽:{{getReceivingDesc(scope.row, item)}}件</div>
-                            </template>
-                        </el-table-column>
-
-                        <el-table-column
-                                prop="address"
-                                label="操作"
-                                width="180">
-                            <template slot-scope="scope">
-                                <el-link type="primary" @click="handleBuildingTaskList(scope.row)" :underline="false">
-                                    楼栋任务
-                                </el-link>
-                            </template>
-                        </el-table-column>
-
-                    </el-table>
-                </template>
-
-            </fb-list-body>
-
-        </el-row>
-
-        <el-row>
-            <div class="btn-box">下午(派/揽)件情况</div>
-            <fb-list-body :pager="afternoonPager"
-                          @handlePagerSizeChange="handleAfternoonPagerSizeChange"
-                          @handlePagerIndexChange="handleAfternoonPagerIndexChange">
-                <template slot="btn-group">
-                    <div></div>
-                </template>
-                <template slot="search-form">
-                    <div>
-                        <el-form>
-                            <el-form-item class="search-form-item" label="区域楼栋">
-                                <el-cascader
-                                        ref="afternoonSearchBuildings"
-                                        :props="{value:'code',label:'name', checkStrictly: true }"
-                                        v-model="afternoonSearchForm.buildingCode"
-                                        :options="tree"
-                                        @change="handleAfternoonChange"></el-cascader>
-                            </el-form-item>
-                        </el-form>
-                    </div>
-                </template>
-                <template slot="table">
-                    <el-table
-                            v-loading="afternoonLoading"
-                            :data="afternoonTables"
-                            border
-                            ref="aTable"
-                            column-key="buildingName">
-                        <el-table-column
-                                fixed
-                                prop="buildingName"
-                                label="楼栋名称"
-                                width="200">
-                        </el-table-column>
-                        <el-table-column
-                                prop="deliveryRecordCount"
-                                label="总派件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="signedDeliveryRecordCount"
-                                label="已派件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="waitDeliveryRecordCount"
-                                label="待派件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="receivingRecordCount"
-                                label="总揽件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="receivedReceivingRecordCount"
-                                label="已揽件数">
-                        </el-table-column>
-                        <el-table-column
-                                prop="waitReceivingRecordCount"
-                                label="待揽件数">
-                        </el-table-column>
-
-                        <el-table-column
-                                v-bind:key="item.code"
-                                v-for="item in afternoonHeads"
-                                :prop="item.code"
-                                :label="item.times">
-                            <template slot-scope="scope">
-                                <div>待派/已派:{{getDeliveryDesc(scope.row, item)}}件</div>
-                                <div>待揽/已揽:{{getReceivingDesc(scope.row, item)}}件</div>
-                            </template>
-                        </el-table-column>
-
-                        <el-table-column
-                                prop="address"
-                                label="操作"
-                                width="180">
-                            <template slot-scope="scope">
-                                <el-link type="primary" @click="handleBuildingTaskList(scope.row)" :underline="false">
-                                    楼栋任务
-                                </el-link>
-                            </template>
-                        </el-table-column>
-                    </el-table>
-                </template>
-            </fb-list-body>
-
-        </el-row>
-
-
-        <el-dialog title="发送消息通知" :visible.sync="showSendMsg">
-            <el-form :model="msgForm">
-                <el-form-item placeholder="请选择楼栋" class="search-form-item" label="楼栋区域" label-width="80px">
-                    <el-cascader
-                            style="width: 300px"
-                            ref="searchBuildings"
-                            :props="{value:'code',label:'name', checkStrictly: true }"
-                            v-model="msgForm.buildingCode"
-                            :options="tree"
-                            @change="handleBuildingChange"></el-cascader>
-                </el-form-item>
-
-                <el-form-item label="时间段" label-width="80px">
-                    <el-checkbox-group v-model="msgForm.deliveryTimeCodes">
-                        <el-checkbox v-bind:key="time.code" v-for="time in deliveryTimes" :value="time.code"
-                                     :label="time.times"></el-checkbox>
-                    </el-checkbox-group>
-                </el-form-item>
-                <el-form-item label="户号" label-width="80px">
-                    <el-select v-model="msgForm.houseNumber" placeholder="请选择户号" style="width: 300px">
-                        <el-option label="全部" value=""></el-option>
-                        <el-option v-bind:key="number" v-for="number in houseNumbers" :label="number"
-                                   :value="number"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="通知类型" label-width="80px">
-                    <el-checkbox-group v-model="msgForm.types">
-                        <el-checkbox label="到站通知" value="MP_ARRIVE_NOTICE"></el-checkbox>
-                        <el-checkbox label="派件通知" value="MP_DELIVERY_NOTICE"></el-checkbox>
-                        <el-checkbox label="派件异常通知" value="MP_DELIVERY_EXCEPTION_NOTICE"></el-checkbox>
-                        <el-checkbox label="揽件通知" value="MP_RECEIVING_NOTICE"></el-checkbox>
-                        <el-checkbox label="揽件异常通知" value="MP_RECEIVED_EXCEPTION_NOTICE"></el-checkbox>
-                    </el-checkbox-group>
-                </el-form-item>
-            </el-form>
-            <div slot="footer" class="dialog-footer">
-                <el-button @click="showSendMsg = false">取 消</el-button>
-                <el-button type="primary" @click="send">确 定</el-button>
-            </div>
-        </el-dialog>
-
-    </div>
-</template>
-
-<script>
-    export default {
-        props: {},
-        data() {
-            return {
-                showSendMsg: false,
-                msgForm: {
-                    types: [],
-                    deliveryTimeCodes: [],
-                    houseNumber: '',
-                    buildingCodes:  []
-                },
-                morningSearchForm: {
-                    buildingCode: '',
-                    buildingCodes: [],
-                },
-                afternoonSearchForm: {
-                    buildingCode: '',
-                    buildingCodes: []
-                },
-                tree: [],
-                houseNumbers: [],
-                deliveryTimes: [],
-                morningHeads: [],
-                afternoonHeads: [],
-                morningTableData: [],
-                afternoonTableData: [],
-                afternoonLoading: true,
-                morningLoading: true,
-                taskCount: {},
-                buildingCodes: [],
-                morningPager: {
-                    pageSize: 10
-                    , pageIndex: 1,
-                    itemCount: 0
-                },
-                afternoonPager: {
-                    pageSize: 10
-                    , pageIndex: 1,
-                    itemCount: 0
-                },
-                morningBuildingNameKeyword: '',
-                afternoonBuildingNameKeyword: '',
-            }
-        },
-        watch: {
-            "morningPager.pageIndex": {
-                handler() {
-                    this.loadMorningCount();
-                },
-                deep: true,
-                immediate: true
-            },
-            "morningPager.pageSize": {
-                handler() {
-                    this.loadMorningCount();
-                },
-                deep: true
-            },
-            "afternoonPager.pageIndex": {
-                handler() {
-                    this.loadAfternoonCount();
-                },
-                deep: true,
-                immediate: true
-            },
-            "afternoonPager.pageSize": {
-                handler() {
-                    this.loadAfternoonCount();
-                },
-                deep: true
-            }
-        },
-        methods: {
-            handleAfternoonChange() {
-                let vm = this
-                let buildingCodes = []
-                let checkedNodes = vm.$refs.afternoonSearchBuildings.getCheckedNodes();
-                vm.loadChildren(checkedNodes,buildingCodes);
-                vm.afternoonSearchForm.buildingCodes = buildingCodes;
-                vm.loadAfternoonCount();
-            },
-            handleMorningChange() {
-                let vm = this
-                let buildingCodes = []
-                let checkedNodes = vm.$refs.morningSearchBuildings.getCheckedNodes();
-                vm.loadChildren(checkedNodes,buildingCodes);
-                vm.morningSearchForm.buildingCodes = buildingCodes;
-                vm.loadMorningCount();
-            },
-            send() {
-                let vm = this;
-                let buildingCode = "";
-                if (vm.msgForm.buildingCodes && vm.msgForm.buildingCodes.length > 0) {
-                    buildingCode = vm.msgForm.buildingCodes[vm.msgForm.buildingCodes.length - 1]
-                }
-                vm.$http.post(vm.$api.messageNoticeRecord.sendAll, {
-                    types: vm.msgForm.types,
-                    deliveryTimeCodes: vm.msgForm.deliveryTimeCodes,
-                    houseNumber: vm.msgForm.houseNumber,
-                    buildingCode: buildingCode
-                }).then((resp) => {
-                    if(resp.data.status === 200){
-                        vm.$message({type:'success',message:resp.data.desc});
-                    }else{
-                        vm.$message({type:'error',message:resp.data.desc});
-                    }
-                })
-            },
-            handleAfternoonPagerSizeChange(e) {
-                this.afternoonPager.pageSize = e;
-            },
-            handleAfternoonPagerIndexChange(e) {
-                this.afternoonPager.pageIndex = e;
-            },
-            handleMorningPagerSizeChange(e) {
-                this.morningPager.pageSize = e;
-            },
-            handleMorningPagerIndexChange(e) {
-                this.morningPager.pageIndex = e;
-            },
-            showSendMsgBox() {
-                let vm = this;
-                vm.showSendMsg = true;
-                vm.loadBuildingTree();
-            },
-            houseNumberList() {
-                let vm = this;
-                vm.msgForm.houseNumber = ''
-                vm.$http.post(vm.$api.building.houseNumberList, vm.$qs.stringify(
-                    {
-                        code: vm.buildingCodes[vm.buildingCodes.length - 1]
-                    }
-                )).then((resp) => {
-                    vm.houseNumbers = resp.data.data.houseNumbers;
-                })
-            },
-            loadBuildingTree() {
-                let vm = this;
-                vm.$http.post(vm.$api.building.tree, {}).then((resp) => {
-                    vm.tree = resp.data.data.buildings;
-                    vm.tree.unshift({name: "全部", code: ""})
-                })
-            },
-            loadChildren(nodes, arr) {
-                let vm = this
-                for (let i = 0; i < nodes.length; i++) {
-                    if (nodes[i].children && nodes[i].children.length > 0) {
-                        vm.loadChildren(nodes[i].children, arr)
-                    }
-                    arr.push(nodes[i].value)
-                }
-            },
-            handleBuildingChange() {
-                let vm = this
-                let buildingCodes = []
-                let checkedNodes = vm.$refs.searchBuildings.getCheckedNodes();
-                vm.loadChildren(checkedNodes, buildingCodes)
-                if (buildingCodes.length === 1 && buildingCodes[0] === '') {
-                    vm.buildingCodes = []
-                    vm.houseNumbers = []
-                } else {
-                    vm.buildingCodes = buildingCodes
-                    vm.houseNumberList();
-                }
-            },
-            filterBuildingName() {
-
-            },
-            handleBuildingTaskList(item) {
-                this.$router.push({path: '/home/task-list', query: {buildingCode: item.buildingCode}});
-            },
-            getReceivingDesc(row, item) {
-                return row[item.code].waitReceivingCount + '/' + row[item.code].receivedReceivingCount;
-            },
-            getDeliveryDesc(row, item) {
-                return row[item.code].waitDeliveryCount + '/' + row[item.code].signedDeliveryCount;
-            },
-            loadTimeList() {
-                let vm = this;
-                vm.$http.post(vm.$api.deliveryTime.list, vm.$qs.stringify({onPage: false})).then((resp) => {
-                    vm.deliveryTimes = resp.data.data.deliveryTimes;
-                    // 区分上午下午
-                    let m = [];
-                    let a = [];
-                    for (let i = 0; i < vm.deliveryTimes.length; i++) {
-                        if (vm.deliveryTimes[i].type === 'MORNING') {
-                            m.push(vm.deliveryTimes[i])
-                        } else if (vm.deliveryTimes[i].type === 'AFTERNOON') {
-                            a.push(vm.deliveryTimes[i])
-                        }
-                    }
-                    vm.morningHeads = m;
-                    vm.afternoonHeads = a;
-                    this.loadCount()
-                })
-            },
-            loadMorningCount() {
-                let vm = this;
-                vm.morningLoading = true
-                vm.$http.post(vm.$api.count.loadMorningTaskCount, vm.$qs.stringify({
-                    onPage: true,
-                    pageIndex: vm.morningPager.pageIndex,
-                    codes: vm.morningSearchForm.buildingCodes,
-                    pageSize: vm.morningPager.pageSize
-                })).then((resp) => {
-                    vm.morningTableData = resp.data.data.taskCount.morningCounts;
-                    vm.morningPager.pageIndex = resp.data.data.pager.pageIndex;
-                    vm.morningPager.pageSize = resp.data.data.pager.pageSize;
-                    vm.morningPager.itemCount = resp.data.data.pager.itemCount;
-                    vm.morningLoading = false
-                    vm.$nextTick(() => {
-                        vm.$refs.mTable.doLayout();
-                        vm.morningLoading = false
-                    });
-                })
-            },
-            loadAfternoonCount() {
-                let vm = this;
-                vm.afternoonLoading = true
-                vm.$http.post(vm.$api.count.loadAfternoonTaskCount, vm.$qs.stringify({
-                    onPage: true,
-                    pageIndex: vm.afternoonPager.pageIndex,
-                    codes: vm.afternoonSearchForm.buildingCodes,
-                    pageSize: vm.afternoonPager.pageSize
-                })).then((resp) => {
-                    vm.afternoonTableData = resp.data.data.taskCount.afternoonCounts;
-                    vm.afternoonPager.pageIndex = resp.data.data.pager.pageIndex;
-                    vm.afternoonPager.pageSize = resp.data.data.pager.pageSize;
-                    vm.afternoonPager.itemCount = resp.data.data.pager.itemCount;
-                    vm.afternoonLoading = false
-                    vm.$nextTick(() => {
-                        vm.$refs.mTable.doLayout();
-                    });
-                })
-            },
-            loadCount() {
-                let vm = this;
-                vm.$http.post(vm.$api.count.loadTaskCount, {}).then((resp) => {
-                    vm.taskCount = resp.data.data.taskCount;
-                })
-
-                vm.loadMorningCount();
-                vm.loadAfternoonCount();
-            }
-        },
-        mounted() {
-
-            this.loadTimeList()
-        },
-        created() {
-            let vm = this;
-            this.$http.post(vm.$api.building.tree,{}).then((resp)=>{
-                vm.tree = resp.data.data.buildings;
-            })
-        },
-        computed: {
-            afternoonTables() {
-                let vm = this;
-
-                if (vm.afternoonBuildingNameKeyword) {
-                    return vm.afternoonTableData.filter(data => {
-                        return Object.keys(data).some(key => {
-                            return String(data[key]).indexOf(vm.afternoonBuildingNameKeyword) > -1;
-                        })
-                    })
-                }
-                return vm.afternoonTableData;
-            },
-            morningTables() {
-                let vm = this;
-
-                if (vm.morningBuildingNameKeyword) {
-                    return vm.morningTableData.filter(data => {
-                        return Object.keys(data).some(key => {
-                            return String(data[key]).indexOf(vm.morningBuildingNameKeyword) > -1;
-                        })
-                    })
-                }
-                return vm.morningTableData;
-            }
-        }
-    };
-</script>
-
-<style scoped>
-    .top-count {
-        width: 90%;
-        height: 140px;
-        text-align: center;
-    }
-
-    .top-count-title {
-        font-size: 28px;
-        margin-top: 10px;
-        margin-bottom: 20px;
-        color: #666666;
-    }
-
-    .top-count-size {
-        font-size: 24px;
-    }
-
-    .btn-box {
-        margin-top: 20px;
-        margin-bottom: 20px;
-        font-size: 20px;
-    }
-</style>

+ 0 - 0
sources/client/vrv11/src/views/operator-log/List.vue


+ 0 - 0
sources/client/vrv11/src/views/operator/List.vue


+ 0 - 334
sources/client/vrv11/src/views/project/List.vue

@@ -1,334 +0,0 @@
-<template>
-  <div class="home-box">
-    <el-main>
-      <el-form :inline="true" :model="searchFormData">
-        <el-form-item label="项目名称">
-          <el-input placeholder="项目名称" size="small" v-model="searchFormData.name"></el-input>
-        </el-form-item>
-        <el-form-item label="省份">
-          <el-input placeholder="省份" size="small" v-model="searchFormData.province"></el-input>
-        </el-form-item>
-        <el-form-item label="城市">
-          <el-input placeholder="城市" size="small" v-model="searchFormData.city"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" size="small" @click="search(searchFormData)">搜索</el-button>
-        </el-form-item>
-
-        <el-form-item>
-          <el-button type="primary" size="small" @click="showAdd">新增</el-button>
-        </el-form-item>
-
-
-        <el-dialog title="项目" :visible.sync="dialogFormVisible">
-          <el-form label-position="left" :model="formData">
-            <el-form-item label="栏目名称">
-              <el-input v-model="formData.name"></el-input>
-            </el-form-item>
-            <el-form-item label="项目省份">
-              <el-input v-model="formData.province"></el-input>
-            </el-form-item>
-            <el-form-item label="项目城市">
-              <el-input v-model="formData.city"></el-input>
-            </el-form-item>
-            <el-form-item label="客户名称">
-              <el-input v-model="formData.customer"></el-input>
-            </el-form-item>
-            <el-form-item label="客户电话">
-              <el-input v-model="formData.customerTel"></el-input>
-            </el-form-item>
-          </el-form>
-
-          <div slot="footer" class="dialog-footer">
-            <el-button @click="cancel()">取 消</el-button>
-            <el-button type="primary" @click="addOrEditMehtond()">确 定</el-button>
-          </div>
-        </el-dialog>
-
-      </el-form>
-
-
-      <el-table :data="tableData">
-
-        <el-table-column prop="name" label="项目名称"></el-table-column>
-        <el-table-column prop="customer" label="客户名称"></el-table-column>
-        <el-table-column prop="customerTel" label="客户电话"></el-table-column>
-        <el-table-column prop="province" label="项目省份"></el-table-column>
-        <el-table-column prop="city" label="项目城市"></el-table-column>
-
-        <el-table-column label="操作">
-          <template slot-scope="scope">
-            <el-button type="primary" size="small" @click="showEdit(scope.row)">修改</el-button>
-            <el-button type="danger" size="small" @click="del(scope.row)">删除</el-button>
-          </template>
-        </el-table-column>
-
-      </el-table>
-
-      <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="pager.pageSize"
-          :current-page="pager.pageIndex"
-          :total="pager.itemCount"
-          @current-change="handleCurrentChange"
-      >
-      </el-pagination>
-    </el-main>
-
-
-  </div>
-</template>
-
-<script>
-
-export default {
-  name: 'project',
-  data() {
-    return {
-      addOrEdit: 1,
-
-      dialogFormVisible: false,
-
-      pager: {
-        pageSize: 2,
-        pageIndex: 1,
-        itemCount: 0,
-      },
-
-      tableData:
-          [{
-            name: '1',
-            customer: '1',
-            customerTel: '1',
-            province: '1',
-            city: '1',
-            code: '',
-            valid: '',
-          }],
-      formData: {
-        name: '1',
-        customer: '1',
-        customerTel: '1',
-        province: '1',
-        city: '1',
-        code: '',
-        valid: '',
-      },
-      searchFormData:
-          {
-            name: '',
-            province: '',
-            city: ''
-          }
-    }
-  },
-
-  created: function () {
-    this.loadData();
-  },
-
-  methods: {
-    //切换页码
-    handleCurrentChange(index) {
-      this.loadData(index)
-    },
-
-    loadData(index) {
-      let vm = this;
-      this.pager.pageIndex = vm.pager.pageIndex;
-      this.pager.pageSize = vm.pager.pageSize;
-      this.$http.post(this.api.list,this.$qs.stringify(this.searchParams)).then((resp)=>{
-
-
-        for(let key in resp.data.data){
-          if(resp.data.data[key] instanceof Array){
-            vm.tableData = resp.data.data[key];
-          }
-        }
-
-        //处理分页
-        vm.pager.pageIndex = resp.data.data.pager.pageIndex;
-        vm.pager.pageSize = resp.data.data.pager.pageSize;
-        vm.pager.itemCount = resp.data.data.pager.itemCount;
-
-      })
-
-
-
-
-      const vm = this;
-      vm.$http.get(vm.api.list, {
-        params: {
-          pageSize: 3,
-          pageIndex: index ? index : 1,
-          name: this.searchFormData.name,
-          province: this.searchFormData.province,
-          city: this.searchFormData.city,
-        }
-      })
-          .then((response) => {
-            // vm.paper = response.data.data.paper;
-            //console.log(response.data.data);
-
-            vm.pager = response.data.data.pager
-
-            vm.tableData = response.data.data.projects;
-          })
-    },
-    search(searchFormData) {
-      //console.log(this.searchFormData)
-      this.loadData();
-    },
-    showAdd() {
-      this.dialogFormVisible = true;
-
-      this.formData.name = '';
-      this.formData.province = '';
-      this.formData.city = '';
-      this.formData.customer = '';
-      this.formData.customerTel = '';
-      this.addOrEdit = 1
-    },
-
-    showEdit(row) {
-
-      console.log(row)
-
-      this.dialogFormVisible = true;
-
-      this.formData = row
-
-      this.addOrEdit = 2
-    },
-
-
-    addOrEditMehtond() {
-      const vm = this;
-      if (this.addOrEdit == 2) {
-        vm.axios.get('http://localhost:8088/project/update', {
-          params: {
-            code: this.formData.code,
-            name: this.formData.name,
-            province: this.formData.province,
-            city: this.formData.city,
-            customer: this.formData.customer,
-            customerTel: this.formData.customerTel,
-          }
-        })
-            .then((response) => {
-              console.log(response)
-
-              if (response.data.status == 200) {
-
-                this.$message({
-                  type: 'success',
-                  showClose: true,
-                  message: response.data.desc
-                })
-              }
-
-              this.dialogFormVisible = false;
-
-              this.loadData();
-
-            })
-            .catch(() => {
-            });
-      }
-
-      if (this.addOrEdit == 1) {
-        vm.axios.get('http://localhost:8088/project/add', {
-          params: {
-            name: this.formData.name,
-            province: this.formData.province,
-            city: this.formData.city,
-            customer: this.formData.customer,
-            customerTel: this.formData.customerTel
-          }
-        })
-            .then((response) => {
-              if (response.data.status == 200) {
-
-                this.dialogFormVisible = false;
-
-                this.$message({
-                  type: 'success',
-                  showClose: true,
-                  message: response.data.desc
-                })
-
-                this.loadData();
-              }
-            })
-      }
-    },
-
-    del(row) {
-      const vm = this;
-      this.$confirm('确认删除', '提示', {
-        type: 'warning'
-      }).then(() => {
-        vm.axios.get('http://localhost:8088/project/delete', {
-          params: {
-            code: row.code,
-          }
-        })
-            .then((response) => {
-              console.log(response)
-              if (response.data.status == 200) {
-                this.$message({
-                  type: 'success',
-                  showClose: true,
-                  message: response.data.desc
-                })
-
-              }
-              this.loadData();
-            })
-      })
-          .catch(() => {
-            this.$message({
-              type: 'info',
-              showClose: true,
-              message: '取消删除'
-            })
-          });
-    },
-    cancel() {
-      this.$message({
-        message: '操作取消',
-        showClose: true,
-        type: 'info'
-      });
-
-      this.dialogFormVisible = false;
-    }
-  }
-}
-</script>
-
-<style scoped>
-.top-count {
-  width: 90%;
-  height: 140px;
-  text-align: center;
-}
-
-.top-count-title {
-  font-size: 28px;
-  margin-top: 10px;
-  margin-bottom: 20px;
-  color: #666666;
-}
-
-.top-count-size {
-  font-size: 24px;
-}
-
-.btn-box {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  font-size: 20px;
-}
-</style>

+ 0 - 0
sources/client/vrv11/src/views/user/List.vue


+ 16 - 13
sources/server/vrv/pom.xml

@@ -4,14 +4,13 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
- 
+
     <!-- 父模块配置 -->
     <parent>
         <groupId>com.wbspool</groupId>
         <artifactId>fastboot-comp</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
- 
 
 
     <!-- 项目信息 -->
@@ -26,7 +25,6 @@
     <name>vrv</name>
 
 
-
     <!-- 模块信息配置 -->
     <modules>
         <module>vrv-core-service</module>
@@ -47,9 +45,9 @@
             </dependency>
 
             <dependency>
-                 <groupId>com.kuyuntech</groupId>
-                 <artifactId>vrv-core-service</artifactId>
-                 <version>${project.version}</version>
+                <groupId>com.kuyuntech</groupId>
+                <artifactId>vrv-core-service</artifactId>
+                <version>${project.version}</version>
             </dependency>
 
             <dependency>
@@ -58,16 +56,21 @@
                 <version>${project.version}</version>
             </dependency>
 
+            <!--fastboot-auth-->
+            <dependency>
+                <groupId>com.wbspool.fastboot.comp</groupId>
+                <artifactId>auth-comp-core-service</artifactId>
+                <version>${fastboot.comp.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.wbspool.fastboot.comp</groupId>
+                <artifactId>auth-comp-common-restful</artifactId>
+                <version>${fastboot.comp.version}</version>
+            </dependency>
+
         </dependencies>
 
     </dependencyManagement>
 
 
-
-
-    
-
-
-
-
 </project>

+ 6 - 0
sources/server/vrv/vrv-core-service/src/main/java/com/kuyuntech/vrv/coreservice/service/core/impl/GatewayServiceImpl.java

@@ -213,6 +213,12 @@ public class GatewayServiceImpl extends AbstractFastbootService<Gateway, Gateway
             if (StringUtils.isNotBlank(gatewayBean.getUseStatus())) {
                 detachedCriteria.add(Restrictions.eq("useStatus", gatewayBean.getUseStatus()));
             }
+            if (StringUtils.isNotBlank(gatewayBean.getOperatorNumber())) {
+                detachedCriteria.add(Restrictions.like("operatorNumber", gatewayBean.getOperatorNumber(), MatchMode.ANYWHERE));
+            }
+            if (StringUtils.isNotBlank(gatewayBean.getProjectNumber())) {
+                detachedCriteria.add(Restrictions.like("projectNumber", gatewayBean.getProjectNumber(), MatchMode.ANYWHERE));
+            }
         }
 
         detachedCriteria.add(Restrictions.eq("valid", VALID));

+ 14 - 10
sources/server/vrv/vrv-platform/src/main/java/com/kuyuntech/vrv/platform/controller/auth/AuthController.java

@@ -8,6 +8,7 @@ import com.kuyuntech.vrv.coreapi.constant.core.VerifyCodeType;
 import com.kuyuntech.vrv.coreapi.service.core.AuthService;
 import com.kuyuntech.vrv.coreapi.service.core.UserService;
 import com.kuyuntech.vrv.coreapi.service.core.VerifyCodeService;
+import com.kuyuntech.vrv.coreservice.domain.core.VerifyCode;
 import com.kuyuntech.vrv.coreservice.util.core.ValidateCodeGenerator;
 import com.wbspool.fastboot.core.common.bean.ResponseBean;
 import com.wbspool.fastboot.core.common.builder.MapBuilder;
@@ -17,10 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.context.request.NativeWebRequest;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.Map;
 
 /**
@@ -58,13 +61,13 @@ public class AuthController {
     public void verifyCode(Integer width, Integer height, HttpServletRequest request, HttpServletResponse response) throws IOException {
 
         String verifyCode = ValidateCodeGenerator.generateVerifyCode(4);
+        System.out.println(verifyCode);
 
         VerifyCodeBean verifyCodeBean = this.verifyCodeService.add(VerifyCodeBean.builder().type(VerifyCodeType.IMG).verified(VerifyCodeStatus.UN_VERIFY).expireTime(verifyCodeExpireTime).verifyCode(verifyCode).build());
 
         request.getSession().setAttribute("verifyCodeBean", verifyCodeBean);
-
-        System.out.println(verifyCodeBean.getVerifyCode());
-
+        response.setContentType("application/force-download");
+        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(verifyCode, "UTF-8"));
         ValidateCodeGenerator.outputImage(width != null ? width : 300, height != null ? height : 100, response.getOutputStream(), verifyCode);
 
     }
@@ -76,23 +79,24 @@ public class AuthController {
         //校验验证码是否正确
         if (this.verifyCodeCheck) {
 
-            VerifyCodeBean verifyCodeBean = (VerifyCodeBean) request.getSession().getAttribute("verifyCodeBean");
+            String verifyCode = (String) request.getSession().getAttribute("verifyCode");
 
             if (StringUtils.isEmpty(userBean.getVerifyCode())) {
                 return ParamErrorResultBuilder.newBuilder().paramError("verifyCode", "验证码不能为空").build();
             }
 
-            if (verifyCodeBean == null) {
+            if (verifyCode == null) {
                 return ParamErrorResultBuilder.newBuilder().paramError("verifyCode", "没有获取到验证码").build();
             }
 
-            String verifyCode = verifyCodeBean.getVerifyCode();
+            // String verifyCode = verifyCodeBean.getVerifyCode();
 
 
             //判断有效期
-            if ((System.currentTimeMillis() - verifyCodeBean.getCreateTime().getTime()) > verifyCodeBean.getExpireTime()) {
-                return ParamErrorResultBuilder.newBuilder().paramError("verifyCode", "验证码已过期").build();
-            }
+//            if ((System.currentTimeMillis() - verifyCodeBean.getCreateTime().getTime()) > verifyCodeBean.getExpireTime()) {
+//                return ParamErrorResultBuilder.newBuilder().paramError("verifyCode", "验证码已过期").build();
+//            }
+
 
             if (!verifyCode.toLowerCase().equals(userBean.getVerifyCode().toLowerCase())) {
                 return ParamErrorResultBuilder.newBuilder().paramError("verifyCode", "验证码错误").build();
@@ -107,7 +111,7 @@ public class AuthController {
             return ResponseBean.serverError("账号或密码错误");
         }
 
-        request.getSession().removeAttribute("verifyCodeBean");
+        request.getSession().removeAttribute("verifyCode");
 
         request.getSession().setAttribute("userBean", userBean);
 

+ 4 - 0
sources/server/vrv/vrv-platform/src/main/java/com/kuyuntech/vrv/platform/controller/core/OperatorLogController.java

@@ -48,6 +48,10 @@ public class OperatorLogController {
 
         UserBean userbean = (UserBean) request.getSession().getAttribute("userBean");
 
+        if (userbean == null) {
+            return ResponseBean.unAuthorize("您未登录");
+        }
+
         operatorLogBean.setUserAccount(userbean.getAccount());
         operatorLogBean.setUserRealname(userbean.getRealname());
 

+ 3 - 2
sources/server/vrv/vrv-platform/src/main/resources/application.properties

@@ -1,4 +1,4 @@
-#设置运行环境
+#\u8BBE\u7F6E\u8FD0\u884C\u73AF\u5883
 spring.application.name=vrv-platform
 spring.profiles.active=dev
 logback.filename=${spring.application.name}
@@ -9,7 +9,8 @@ spring.pid.file=./run/application.pid
 fastboot.auto-mapping-packages=com.wbspool,com.kuyuntech
 spring.resources.static-locations=classpath:/static/
 server.port=8088
-#dubbo相关配置信息
+
+#dubbo\u76F8\u5173\u914D\u7F6E\u4FE1\u606F
 #fastboot.dubbo.config.type=file
 #fastboot.dubbo.enable=true
 #fastboot.comp.comp-name.dubbo.enable=true