{"remainingRequest":"D:\\jenkins\\workspace\\jd_cgpt_fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\jd_cgpt_fvue\\src\\components\\layout\\ScrollView.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\jd_cgpt_fvue\\src\\components\\layout\\ScrollView.vue","mtime":1701745911888},{"path":"D:\\jenkins\\workspace\\jd_cgpt_fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\jd_cgpt_fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\jd_cgpt_fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["\r\nimport {\r\n addResizeListener,\r\n removeResizeListener,\r\n} from 'element-ui/src/utils/resize-event'\r\n\r\nexport default {\r\n name: 'scorll-view',\r\n props: {\r\n width: {\r\n type: String,\r\n default: '100%',\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n scrollable: false,\r\n navOffset: 0,\r\n }\r\n },\r\n\r\n computed: {\r\n navStyle() {\r\n return {\r\n transform: `translateX(-${this.navOffset}px)`,\r\n }\r\n },\r\n },\r\n\r\n updated() {\r\n this.update()\r\n },\r\n\r\n mounted() {\r\n addResizeListener(this.$el, this.update)\r\n },\r\n\r\n beforeDestroy() {\r\n if (this.$el && this.update) removeResizeListener(this.$el, this.update)\r\n },\r\n\r\n methods: {\r\n scrollPrev() {\r\n const containerSize = this.$refs.navScroll.offsetWidth\r\n const currentOffset = this.navOffset\r\n\r\n if (!currentOffset) return\r\n\r\n const newOffset =\r\n currentOffset > containerSize\r\n ? currentOffset - containerSize\r\n : 0\r\n\r\n this.navOffset = newOffset\r\n },\r\n scrollNext() {\r\n const navSize = this.$refs.nav.offsetWidth\r\n const containerSize = this.$refs.navScroll.offsetWidth\r\n const currentOffset = this.navOffset\r\n\r\n if (navSize - currentOffset <= containerSize) return\r\n\r\n const newOffset =\r\n navSize - currentOffset > containerSize * 2\r\n ? currentOffset + containerSize\r\n : navSize - containerSize\r\n\r\n this.navOffset = newOffset\r\n },\r\n scrollToActiveTab() {\r\n if (!this.scrollable) return\r\n\r\n const nav = this.$refs.nav\r\n const activeTab = this.$el.querySelector('.is-active')\r\n if (!activeTab) return\r\n const navScroll = this.$refs.navScroll\r\n const activeTabBounding = activeTab.getBoundingClientRect()\r\n const navScrollBounding = navScroll.getBoundingClientRect()\r\n const maxOffset = nav.offsetWidth - navScrollBounding.width\r\n const currentOffset = this.navOffset\r\n let newOffset = currentOffset\r\n\r\n if (activeTabBounding.left < navScrollBounding.left) {\r\n newOffset =\r\n currentOffset -\r\n (navScrollBounding.left - activeTabBounding.left)\r\n }\r\n if (activeTabBounding.right > navScrollBounding.right) {\r\n newOffset =\r\n currentOffset +\r\n activeTabBounding.right -\r\n navScrollBounding.right\r\n }\r\n newOffset = Math.max(newOffset, 0)\r\n this.navOffset = Math.min(newOffset, maxOffset)\r\n },\r\n update() {\r\n if (!this.$refs.nav) return\r\n const navSize = this.$refs.nav.offsetWidth\r\n this.height = this.$refs.nav.offsetHeight\r\n const containerSize = this.$refs.navScroll.offsetWidth\r\n const currentOffset = this.navOffset\r\n if (containerSize < navSize) {\r\n const currentOffset = this.navOffset\r\n this.scrollable = this.scrollable || {}\r\n this.scrollable.prev = currentOffset\r\n this.scrollable.next = currentOffset + containerSize < navSize\r\n if (navSize - currentOffset < containerSize) {\r\n this.navOffset = navSize - containerSize\r\n }\r\n } else {\r\n this.scrollable = false\r\n if (currentOffset > 0) {\r\n this.navOffset = 0\r\n }\r\n }\r\n },\r\n },\r\n\r\n render() {\r\n const {navStyle, scrollable, scrollNext, scrollPrev, height, width} =\r\n this\r\n const lineHeight = {\r\n 'line-height': height + 'px',\r\n }\r\n const scrollBtn = scrollable\r\n ? [\r\n \r\n \r\n ,\r\n \r\n \r\n ,\r\n ]\r\n : null\r\n\r\n return (\r\n \r\n {scrollBtn}\r\n
\r\n
\r\n {this.$slots.default}\r\n
\r\n
\r\n \r\n )\r\n },\r\n}\r\n",null]}