asd26269546 před 2 roky
rodič
revize
397710fb60

+ 3 - 5
src/components/login-form/login-form.vue

@@ -129,7 +129,8 @@ export default {
 				console.log(res)
 				if(res.status == 200 && res.data){
 					window.localStorage.setItem("token",JSON.stringify(res.data))
-					v.getRouters()
+					//v.getRouters()
+					this.$router.push("/home")
 				}
 				// window.localStorage.setItem("token",JSON.stringify(res.data))
                 // v.$router.push("/emailHome")
@@ -137,10 +138,7 @@ export default {
 			
 		},
 		getRouters(){
-			this.$get('/api/blade-system/menu/routes').then((res) => {
-                console.log(res)
-				this.$router.push("/schedule")
-            })
+			
 		},
 		getCodeImg() {
 			this.$get('/api/blade-auth/oauth/captcha').then((res) => {

+ 110 - 85
src/components/main/components/side-menu/side-menu.vue

@@ -1,14 +1,29 @@
 <template>
-  <div class="side-menu-wrapper">
-    <slot></slot>
-    <Menu ref="menu" v-show="!collapsed" :active-name="activeName" :open-names="openedNames" :accordion="accordion" :theme="theme" width="auto" @on-select="handleSelect">
+	<div class="side-menu-wrapper">
+		<slot></slot>
+		<Menu theme="dark"  v-show="!collapsed" width="auto" active-name="1">
+			<div v-for="i in menuList" :key="i.id">
+				<MenuItem :name="i.id" v-if="!i.children || i.children.length == 0">
+					<Icon type="ios-paper" />
+					{{i.name}}
+				</MenuItem>
+				<Submenu :name="i.id" v-if="i.children && i.children.length > 0" >
+					<template slot="title">
+						<Icon type="ios-stats" />
+						{{i.name}}
+					</template>
+					<MenuItem :name="i.id + jindex" v-for="(j,jindex) in i.children" :key="j.id">{{j.name}}</MenuItem>
+				</Submenu>
+			</div>
+		</Menu>
+		<!-- <Menu ref="menu" v-show="!collapsed" :active-name="activeName" :open-names="openedNames" :accordion="accordion" :theme="theme" width="auto" @on-select="handleSelect">
       <template v-for="item in menuList">
         <template v-if="item.children && item.children.length === 1">
           <side-menu-item v-if="showChildren(item)" :key="`menu-${item.name}`" :parent-item="item"></side-menu-item>
           <menu-item v-else :name="getNameOrHref(item, true)" :key="`menu-${item.children[0].name}`">
             <div class="my-menu-item">
               <common-icon :size="18" :type="item.children[0].icon || ''" style="margin-left: 8px;position: absolute;left: 24px;top: 50%;transform: translateY(-50%)"/>
-              <span>{{ showTitle(item.children[0]) }}</span>
+              <span>{{ item.name }}</span>
             </div>
           </menu-item>
         </template>
@@ -16,20 +31,20 @@
           <side-menu-item v-if="showChildren(item)" :key="`menu-${item.name}`" :parent-item="item"></side-menu-item>
           <menu-item v-else :name="getNameOrHref(item)" :key="`menu-${item.name}`">
             <common-icon :type="item.icon || ''"/>
-            <span>{{ showTitle(item) }}</span>
+            <span>{{ item.name }}</span>
           </menu-item>
         </template>
       </template>
-    </Menu>
-    <div class="menu-collapsed" v-show="collapsed" :list="menuList">
+    </Menu> -->
+		<!-- <div class="menu-collapsed" v-show="collapsed" :list="menuList">
       <template v-for="item in menuList">
         <collapsed-menu v-if="item.children && item.children.length > 1" @on-click="handleSelect" hide-title :root-icon-size="rootIconSize" :icon-size="iconSize" :theme="theme" :parent-item="item" :key="`drop-menu-${item.name}`"></collapsed-menu>
         <Tooltip transfer v-else :content="showTitle(item.children && item.children[0] ? item.children[0] : item)" placement="right" :key="`drop-menu-${item.name}`">
           <a @click="handleSelect(getNameOrHref(item, true))" class="drop-menu-a" :style="{textAlign: 'center'}"><common-icon :size="rootIconSize" :color="textColor" :type="item.icon || (item.children[0] && (item.children[0].icon || ''))"/></a>
         </Tooltip>
       </template>
-    </div>
-  </div>
+    </div> -->
+	</div>
 </template>
 <script>
 import SideMenuItem from './side-menu-item.vue'
@@ -38,83 +53,93 @@ import { getUnion } from '@/libs/tools'
 import mixin from './mixin'
 
 export default {
-  name: 'SideMenu',
-  mixins: [ mixin ],
-  components: {
-    SideMenuItem,
-    CollapsedMenu
-  },
-  props: {
-    menuList: {
-      type: Array,
-      default () {
-        return []
-      }
-    },
-    collapsed: {
-      type: Boolean
-    },
-    theme: {
-      type: String,
-      default: 'dark'
-    },
-    rootIconSize: {
-      type: Number,
-      default: 20
-    },
-    iconSize: {
-      type: Number,
-      default: 16
-    },
-    accordion: Boolean,
-    activeName: {
-      type: String,
-      default: ''
-    },
-    openNames: {
-      type: Array,
-      default: () => []
-    }
-  },
-  data () {
-    return {
-      openedNames: []
-    }
-  },
-  methods: {
-    handleSelect (name) {
-      this.$emit('on-select', name)
-    },
-    getOpenedNamesByActiveName (name) {
-      return this.$route.matched.map(item => item.name).filter(item => item !== name)
-    },
-    updateOpenName (name) {
-      if (name === this.$config.homeName) this.openedNames = []
-      else this.openedNames = this.getOpenedNamesByActiveName(name)
-    }
-  },
-  computed: {
-    textColor () {
-      return this.theme === 'dark' ? '#fff' : '#495060'
-    }
-  },
-  watch: {
-    activeName (name) {
-      if (this.accordion) this.openedNames = this.getOpenedNamesByActiveName(name)
-      else this.openedNames = getUnion(this.openedNames, this.getOpenedNamesByActiveName(name))
-    },
-    openNames (newNames) {
-      this.openedNames = newNames
-    },
-    openedNames () {
-      this.$nextTick(() => {
-        this.$refs.menu.updateOpened()
-      })
-    }
+	name: 'SideMenu',
+	mixins: [mixin],
+	components: {
+		SideMenuItem,
+		CollapsedMenu,
+	},
+	props: {
+		menuList: {
+			type: Array,
+			default() {
+				return []
+			},
+		},
+		collapsed: {
+			type: Boolean,
+		},
+		theme: {
+			type: String,
+			default: 'dark',
+		},
+		rootIconSize: {
+			type: Number,
+			default: 20,
+		},
+		iconSize: {
+			type: Number,
+			default: 16,
+		},
+		accordion: Boolean,
+		activeName: {
+			type: String,
+			default: '',
+		},
+		openNames: {
+			type: Array,
+			default: () => [],
+		},
+	},
+	data() {
+		return {
+			openedNames: [],
+		}
+	},
+	methods: {
+		handleSelect(name) {
+			this.$emit('on-select', name)
+		},
+		getOpenedNamesByActiveName(name) {
+			return this.$route.matched
+				.map((item) => item.name)
+				.filter((item) => item !== name)
+		},
+		updateOpenName(name) {
+			if (name === this.$config.homeName) this.openedNames = []
+			else this.openedNames = this.getOpenedNamesByActiveName(name)
+		},
+	},
+	computed: {
+		textColor() {
+			return this.theme === 'dark' ? '#fff' : '#495060'
+		},
+	},
+	watch: {
+		activeName(name) {
+			if (this.accordion)
+				this.openedNames = this.getOpenedNamesByActiveName(name)
+			else
+				this.openedNames = getUnion(
+					this.openedNames,
+					this.getOpenedNamesByActiveName(name)
+				)
+		},
+		openNames(newNames) {
+			this.openedNames = newNames
+		},
+		openedNames() {
+			this.$nextTick(() => {
+				this.$refs.menu.updateOpened()
+			})
+		},
+	},
+	mounted() {
+		//this.openedNames = getUnion(this.openedNames, this.getOpenedNamesByActiveName(name))
+	},
+  beforeRouteLeave(){
+
   },
-  mounted () {
-    this.openedNames = getUnion(this.openedNames, this.getOpenedNamesByActiveName(name))
-  }
 }
 </script>
 <style lang="less" scoped>

+ 16 - 4
src/components/main/main.vue

@@ -12,8 +12,9 @@
         style="height: 100%;"
         :style="{ background: isHome ? 'transparent' : '' }"
       >
+      <!-- v-show="!hiddenSiderList.includes(access)" -->
         <Sider
-          v-show="!hiddenSiderList.includes(access)"
+          
           hide-trigger
           collapsible
           :width="200"
@@ -104,6 +105,7 @@ export default {
       isFullscreen: false,
       userName: this.$store.state.user.name,
       access: this.$store.state.user.access,
+      menuList:[],
       hiddenBoardList: ['supplier'], // 不显示导航标签的角色
       hiddenSiderList: [''] // 不显示侧边菜单的角色 manager老板角色
     }
@@ -147,9 +149,9 @@ export default {
       ]
       return list
     },
-    menuList () {
-      return this.$store.state.user.menu
-    },
+    // menuList () {
+    //   return this.$store.state.user.menu
+    // },
     local () {
       return this.$store.state.app.local
     },
@@ -160,6 +162,9 @@ export default {
       return this.$store.state.user.unreadCount
     }
   },
+  created(){
+    this.getMenu()
+  },
   methods: {
     ...mapMutations([
       'setBreadCrumb',
@@ -169,6 +174,13 @@ export default {
       'setHomeRoute',
       'closeTag'
     ]),
+    getMenu(){
+      this.$get('/api/blade-system/menu/routes').then((res) => {
+        this.menuList = res.data
+        console.log(res)
+  
+      })
+    },
     ...mapActions(['handleLogin']),
     /*
      * @description 长连接通知统一处理

+ 3 - 1
src/components/my-tree/my-tree.vue

@@ -116,7 +116,8 @@ export default {
     check (arr, obj) {
       // 多选
       if (this.multiple) {
-        if (obj.checked && obj.parentId) {
+        console.log(obj.checked ,obj.parentId)
+        if (obj.checked && obj.parentId && obj.parentId != '0') {
           /* 子元素勾选 父元素默认勾选 */
           this.data.forEach(item => {
             if (item.value === obj.parentId) {
@@ -133,6 +134,7 @@ export default {
             }
           })
         } else if (!obj.checked && obj.children) {
+          
           /* 父元素取消 取消所有子元素 */
           obj.children.forEach(item => {
             this.$set(item, 'checked', false)

+ 66 - 47
src/view/system-manage/role.vue

@@ -28,11 +28,12 @@
               :data="menuData"
               :show-edit="false"
               :multiple="true"
+              :selected="true"
               @check="menuTreeCheck"></my-tree>
           </div>
         </div>
       </div>
-      <div class="right">
+      <!-- <div class="right">
         <div class="title">
           仓储APP权限
         </div>
@@ -48,21 +49,12 @@
               @check="menuTreeCheck2"></my-tree>
           </div>
         </div>
-      </div>
+      </div> -->
     </div>
   </div>
 </template>
 
 <script>
-import {
-  GetRolePageList,
-  AddRole,
-  UpdateRole,
-  DeleteRole,
-  GetMenuOperateList,
-  EditRoleMenu,
-  GetMenuZTreeChildren
-} from '@/api/user'
 import MyTable from '_c/my-table/my-table'
 import MyTree from '_c/my-tree/my-tree'
 import MyModalForm from '_c/my-modal-form/my-modal-form'
@@ -360,9 +352,10 @@ export default {
       })
     },
     // list 项目路由 menus 系统定义的路由
-    iniTree (list, menus) {
+    iniTree2 (list, menus) {
       list.forEach(item => {
         menus.forEach(menu => {
+          console.log(item,menu)
           item.expand = true
           if (item.value === menu) {
             item.checked = true
@@ -379,7 +372,7 @@ export default {
         if (item.checked) {
           if (type === 1) {
             this.menuIds.push(item.value)
-          } else if (type === 2) {
+          } else if (type === 2) {n 
             this.menuIds2.push(item.value)
           }
         }
@@ -388,46 +381,71 @@ export default {
         }
       })
     },
+    initTree(menuList,menuVal){
+      for (let i = 0; i < menuList.length; i++) {
+        const element = menuList[i];
+        for (let j = 0; j < menuVal.length; j++) {
+          const jelement = menuVal[j];
+          if(element.value === jelement){
+            element.checked = true
+            break
+          }
+        }
+        if(element.children && element.children.length > 0){
+          this.initTree(element.children,menuVal)
+        }
+      }
+      return menuList
+    },
     // 获取已勾选的菜单
     getList () {
-      GetMenuZTreeChildren({
-        deviceType: 1
-      }).then(res => {
-        if (res.code === 0) {
-          GetMenuOperateList({ roleKey: this.roleKey }).then((menu) => {
-            if (menu.code === 0) {
-              this.menuData = this.iniTree(res.result, menu.result.menuIds)
-              this.menuIds = []
-              this.getHandleMenuIds(this.menuData, 1)
-            }
-          })
-        }
+      const v = this
+      v.$get('/api/blade-system/menu/grant-tree',{}).then(res1=>{
+        v.treeInit(res1.data.menu)
+        v.$get('/api/blade-system/menu/role-tree-keys?roleIds=' + this.roleKey,{}).then(res2=>{
+          this.initTree(res1.data.menu, res2.data.menu)
+          this.menuData = res1.data.menu
+          console.log(this.menuData)
+        })
       })
     },
     getList2 () {
-      GetMenuZTreeChildren({
-        deviceType: 3
-      }).then(res => {
-        if (res.code === 0) {
-          GetMenuOperateList({ roleKey: this.roleKey }).then((menu) => {
-            if (menu.code === 0) {
-              this.menuData2 = this.iniTree(res.result, menu.result.menuIds)
-              this.menuIds2 = []
-              this.getHandleMenuIds(this.menuData2, 2)
-            }
-          })
-        }
+      const v = this
+      v.$get('/api/blade-system/appMenu/tree',{}).then(res1=>{
+        v.treeInit(res1.data.menu)
+        v.$get('/api/blade-system/appMenu/bindRole',{
+
+        }).then(res2=>{
+          this.initTree(res1.data.menu, res2.data.menu)
+          this.menuData = res1.data.menu
+          console.log(this.menuData)
+        })
       })
+      // GetMenuZTreeChildren({
+      //   deviceType: 3
+      // }).then(res => {
+      //   if (res.code === 0) {
+      //     GetMenuOperateList({ roleKey: this.roleKey }).then((menu) => {
+      //       if (menu.code === 0) {
+      //         this.menuData2 = this.iniTree(res.result, menu.result.menuIds)
+      //         this.menuIds2 = []
+      //         this.getHandleMenuIds(this.menuData2, 2)
+      //       }
+      //     })
+      //   }
+      // })
     },
     savaRoleMenu () {
-      EditRoleMenu({
-        roleKey: this.roleKey,
-        menuIds: [ ...this.menuIds, ...this.menuIds2 ]
-      }).then(res => {
-        if (res.code === 0) {
-          this.$Message.info('保存成功!')
-          this.getList()
-        }
+      console.log(this.menuIds)
+      const v = this
+      v.$post("/api/blade-system/role/grant",{
+        apiScopeIds:[],
+        dataScopeIds:[],
+        menuIds:this.menuIds,
+        roleIds:[this.roleKey]
+      }).then(res=>{
+        this.$Message.info('保存成功!')
+        this.getList()
       })
     },
     menuTreeCheck (data) {
@@ -444,11 +462,12 @@ export default {
     },
     // 选择物料分类 显示物料列表
     treeCheck (data) {
+      console.log(data)
       if (data.name !== '默认角色' && data.name !== '普通角色') {
         this.roleKey = data.key
         this.menuIds = []
-        this.getList()
-        this.getList2()
+        this.getList(data.id)
+        //this.getList2(data.id)
       }
     },
     // 提交树操作