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> |