Browse Source

个人中心

sss 2 years ago
parent
commit
02e563ae7d

+ 2 - 2
src/api/dm/system/dmSystem.js

@@ -32,9 +32,9 @@ export function edit(data) {
   })
 }
 
-export function queryByUserId(userId) {
+export function queryByUserId(userId, isMenu) {
   return request({
-    url: 'api/dmSystem/queryByUserId?userId=' + userId,
+    url: 'api/dmSystem/queryByUserId?userId=' + userId + '&isMenu=' + isMenu,
     method: 'get'
   })
 }

+ 1 - 1
src/api/system/dept.js

@@ -20,7 +20,7 @@ export function getDeptSuperior(ids) {
   return request({
     url: 'api/dept/superior',
     method: 'post',
-    data: [data]
+    data: data
   })
 }
 

BIN
src/assets/images/che.png


BIN
src/assets/images/qian.png


+ 20 - 2
src/views/dm/system/index.vue

@@ -35,6 +35,12 @@
           <el-form-item label="管理员" prop="dmUser.name">
             <el-input v-model="form.dmUser.name" style="width: 370px;" @click.native="openDmList(form)" />
           </el-form-item>
+          <el-form-item label="是否跳转到菜单">
+            <el-switch v-model="form.isMenu" />
+          </el-form-item>
+          <el-form-item v-show="isMenuPath" label="菜单地址" prop="menuPath">
+            <el-input v-model="form.menuPath" style="width: 370px;" />
+          </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
           <el-button type="text" @click="crud.cancelCU">取消</el-button>
@@ -73,7 +79,7 @@ import udOperation from '@crud/UD.operation'
 import pagination from '@crud/Pagination'
 import dmUserTemp from '@/components/User/dmUserindex'
 
-const defaultForm = { systemName: null, systemUrl: null, storage: {}, dmUser: {}}
+const defaultForm = { systemName: null, systemUrl: null, storage: {}, dmUser: {}, isMenu: null, menuPath: null }
 export default {
   name: 'DmSystem',
   components: { pagination, crudOperation, rrOperation, udOperation, dmUserTemp },
@@ -103,7 +109,8 @@ export default {
         ]
       },
       imageUrl: '',
-      fileList: []
+      fileList: [],
+      isMenuPath: false
     }
   },
   computed: {
@@ -112,6 +119,17 @@ export default {
       'imagesUploadApi' // 图片上传
     ])
   },
+  watch: {
+    'form.isMenu': {
+      handler: function(val, form) {
+        if (val) {
+          this.isMenuPath = true
+        } else {
+          this.isMenuPath = false
+        }
+      }
+    }
+  },
   methods: {
     // 钩子:在获取表格数据之前执行,false 则代表不获取数据
     [CRUD.HOOK.beforeRefresh]() {

+ 3 - 4
src/views/dm/systemNavigation/index.vue

@@ -13,7 +13,7 @@
 </template>
 
 <script>
-import { encrypt,decrypt } from '@/utils/rsaEncrypt'
+import { encrypt, decrypt } from '@/utils/rsaEncrypt'
 import { findPassWord } from '@/api/system/user'
 import { mapGetters } from 'vuex'
 import crudDmSystem from '@/api/dm/system/dmSystem'
@@ -35,7 +35,7 @@ export default {
   },
   methods: {
     queryByUserId(userId) {
-      crudDmSystem.queryByUserId(userId).then(res => {
+      crudDmSystem.queryByUserId(userId, 1).then(res => {
         console.log('res', res)
         this.systemList = res
       })
@@ -45,12 +45,11 @@ export default {
       findPassWord(this.user.username).then(res => {
         const username = encrypt(this.user.username)
         const password = this.userPassword
-        let aEle = document.createElement('a')
+        const aEle = document.createElement('a')
         aEle.href = `${url}/#/sso?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
         aEle.target = '_blank'
         aEle.click()
       })
-
     }
   }
 }

+ 2 - 2
src/views/dm/user/index.vue

@@ -156,8 +156,8 @@ export default {
     systemConfigClick(data) {
       this.form = data
       let dmSystems = []
-      queryByUserId(data.id).then(res => {
-        console.log("res:",res)
+      queryByUserId(data.id, '').then(res => {
+        console.log('res:', res)
         dmSystems = res
         for (let i = 0; i < dmSystems.length; i++) {
           this.dmUserSystem.push(dmSystems[i].id)

+ 49 - 50
src/views/home.vue

@@ -1,19 +1,19 @@
 <template>
   <el-row style="background-color: rgb(241, 242, 246);height: calc(100vh - 84px);">
     <el-row>
-      <el-image :src="Background"></el-image>
+      <el-image :src="Background" />
     </el-row>
     <el-row class="routerCardPar">
       <template v-for="(system, index) in systemList">
-<!--        <el-card :key="system.id" :body-style="{ padding: '0px' }" class="routerCard"  @click.native="sso(system.systemUrl)">-->
-<!--          <img :src="system.storage.url" class="image">-->
-<!--          <div class="content">-->
-<!--            <span>{{ system.systemName }}</span>-->
-<!--          </div>-->
-<!--        </el-card>-->
+        <!--        <el-card :key="system.id" :body-style="{ padding: '0px' }" class="routerCard"  @click.native="sso(system.systemUrl)">-->
+        <!--          <img :src="system.storage.url" class="image">-->
+        <!--          <div class="content">-->
+        <!--            <span>{{ system.systemName }}</span>-->
+        <!--          </div>-->
+        <!--        </el-card>-->
         <el-card :key="system.id" class="routerCard" @click.native="sso(system.systemUrl)">
-          <img :src="system.storage.url"  />
-<!--          <img src="@/assets/images/hyxt.png" />-->
+          <img :src="system.storage.url">
+          <!--          <img src="@/assets/images/hyxt.png" />-->
           <span>{{ system.systemName }}</span>
         </el-card>
       </template>
@@ -22,50 +22,49 @@
 </template>
 
 <script>
-  import { encrypt,decrypt } from '@/utils/rsaEncrypt'
-  import { findPassWord } from '@/api/system/user'
-  import { mapGetters } from 'vuex'
-  import crudDmSystem from '@/api/dm/system/dmSystem'
-  import Background from '@/assets/images/bg.png'
-  export default {
-    data() {
-      return {
-        systemList: [],
-        Background: Background
-      }
-    },
-    computed: {
-      ...mapGetters([
-        'user',
-        'baseApi',
-        'userPassword'
-      ])
-    },
-    mounted() {
-      this.queryByUserId(this.user.id)
+import { encrypt, decrypt } from '@/utils/rsaEncrypt'
+import { findPassWord } from '@/api/system/user'
+import { mapGetters } from 'vuex'
+import crudDmSystem from '@/api/dm/system/dmSystem'
+import Background from '@/assets/images/bg.png'
+export default {
+  data() {
+    return {
+      systemList: [],
+      Background: Background
+    }
+  },
+  computed: {
+    ...mapGetters([
+      'user',
+      'baseApi',
+      'userPassword'
+    ])
+  },
+  mounted() {
+    this.queryByUserId(this.user.id)
+  },
+  methods: {
+    queryByUserId(userId) {
+      crudDmSystem.queryByUserId(userId, 0).then(res => {
+        console.log('res', res)
+        this.systemList = res
+      })
     },
-    methods: {
-      queryByUserId(userId) {
-        crudDmSystem.queryByUserId(userId).then(res => {
-          console.log('res', res)
-          this.systemList = res
-        })
-      },
-      // 单点登录
-      sso(url) {
-        findPassWord(this.user.username).then(res => {
-          const username = encrypt(this.user.username)
-          const password = this.userPassword
-          // location.href = `${url}/#/sso?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
-          let aEle = document.createElement('a')
-          aEle.href = `${url}?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
-          aEle.target = '_blank'
-          aEle.click()
-        })
-
-      }
+    // 单点登录
+    sso(url) {
+      findPassWord(this.user.username).then(res => {
+        const username = encrypt(this.user.username)
+        const password = this.userPassword
+        // location.href = `${url}/#/sso?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
+        const aEle = document.createElement('a')
+        aEle.href = `${url}?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
+        aEle.target = '_blank'
+        aEle.click()
+      })
     }
   }
+}
 </script>
 
 <style lang="scss" scoped>

+ 112 - 31
src/views/middle.vue

@@ -7,10 +7,10 @@
           <img src="../assets/images/logo.png" alt="">
         </div>
         <div class="header_right">
-          <el-avatar shape="circle" :size="50" :src="squareUrl" />
+          <el-avatar shape="circle" :size="50" :src="dmUser.faceid" />
           <div class="departmeny">
-            <p class="name"><span>王冰冰</span></p>
-            <p><span>部门:</span><span>产品二中心</span></p>
+            <p class="name"><span>{{ nowUser.nickName }}</span></p>
+            <p><span>部门:</span><span>{{ dept.name }}</span></p>
           </div>
         </div>
       </header>
@@ -19,27 +19,27 @@
       <el-col :span="24">
         <div class="demo-basic--circle">
           <div class="block">
-            <el-avatar :size="150" :src="squareUrl" />
+            <el-avatar :size="150" :src="dmUser.faceid" />
           </div>
           <div class="userInfo">
-            <div class="name"><span>王冰冰</span></div>
+            <div class="name"><span>{{ nowUser.nickName }}</span></div>
             <div class="departmeny">
-              <p><span>部门:</span><span>产品二中心</span></p>
-              <p><span>手机:</span><span>11111111111111</span></p>
+              <p><span>部门:</span><span>{{ dept.name }}</span></p>
+              <p><span>手机:</span><span>{{ nowUser.phone }}</span></p>
             </div>
             <div class="icon">
               <div class="icon_left">
-                <img src="../assets/images/money.png" alt="" srcset="">
+                <img src="../assets/images/qian.png" alt="" srcset="">
                 <div class="world">
                   <p>余额</p>
-                  <p>12元</p>
+                  <p>{{ balance }}元</p>
                 </div>
               </div>
               <div class="icon_right">
-                <img src="../assets/images/car.png" alt="" srcset="">
+                <img src="../assets/images/che.png" alt="" srcset="">
                 <div class="world">
                   <p>已录入车牌</p>
-                  <p>桂A287739</p>
+                  <p>{{ plate }}</p>
                 </div>
               </div>
             </div>
@@ -58,9 +58,9 @@
               style="width: 100%"
               height="300"
             >
-              <el-table-column prop="date" label="日期" />
-              <el-table-column prop="name" label="姓名" />
-              <el-table-column prop="address" label="地址" />
+              <el-table-column prop="id" label="序号" />
+              <el-table-column prop="dmRoomDevice.name" label="通行地点" />
+              <el-table-column prop="accessTime" label="时间" />
             </el-table>
           </el-card>
         </div>
@@ -75,9 +75,10 @@
               style="width: 100%"
               height="300"
             >
-              <el-table-column prop="date" label="日期" />
-              <el-table-column prop="name" label="姓名" />
-              <el-table-column prop="address" label="地址" />
+              <el-table-column prop="id" label="序号" />
+              <el-table-column prop="termName" label="消费设备" />
+              <el-table-column prop="money" label="金额" />
+              <el-table-column prop="createDate" label="时间" />
             </el-table>
           </el-card>
         </div>
@@ -92,9 +93,9 @@
               style="width: 100%"
               height="300"
             >
-              <el-table-column prop="date" label="日期" />
-              <el-table-column prop="name" label="姓名" />
-              <el-table-column prop="address" label="地址" />
+              <el-table-column prop="id" label="序号" />
+              <el-table-column prop="visitor_name" label="访客名称" />
+              <el-table-column prop="start_time" label="到访时间" />
             </el-table>
           </el-card>
         </div>
@@ -105,11 +106,11 @@
           <div class="fastEnter">
             <ul>
               <li
-                v-for="item in systemList"
+                v-for="item in systemListOne"
                 :key="item.id"
-                @click.native="sso(item.systemUrl)"
+                @click="sso2(item.systemUrl, item.menuPath)"
               >
-                <img src="@/assets/images/hyxt.png">
+                <img :src="item.storage.url">
                 <p>{{ item.systemName }}</p>
               </li>
             </ul>
@@ -124,9 +125,9 @@
             <li
               v-for="item in systemList"
               :key="item.id"
-              @click.native="sso(item.systemUrl)"
+              @click="sso(item.systemUrl)"
             >
-              <img src="@/assets/images/hyxt.png">
+              <img :src="item.storage.url">
               <p>{{ item.systemName }}</p>
             </li>
           </ul>
@@ -153,12 +154,12 @@ import { mapGetters } from 'vuex'
 import crudDmSystem from '@/api/dm/system/dmSystem'
 import Background from '@/assets/images/bg.png'
 import { encrypt } from '@/utils/rsaEncrypt'
+import axios from 'axios'
 
 export default {
   name: 'Sso',
   data() {
     const token = this.$route.query.token
-    console.log(token)
     return {
       token: token,
       systemList: [],
@@ -170,33 +171,101 @@ export default {
       currentTableData: [], // 通行记录(字段需改)
       consumptionTableData: [], // 消费记录(字段需改)
       visitorTableData: [], // 访客记录(字段需改)
-      systemListOne: [] // 快捷功能入口列表(字段需改,暂用的系统功能入口)
+      systemListOne: [], // 快捷功能入口列表(字段需改,暂用的系统功能入口)
+      balance: null,
+      plate: null,
+      nowUser: {},
+      dmUser: {},
+      dept: {}
     }
   },
   computed: {
-    ...mapGetters(['user', 'userPassword'])
+    ...mapGetters([
+      'user',
+      'userPassword'
+    ])
   },
   created() {
-    console.log(this.token)
     this.getUser(this.token)
   },
   methods: {
     getUser(token) {
       ssoGetUser(token).then((res) => {
+        this.nowUser = res.data.data.user
+        this.dmUser = this.nowUser.dmUser
+        this.dept = this.nowUser.dept
+        console.log(this.nowUser)
         const user = {
           username: res.data.data.user.username,
           password: res.data.data.user.ossPassword
         }
         this.$store.dispatch('Sso', user).then(() => {
           crudDmSystem.queryByUserId(res.data.data.user.id, 0).then((res) => {
-            console.log('res', res)
             this.systemList = res
           })
+          crudDmSystem.queryByUserId(res.data.data.user.id, 1).then((res) => {
+            this.systemListOne = res
+          })
         })
+        this.getBalance(res.data.data.user.dmUser.cardid)
+        this.getPlate(res.data.data.token, res.data.data.nonce, res.data.data.timestamp, res.data.data.user.id)
+        this.getAccessTraffic(res.data.data.token, res.data.data.nonce, res.data.data.timestamp, res.data.data.user.id)
+        this.orderRecord(res.data.data.token, res.data.data.nonce, res.data.data.timestamp, res.data.data.user.dmUser.cardid)
+        this.getVisitors(res.data.data.token, res.data.data.nonce, res.data.data.timestamp, res.data.data.user.id)
+      })
+    },
+    getBalance(card) {
+      axios.get('https://smartpark.caih.com/dxapi/dxtop/staff/cardBalance?card=' + card).then(res => {
+        this.balance = res.data.data
+      })
+    },
+    getPlate(accToken, nonce, timestamp, userId) {
+      const data = {
+        'nonce': nonce,
+        'timestamp': timestamp,
+        'query': {
+          'userNumber': userId
+        }
+      }
+      axios.post('https://smartpark.caih.com/ykt/api/thirdparty/v1/openInterface/getPlateNumber', data, { 'headers': { 'XYTACCESSTOKEN': accToken }}).then(res => {
+        this.plate = res.data.data[0].plateNumber
+      })
+    },
+    getAccessTraffic(accToken, nonce, timestamp, userId) {
+      const data = {
+        'nonce': nonce,
+        'timestamp': timestamp,
+        'query': {
+          'userNumber': userId
+        }
+      }
+      axios.post('https://smartpark.caih.com/ykt/api/thirdparty/v1/openInterface/getAccessTraffic?page=0&size=5&sort=id,desc', data, { 'headers': { 'XYTACCESSTOKEN': accToken }}).then(res => {
+        this.currentTableData = res.data.data.content
+      })
+    },
+    orderRecord(accToken, nonce, timestamp, cardId) {
+      const data = {
+        'nonce': nonce,
+        'timestamp': timestamp,
+        'query': {
+          'card': cardId
+        }
+      }
+      axios.post('https://smartpark.caih.com/zhcy/api/thirdparty/v1/open/orderRecord?page=0&size=5&sort=id,desc', data, { 'headers': { 'XYTACCESSTOKEN': accToken }}).then(res => {
+        this.consumptionTableData = res.data.data.content
+      })
+    },
+    getVisitors(accToken, nonce, timestamp, userId) {
+      const data = {
+        'nonce': nonce,
+        'timestamp': timestamp,
+        'query': userId
+      }
+      axios.post('https://smartpark.caih.com/ykt/api/thirdparty/v1/openInterface/getVisitant?page=0&size=5', data, { 'headers': { 'XYTACCESSTOKEN': accToken }}).then(res => {
+        this.visitorTableData = res.data.data
       })
     },
     sso(url) {
-      console.log(url)
       const username = encrypt(this.user.username)
       const password = this.userPassword
       // location.href = `${url}/#/sso?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
@@ -206,6 +275,18 @@ export default {
       )}&password=${encodeURIComponent(password)}`
       aEle.target = '_blank'
       aEle.click()
+    },
+    sso2(url, menuPath) {
+      console.log(url, menuPath)
+      const username = encrypt(this.user.username)
+      const password = this.userPassword
+      // location.href = `${url}/#/sso?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
+      const aEle = document.createElement('a')
+      aEle.href = `${url}?username=${encodeURIComponent(
+        username
+      )}&password=${encodeURIComponent(password)}?redirect=${menuPath}`
+      aEle.target = '_blank'
+      aEle.click()
     }
   }
 }