227 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
		
		
			
		
	
	
			227 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
|  | <template> | ||
|  | 	<view class="self-service-index" v-if="listmenu"> | ||
|  | 		<view v-for="(item, index) in list" :key="index"> | ||
|  | 			<template  v-if="hasMenu(item.menuKey)"> | ||
|  | 				<view class="self-service-item" v-if="!item.child" | ||
|  | 					@click="gotoPage('/pages/product/list?cid=' + item.value)"> | ||
|  | 					<view class="self-service-name text-ellipsis-2 flex-1">{{ item.name }}</view> | ||
|  | 				</view> | ||
|  | 				<template v-else> | ||
|  | 					<view class="self-service-item more d-c-c" @click="rotate(index)"> | ||
|  | 						<view class="self-service-name text-ellipsis-2 flex-1">{{ item.name }}</view> | ||
|  | 						<view class="icon-close" :class="{ active: openIndex == index }"><u-icon name="arrow-down" | ||
|  | 								size="28rpx" color="#666"></u-icon></view> | ||
|  | 					</view> | ||
|  | 					<view class="self-service-item" v-for="(citem, cindex) in item.child" :key="cindex" v-if="hasMenu(citem.menuKey)" | ||
|  | 						:class="{ closemenu: openIndex != index }" | ||
|  | 						@click="gotoPage('/pages/product/list?cid=' + citem.value)"> | ||
|  | 						<view class="self-service-name text-ellipsis-2 flex-1" style="padding-left: 20rpx;">{{ citem.name }} | ||
|  | 						</view> | ||
|  | 					</view> | ||
|  | 				</template> | ||
|  | 			</template> | ||
|  | 			<!-- <image class="self-service-icon" src="/static/icon/cart-icon.png" mode=""></image> --> | ||
|  | 		</view> | ||
|  | 	</view> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script> | ||
|  | 	export default { | ||
|  | 		data() { | ||
|  | 			return { | ||
|  | 				list: [{ | ||
|  | 						name: '分享专区', | ||
|  | 						value: '7', | ||
|  | 						menuKey: 'share', | ||
|  | 						child: [{ | ||
|  | 								name: '嗨粉注册', | ||
|  | 								value: '7', | ||
|  | 								menuKey: 'hiFans', | ||
|  | 							}, | ||
|  | 							{ | ||
|  | 								name: '海粉注册', | ||
|  | 								value: '21', | ||
|  | 								menuKey: 'haiFans', | ||
|  | 							} | ||
|  | 						] | ||
|  | 					}, | ||
|  | 					{ | ||
|  | 						name: '注册专区', | ||
|  | 						menuKey: 'regiest', | ||
|  | 						value: '1', | ||
|  | 						child: [{ | ||
|  | 							name: '自营专区', | ||
|  | 							menuKey: 'regiestArea', | ||
|  | 							value: '1' | ||
|  | 						}, { | ||
|  | 							name: '乐学易考', | ||
|  | 							menuKey: 'ezLearnReg', | ||
|  | 							value: '24' | ||
|  | 						}] | ||
|  | 					}, | ||
|  | 					{ | ||
|  | 						name: '升级专区', | ||
|  | 						value: '2', | ||
|  | 						menuKey: 'upgrade', | ||
|  | 						child: [{ | ||
|  | 							name: '自营专区', | ||
|  | 							value: '2', | ||
|  | 							menuKey: 'upgradeArea', | ||
|  | 						}, { | ||
|  | 							name: '乐学易考', | ||
|  | 							value: '25', | ||
|  | 							menuKey: 'ezLearnUp', | ||
|  | 						}] | ||
|  | 					}, | ||
|  | 					{ | ||
|  | 						name: '复购专区', | ||
|  | 						value: '3', | ||
|  | 						menuKey: 'repurchase', | ||
|  | 						child: [{ | ||
|  | 								name: '乐学易考', | ||
|  | 								value: '26', | ||
|  | 								menuKey: 'ezLearnRep', | ||
|  | 							}, | ||
|  | 							{ | ||
|  | 								name: '工具流', | ||
|  | 								value: '12', | ||
|  | 								menuKey: 'gongju', | ||
|  | 							}, | ||
|  | 							{ | ||
|  | 								name: '自营专区', | ||
|  | 								value: '3', | ||
|  | 								menuKey: 'self', | ||
|  | 							}, | ||
|  | 							{ | ||
|  | 								name: '合作专区', | ||
|  | 								value: '22', | ||
|  | 								menuKey: 'cooperation', | ||
|  | 							}, | ||
|  | 							{ | ||
|  | 								name: '直播专区', | ||
|  | 								value: '14', | ||
|  | 								menuKey: 'live', | ||
|  | 							} | ||
|  | 						] | ||
|  | 					}, | ||
|  | 					{ | ||
|  | 						name: '福利专区', | ||
|  | 						value: '13', | ||
|  | 						menuKey: 'welfare', | ||
|  | 					}, | ||
|  | 					{ | ||
|  | 						name: '积分专区', | ||
|  | 						value: '11', | ||
|  | 						menuKey: 'integral', | ||
|  | 					}, | ||
|  | 					{ | ||
|  | 						name: '重消专区', | ||
|  | 						value: '10', | ||
|  | 						menuKey: 'rescission', | ||
|  | 					} | ||
|  | 				], | ||
|  | 				listmenu: [], | ||
|  | 				openIndex: -1 | ||
|  | 			}; | ||
|  | 		}, | ||
|  | 		onShow() { | ||
|  | 			this.getData(); | ||
|  | 		}, | ||
|  | 		methods: { | ||
|  | 			hasMenu(key){ | ||
|  | 				let self = this; | ||
|  | 				let flag = false; | ||
|  | 				console.log(key) | ||
|  | 				self.listmenu.forEach((item,index)=>{ | ||
|  | 					if(item.menuKey == key){ | ||
|  | 						flag =  true | ||
|  | 					} | ||
|  | 				}) | ||
|  | 				console.log(flag) | ||
|  | 				return flag | ||
|  | 			}, | ||
|  | 			getData() { | ||
|  | 				let self = this; | ||
|  | 				self._get('system/api/menu/list', {}, res => { | ||
|  | 					let list = []; | ||
|  | 					let arr = res.data; | ||
|  | 					arr.forEach((item, index) => { | ||
|  | 						if (item.menuParent == 30) { | ||
|  | 							list.push(item) | ||
|  | 						} | ||
|  | 					}) | ||
|  | 					self.listmenu = list; | ||
|  | 					console.log(self.listmenu) | ||
|  | 				}); | ||
|  | 			}, | ||
|  | 			rotate(e) { | ||
|  | 				if (this.openIndex != e) { | ||
|  | 					this.openIndex = e; | ||
|  | 				} else { | ||
|  | 					this.openIndex = -1; | ||
|  | 				} | ||
|  | 			} | ||
|  | 		} | ||
|  | 	}; | ||
|  | </script> | ||
|  | 
 | ||
|  | <style lang="scss"> | ||
|  | 	.self-service-index { | ||
|  | 		// display: flex;
 | ||
|  | 		// justify-content: space-between;
 | ||
|  | 		// align-items: flex-start;
 | ||
|  | 		// flex-wrap: wrap;
 | ||
|  | 		// padding: 28rpx 20rpx;
 | ||
|  | 		padding: 0 22rpx; | ||
|  | 		background: #ffffff; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	.icon-close { | ||
|  | 		transition: transform 0.6s ease; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	.icon-close.active { | ||
|  | 		transform: rotate(180deg); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	.closemenu.self-service-item { | ||
|  | 		height: 0; | ||
|  | 		min-height: 0; | ||
|  | 		overflow: hidden; | ||
|  | 		padding: 0; | ||
|  | 		border: none; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	.self-service-item { | ||
|  | 		flex-shrink: 0; | ||
|  | 		padding: 22rpx 0; | ||
|  | 		display: flex; | ||
|  | 		justify-content: space-between; | ||
|  | 		align-items: center; | ||
|  | 		// width: 345rpx;
 | ||
|  | 		min-height: 120rpx; | ||
|  | 		box-sizing: border-box; | ||
|  | 		box-sizing: border-box; | ||
|  | 		height: auto; | ||
|  | 		transition: all 0.3s ease; | ||
|  | 		border-radius: 0rpx; | ||
|  | 		// margin-bottom: 25rpx;
 | ||
|  | 		border-bottom: 1rpx solid #eee; | ||
|  | 
 | ||
|  | 		.self-service-name { | ||
|  | 			font-size: 28rpx; | ||
|  | 			color: #333; | ||
|  | 			line-height: 1.5; | ||
|  | 			word-break: break-all; | ||
|  | 			// font-weight: bold;
 | ||
|  | 		} | ||
|  | 
 | ||
|  | 		.self-service-icon { | ||
|  | 			width: 54rpx; | ||
|  | 			height: 54rpx; | ||
|  | 			display: block; | ||
|  | 			flex-shrink: 0; | ||
|  | 			margin-left: 20rpx; | ||
|  | 		} | ||
|  | 	} | ||
|  | </style> |