mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 21:50:28 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
Vue.component("columns-grid", {
 | 
						|
	props: [],
 | 
						|
	mounted: function () {
 | 
						|
		this.columns = this.calculateColumns()
 | 
						|
 | 
						|
		let that = this
 | 
						|
		window.addEventListener("resize", function () {
 | 
						|
			that.columns = that.calculateColumns()
 | 
						|
		})
 | 
						|
	},
 | 
						|
	data: function () {
 | 
						|
		return {
 | 
						|
			columns: "four"
 | 
						|
		}
 | 
						|
	},
 | 
						|
	methods: {
 | 
						|
		calculateColumns: function () {
 | 
						|
			let w = window.innerWidth
 | 
						|
			let columns = Math.floor(w / 250)
 | 
						|
			if (columns == 0) {
 | 
						|
				columns = 1
 | 
						|
			}
 | 
						|
 | 
						|
			let columnElements = this.$el.getElementsByClassName("column")
 | 
						|
			if (columnElements.length == 0) {
 | 
						|
				return
 | 
						|
			}
 | 
						|
			let maxColumns = columnElements.length
 | 
						|
			if (columns > maxColumns) {
 | 
						|
				columns = maxColumns
 | 
						|
			}
 | 
						|
 | 
						|
			// 添加右侧边框
 | 
						|
			for (let index = 0; index < columnElements.length; index++) {
 | 
						|
				let el = columnElements[index]
 | 
						|
				el.className = el.className.replace("with-border", "")
 | 
						|
				if (index % columns == columns - 1 || index == columnElements.length - 1 /** 最后一个 **/) {
 | 
						|
					el.className += " with-border"
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			switch (columns) {
 | 
						|
				case 1:
 | 
						|
					return "one"
 | 
						|
				case 2:
 | 
						|
					return "two"
 | 
						|
				case 3:
 | 
						|
					return "three"
 | 
						|
				case 4:
 | 
						|
					return "four"
 | 
						|
				case 5:
 | 
						|
					return "five"
 | 
						|
				case 6:
 | 
						|
					return "six"
 | 
						|
				case 7:
 | 
						|
					return "seven"
 | 
						|
				case 8:
 | 
						|
					return "eight"
 | 
						|
				case 9:
 | 
						|
					return "nine"
 | 
						|
				case 10:
 | 
						|
					return "ten"
 | 
						|
				default:
 | 
						|
					return "ten"
 | 
						|
			}
 | 
						|
		}
 | 
						|
	},
 | 
						|
	template: `<div :class="'ui ' + columns + ' columns grid counter-chart'">
 | 
						|
	<slot></slot>
 | 
						|
</div>`
 | 
						|
}) |