|
@@ -19,7 +19,7 @@
|
|
|
:default-active="defualtActive"
|
|
|
>
|
|
|
<scroll-bar>
|
|
|
- <menu-item :menus="menu"></menu-item>
|
|
|
+ <menu-item :menus="menu" :level="0"></menu-item>
|
|
|
</scroll-bar>
|
|
|
</el-menu>
|
|
|
</template>
|
|
@@ -33,6 +33,8 @@ import menuItem from './menu/menu-item.vue';
|
|
|
import * as menus from '@frame/config/menu-config';
|
|
|
import scrollBar from './scrollBar.vue';
|
|
|
import _ from 'lodash';
|
|
|
+import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
+const { mapActions: userMenu } = createNamespacedHelpers('userMenu');
|
|
|
export default {
|
|
|
name: 'admin-menu',
|
|
|
props: {},
|
|
@@ -42,9 +44,11 @@ export default {
|
|
|
},
|
|
|
data: () => ({
|
|
|
menu: [],
|
|
|
+ project: 'center',
|
|
|
}),
|
|
|
created() {},
|
|
|
computed: {
|
|
|
+ ...mapState(['user', 'defaultOption']),
|
|
|
project_modules() {
|
|
|
return process.env.VUE_APP_MODULE;
|
|
|
},
|
|
@@ -54,10 +58,11 @@ export default {
|
|
|
},
|
|
|
mounted() {
|
|
|
let arr = _.get(menus, 'menu', []); //this.project_modules
|
|
|
- let r = this.filterMenu(_.cloneDeep(arr), this.project_modules);
|
|
|
- this.$set(this, `menu`, r);
|
|
|
+ // let r = this.filterMenu(_.cloneDeep(arr), this.project_modules);
|
|
|
+ // this.$set(this, `menu`, r);
|
|
|
},
|
|
|
methods: {
|
|
|
+ ...userMenu(['getMenu']),
|
|
|
selectMenu(path, modules) {
|
|
|
if (this.project_modules === modules) this.$router.push({ path: path });
|
|
|
},
|
|
@@ -76,6 +81,37 @@ export default {
|
|
|
});
|
|
|
return _.compact(nm);
|
|
|
},
|
|
|
+
|
|
|
+ async getUserMenu() {
|
|
|
+ const sessionMenu = sessionStorage.getItem('userMenu');
|
|
|
+ if (sessionMenu) {
|
|
|
+ this.$set(this, `menu`, JSON.parse(sessionMenu));
|
|
|
+ } else {
|
|
|
+ this.requestMenu();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async requestMenu() {
|
|
|
+ const { type, id: userid } = this.user;
|
|
|
+ const condition = { project: 'center', type, userid };
|
|
|
+ const res = await this.getMenu(condition);
|
|
|
+ if (this.$checkRes(res)) {
|
|
|
+ this.$set(this, `menu`, res.data);
|
|
|
+ sessionStorage.setItem('userMenu', JSON.stringify(res.data));
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ user: {
|
|
|
+ deep: true,
|
|
|
+ immediate: true,
|
|
|
+ handler(val) {
|
|
|
+ if (this.menu.length > 0) return;
|
|
|
+ if (val) {
|
|
|
+ const { type, id } = val;
|
|
|
+ if (type && id) this.getUserMenu();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
},
|
|
|
};
|
|
|
</script>
|