| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122 | <template>	<view class="pages" :style="{'min-height':(h+mt)+'px','padding-top':(mt)+'px'}">		<!-- <view class="pages" :style="{'min-height':h+'px'}"> -->		<c-nav-bar title="商品管理"></c-nav-bar>		<view class="tb">			<view class="tabs">				<view v-for="(item,index) in tabList" :key="index" @tap="changeTab1(index)">					<text :class="index==current?'active':''">{{item.name}}</text>					<text v-if="index==current">({{roomType.length}})</text>				</view>			</view>		</view>		<!-- 房型数量 -->		<view class="">			<view class="typeNum">				<view class="left">				</view>				<view class="right" @click="showList">					<view class="image">						<image src="https://i.ringzle.com/file/20240313/f3d301b3bc4544ffaf5a0d96a761dd00.png" mode="">						</image>					</view>					<view class="text">						批量操作					</view>				</view>			</view>		</view>		<view class="" style="padding-bottom: 160rpx;">			<!-- 房型选择 -->			<view class="type" v-for="item,index in roomType" :key="index" style="">				<view class="left" v-if="Selected==true" @tap="selectPerson(item,index)">					<view class="image">						<image							:src="selectedTags.includes(item)?'https://i.ringzle.com/file/20240619/ab6bcbe73e114802a93baa7c40c7ac97.png':'https://i.ringzle.com/file/20240619/bf140a7159e249e7bf47be677a5d9585.png'">						</image>					</view>				</view>				<!-- <view @click="goEditTypeInfo(item.houseBaseId)" style="width: 100%;"> -->				<view style="width: 100%;">					<view class="right">						<view class="right-left">							<image :src="item.cover" mode=""></image>						</view>						<view class="right-right">							<view class="top">								<text style="font-size: 30rpx; color: #333;">{{item.comboName}}</text>							</view>							<view class="under">								<view style="font-size: 24rpx; color: #777;">销量:{{item.saleNums}}</view>								<view style="font-size: 36rpx; color: #FF4141; font-weight: Bold; margin-top: 16rpx;">									¥{{item.price}}</view>							</view>						</view>					</view>					<view class="type-btn">						<view class="type-btn-left">						</view>						<view class="type-btn-right">							<view class="" @click="del(item)">								删除							</view>							<view @click="gaijia(item,index)">								改价格							</view>							<view class="" @click="Undered(item)" v-if="item.status==1">								下架							</view>							<view class="" @click="Undered(item)" v-else>								上架							</view>						</view>					</view>				</view>			</view>			<view class="nodata" v-if='roomType.length==0'>				<NoData></NoData>			</view>		</view>		<!-- 批量按钮 -->		<view class="btn-btn" v-if="Selected==true">			<view class="bottom-btn">				<view class="left">					<view class="image">						<!-- 	<image							:src="isSelect?'https://i.ringzle.com/file/20240228/c741a340e19642c59473e6f4a6d2f4be.png':'https://i.ringzle.com/file/20231027/db588133d67548fc82dfb0d128eac9a8.png'">						</image> -->						<image							:src="selectedTags.length>0?'https://i.ringzle.com/file/20240619/ab6bcbe73e114802a93baa7c40c7ac97.png':'https://i.ringzle.com/file/20240619/bf140a7159e249e7bf47be677a5d9585.png'">						</image>					</view>					<view class="text">						已选:{{selectedTags.length}}					</view>				</view>				<view class="right">					<view class="right-btn" @click="piliangxiajia()">						<!-- 批量下架 -->						{{fromData.status==1?'批量下架':'批量上架'}}					</view>					<view class="right-btn" @click="Pricinged()">						批量删除					</view>				</view>			</view>		</view>		<!-- 新增按钮 -->		<view class="btn-btn" @click="addType()" v-else>			<view class="btn">				添加商品			</view>		</view>		<u-popup :show="showPricing" @close="close" :round="30">			<view class="pop-pop">				<view class="hander-one">					<view class="image">						<image src="https://i.ringzle.com/file/20240317/fdb4de4c4413429bb5a98b3f6c2bd856.png" mode="">						</image>					</view>					<view class="text">						<view class="text1">							删除选中的商品						</view>						<view class="text2">							删除后的商品不可在前台继续售卖,是否继续						</view>					</view>				</view>				<view class="hander-two">					<view class="pop-btn-del" @click="showPricing=false">						<text>取消</text>					</view>					<view class="pop-btn-add" @click="GoOndel()">						<text>继续提交</text>					</view>				</view>			</view>		</u-popup>		<u-popup :show="showPricingUnder" @close="close" :round="30">			<view class="pop-pop">				<view class="hander-one">					<view class="image">						<image src="https://i.ringzle.com/file/20240317/fdb4de4c4413429bb5a98b3f6c2bd856.png" mode="">						</image>					</view>					<view class="text">						<view class="text1" v-if="Shelves==false">							下架选中的商品						</view>						<view class="text1" v-else>							上架选中的商品						</view>						<view class="text2" v-if="Shelves==false">							下架后商品不可在前台继续售卖,是否继续?						</view>						<view class="text2" v-else>							确定上架售卖吗?是否继续?						</view>					</view>				</view>				<view class="hander-two">					<view class="pop-btn-del" @click="showPricingUnder=false">						<text>							取消						</text>					</view>					<view class="pop-btn-add" @click="GoOnUnder()">						<text> 继续提交</text>					</view>				</view>			</view>		</u-popup>		<u-popup :show="showPricinggaijia" @close="close" :round="10">			<view class="gaijiadiv">				<view class="toubu">					改价格					<view class="toubux" @click="closegaijia">						<u-icon name="close" color="#000000" size="40"></u-icon>					</view>				</view>				<view class="jiainput">					<u--input type='number' v-model="newprice" placeholder="请输入价格" border="surround"						clearable></u--input>				</view>				<view class="queding">					<view class="queding1" @click="showPricinggaijia=false">						取消					</view>					<view class="queding2" @click="quedingjiae">						确定					</view>				</view>			</view>		</u-popup>		<view class="mainContain">		</view>	</view></template><script>	import TopTabs from '@/components/TopTabs/topTabs.vue';	import NoData from '../../components/NoData/index.vue';	export default {		components: {			TopTabs,			NoData		},		data() {			return {				h: uni.getSystemInfoSync().windowHeight,				mt: uni.getSystemInfoSync().statusBarHeight + 44,				current: 0,				tabList: [{						name: '出售中'					},					{						name: '待上架'					},				],				homestayId: uni.getStorageSync('homestayId') || 0,				roomType: [],				selectedTags: [],				isSelect: false,				Selected: false,				showPricing: false,				showPricingUnder: false,				Shelves: false,				areaShow: false,				list1: [{						name: '创建时间'					},					{						name: '上架时间'					},					{						name: '价格从高到低'					},					{						name: '价格从低到高'					},					// {					// 	name: '销量从高到低'					// },				],				areaShowIndex: null,				fromData: {					homestayId: uni.getStorageSync('homestayId'),					limit: 10,					page: 1,					order: '',					orderField: "",					status: 1				},				ids: [],				obj: {},				showPricinggaijia: false,				newprice: '',				id: '',				from: {					ids: [],					status: null				}			}		},		onLoad(option) {			this.getRepast()		},		methods: {			Pricinged() {				if (this.ids.length != 0) {					this.$api.del('/merchant/hotel/repast', this.ids).then(res => {						if (res.data.code == 0) {							this.getRepast()							this.showPricing = false							this.Selected = false;							this.selectedTags = [];							this.ids = []						} else this.$showToast(res.data.msg);					})				} else this.$showToast('请选择商品');			},			piliangxiajia() {				if (this.from.ids.length != 0) {					this.$api.post('/merchant/hotel/repast/batchPutAway', this.from).then(res => {						if (res.data.code == 0) {							this.selectedTags = [];							this.Selected = false;							this.getRepast(); //获取商品列表						} else this.$showToast(res.data.msg);					})				} else this.$showToast('请选择商品');			},			quedingjiae() {				let obj = {					price: this.newprice,					id: this.id				}				this.$api.put('/merchant/hotel/repast', obj).then(res => {					this.getRepast(); //获取商品列表					this.showPricinggaijia = false;				})			},			closegaijia() {				this.showPricinggaijia = false				this.showPricing = false;				this.newprice = '';			},			gaijia(e, i) {				this.showPricinggaijia = true;				this.id = e.id			},			selectPerson(e, i) {				if (this.selectedTags.includes(e)) {					this.selectedTags = this.selectedTags.filter(t => t !== e);					this.ids.splice(i, 1)				} else {					this.selectedTags.push(e);					this.ids.push(e.id)					this.from.ids = this.ids					this.from.status = e.status == 1 ? 0 : 1				}			},			// 添加商品			addType() {				uni.navigateTo({					url: '/pages/HotelMerchandise/addCommodity'				})			},			close() {				this.showPricing = false				this.showPricingUnder = false				this.showPricinggaijia = false			},			// 删除商品			del(item) {				// let ids = []				this.ids.push(item.id)				this.showPricing = true			},			GoOndel() {				this.$api.del('/merchant/hotel/repast', this.ids).then(res => {					if (res.data.code == 0) {						this.getRepast()						this.showPricing = false						this.ids = []					} else this.$showToast(res.data.msg);				})			},			// 上下架商品			Undered(item) {				this.ids.push(item.id)				this.showPricingUnder = true				if (item.status == 1) {					this.obj = {						ids: this.ids,						status: 0					}				} else {					this.Shelves = true					this.obj = {						ids: this.ids,						status: 1					}				}			},			GoOnUnder() {				this.$api.post('/merchant/hotel/repast/batchPutAway', this.obj).then(res => {					if (res.data.code == 0) {						this.getRepast()						this.showPricingUnder = false						this.ids = []					} else this.$showToast(res.data.msg);				})			},			getRepast() {				this.Shelves = false				this.$api.get('/merchant/hotel/repast/page', this.fromData).then(res => {					this.roomType = res.data.data.list				})			},			// 区域筛选			clickareaShow(e, i) {				console.log(e.name, i);				this.areaShowIndex = i			},			// 上架时间			areaShowed() {				this.areaShow = !this.areaShow			},			changeTab1(index) {				this.current = index;				if (index == 0) {					this.fromData.status = 1					this.getRepast()					this.ids = []					this.from.ids = []					this.from.status = null				} else {					this.fromData.status = 0					this.getRepast()					this.ids = []					this.from.ids = []					this.from.status = null				}			},			// 批量显示			showList() {				this.Selected = !this.Selected			}		},	}</script><style lang="scss" scoped>	.queding {		width: 750rpx;		height: 140rpx;		display: flex;		justify-content: space-around;		align-items: center;		.queding1 {			width: 330rpx;			height: 88rpx;			background: #F0F2F5;			border-radius: 44rpx;			font-family: PingFangSC, PingFang SC;			font-weight: 400;			font-size: 32rpx;			color: #333333;			line-height: 88rpx;			text-align: center;			font-style: normal;		}		.queding2 {			width: 330rpx;			height: 88rpx;			background: #007A69;			border-radius: 44rpx;			font-family: PingFangSC, PingFang SC;			font-weight: 400;			font-size: 32rpx;			color: #FFFFFF;			line-height: 88rpx;			text-align: center;			font-style: normal;		}	}	.jiainput {		width: 690rpx;		height: 100rpx;		margin: 0 auto;	}	.gaijiadiv {		width: 750rpx;		height: 950rpx;		.toubu {			width: 750rpx;			height: 110rpx;			font-family: PingFang-SC, PingFang-SC;			font-weight: bold;			font-size: 36rpx;			color: #333333;			line-height: 110rpx;			text-align: center;			font-style: normal;			position: relative;			.toubux {				position: absolute;				top: 33rpx;				right: 30rpx;			}		}	}	.Doublactive {		// background-color: #F0F7F6 !important;		color: #007A69 !important;		// border: 1px solid #007A69 !important;	}	.contented {		width: 100%;		padding: 0 24rpx;		box-sizing: border-box;		position: relative;	}	.custom_popup {		width: 100%;		height: 100%;		background: rgba(0, 0, 0, .4);		top: 0;		left: 0;		position: absolute;		z-index: 999;		.types {			width: 100%;			padding: 30rpx 30rpx 56rpx;			box-sizing: border-box;			background: #FFFFFF;			.pricequjian {				width: 100%;				.contentpeice {					width: 100%;					display: flex;					justify-content: space-between;					margin: 15rpx 0;					.title {						font-weight: Regular;						font-size: 28rpx;						color: #333333;					}					.image {						width: 28rpx;						height: 20rpx;						image {							width: 100%;							height: 100%;						}					}				}			}		}	}	.pages {		background: #F5F8FA;		box-sizing: border-box;		.tb {			width: 100%;			top: 0;			left: 0;			z-index: 999;			.searchBoxParent {				width: 100%;				background: #fff;				padding: 20rpx 24rpx 6rpx;				box-sizing: border-box;				.searchBox {					width: 100%;					background-color: #fff;				}			}			.tabs {				background: #fff;				padding: 26rpx 0;				display: flex;				align-items: center;				width: 100%;				&>view {					width: 25%;					font-size: 28rpx;					font-family: PingFangSC-Regular, PingFang SC;					font-weight: 400;					color: black;					line-height: 40rpx;					position: relative;					text-align: center;				}				.active {					font-size: 32rpx;					font-family: PingFang-SC-Bold, PingFang-SC;					font-weight: bold;					color: black;					line-height: 45rpx;				}				.active::after {					position: absolute;					content: '';					width: 50rpx;					height: 8rpx;					background: #007A69;					bottom: -26rpx;					left: 60%;					margin-left: -42rpx;				}			}		}		.green {}		.mainContain {			display: flex;			flex-direction: column;			padding: 0 20rpx;			.nodata {				background: white;			}			.card {				background: #fff;				border-radius: 16rpx;				margin: 20rpx 0;				padding: 20rpx;				.header {					display: flex;					justify-content: space-between;					border-bottom: 1px #f3f3f3 solid;					padding: 20rpx;					.red {						color: indianred;					}					.green {						color: #999999;					}					.blue {						color: #1372FF;					}					.grey {						color: #4C5F76;					}					.orange {						color: #FF9100;					}				}				.mainContent {					// border-bottom: 1px #f3f3f3 solid;					display: flex;					padding: 20rpx 0;					// justify-content: space-evenly;					.image {						background-repeat: no-repeat;						background-size: cover;						width: 198rpx;						height: 180rpx;						border-radius: 16rpx;					}					.middle {						padding-top: 16rpx;						color: #777777;						// display: flex;						// flex-direction: column;						// justify-content: space-between;						margin-left: 25rpx;						width: 100%;						.title {							font-weight: 700;							font-size: 32rpx;							color: black;						}						.info {							padding-top: 30rpx;							color: #777777;							// display: flex;							// flex-direction: column;							&>span {								margin-top: 10rpx;							}						}					}					.price {						color: red;						text-align: center;						height: 100%;						align-items: center;						align-self: center;						font-size: 29rpx;						font-weight: 700;					}				}				.bottom {					// padding: 30rpx 20rpx;					display: flex;					justify-content: flex-end;					.detail {						// border: 1rpx solid darkgrey;						border-radius: 16rpx;						color: darkgrey;						padding: 13rpx 34rpx;						background-color: #F6F6F6;						font-size: 26rpx;						color: #333333;						font-weight: Regular;					}					.del {						border-radius: 16rpx;						color: darkgrey;						padding: 13rpx 34rpx;						background-color: #007A69;						font-size: 26rpx;						color: #fff;						font-weight: Regular;					}				}			}		}	}	.u-input__content {		margin-top: 22rpx !important;	}	.uicon-arrow-right,	.uicon-close-circle-fill {		margin-top: 32rpx !important;		margin-right: 20rpx !important;	}	.pop-pop {		height: 30vh;		padding: 46rpx 20rpx 0;		border-radius: 16rpx 16rpx 0 0;		.hander-one {			// display: flex;			// justify-content: space-between;			text-align: center;			.image {				margin: 0 auto;				width: 64rpx;				height: 64rpx;				image {					width: 100%;					height: 100%;				}			}			.text {				.text1 {					margin-top: 24rpx;					font-size: 32rpx;					color: #111111;					font-weight: bold;				}				.text2 {					font-size: 28rpx;					color: #999999;					font-weight: Regular;					margin: 23rpx 0 64rpx;				}			}		}		.hander-two {			display: flex;			justify-content: space-between;			align-items: center;			margin: 30rpx 0;			.pop-btn-del {				width: 48%;				margin: 0 15rpx;				// padding: 22rpx 136rpx;				font-size: 32rpx;				height: 88rpx;				line-height: 88rpx;				color: #111111;				font-weight: Regular;				background-color: #F0F2F5;				border-radius: 50rpx;				text-align: center;			}			.pop-btn-add {				height: 88rpx;				line-height: 88rpx;				width: 48%;				border-radius: 50rpx;				margin: 0 15rpx;				background-color: #1372FF;				// padding: 22rpx 100rpx;				font-size: 32rpx;				color: #FFFFFF;				font-weight: Regular;				text-align: center;			}		}		.hander-three {			display: flex;			border: 1rpx solid #CCCCCC;			border-radius: 16rpx;			justify-content: space-between;			height: 102rpx;			line-height: 102rpx;			.hander-three-text {				width: 200rpx;				text-align: left;				display: flex;				justify-content: space-between;				margin: 0 20rpx;			}			.hander-three-input {				width: 55%;			}			.hander-three-icon {				height: 102rpx;				line-height: 102rpx;			}		}		.hander-four {			margin-top: 30rpx;			display: flex;			border-radius: 16rpx;			justify-content: space-between;			border: 1rpx solid #CCCCCC;			height: 102rpx;			line-height: 102rpx;			.hander-three-text {				width: 200rpx;				text-align: center;				display: flex;				justify-content: space-between;				margin: 0 20rpx;			}			.hander-three-input {				width: 55%;			}			.hander-three-icon {				height: 102rpx;				line-height: 102rpx;			}		}	}	.page {		background: #F3F4F4;		padding-bottom: 260rpx;		box-sizing: border-box;		overflow-y: auto;		overflow-x: auto;	}	.typeNum {		// width: 100%;		height: 73rpx;		display: flex;		justify-content: space-between;		padding: 23rpx 24rpx;		align-items: center;		.left {			display: flex;			align-items: center;			.active {				color: #007A69;			}		}		.right {			display: flex;			align-items: center;			.image {				margin: 0 10rpx;				width: 30rpx;				height: 30rpx;				image {					width: 100%;					height: 100%;				}			}			.text {				font-size: 28rpx;				font-weight: Regular;				color: #333333;			}		}	}	.type {		margin: 0 auto;		border-radius: 10rpx 10rpx 10rpx 10rpx;		width: 86%;		// height: 114rpx;		background-color: #fff;		padding: 30rpx;		margin-bottom: 20rpx;		display: flex;		.left {			margin-top: 30rpx;			height: 114rpx;			line-height: 150rpx;			margin-right: 20rpx;			.image {				margin: 0 10rpx;				width: 40rpx;				height: 40rpx;				image {					width: 100%;					height: 100%;				}			}		}		.right {			width: 100%;			display: flex;			.right-left {				width: 172rpx;				height: 172rpx;				border-radius: 16rpx;				margin-right: 22rpx;				image {					width: 100%;					height: 100%;					border-radius: 16rpx;				}			}			.right-right {}		}		.type-btn {			width: 100%;			display: flex;			justify-content: space-between;			.type-btn-left {				width: 50rpx;			}			.type-btn-right {				display: flex;				view {					padding: 15rpx 23rpx;					background-color: #F6F6F6;					font-size: 24rpx;					color: #333;					font-weight: Regular;					margin-right: 20rpx;					border-radius: 50rpx;				}			}		}	}	.top {		display: flex;		justify-content: space-between;	}	.under {		margin-top: 20rpx;		// display: flex;		// justify-content: space-between;	}	.btn-btn {		width: 100%;		height: 136rpx;		background-color: #fff;		position: fixed;		bottom: 0;		padding: 30rpx 0 0;		// margin: 0 auto;		z-index: 9;		// margin-top: 30rpx;		// margin-left: 30rpx;		.bottom-btn {			display: flex;			justify-content: space-between;			margin: 0 24rpx;			.left {				width: 25%;				display: flex;				align-items: center;				.image {					width: 38rpx;					height: 38rpx;					margin: 0 10rpx;					image {						width: 100%;						height: 100%;					}				}			}			.right {				width: 75%;				display: flex;				justify-content: space-evenly;				.right-btn {					width: 148rpx;					height: 80rpx;					line-height: 80rpx;					background-color: #1372FF;					border-radius: 16rpx;					font-size: 26rpx;					color: #fff;					font-weight: Regular;					text-align: center;				}			}		}	}	.btn {		margin: 0 auto;		width: 690rpx;		height: 96rpx;		background-color: #1372FF;		color: #fff;		display: flex;		justify-content: center;		align-items: center;		font-size: 34rpx;		border-radius: 48rpx;	}</style>
 |