فهرست منبع

adm:fix> 合并v3.9.1

shaun-sheep 4 سال پیش
والد
کامیت
00bfc10a80
4فایلهای تغییر یافته به همراه303 افزوده شده و 250 حذف شده
  1. 2 2
      config/prod.env.js
  2. 143 130
      src/framework/layout/PageHeader.vue
  3. 123 86
      src/framework/layout/layout-store.js
  4. 35 32
      src/views/system/auth/index.vue

+ 2 - 2
config/prod.env.js

@@ -1,12 +1,12 @@
 'use strict'
 'use strict'
 module.exports = {
 module.exports = {
   NODE_ENV: '"production"',
   NODE_ENV: '"production"',
-  // BASE_URL: '"http://192.168.64.14:8081"', //测试iframe地址
+  BASE_URL: '"http://192.168.64.14:8081"', //测试iframe地址
   // SSO_SERVER: '"http://192.168.12.238:8081"', //测试环境
   // SSO_SERVER: '"http://192.168.12.238:8081"', //测试环境
   // BASE_URL: '"http://192.168.20.236"', //(新)测试iframe地址
   // BASE_URL: '"http://192.168.20.236"', //(新)测试iframe地址
   // SSO_SERVER: '"http://192.168.20.236:8086"', //(新)测试环境
   // SSO_SERVER: '"http://192.168.20.236:8086"', //(新)测试环境
   // MQTT_SERVICE: '"ws://172.16.42.210:61614/stomp/"' //MQ测试环境地址
   // MQTT_SERVICE: '"ws://172.16.42.210:61614/stomp/"' //MQ测试环境地址
-  BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
+  // BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
   SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
   SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
    MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
    MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
 }
 }

+ 143 - 130
src/framework/layout/PageHeader.vue

@@ -1,156 +1,169 @@
 <template>
 <template>
-    <div class='page-header'>
-        <div id='page-header-logo' class='page-logo'>
-            <a @click="toIndex">
-                <img src='@/assets/logo.png' alt='logo' class='logo-default'>
-            </a>
-            <div class='menu-toggler sidebar-toggler' @click.stop='toggleSidebar'>
+  <div class='page-header'>
+    <div id='page-header-logo' class='page-logo'>
+      <a @click="toIndex">
+        <img src='@/assets/logo.png' alt='logo' class='logo-default'>
+      </a>
+      <div class='menu-toggler sidebar-toggler' @click.stop='toggleSidebar'>
                 <span>
                 <span>
                     <i class='el-icon-fa-bars'></i>
                     <i class='el-icon-fa-bars'></i>
                 </span>
                 </span>
-            </div>
-        </div>
-        <div id='page-header-data-menu' class='data-menu'>
-            <el-select v-model='selectedProjectId' placeholder='请选择' filterable>
-                <el-option-group v-for="group in projectGropList" :key="group.label" :label="group.label">
-                    <el-option v-for='item in group.options' :key='item.id' :label='item.name' :value='item.id'></el-option>
-                </el-option-group>
-            </el-select>
-        </div>
-        <div id='page-header-user-menu' class='user-menu'>
-            <el-dropdown trigger='hover' class='user-menu-dropdown' @command='userMenuCommand'>
-                <span class='el-dropdown-link'>
-                    {{userInfo.userName}}
-                    <i class='el-icon-fa-user el-icon--right'></i>
-                </span>
-                <el-dropdown-menu slot='dropdown'>
-                    <el-dropdown-item icon='el-icon-plus' command='logout'>退出</el-dropdown-item>
-                    <el-dropdown-item icon='el-icon-circle-plus'>修改密码</el-dropdown-item>
-                </el-dropdown-menu>
-            </el-dropdown>
-            <ul class="header-nav">
-                <li class="header-nav-Splitscreen">
-                    <a href="/splitScreen" target="_blank"><i class="el-icon-s-platform"></i></a>
-                </li>
-                <li class="header-nav-notification">
-                    <message-sever></message-sever>
-                </li>
-            </ul>
-        </div>
+      </div>
+    </div>
+    <div id='page-header-data-menu' class='data-menu'>
+      <el-select v-model='selectedProjectId' placeholder='请选择' filterable>
+        <el-option-group v-for="group in projectGropList" :key="group.label" :label="group.label">
+          <el-option v-for='item in group.options' :key='item.id' :label='item.name' :value='item.id'></el-option>
+        </el-option-group>
+      </el-select>
+    </div>
+    <div id='page-header-user-menu' class='user-menu'>
+         <span class='el-dropdown-link' style="margin-top: 11px;">
+              yanruolan
+              <i class='el-icon-fa-user el-icon--right'></i>
+          </span>
+      <!--      <el-dropdown trigger='hover' class='user-menu-dropdown' @command='userMenuCommand'>-->
+      <!--                <span class='el-dropdown-link'>-->
+      <!--                    {{ userInfo.userName }}-->
+      <!--                    <i class='el-icon-fa-user el-icon&#45;&#45;right'></i>-->
+      <!--                </span>-->
+      <!--        <el-dropdown-menu slot='dropdown'>-->
+      <!--          <el-dropdown-item icon='el-icon-plus' command='logout'>退出</el-dropdown-item>-->
+      <!--          <el-dropdown-item icon='el-icon-circle-plus'>修改密码</el-dropdown-item>-->
+      <!--        </el-dropdown-menu>-->
+      <!--      </el-dropdown>-->
+      <ul class="header-nav">
+        <li class="header-nav-Splitscreen">
+          <a href="/splitScreen" target="_blank"><i class="el-icon-s-platform"></i></a>
+        </li>
+        <li class="header-nav-notification">
+          <message-sever></message-sever>
+        </li>
+      </ul>
     </div>
     </div>
+  </div>
 </template>
 </template>
 <script>
 <script>
 import frameworkApi from '@/api/framework'
 import frameworkApi from '@/api/framework'
-import { mapGetters, mapMutations } from 'vuex'
+import {mapGetters, mapMutations} from 'vuex'
 import getFirstLetter from '@/utils/getFirstLetter'
 import getFirstLetter from '@/utils/getFirstLetter'
 import MessageSever from '../components/messagesever/index'
 import MessageSever from '../components/messagesever/index'
 import lStorage from '@/utils/localStorage'
 import lStorage from '@/utils/localStorage'
+
 export default {
 export default {
-    name: 'PageHeader',
-    props: [],
-    data() {
-        return {
-            selectedProjectId: null
+  name: 'PageHeader',
+  props: [],
+  data() {
+    return {
+      selectedProjectId: null
+    }
+  },
+  computed: {
+    ...mapGetters('layout', ['sidebarClosed', 'userInfo', 'projects', 'projectId']),
+    projectGropList() {
+      const cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
+      let options = [{
+        label: '最近使用',
+        options: []
+      }]
+      const projectHistory = cacheInfo[this.userInfo.userName] || [];
+      let copyProjects = JSON.parse(JSON.stringify(this.projects));
+      options[0].options = projectHistory.map(projectId => {
+        let obj = this.projects.find(project => {
+          return project.id === projectId
+        });
+        let index = copyProjects.findIndex(project => {
+          return project.id === projectId
+        })
+        if (index != -1) {
+          copyProjects.splice(index, 1);
         }
         }
-    },
-    computed: {
-        ...mapGetters('layout', ['sidebarClosed', 'userInfo', 'projects', 'projectId']),
-        projectGropList () {
-            const cacheInfo = lStorage.get('historyInfo')?lStorage.get('historyInfo'):{}
-            let options = [{
-                label: '最近使用',
-                options: []
-            }]
-            const projectHistory = cacheInfo[this.userInfo.userName] || [];
-            let copyProjects = JSON.parse(JSON.stringify(this.projects));
-            options[0].options = projectHistory.map(projectId => {
-                let obj = this.projects.find(project => {
-                    return project.id === projectId
-                });
-                let index = copyProjects.findIndex(project => {
-                    return project.id === projectId
-                })
-                if (index != -1) {
-                    copyProjects.splice(index, 1);
-                }
-                return obj?obj:[]
-            })
+        return obj ? obj : []
+      })
 
 
-            let helpObj = {}
-            copyProjects.forEach(p => {
-                const label = getFirstLetter((p.name || p.id).slice(0, 1))
-                if (helpObj[label]) {
-                    helpObj[label].push(p)
-                } else {
-                    helpObj[label] = [p]
-                }
-            })
-            const arr = Object.keys(helpObj).sort().map(label => {
-                return {
-                    label: label,
-                    options: helpObj[label]
-                }
-            })
-            return [...(options[0].options.length > 0 ? options : []), ...arr]
+      let helpObj = {}
+      copyProjects.forEach(p => {
+        const label = getFirstLetter((p.name || p.id).slice(0, 1))
+        if (helpObj[label]) {
+          helpObj[label].push(p)
+        } else {
+          helpObj[label] = [p]
         }
         }
-    },
-    watch: {
-        selectedProjectId(n, o) {
-            this.setprojectId(n)
+      })
+      const arr = Object.keys(helpObj).sort().map(label => {
+        return {
+          label: label,
+          options: helpObj[label]
         }
         }
+      })
+      return [...(options[0].options.length > 0 ? options : []), ...arr]
+    }
+  },
+  watch: {
+    selectedProjectId(n, o) {
+      this.setprojectId(n)
+    }
+  },
+  methods: {
+    ...mapMutations('layout', ['setSidebarClosed', 'setprojectId']),
+    handleSelect() {
     },
     },
-    methods: {
-        ...mapMutations('layout', ['setSidebarClosed', 'setprojectId']),
-        handleSelect() {},
-        toggleSidebar() {
-            this.setSidebarClosed(!this.sidebarClosed)
-        },
-        userMenuCommand(cmd) {
-            // console.log('userMenuCommand ', cmd)
-            if (cmd == 'logout') {
-                console.log("点击登出l")
-                frameworkApi.toLogout()
-            }
-        },
-        toIndex() {
-            this.$router.push('/')
-        }
+    toggleSidebar() {
+      this.setSidebarClosed(!this.sidebarClosed)
     },
     },
-    created() {
-        let cacheInfo = lStorage.get('historyInfo')?lStorage.get('historyInfo'):{}
-        if(cacheInfo[this.userInfo.userName] &&
-            cacheInfo[this.userInfo.userName][0] &&
-            this.projects.some((item) => {return item.id == cacheInfo[this.userInfo.userName][0]})
-        ){
-            this.selectedProjectId = cacheInfo[this.userInfo.userName][0]
-        } else {
-            this.selectedProjectId = this.projectId
-        }
+    userMenuCommand(cmd) {
+      // console.log('userMenuCommand ', cmd)
+      if (cmd == 'logout') {
+        console.log("点击登出l")
+        frameworkApi.toLogout()
+      }
     },
     },
-    mounted() {},
-    components: {
-        MessageSever
+    toIndex() {
+      this.$router.push('/')
+    }
+  },
+  created() {
+    let cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
+    if (cacheInfo[this.userInfo.userName] &&
+      cacheInfo[this.userInfo.userName][0] &&
+      this.projects.some((item) => {
+        return item.id == cacheInfo[this.userInfo.userName][0]
+      })
+    ) {
+      this.selectedProjectId = cacheInfo[this.userInfo.userName][0]
+    } else {
+      this.selectedProjectId = this.projectId
     }
     }
+  },
+  mounted() {
+  },
+  components: {
+    MessageSever
+  }
 }
 }
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.header-nav-Splitscreen>a{
-    display: flex;
-    width: 100%;
-    height: 100%;
-    position: relative;
-    padding: 16px 10px 10px;
-    -webkit-box-sizing: border-box;
-    box-sizing: border-box;
-    color: #79869a;
-    font-size: 24px;
-    text-decoration: none;
-    cursor: pointer;
-    i{transition:all 0ms ease 0ms}
+.header-nav-Splitscreen > a {
+  display: flex;
+  width: 100%;
+  height: 100%;
+  position: relative;
+  padding: 16px 10px 10px;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  color: #79869a;
+  font-size: 24px;
+  text-decoration: none;
+  cursor: pointer;
+
+  i {
+    transition: all 0ms ease 0ms
+  }
 }
 }
-.header-nav-Splitscreen>a:hover{
-    text-decoration: none;
-    color: #d3d8e2;
-    background-color: #3f4f62;
+
+.header-nav-Splitscreen > a:hover {
+  text-decoration: none;
+  color: #d3d8e2;
+  background-color: #3f4f62;
 }
 }
 </style>
 </style>

+ 123 - 86
src/framework/layout/layout-store.js

@@ -8,106 +8,143 @@ const KEY_PAGE_BRANDCRUMB = 'page_brandcrumb'
 
 
 export default {
 export default {
   namespaced: true,
   namespaced: true,
-    state: {
-      sidebarClosed: false,
-      sidebarSelected: '', // sidebar选中的选项
-      userInfo: null, //{ username: 'admin' },
-      permissions: {
-        "system:role:delete": true,
-        "system:role:create": true,
-        "system:role:query": true,
-        "system:role:setOpts": true
-      },
-      projectId: '',
-      projects: [],
-      breadcrumb: [],
-      uploaderList: [], //当前上传文件列表
-      secret: "", //项目密码
-      userId: "", //用户id
-      rowEdit: false,//表格数据变化
-      errorReport:[],//扫楼错误报告
+  state: {
+    sidebarClosed: false,
+    sidebarSelected: '', // sidebar选中的选项
+    // userInfo: null, //{ username: 'admin' },
+    userInfo: {
+      username: 'yanruolan',
+      userId: '06328a53c69a41bb8f5bb1a552c6e8d6'
     },
     },
-    getters: {
-      sidebarClosed: state => state.sidebarClosed,
-      secret: state => state.secret,
-      userId: state => state.userId,
-      sidebarSelected: state => {
-        // if (!state.pageSidebarSelected) {
-        //     let menu = storage.get(KEY_MENU_SELECTED)
-        //     if (menu) {
-        //         state.pageSidebarSelected = menu
-        //     }
-        // }
-        // return state.pageSidebarSelected
-        return state.sidebarSelected
-      },
-      userInfo: state => state.userInfo,
-      permissions: state => state.permissions,
-      projects: state => state.projects,
-      uploaderList: state => state.uploaderList,
-      projectId: state => {
-        if (!state.projectId) {
-          let pid = storage.get(KEY_PROJECT_SELECTED)
-          if (pid) {
-            state.projectId = pid
-          }
+    permissions: {
+      "system:role:delete": true,
+      "system:role:create": true,
+      "system:role:query": true,
+      "system:role:setOpts": true
+    },
+    projectId: 'Pj5101050001',
+    projects: [{
+      id: "Pj5101050001",
+      name: "成都青羊万达广场",
+      pwd: "saga123456"
+    },{
+      id: "Pj1101080260",
+      name: "万达测试",
+      pwd: "saga123456"
+    },{
+      id: "Pj5107030002",
+      name: "绵阳CBD万达广场",
+      pwd: "saga123456"
+    },{
+      id: "Pj1101050029",
+      name: "北京东坝万达广场",
+      pwd: "saga123456"
+    },{
+      id: "Pj4419000005",
+      name: "莞城万科城市广场",
+      pwd: "saga123456"
+    },{
+      id: "Pj1101080259",
+      name: "博锐尚格北京总部办公楼",
+      pwd: "saga123456"
+    },{
+      id: "Pj4101020002",
+      name: "郑州亿达科技新城展厅",
+      pwd: "saga123456"
+    },{
+      id: "Pj1102270001",
+      name: "北京怀柔万达广场",
+      pwd: "saga123456"
+    }],
+    breadcrumb: [],
+    uploaderList: [], //当前上传文件列表
+    secret: "saga123456", //项目密码
+    userId: "06328a53c69a41bb8f5bb1a552c6e8d6", //用户id
+    rowEdit: false,//表格数据变化
+    errorReport: [],//扫楼错误报告
+  },
+  getters: {
+    sidebarClosed: state => state.sidebarClosed,
+    secret: state => state.secret,
+    userId: state => state.userId,
+    sidebarSelected: state => {
+      // if (!state.pageSidebarSelected) {
+      //     let menu = storage.get(KEY_MENU_SELECTED)
+      //     if (menu) {
+      //         state.pageSidebarSelected = menu
+      //     }
+      // }
+      // return state.pageSidebarSelected
+      return state.sidebarSelected
+    },
+    userInfo: state => state.userInfo,
+    permissions: state => state.permissions,
+    projects: state => state.projects,
+    uploaderList: state => state.uploaderList,
+    projectId: state => {
+      if (!state.projectId) {
+        let pid = storage.get(KEY_PROJECT_SELECTED)
+        if (pid) {
+          state.projectId = pid
         }
         }
-        return state.projectId
-      },
-      breadcrumb: state => {
-        if (!state.breadcrumb) {
-          let arr = storage.get(KEY_PAGE_BRANDCRUMB)
-          if (arr) {
-            state.breadcrumb = arr
-          }
+      }
+      return state.projectId
+    },
+    breadcrumb: state => {
+      if (!state.breadcrumb) {
+        let arr = storage.get(KEY_PAGE_BRANDCRUMB)
+        if (arr) {
+          state.breadcrumb = arr
         }
         }
-        return state.breadcrumb
       }
       }
+      return state.breadcrumb
+    }
+  },
+  mutations: {
+    setRowEdit: (state, val) => (state.rowEdit = val),
+    setErrorReport: (state, val) => (state.errorReport = val),
+    setSidebarClosed: (state, val) => (state.sidebarClosed = val),
+    setSidebarSelected: (state, val) => {
+      state.sidebarSelected = val
+      storage.set(KEY_MENU_SELECTED, val)
+      lStorage.set('screen_data', {path: val, data: {}})
     },
     },
-    mutations: {
-      setRowEdit: (state, val) => (state.rowEdit = val),
-      setErrorReport:(state,val) => (state.errorReport = val),
-      setSidebarClosed: (state, val) => (state.sidebarClosed = val),
-      setSidebarSelected: (state, val) => {
-        state.sidebarSelected = val
-        storage.set(KEY_MENU_SELECTED, val)
-        lStorage.set('screen_data', {path: val, data: {}})
-      },
-      setprojectId: (state, val) => {
-        lStorage.remove('cacheInfo') //待删除(删除用户浏览器无用缓存)
-        let cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
-        state.projectId = val
-        localStorage.setItem('projectId', val)
-        if (cacheInfo[state.userInfo.userName]) {
-          // cacheInfo[state.userInfo.userName].projectId = val
-          cacheInfo[state.userInfo.userName] = [...new Set([val, ...cacheInfo[state.userInfo.userName]])].slice(0,3)
-          lStorage.set('historyInfo', cacheInfo)
-        } else {
-          cacheInfo[state.userInfo.userName] = [val]
-          lStorage.set('historyInfo', cacheInfo)
+    setprojectId: (state, val) => {
+      lStorage.remove('cacheInfo') //待删除(删除用户浏览器无用缓存)
+      let cacheInfo = lStorage.get('historyInfo') ? lStorage.get('historyInfo') : {}
+      state.projectId = val
+      localStorage.setItem('projectId', val)
+      if (cacheInfo[state.userInfo.userName]) {
+        // cacheInfo[state.userInfo.userName].projectId = val
+        cacheInfo[state.userInfo.userName] = [...new Set([val, ...cacheInfo[state.userInfo.userName]])].slice(0, 3)
+        lStorage.set('historyInfo', cacheInfo)
+      } else {
+        cacheInfo[state.userInfo.userName] = [val]
+        lStorage.set('historyInfo', cacheInfo)
+      }
+      storage.set(KEY_PROJECT_SELECTED, val)
+      state.projects.map((item) => {
+        if (item.id == val) {
+          state.secret = item.pwd
+          localStorage.setItem('secret', item.pwd)
         }
         }
-        storage.set(KEY_PROJECT_SELECTED, val)
-        state.projects.map((item) => {
-          if (item.id == val) {
-            state.secret = item.pwd
-            localStorage.setItem('secret', item.pwd)
-          }
-        })
-      },
-      setUploaderList: (state, val) => {
-        state.uploaderList = val ? val : []
-      },
-
+      })
+    },
+    setUploaderList: (state, val) => {
+      state.uploaderList = val ? val : []
     },
     },
+
+  },
   actions: {
   actions: {
     setRowEdit(contentx, value) {
     setRowEdit(contentx, value) {
       contentx.commit('setRowEdit', value)
       contentx.commit('setRowEdit', value)
     },
     },
-    setErrorReport(contentx,value) {
-      contentx.commit('setErrorReport',value)
+    setErrorReport(contentx, value) {
+      contentx.commit('setErrorReport', value)
     },
     },
     loadUserInfo({state}) {
     loadUserInfo({state}) {
       console.log(state)
       console.log(state)
+      // 获取 userInfo 信息
       return new Promise((resolve, reject) => {
       return new Promise((resolve, reject) => {
         frameworkApi.loadUserInfo().then(resp => {
         frameworkApi.loadUserInfo().then(resp => {
           console.log(resp)
           console.log(resp)

+ 35 - 32
src/views/system/auth/index.vue

@@ -1,40 +1,43 @@
 <template>
 <template>
-    <div>
-        <h4>请稍候...</h4>
-    </div>
+  <div>
+    <h4>请稍候...</h4>
+  </div>
 </template>
 </template>
 <script>
 <script>
-import { mapGetters, mapMutations } from 'vuex'
+import {mapGetters, mapMutations} from 'vuex'
 import adminapi from '@/api/system/admin'
 import adminapi from '@/api/system/admin'
 import authutils from '@/utils/authutils'
 import authutils from '@/utils/authutils'
+
 export default {
 export default {
-    name: 'index',
-    props: [],
-    data() {
-        return {}
-    },
-    created() {
-        let token = this.$route.query.token
-        console.log(token)
-        this.$store.commit('setSsoToken', token)
-        console.log(this.$store.state.ssoToken)
-        this.$store.dispatch('layout/loadUserInfo').then(resp => {
-            console.log('store dispatch result ', resp)
-            // if (resp.result  == 'success') {
-            if (resp.Result  == 'success') {
-                let lastRoute = this.$store.getters['lastRoute']
-                console.log('last route ', lastRoute)
-                if (lastRoute) {
-                    this.$router.replace(lastRoute)
-                } else {
-                    this.$router.replace({path: "/"})
-                }
-            }else{
-                this.$router.replace('/nouser')
-            }
-        })
-    },
-    mounted() {},
-    components: {}
+  name: 'index',
+  props: [],
+  data() {
+    return {}
+  },
+  created() {
+    let token = this.$route.query.token
+    console.log(token)
+    this.$store.commit('setSsoToken', token)
+    console.log(this.$store.state.ssoToken)
+    this.$router.replace({path: "/"})
+    // this.$store.dispatch('layout/loadUserInfo').then(resp => {
+    //     console.log('store dispatch result ', resp)
+    //     // if (resp.result  == 'success') {
+    //     if (resp.Result  == 'success') {
+    //         let lastRoute = this.$store.getters['lastRoute']
+    //         console.log('last route ', lastRoute)
+    //         if (lastRoute) {
+    //             this.$router.replace(lastRoute)
+    //         } else {
+    //             this.$router.replace({path: "/"})
+    //         }
+    //     }else{
+    //         this.$router.replace('/nouser')
+    //     }
+    // })
+  },
+  mounted() {
+  },
+  components: {}
 }
 }
 </script>
 </script>