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.
		
		
		
		
		
			
		
			
				
					
					
						
							128 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							128 lines
						
					
					
						
							3.4 KiB
						
					
					
				| <template> | |
|   <main :class="['aui-content']"> | |
|     <!-- tab展示内容 --> | |
|     <template> | |
|       <template v-if="tabIsIframe($router.currentRoute.meta.iframeURL)"> | |
|         <iframe | |
|           :src=" | |
|             $router.currentRoute.meta.iframeURL + | |
|             '?token=' + | |
|             token + | |
|             '&customerId=' + | |
|             customerId | |
|           " | |
|           ref="iframe" | |
|           class="m-iframe" | |
|           id="iframe" | |
|           width="100%" | |
|           height="100%" | |
|           frameborder="0" | |
|           scrolling="yes" | |
|         /> | |
|       </template> | |
|       <keep-alive v-show="!tabIsIframe($router.currentRoute.meta.iframeURL)"> | |
|         <router-view @changeCustomerName="changeCustomerName" /> | |
|       </keep-alive> | |
|     </template> | |
|   </main> | |
| </template> | |
| 
 | |
| <script> | |
| import { isURL } from "@/utils/validate"; | |
| import Cookie from "js-cookie"; | |
| export default { | |
|   data() { | |
|     return { | |
|       iframeUrl: "", | |
|       token: "", | |
|       customerId: "", | |
|     }; | |
|   }, | |
|   watch: { | |
|     // "$router.currentRoute.name": function () { | |
|     //   console.log($router.currentRoute); | |
|     // }, | |
|   }, | |
|   created() { | |
|     this.token = localStorage.getItem("token"); | |
|     this.customerId = localStorage.getItem("customerId"); | |
|   }, | |
|   methods: { | |
|     changeCustomerName(customerName) { | |
|       this.$emit("changeCustomerName", customerName); | |
|     }, | |
|     // tabs, 是否通过iframe展示 | |
|     tabIsIframe(url) { | |
|       // this.appendIframe(url) | |
|       // this.iframeUrl = | |
|       //   url + | |
|       //   "?token=" + | |
|       //   localStorage.getItem("token") + | |
|       //   "&customerId=" + | |
|       //   localStorage.getItem("customerId"); | |
|  | |
|       // return /^http[s]?:\/\/.*/.test(url); | |
|       return isURL(url); | |
|     }, | |
|     // tabs, 选中tab | |
|     tabSelectedHandle(tab) { | |
|       tab = this.$store.state.contentTabs.filter( | |
|         (item) => item.name === tab.name | |
|       )[0]; | |
|       if (tab) { | |
|         this.$router.push({ | |
|           name: tab.name, | |
|           params: { ...tab.params }, | |
|           query: { ...tab.query }, | |
|         }); | |
|       } | |
|     }, | |
|     // tabs, 删除tab | |
|     tabRemoveHandle(tabName) { | |
|       if (tabName === "home") { | |
|         return false; | |
|       } | |
|       this.$store.state.contentTabs = this.$store.state.contentTabs.filter( | |
|         (item) => item.name !== tabName | |
|       ); | |
|       if (this.$store.state.contentTabs.length <= 0) { | |
|         this.$store.state.sidebarMenuActiveName = | |
|           this.$store.state.contentTabsActiveName = "home"; | |
|         return false; | |
|       } | |
|       // 当前选中tab被删除 | |
|       if (tabName === this.$store.state.contentTabsActiveName) { | |
|         let tab = | |
|           this.$store.state.contentTabs[ | |
|             this.$store.state.contentTabs.length - 1 | |
|           ]; | |
|         this.$router.push({ | |
|           name: tab.name, | |
|           params: { ...tab.params }, | |
|           query: { ...tab.query }, | |
|         }); | |
|       } | |
|     }, | |
|     // tabs, 关闭其它 | |
|     tabsCloseOtherHandle() { | |
|       this.$store.state.contentTabs = this.$store.state.contentTabs.filter( | |
|         (item) => { | |
|           return ( | |
|             item.name === "home" || | |
|             item.name === this.$store.state.contentTabsActiveName | |
|           ); | |
|         } | |
|       ); | |
|     }, | |
|     // tabs, 关闭全部 | |
|     tabsCloseAllHandle() { | |
|       this.$store.state.contentTabs = this.$store.state.contentTabs.filter( | |
|         (item) => item.name === "home" | |
|       ); | |
|       this.$router.push({ name: "home" }); | |
|     }, | |
|   }, | |
| }; | |
| </script> | |
| 
 | |
| <style lang="scss" src="@/assets/scss/main-shuju.scss" scoped></style>
 | |
| 
 |