You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							167 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							167 lines
						
					
					
						
							4.9 KiB
						
					
					
				
								<template>
							 | 
						|
								  <div
							 | 
						|
								    v-loading.fullscreen.lock="loading"
							 | 
						|
								    :element-loading-text="$t('loading')"
							 | 
						|
								    :class="[
							 | 
						|
								      'aui-wrapper',
							 | 
						|
								      { 'aui-sidebar--fold': $store.state.sidebarFold },
							 | 
						|
								      {
							 | 
						|
								        'aui-sidebar--noside':
							 | 
						|
								          $store.state.sidebarActiveSubMenuList.length == 0 ||
							 | 
						|
								          $store.state.inIframe,
							 | 
						|
								      },
							 | 
						|
								      { 'z-iframe': $store.state.inIframe },
							 | 
						|
								    ]"
							 | 
						|
								  >
							 | 
						|
								    <template v-if="!loading">
							 | 
						|
								      <main-navbar ref="ref_navbar" v-if="!$store.state.inIframe" />
							 | 
						|
								      <main-sidebar v-if="!$store.state.inIframe" />
							 | 
						|
								      <div class="aui-content__wrapper">
							 | 
						|
								        <main-content
							 | 
						|
								          v-if="!$store.state.contentIsNeedRefresh"
							 | 
						|
								          @changeCustomerName="changeCustomerName"
							 | 
						|
								        />
							 | 
						|
								      </div>
							 | 
						|
								      <main-theme-tools v-if="!$store.state.inIframe" />
							 | 
						|
								
							 | 
						|
								      <!-- <secretary-log-notice v-if="!$store.state.inIframe" /> -->
							 | 
						|
								    </template>
							 | 
						|
								  </div>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
								import MainNavbar from "./main-navbar";
							 | 
						|
								import MainSidebar from "./main-sidebar";
							 | 
						|
								import MainContent from "./main-content";
							 | 
						|
								import MainThemeTools from "./main-theme-tools";
							 | 
						|
								import SecretaryLogNotice from "./modules/secretaryLog/cpts/notice";
							 | 
						|
								import debounce from "lodash/debounce";
							 | 
						|
								import { mapGetters } from "vuex";
							 | 
						|
								import nextTick from "dai-js/tools/nextTick";
							 | 
						|
								import { requestPost } from "@/js/dai/request";
							 | 
						|
								
							 | 
						|
								export default {
							 | 
						|
								  provide() {
							 | 
						|
								    return {
							 | 
						|
								      // 刷新
							 | 
						|
								      refresh() {
							 | 
						|
								        this.$store.state.contentIsNeedRefresh = true;
							 | 
						|
								        this.$nextTick(() => {
							 | 
						|
								          this.$store.state.contentIsNeedRefresh = false;
							 | 
						|
								        });
							 | 
						|
								      },
							 | 
						|
								    };
							 | 
						|
								  },
							 | 
						|
								  data() {
							 | 
						|
								    return {
							 | 
						|
								      loading: true,
							 | 
						|
								      userType: localStorage.getItem("userType"),
							 | 
						|
								    };
							 | 
						|
								  },
							 | 
						|
								  components: {
							 | 
						|
								    MainNavbar,
							 | 
						|
								    MainSidebar,
							 | 
						|
								    MainContent,
							 | 
						|
								    MainThemeTools,
							 | 
						|
								    SecretaryLogNotice,
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  watch: {
							 | 
						|
								    $route: "routeHandle",
							 | 
						|
								  },
							 | 
						|
								  async created() {
							 | 
						|
								    this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
							 | 
						|
								    console.log(this.$store.state.sidebarMenuList);
							 | 
						|
								
							 | 
						|
								    this.windowResizeHandle();
							 | 
						|
								    this.routeHandle(this.$route);
							 | 
						|
								    Promise.all([this.getWorkUserInfo()]).then(() => {
							 | 
						|
								      this.loading = false;
							 | 
						|
								    });
							 | 
						|
								  },
							 | 
						|
								  computed: {},
							 | 
						|
								  methods: {
							 | 
						|
								    changeCustomerName(customerName) {
							 | 
						|
								      this.$refs["ref_navbar"].changeCustomerName(customerName);
							 | 
						|
								    },
							 | 
						|
								    // 窗口改变大小
							 | 
						|
								    windowResizeHandle() {
							 | 
						|
								      this.$store.state.sidebarFold =
							 | 
						|
								        document.documentElement["clientWidth"] <= 992 || false;
							 | 
						|
								      window.addEventListener(
							 | 
						|
								        "resize",
							 | 
						|
								        debounce(() => {
							 | 
						|
								          this.$store.state.sidebarFold =
							 | 
						|
								            document.documentElement["clientWidth"] <= 992 || false;
							 | 
						|
								        }, 150)
							 | 
						|
								      );
							 | 
						|
								    },
							 | 
						|
								    // 路由, 监听
							 | 
						|
								    routeHandle(route) {
							 | 
						|
								      if (!route.meta.isTab) {
							 | 
						|
								        return false;
							 | 
						|
								      }
							 | 
						|
								      var tab = this.$store.state.contentTabs.filter(
							 | 
						|
								        (item) => item.name === route.name
							 | 
						|
								      )[0];
							 | 
						|
								      if (!tab) {
							 | 
						|
								        tab = {
							 | 
						|
								          ...window.SITE_CONFIG["contentTabDefault"],
							 | 
						|
								          ...route.meta,
							 | 
						|
								          name: route.name,
							 | 
						|
								          params: { ...route.params },
							 | 
						|
								          query: { ...route.query },
							 | 
						|
								        };
							 | 
						|
								        this.$store.state.contentTabs =
							 | 
						|
								          this.$store.state.contentTabs.concat(tab);
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      this.$store.state.sidebarMenuActiveName = tab.menuId;
							 | 
						|
								      this.$store.state.contentTabsActiveName = tab.name;
							 | 
						|
								      this.syncLevelOneMenuActive(tab.menuId);
							 | 
						|
								    },
							 | 
						|
								    async syncLevelOneMenuActive(menuId) {
							 | 
						|
								      await nextTick();
							 | 
						|
								      console.log(
							 | 
						|
								        "*******************************",
							 | 
						|
								        menuId,
							 | 
						|
								        this.$store.state.sidebarMenuList
							 | 
						|
								      );
							 | 
						|
								      const fn = (item) => {
							 | 
						|
								        if (item.id == menuId) {
							 | 
						|
								          return true;
							 | 
						|
								        } else if (item.children.length > 0) {
							 | 
						|
								          return item.children.findIndex(fn) !== -1;
							 | 
						|
								        } else {
							 | 
						|
								          return false;
							 | 
						|
								        }
							 | 
						|
								      };
							 | 
						|
								      let idx = this.$store.state.sidebarMenuList.findIndex(fn);
							 | 
						|
								      this.$store.state.LevelOneMenuActiveName =
							 | 
						|
								        idx !== -1 ? this.$store.state.sidebarMenuList[idx].id : "";
							 | 
						|
								      this.$store.state.sidebarActiveSubMenuList =
							 | 
						|
								        idx !== -1 ? this.$store.state.sidebarMenuList[idx].children : [];
							 | 
						|
								    },
							 | 
						|
								    // 获取当前管理员信息
							 | 
						|
								    async getWorkUserInfo() {
							 | 
						|
								      const url = "/epmetuser/customerstaff/staffbasicinfo";
							 | 
						|
								      let params = {};
							 | 
						|
								      const { data, code, msg } = await requestPost(url, params);
							 | 
						|
								      if (code === 0) {
							 | 
						|
								        this.$store.state.user = { ...data };
							 | 
						|
								        console.log("user---hahha", this.$store.state.user);
							 | 
						|
								        localStorage.setItem("roleList", data.roleList);
							 | 
						|
								        localStorage.setItem("customerId", data.customerId);
							 | 
						|
								        localStorage.setItem("staffId", data.id);
							 | 
						|
								        localStorage.setItem("agencyId", data.agencyId);
							 | 
						|
								        localStorage.setItem("level", data.level);
							 | 
						|
								        if (!localStorage.getItem("customerName")) {
							 | 
						|
								          localStorage.setItem("customerName", data.customerName || "");
							 | 
						|
								        }
							 | 
						|
								      } else {
							 | 
						|
								        this.$message.error(msg);
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								  },
							 | 
						|
								};
							 | 
						|
								</script>
							 | 
						|
								
							 |