350 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			350 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|  | <template> | |||
|  | 	<view class="page"> | |||
|  | 		<u-navbar title="应用场所" :border-bottom="false" :background="bgc" title-color='#fff' back-icon-color="#fff" | |||
|  | 			title-size='36' height='42'></u-navbar> | |||
|  | 
 | |||
|  | 		<view class="box" v-if="loading"> | |||
|  | 			<view class="box_list" v-for="(item, index) in list" :key="index" @click="btnactive(item.storeId,index,item)" > | |||
|  | 				<view :class="['boxlist', { active: tcidlist.includes(item.storeId) }]"> | |||
|  | 					<view :class="['toptime', { activewz: tcidlist.includes(item.storeId) }]"> | |||
|  | 						<text>{{item.name}}</text> | |||
|  | 							<text>负责人:{{item.userName}}</text> | |||
|  | 						</view> | |||
|  | 					</view> | |||
|  | 					<view class="ccc"> | |||
|  | 						 | |||
|  | 					</view> | |||
|  | 				</view> | |||
|  | 			</view>  | |||
|  |   | |||
|  | 			<view class="" v-if="listflag" | |||
|  | 				style="color: #ccc;font-size: 36rpx;margin-top: 200rpx;text-align: center;"> | |||
|  | 				暂无场所 | |||
|  | 			</view> | |||
|  | 			<view class="anniu"  @click="btnqd"> | |||
|  | 				<!-- <view class="xinz" @click="btnadd"> | |||
|  | 					新建套餐 | |||
|  | 				</view> --> | |||
|  | 				<view class="xinz"> | |||
|  | 					确定 | |||
|  | 				</view> | |||
|  | 			</view> | |||
|  | 		</view> | |||
|  | 
 | |||
|  | 
 | |||
|  | 	</view> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  | 	export default { | |||
|  | 		data() { | |||
|  | 			return { | |||
|  | 				list: '', | |||
|  | 				loading: false, | |||
|  | 				disabled: false, | |||
|  | 				btnWidth: 180, | |||
|  | 				show: false, | |||
|  | 				options: [{ | |||
|  | 					text: '删除', | |||
|  | 					style: { | |||
|  | 						backgroundColor: '#dd524d' | |||
|  | 					} | |||
|  | 				}], | |||
|  | 				storeId: '', | |||
|  | 				bgc: { | |||
|  | 					backgroundColor: "#8883f0", | |||
|  | 				}, | |||
|  | 				activeid: '', | |||
|  | 				checkboxes: [], | |||
|  | 				tcidlist: [], | |||
|  | 				titaoc: [], | |||
|  | 				newobj: [], | |||
|  | 				listflag:false, | |||
|  | 				titflag:'', | |||
|  | 				arrlists:[], | |||
|  | 				deviceList:[], | |||
|  | 			}; | |||
|  | 		}, | |||
|  | 		onLoad(option) { | |||
|  | 			uni.removeStorageSync('tcidlist') | |||
|  | 			 | |||
|  | 			this.storeId = option.id | |||
|  | 			if(option.title == '确定'){ | |||
|  | 				this.titflag = '确定' | |||
|  | 				// this.deviceList = JSON.parse(option.list)
 | |||
|  | 			} | |||
|  | 		}, | |||
|  | 		created() { | |||
|  | 			// 初始化checkboxes数组,每个元素都设为false(表示初始时不显示复选框)  
 | |||
|  | 			// this.checkboxes = new Array(this.list.length).fill(false);
 | |||
|  | 		}, | |||
|  | 		onShow() { | |||
|  | 			this.tcidlist = [] | |||
|  | 			this.getlist() | |||
|  | 
 | |||
|  | 		}, | |||
|  | 		// 分享到好友(会话)
 | |||
|  | 		onShareAppMessage: function() { | |||
|  | 			return { | |||
|  | 				title: '创亿康', | |||
|  | 				path: '/pages/index/index' | |||
|  | 			} | |||
|  | 		}, | |||
|  | 
 | |||
|  | 		// 分享到朋友圈  
 | |||
|  | 		onShareTimeline: function() { | |||
|  | 			return { | |||
|  | 				title: '创亿康', | |||
|  | 				query: '', | |||
|  | 				path: '/pages/index/index' | |||
|  | 			} | |||
|  | 		}, | |||
|  | 		methods: { | |||
|  | 			// 查询套餐已有设备
 | |||
|  | 			getao() { | |||
|  | 				this.$u.get(`/agent/suit/${this.storeId}`).then(res => { | |||
|  | 					if (res.code == 200) { | |||
|  | 						if (res.data.storeList.length > 0) { | |||
|  | 							this.titaoc = res.data.storeList | |||
|  | 								let uniqueSuitIds = new Set(); | |||
|  | 								this.arrlists = new Set() | |||
|  | 								this.list.forEach(item => { | |||
|  | 									if (this.titaoc.some(titaocItem => titaocItem.storeId == item.storeId)) { | |||
|  | 										uniqueSuitIds.add(item.storeId); | |||
|  | 										this.arrlists.add(item) | |||
|  | 									} | |||
|  | 								}) | |||
|  | 								this.tcidlist = Array.from(uniqueSuitIds); | |||
|  | 								let matchedItems = this.list.filter(item => uniqueSuitIds.has(item.storeId)) | |||
|  | 								let unmatchedItems = this.list.filter(item => !uniqueSuitIds.has(item.storeId)) | |||
|  | 								this.list = matchedItems.concat(unmatchedItems) | |||
|  | 								// this.list = this.list
 | |||
|  | 						}else{ | |||
|  | 							// this.list = this.list
 | |||
|  | 							this.tcidlist = [] | |||
|  | 						} | |||
|  | 					} | |||
|  | 				}) | |||
|  | 			}, | |||
|  | 			getadd(){ | |||
|  | 					if (this.deviceList.length > 0) { | |||
|  | 						this.titaoc = this.deviceList | |||
|  | 							let uniqueSuitIds = new Set(); | |||
|  | 							this.arrlists = new Set() | |||
|  | 							this.list.forEach(item => { | |||
|  | 								if (this.titaoc.some(titaocItem => titaocItem.storeId == item.storeId)) { | |||
|  | 									uniqueSuitIds.add(item.storeId); | |||
|  | 									this.arrlists.add(item) | |||
|  | 								} | |||
|  | 							}) | |||
|  | 							this.tcidlist = Array.from(uniqueSuitIds); | |||
|  | 							let matchedItems = this.list.filter(item => uniqueSuitIds.has(item.storeId)) | |||
|  | 							let unmatchedItems = this.list.filter(item => !uniqueSuitIds.has(item.storeId)) | |||
|  | 							this.list = matchedItems.concat(unmatchedItems) | |||
|  | 					}else{ | |||
|  | 						this.tcidlist = [] | |||
|  | 					} | |||
|  | 			}, | |||
|  | 
 | |||
|  | 
 | |||
|  | 			btnactive(id, index,item) { | |||
|  | 				const indexInTcidList = this.tcidlist.indexOf(id); | |||
|  | 				if (indexInTcidList !== -1) { | |||
|  | 					this.tcidlist.splice(indexInTcidList, 1); | |||
|  | 				} else { | |||
|  | 					this.tcidlist.push(id);  | |||
|  | 				} | |||
|  | 				this.toggleItemInArray(this.arrlists, item) | |||
|  | 			}, | |||
|  | 			toggleItemInArray(arr, item) {   | |||
|  | 			  // 检查元素是否存在于数组中  
 | |||
|  | 			  const index = arr.indexOf(item);   | |||
|  | 			  if (index > -1) {   | |||
|  | 			    // 如果存在,则删除该元素  
 | |||
|  | 			    arr.splice(index, 1);   | |||
|  | 			    console.log('元素已删除');   | |||
|  | 			  } else {   | |||
|  | 			    // 如果不存在,则添加该元素  
 | |||
|  | 			    arr.push(item);   | |||
|  | 			    console.log('元素已添加');   | |||
|  | 			  }   | |||
|  | 			  // 打印更新后的数组  
 | |||
|  | 			  console.log(arr);   | |||
|  | 			}, | |||
|  | 
 | |||
|  | 			// 点击确定
 | |||
|  | 			btnqd() { | |||
|  | 				if(this.titflag == '确定'){ | |||
|  | 					uni.setStorageSync('tcidlist', this.arrlists) | |||
|  | 					uni.navigateBack() | |||
|  | 				}else{ | |||
|  | 					// this.$u.delete(`/app/suit/delByDevice/${this.storeId}`).then(res => {})
 | |||
|  | 					let numArr = this.tcidlist.map(item => parseInt(item, 10)) | |||
|  | 					let data = { | |||
|  | 						storeIds: numArr, | |||
|  | 						suitId: this.storeId | |||
|  | 					} | |||
|  | 					this.$u.put(`/agent/suit`, data).then((res) => { | |||
|  | 						if (res.code == 200) { | |||
|  | 							uni.showToast({ | |||
|  | 								title: res.msg, | |||
|  | 								icon: 'success', | |||
|  | 								duration: 1000, | |||
|  | 							}) | |||
|  | 							if(this.titflag == '确定'){ | |||
|  | 								 | |||
|  | 							}else{ | |||
|  | 								this.getao() | |||
|  | 							} | |||
|  | 							setTimeout(() => { | |||
|  | 								uni.navigateBack() | |||
|  | 							}, 1000) | |||
|  | 						} | |||
|  | 					}) | |||
|  | 				} | |||
|  | 			}, | |||
|  | 
 | |||
|  | 			getlist() { | |||
|  | 				let data = { | |||
|  | 					pageNum: 1, | |||
|  | 					pageSize: 99 | |||
|  | 				} | |||
|  | 				this.$u.get(`/agent/store/allList`, data).then((res) => { | |||
|  | 					if (res.code == 200) { | |||
|  | 						if(res.data.length > 0){ | |||
|  | 							this.listflag = false | |||
|  | 							this.list = res.data | |||
|  | 							this.list = this.list.map(item => ({ | |||
|  | 								...item, | |||
|  | 								tcidlist: this.tcidlist | |||
|  | 							})) | |||
|  | 							if(this.titflag == '确定'){ | |||
|  | 								// this.getadd()
 | |||
|  | 							}else{ | |||
|  | 								this.getao() | |||
|  | 							} | |||
|  | 							 | |||
|  | 							// console.log(this.list); 
 | |||
|  | 							this.loading = true | |||
|  | 						}else{ | |||
|  | 							this.listflag = true | |||
|  | 						} | |||
|  | 						 | |||
|  | 					} | |||
|  | 				}); | |||
|  | 			}, | |||
|  | 		 | |||
|  | 		} | |||
|  | 	}; | |||
|  | </script> | |||
|  | 
 | |||
|  | <style lang="scss"> | |||
|  | 	// /deep/ .u-title {
 | |||
|  | 	// 	padding-bottom: 22rpx;
 | |||
|  | 	// }
 | |||
|  | 
 | |||
|  | 	// /deep/ .u-icon__icon {
 | |||
|  | 	// 	padding-bottom: 22rpx;
 | |||
|  | 	// }
 | |||
|  | 	.active { | |||
|  | 		background-color: #8883F0 !important; | |||
|  | 		border-radius: 20rpx; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.activewz { | |||
|  | 		color: #fff !important; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	page { | |||
|  | 		background: #F4F5F7; | |||
|  | 	} | |||
|  | .anniu { | |||
|  | 				position: fixed; | |||
|  | 				bottom: 0; | |||
|  | 				left: 50%; | |||
|  | 				transform: translateX(-50%); | |||
|  | 				display: flex; | |||
|  | 				height: 200rpx; | |||
|  | 				padding-top: 40rpx; | |||
|  | 				background-color: #fff; | |||
|  | 				// justify-content: space-between;
 | |||
|  | 				width: 100%; | |||
|  | 				padding-left: 50rpx; | |||
|  | 				padding-right: 50rpx; | |||
|  | 				.xinz { | |||
|  | 					width: 100%; | |||
|  | 					height: 84rpx; | |||
|  | 					background: #8883F0; | |||
|  | 					filter: blur(0px); | |||
|  | 					text-align: center; | |||
|  | 					line-height: 84rpx; | |||
|  | 					font-size: 36rpx; | |||
|  | 					color: #FFFFFF; | |||
|  | 					border-radius: 18rpx; | |||
|  | 				} | |||
|  | 			} | |||
|  | 
 | |||
|  | 	.page { | |||
|  | 		width: 750rpx; | |||
|  | 		padding-bottom: 400rpx; | |||
|  | 
 | |||
|  | 		.box { | |||
|  | 			width: 750rpx; | |||
|  | 			height: 100%; | |||
|  | 			background: #F4F5F7; | |||
|  | 			border-radius: 0rpx 0rpx 0rpx 0rpx; | |||
|  | 			padding: 50rpx; | |||
|  | 
 | |||
|  | 			.box_list { | |||
|  | 				background-color: #fff; | |||
|  | 				margin-top: 20rpx; | |||
|  | 				border-radius: 20rpx; | |||
|  | 			} | |||
|  | 
 | |||
|  | 			 | |||
|  | 
 | |||
|  | 
 | |||
|  | 			.boxlist { | |||
|  | 				padding: 40rpx 42rpx; | |||
|  | 				box-sizing: border-box; | |||
|  | 
 | |||
|  | 				.ccc { | |||
|  | 					display: flex; | |||
|  | 					align-items: center; | |||
|  | 					justify-content: space-between; | |||
|  | 				} | |||
|  | 
 | |||
|  | 				.toptime { | |||
|  | 					font-size: 32rpx; | |||
|  | 					color: #000000; | |||
|  | 					display: flex; | |||
|  | 					justify-content: space-between; | |||
|  | 				} | |||
|  | 
 | |||
|  | 				.bumday { | |||
|  | 					margin-top: 10rpx; | |||
|  | 
 | |||
|  | 					text { | |||
|  | 						font-size: 32rpx; | |||
|  | 						color: #95989D; | |||
|  | 					} | |||
|  | 				} | |||
|  | 			} | |||
|  | 
 | |||
|  | 			/deep/ .u-swipe-action { | |||
|  | 				margin-top: 30rpx; | |||
|  | 				border-radius: 20rpx; | |||
|  | 				width: 654rpx; | |||
|  | 				height: 182rpx; | |||
|  | 				background: #FFFFFF; | |||
|  | 				box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1); | |||
|  | 				filter: blur(0px); | |||
|  | 				border: 0; | |||
|  | 			} | |||
|  | 
 | |||
|  | 			/deep/ .u-swipe-del { | |||
|  | 				height: 190rpx; | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | </style> |