浏览代码

no message

xiaoxin 2 年之前
父节点
当前提交
9ad066115b

+ 1 - 1
pages.json

@@ -4,7 +4,7 @@
 			"path": "pages/home3/home3",
 			"path": "pages/home3/home3",
 			"style": {
 			"style": {
 				"navigationBarTitleText": "",
 				"navigationBarTitleText": "",
-				"enablePullDownRefresh": false,
+				"enablePullDownRefresh": true,
 				"navigationStyle": "custom"
 				"navigationStyle": "custom"
 			}
 			}
 		},
 		},

+ 85 - 15
pages/affirmOrder/affirmOrder.vue

@@ -48,7 +48,7 @@
 				<view class="msg_box">
 				<view class="msg_box">
 					<view class="box_key">住客姓名</view>
 					<view class="box_key">住客姓名</view>
 					<view class="box_value">
 					<view class="box_value">
-						<input type="text" placeholder="请输入住客姓名" v-model="clientName" />
+						<input disabled type="text" placeholder="请选择住客" v-model="clientName" />
 					</view>
 					</view>
 					<view class="box_icon" @click="handleSelectClient">
 					<view class="box_icon" @click="handleSelectClient">
 						<img class="img2" src="../../static/index/people.png" />
 						<img class="img2" src="../../static/index/people.png" />
@@ -57,7 +57,7 @@
 				<view class="msg_box">
 				<view class="msg_box">
 					<view class="box_key">联系电话</view>
 					<view class="box_key">联系电话</view>
 					<view class="box_value">
 					<view class="box_value">
-						<input type="number" maxlength="11" placeholder="请输入联系电话" v-model="clientPhone" />
+						<input disabled type="number" maxlength="11" placeholder="请选择联系电话" v-model="clientPhone" />
 					</view>
 					</view>
 				</view>
 				</view>
 				<!-- <view class="msg_box" @click="handleSelectTime">
 				<!-- <view class="msg_box" @click="handleSelectTime">
@@ -116,24 +116,30 @@
 
 
 				<view class="all_box">
 				<view class="all_box">
 					<view class="box_list">
 					<view class="box_list">
-						<view class="list_item" v-for="(item, index) in info.dayList" :key="index">{{ item }}</view>
+						<view class="list_item" v-for="(item, index) in dayList" :key="index">
+							{{ item.date }}
+							<text>{{ item.topinfo }}</text>
+						</view>
+					</view>
+					<view class="box_total">
+						{{ roomCount }}间 x {{ info.nightNum }}晚
+						<!-- x ¥{{ info.item.price }} -->
 					</view>
 					</view>
-					<view class="box_total">{{ roomCount }}间 x {{ info.nightNum }}晚 x ¥{{ info.item.price }}</view>
 				</view>
 				</view>
 			</view>
 			</view>
 
 
 			<!-- 优惠区域 -->
 			<!-- 优惠区域 -->
-			<view class="sale" v-if="couponNum">
+			<view class="sale" v-if="chooseObj.discountAmount">
 				<view class="sale_top">
 				<view class="sale_top">
 					<view class="top_key">优惠</view>
 					<view class="top_key">优惠</view>
-					<view class="top_value">- ¥70</view>
+					<view class="top_value">- ¥{{ chooseObj.discountAmount }}</view>
 				</view>
 				</view>
 				<view class="sale_bottom">
 				<view class="sale_bottom">
 					<view class="bottom_key">
 					<view class="bottom_key">
 						<img src="../../static/index/coupon.png" />
 						<img src="../../static/index/coupon.png" />
-						折扣卷
+						{{ chooseObj.typeName }}
 					</view>
 					</view>
-					<view class="bottom_value">- ¥70</view>
+					<view class="bottom_value">- ¥{{ chooseObj.discountAmount }}</view>
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
@@ -171,7 +177,10 @@ export default {
 			// 胶囊按钮栏高度
 			// 胶囊按钮栏高度
 			customBarH: 0,
 			customBarH: 0,
 			// 优惠券数量
 			// 优惠券数量
-			couponNum: 0
+			couponNum: 0,
+			chooseObj: {},
+			dayList: [],
+			totalMoney: 0
 		}
 		}
 	},
 	},
 	created() {
 	created() {
@@ -186,24 +195,69 @@ export default {
 			}
 			}
 		})
 		})
 	},
 	},
+	onShow() {
+		this.getCouponNum()
+	},
 	onLoad(options) {
 	onLoad(options) {
 		this.info = JSON.parse(options.info)
 		this.info = JSON.parse(options.info)
+		// console.log(this.info)
 		this.hotelName = this.info.hotelName
 		this.hotelName = this.info.hotelName
+		this.getDayList()
 		uni.$on('change', this.change)
 		uni.$on('change', this.change)
+		uni.$on('choose', this.choose)
 	},
 	},
 	computed: {
 	computed: {
 		// 总费用
 		// 总费用
 		totalPrice() {
 		totalPrice() {
+			// if (this.info.item) {
+			// 	return (this.roomCount * this.info.item.price * this.info.nightNum - (this.chooseObj.discountAmount * 1 || 0)).toFixed(2)
+			// }
 			if (this.info.item) {
 			if (this.info.item) {
-				return (this.roomCount * this.info.item.price * this.info.nightNum).toFixed(2)
+				let tem = this.roomCount * this.totalMoney - (this.chooseObj.discountAmount * 1 || 0)
+				let res = tem > 0 ? tem.toFixed(2) : 0
+				return res
 			}
 			}
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+		async getDayList() {
+			const res = await this.$myRequest({
+				url: '/mhotel/house/price/dailyPrice.action',
+				data: {
+					roomId: this.info.item.id,
+					startTime: this.info.queryStartTime,
+					endTime: this.info.queryEndTime
+				}
+			})
+			// console.log(res)
+			if (res.code === 200) {
+				this.dayList = res.data.list
+				this.totalMoney = res.data.totalPrice
+			}
+		},
+		async getCouponNum() {
+			const res = await this.$myRequest({
+				url: '/mhotel/hcusefulCoupon.action',
+				data: {
+					hotelId: this.info.hotelId,
+					page: 1,
+					rows: 1,
+					userId: uni.getStorageSync('userInfo').id
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				this.couponNum = res.page.total
+			}
+		},
 		change(e) {
 		change(e) {
 			this.clientName = e.name
 			this.clientName = e.name
 			this.clientPhone = e.phone
 			this.clientPhone = e.phone
 		},
 		},
+		choose(e) {
+			this.chooseObj = e.data
+			// console.log(this.chooseObj)
+		},
 		handleSelectClient() {
 		handleSelectClient() {
 			uni.navigateTo({
 			uni.navigateTo({
 				url: '/pages/common/common?type=1'
 				url: '/pages/common/common?type=1'
@@ -250,9 +304,18 @@ export default {
 		async goPagePay() {
 		async goPagePay() {
 			const reName = /^[\u4e00-\u9fa5]{2,4}$/
 			const reName = /^[\u4e00-\u9fa5]{2,4}$/
 			const rePhone = /^[1][3,4,5,7,8,9][0-9]{9}$/
 			const rePhone = /^[1][3,4,5,7,8,9][0-9]{9}$/
+			if (this.totalPrice <= 0) {
+				uni.showToast({
+					title: '支付金额不能小于等于0',
+					icon: 'none',
+					mask: true
+				})
+				return
+			}
+
 			if (!this.clientName) {
 			if (!this.clientName) {
 				uni.showToast({
 				uni.showToast({
-					title: '请输入住客姓名',
+					title: '请选择住客',
 					icon: 'none',
 					icon: 'none',
 					mask: true
 					mask: true
 				})
 				})
@@ -267,7 +330,7 @@ export default {
 			}
 			}
 			if (!this.clientPhone) {
 			if (!this.clientPhone) {
 				uni.showToast({
 				uni.showToast({
-					title: '请输入联系电话',
+					title: '请选择联系电话',
 					icon: 'none',
 					icon: 'none',
 					mask: true
 					mask: true
 				})
 				})
@@ -290,7 +353,9 @@ export default {
 					houseOrderNumber: this.roomCount,
 					houseOrderNumber: this.roomCount,
 					userName: this.clientName,
 					userName: this.clientName,
 					userPhone: this.clientPhone,
 					userPhone: this.clientPhone,
-					userId: uni.getStorageSync('userInfo').id
+					userId: uni.getStorageSync('userInfo').id,
+					complaintId: this.chooseObj.complaintId || '',
+					useId: this.chooseObj.id || ''
 				}
 				}
 			})
 			})
 			// console.log(res)
 			// console.log(res)
@@ -304,8 +369,9 @@ export default {
 			uni.navigateBack(1)
 			uni.navigateBack(1)
 		},
 		},
 		handleGoPage() {
 		handleGoPage() {
+			let temTotalPrice = (this.roomCount * this.totalMoney).toFixed(2)
 			uni.navigateTo({
 			uni.navigateTo({
-				url: '/pages/coupon/coupon'
+				url: `/pages/coupon/coupon?id=${this.info.hotelId}&totalPrice=${temTotalPrice}&complaintId=${this.chooseObj.complaintId}`
 			})
 			})
 		}
 		}
 	}
 	}
@@ -650,6 +716,10 @@ export default {
 
 
 					.list_item {
 					.list_item {
 						margin-top: 30rpx;
 						margin-top: 30rpx;
+
+						text {
+							margin-left: 120rpx;
+						}
 					}
 					}
 				}
 				}
 
 
@@ -751,4 +821,4 @@ export default {
 		}
 		}
 	}
 	}
 }
 }
-</style>
+</style>

+ 99 - 73
pages/appraise/appraise.vue

@@ -1,37 +1,37 @@
 <template>
 <template>
-	<view class="container">
+	<view class="container" v-if="total !== null">
 		<!-- 顶部评分区域 -->
 		<!-- 顶部评分区域 -->
 		<view class="header">
 		<view class="header">
 			<view class="header_box">
 			<view class="header_box">
 				<!-- 总评分区域 -->
 				<!-- 总评分区域 -->
-				<view class="box_left">5.0</view>
+				<view class="box_left">{{ score }}</view>
 				<view class="box_right">
 				<view class="box_right">
 					<!-- 位置评分区域 -->
 					<!-- 位置评分区域 -->
 					<view class="right_item">
 					<view class="right_item">
-						<view class="item_info">位置 4.6</view>
+						<view class="item_info">位置 {{ scoreWz }}</view>
 						<view class="item_progress">
 						<view class="item_progress">
-							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreWz * 1) / 5) * 100" />
 						</view>
 						</view>
 					</view>
 					</view>
 					<!-- 设施评分区域 -->
 					<!-- 设施评分区域 -->
 					<view class="right_item">
 					<view class="right_item">
-						<view class="item_info">设施 4.6</view>
+						<view class="item_info">设施 {{ scoreSs }}</view>
 						<view class="item_progress">
 						<view class="item_progress">
-							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreSs * 1) / 5) * 100" />
 						</view>
 						</view>
 					</view>
 					</view>
 					<!-- 服务评分区域 -->
 					<!-- 服务评分区域 -->
 					<view class="right_item">
 					<view class="right_item">
-						<view class="item_info">服务 4.6</view>
+						<view class="item_info">服务 {{ scoreFw }}</view>
 						<view class="item_progress">
 						<view class="item_progress">
-							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreFw * 1) / 5) * 100" />
 						</view>
 						</view>
 					</view>
 					</view>
 					<!-- 卫生评分区域 -->
 					<!-- 卫生评分区域 -->
 					<view class="right_item">
 					<view class="right_item">
-						<view class="item_info">卫生 4.6</view>
+						<view class="item_info">卫生 {{ scoreWs }}</view>
 						<view class="item_progress">
 						<view class="item_progress">
-							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+							<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreWs * 1) / 5) * 100" />
 						</view>
 						</view>
 					</view>
 					</view>
 				</view>
 				</view>
@@ -46,20 +46,20 @@
 		<!-- 评价列表 -->
 		<!-- 评价列表 -->
 		<view class="body">
 		<view class="body">
 			<!-- 每一个评价区域 -->
 			<!-- 每一个评价区域 -->
-			<view class="body_box" v-for="item in commentList" :key="item.id">
+			<view class="body_box" v-for="item in commentList" :key="item.id" @click="handleGoDetail(item)">
 				<!-- 用户信息区域 -->
 				<!-- 用户信息区域 -->
-				<view class="box_userInfo" @click="handleGoDetail(item)">
-					<img mode="aspectFill" :src="item.imgUrl" />
+				<view class="box_userInfo">
+					<img mode="aspectFill" :src="item.headPhoto" />
 					<view class="userInfo_msg">
 					<view class="userInfo_msg">
-						<view class="msg_name">{{ item.name }}</view>
+						<view class="msg_name">{{ item.userName }}</view>
 						<view class="msg_star">
 						<view class="msg_star">
-							<uni-rate readonly activeColor="#FFC300" :size="16" :value="item.rate" />
+							<uni-rate readonly activeColor="#FFC300" :size="16" :value="item.score" />
 						</view>
 						</view>
 					</view>
 					</view>
 				</view>
 				</view>
 
 
 				<!-- 入住时间区域 -->
 				<!-- 入住时间区域 -->
-				<view class="box_time">{{ item.liveTime }}入住,{{ item.subTime }}发表 | {{ item.type }}</view>
+				<view class="box_time">{{ item.liveTime.slice(0, 10) }}入住,{{ item.commentTime.slice(0, 10) }}发表 | {{ item.houseName }}</view>
 
 
 				<!-- 评价内容区域 -->
 				<!-- 评价内容区域 -->
 				<uv-read-more show-height="85rpx" closeText="全文" color="#096663" fontSize="24rpx" textIndent="0" :toggle="true" :shadowStyle="shadowStyle">
 				<uv-read-more show-height="85rpx" closeText="全文" color="#096663" fontSize="24rpx" textIndent="0" :toggle="true" :shadowStyle="shadowStyle">
@@ -70,16 +70,21 @@
 
 
 				<!-- 图片区域 -->
 				<!-- 图片区域 -->
 				<view class="box_img">
 				<view class="box_img">
-					<img v-for="(ele, index) in item.imgList" :key="index" mode="aspectFill" :src="ele" @click="handleClickImg(item.imgList, index)" />
+					<img v-for="(ele, index) in item.url" :key="index" mode="aspectFill" :src="ele" @click.stop="handleClickImg(item.url, index)" />
 				</view>
 				</view>
 
 
 				<!-- 评论按钮区域 -->
 				<!-- 评论按钮区域 -->
 				<view class="box_comment">
 				<view class="box_comment">
 					<img src="../../static/index/comment.png" />
 					<img src="../../static/index/comment.png" />
-					<view>评论({{ item.count }})</view>
+					<view>评论({{ item.commentCount }})</view>
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
+
+		<view class="noData" v-if="commentList.length === 0">
+			<img src="../../static/images/noData.png" />
+			暂无评论
+		</view>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -88,7 +93,7 @@ export default {
 	data() {
 	data() {
 		return {
 		return {
 			// 分段器分类数组
 			// 分段器分类数组
-			headerList: ['全部(256)', '有图/视频(42)', '商家回复(42)'],
+			headerList: ['全部', '有图/视频', '商家回复'],
 			// 当前激活的分段器索引
 			// 当前激活的分段器索引
 			activeCurrent: 0,
 			activeCurrent: 0,
 			// 评价内容区域阴影样式
 			// 评价内容区域阴影样式
@@ -96,70 +101,77 @@ export default {
 				backgroundImage: 'none'
 				backgroundImage: 'none'
 			},
 			},
 			// 评价列表数据
 			// 评价列表数据
-			commentList: [
-				{
-					id: 1,
-					imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-					name: '张三',
-					rate: 4.6,
-					liveTime: '2023-07',
-					subTime: '2023-08-01',
-					type: '大床房',
-					content:
-						'评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富',
-					imgList: [
-						'https://img1.baidu.com/it/u=2776549017,1408541252&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500',
-						'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201912%2F28%2F20191228151619_wxioq.thumb.1000_0.jpg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695352503&t=cf595866bbcbd5c6a01ffe69913da7e0'
-					],
-					count: 12
-				},
-				{
-					id: 2,
-					imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-					name: '李四',
-					rate: 4.1,
-					liveTime: '2023-08',
-					subTime: '2023-08-11',
-					type: '双人房',
-					content:
-						'评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富',
-					imgList: [
-						'https://img1.baidu.com/it/u=2776549017,1408541252&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500',
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-						'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201912%2F28%2F20191228151619_wxioq.thumb.1000_0.jpg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695352503&t=cf595866bbcbd5c6a01ffe69913da7e0',
-						'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F70a86822-e473-4ad8-9147-fad3e5cbc5ec%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695352600&t=689d4a86e77580db11cdc227291ef6f7'
-					],
-					count: 8
-				},
-				{
-					id: 3,
-					imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-					name: '王八',
-					rate: 3.8,
-					liveTime: '2023-07',
-					subTime: '2023-07-11',
-					type: '普通房',
-					content:
-						'评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富',
-					imgList: [],
-					count: 26
-				}
-			]
+			commentList: [],
+			// 民宿id
+			hotelId: '',
+			// 当前页
+			page: 1,
+			// 每页多少条
+			rows: 6,
+			// 总条数
+			total: null,
+			// 总评分
+			score: '',
+			// 服务评分
+			scoreFw: '',
+			// 设施评分
+			scoreSs: '',
+			// 卫生评分
+			scoreWs: '',
+			// 位置评分
+			scoreWz: ''
+		}
+	},
+	onLoad(options) {
+		this.hotelId = options.hotelId
+		this.getData()
+	},
+	onReachBottom() {
+		if (this.commentList.length < this.total) {
+			this.page++
+			this.getData()
+		} else {
+			uni.showToast({
+				title: '没有更多数据了',
+				icon: 'none'
+			})
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/abcaevaluatePage.action',
+				data: {
+					hotelId: this.hotelId,
+					page: this.page,
+					rows: this.rows,
+					status: this.activeCurrent
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				this.headerList = [`全部(${res.score.totalCount})`, `有图/视频(${res.score.pictureCount})`, `商家回复(${res.score.commentCount})`]
+				this.score = res.score.score.toFixed(1)
+				this.scoreFw = res.score.scoreFw.toFixed(1)
+				this.scoreSs = res.score.scoreSs.toFixed(1)
+				this.scoreWs = res.score.scoreWs.toFixed(1)
+				this.scoreWz = res.score.scoreWz.toFixed(1)
+				this.commentList = res.page.pageList || []
+				this.total = res.page.total
+			}
+		},
 		// 点击每一个评价回调
 		// 点击每一个评价回调
 		handleGoDetail(item) {
 		handleGoDetail(item) {
-			let info = encodeURIComponent(JSON.stringify(item))
 			uni.navigateTo({
 			uni.navigateTo({
-				url: `/pages/appraiseDetail/appraiseDetail?info=${info}`
+				url: `/pages/appraiseDetail/appraiseDetail?id=${item.id}`
 			})
 			})
 		},
 		},
 		// 切换分段器时的回调
 		// 切换分段器时的回调
 		onClickItem(e) {
 		onClickItem(e) {
-			if (this.current !== e.currentIndex) {
-				this.current = e.currentIndex
-			}
+			this.activeCurrent = e.currentIndex
+			this.page = 1
+			this.commentList = []
+			this.getData()
 		},
 		},
 		// 点击评价图片回调
 		// 点击评价图片回调
 		handleClickImg(url, index) {
 		handleClickImg(url, index) {
@@ -308,5 +320,19 @@ export default {
 			}
 			}
 		}
 		}
 	}
 	}
+
+	.noData {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		padding-bottom: 20rpx;
+
+		img {
+			margin-top: 60rpx;
+			width: 600rpx;
+			height: 600rpx;
+		}
+	}
 }
 }
 </style>
 </style>

+ 179 - 43
pages/appraiseDetail/appraiseDetail.vue

@@ -4,9 +4,9 @@
 		<view class="header">
 		<view class="header">
 			<!-- 用户信息区域 -->
 			<!-- 用户信息区域 -->
 			<view class="header_info">
 			<view class="header_info">
-				<img mode="aspectFill" src="https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375" />
+				<img mode="aspectFill" :src="info.headPhoto" />
 				<view class="info_msg">
 				<view class="info_msg">
-					<view class="msg_name">张三</view>
+					<view class="msg_name">{{ info.userName }}</view>
 					<view class="msg_star">
 					<view class="msg_star">
 						<uni-rate readonly activeColor="#FFC300" :size="16" :value="info.score" />
 						<uni-rate readonly activeColor="#FFC300" :size="16" :value="info.score" />
 					</view>
 					</view>
@@ -28,16 +28,16 @@
 
 
 		<!-- 民宿信息区域 -->
 		<!-- 民宿信息区域 -->
 		<view class="hotel">
 		<view class="hotel">
-			<img mode="aspectFill" src="https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375" />
+			<img mode="aspectFill" :src="info.coverImg" />
 			<view class="hotel_info">
 			<view class="hotel_info">
 				<view class="info_name">{{ info.hotelName }}</view>
 				<view class="info_name">{{ info.hotelName }}</view>
 				<view class="info_star">
 				<view class="info_star">
-					<uni-rate readonly activeColor="#FFC300" :size="12" :value="4" />
-					<view class="star_num">4.0</view>
+					<uni-rate readonly activeColor="#FFC300" :size="12" :value="info.hotelScore * 1" />
+					<view class="star_num">{{ info.hotelScore }}</view>
 				</view>
 				</view>
 				<view class="info_tags">
 				<view class="info_tags">
-					<view class="tag_item">双溪镇</view>
-					<view class="tag_item">包吃住型</view>
+					<view class="tag_item">{{ info.hotelTownship }}</view>
+					<view class="tag_item">{{ info.hotelType }}</view>
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
@@ -45,83 +45,162 @@
 		<!-- 评论回复区域 -->
 		<!-- 评论回复区域 -->
 		<view class="reply">
 		<view class="reply">
 			<!-- 评论总条数区域 -->
 			<!-- 评论总条数区域 -->
-			<view class="reply_title">
+			<!-- <view class="reply_title">
 				<img src="../../static/index/comment.png" />
 				<img src="../../static/index/comment.png" />
-				评论(24)
-			</view>
+				评论({{ infoList.length }})
+			</view> -->
 
 
 			<!-- 评论列表区域 -->
 			<!-- 评论列表区域 -->
-			<view class="reply_box">
+			<view class="reply_box" v-if="infoList.length">
 				<!-- 每一条评论区域 -->
 				<!-- 每一条评论区域 -->
-				<view class="box_item">
+				<view class="box_item" v-for="item in infoList" :key="item.id">
 					<!-- 用户区域 -->
 					<!-- 用户区域 -->
 					<view class="item_user">
 					<view class="item_user">
-						<img mode="aspectFill" src="https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375" />
+						<img mode="aspectFill" :src="item.headPhoto" />
 						<view class="user_info">
 						<view class="user_info">
-							<view class="info_top">张三</view>
-							<view class="info_bottom">2023/05/25</view>
+							<view class="info_top">{{ item.commentName }}</view>
+							<view class="info_bottom">{{ item.dateTime }}</view>
 						</view>
 						</view>
 					</view>
 					</view>
 					<!-- 评价内容区域 -->
 					<!-- 评价内容区域 -->
-					<view class="item_content">评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富</view>
-				</view>
-
-				<view class="box_item">
-					<!-- 用户区域 -->
-					<view class="item_user">
-						<img mode="aspectFill" src="https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375" />
-						<view class="user_info">
-							<view class="info_top">商家</view>
-							<view class="info_bottom">2023/05/25</view>
+					<view class="item_content">{{ item.content }}</view>
+					<view class="item_child">
+						<view class="child_box" v-for="ele in item.commentVoList" :key="ele.id">
+							<view class="box_user">
+								<img mode="aspectFill" :src="ele.headPhoto" />
+								<view class="user_info">
+									<view class="info_top">{{ ele.commentName }}</view>
+									<view class="info_bottom">{{ ele.dateTime }}</view>
+								</view>
+							</view>
+							<view class="box_content">
+								<text class="content_key">回复{{ ele.userName }}:</text>
+								{{ ele.content }}
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
-					<!-- 评价内容区域 -->
-					<view class="item_content">
-						<text class="content_key">回复张三:</text>
-						评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富
+					<view class="item_foot" @click="handleComment(item)">
+						<img src="../../static/index/comment.png" />
+						回复
 					</view>
 					</view>
 				</view>
 				</view>
 			</view>
 			</view>
 
 
 			<!-- 输入框区域 -->
 			<!-- 输入框区域 -->
 			<view class="reply_input">
 			<view class="reply_input">
-				<input type="text" placeholder="说点什么吧..." />
+				<input type="text" confirm-type="send" placeholder="说点什么吧..." v-model="inputValue" @confirm="handleConfirm" />
 			</view>
 			</view>
 		</view>
 		</view>
 	</view>
 	</view>
 </template>
 </template>
 
 
 <script>
 <script>
+var dayjs = require('dayjs')
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
 			// 评价详情信息
 			// 评价详情信息
 			info: null,
 			info: null,
-			id: null
+			// 评价列表信息
+			infoList: [],
+			id: null,
+			inputValue: ''
 		}
 		}
 	},
 	},
 	onLoad(options) {
 	onLoad(options) {
 		// console.log(options)
 		// console.log(options)
 		this.id = options.id
 		this.id = options.id
 		this.getData()
 		this.getData()
-		// this.info = JSON.parse(decodeURIComponent(options.info))
-		// console.log(this.info)
 	},
 	},
 	methods: {
 	methods: {
+		handleComment(item) {
+			uni.showModal({
+				title: '请输入评论',
+				editable: true,
+				success: async (res) => {
+					if (res.confirm) {
+						if (!res.content) {
+							uni.showToast({
+								title: '评论内容不能为空',
+								icon: 'none',
+								mask: true
+							})
+							setTimeout(() => {
+								this.handleComment()
+							}, 1500)
+						} else {
+							let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
+							const res = await this.$myRequest({
+								url: '/mhotel/abcareplyComment.action',
+								data: {
+									commentId: item.id,
+									commentParentId: item.commentId,
+									commentName: item.commentName,
+									content: res.content,
+									commentStatus: 1,
+									createId: uni.getStorageSync('userInfo').id,
+									createUsername: uni.getStorageSync('userInfo').user_name,
+									createDate: time,
+									modifyDate: time
+								}
+							})
+							// console.log(res);
+							if (res.code === 200) {
+								uni.showToast({
+									title: res.message,
+									icon: 'success',
+									mask: true
+								})
+								this.getData()
+							}
+						}
+					}
+				}
+			})
+		},
 		// 获取详情数据
 		// 获取详情数据
-		getData() {
-			uni.request({
-				url: 'http://192.168.161.224:8088/mhotel/abcapersonageDetails.action',
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/abcacommentDetails.action',
 				data: {
 				data: {
 					bookingCommentId: this.id
 					bookingCommentId: this.id
-				},
-				success: (res) => {
-					// console.log(res.data)
-					if (res.data.code === 200) {
-						this.info = res.data.commentDetails
-					}
 				}
 				}
 			})
 			})
+			// console.log(res);
+			if (res.code === 200) {
+				this.info = res.commentDetails
+				this.infoList = res.comment || []
+			}
+		},
+		async handleConfirm() {
+			if (!this.inputValue) {
+				return
+			}
+			let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
+			const res = await this.$myRequest({
+				url: '/mhotel/abcareplyComment.action',
+				data: {
+					commentId: this.info.id,
+					commentParentId: this.info.id,
+					commentName: this.info.userName,
+					content: this.inputValue,
+					commentStatus: 1,
+					createId: uni.getStorageSync('userInfo').id,
+					createUsername: uni.getStorageSync('userInfo').user_name,
+					createDate: time,
+					modifyDate: time
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				uni.showToast({
+					title: res.message,
+					icon: 'success',
+					mask: true
+				})
+				this.inputValue = ''
+				this.getData()
+			}
 		},
 		},
 		// 点击图片回调
 		// 点击图片回调
 		handleLookImg(urls, current) {
 		handleLookImg(urls, current) {
@@ -311,6 +390,63 @@ export default {
 						color: #808080;
 						color: #808080;
 					}
 					}
 				}
 				}
+
+				.item_child {
+					.child_box {
+						margin-bottom: 10rpx;
+						.box_user {
+							display: flex;
+							align-items: center;
+							height: 120rpx;
+
+							img {
+								width: 70rpx;
+								height: 70rpx;
+								border-radius: 50%;
+							}
+
+							.user_info {
+								display: flex;
+								flex-direction: column;
+								justify-content: space-between;
+								margin-left: 18rpx;
+								height: 70rpx;
+
+								.info_top {
+									font-size: 28rpx;
+								}
+								.info_bottom {
+									color: #a6a6a6;
+									font-size: 24rpx;
+								}
+							}
+						}
+
+						.box_content {
+							font-size: 24rpx;
+
+							.content_key {
+								color: #808080;
+							}
+						}
+					}
+				}
+
+				.item_foot {
+					display: flex;
+					justify-content: flex-end;
+					align-items: center;
+					padding-right: 35rpx;
+					height: 70rpx;
+					font-size: 24rpx;
+					border-bottom: 1rpx solid #e6e6e6;
+
+					img {
+						margin-right: 12rpx;
+						width: 25rpx;
+						height: 21rpx;
+					}
+				}
 			}
 			}
 		}
 		}
 
 
@@ -319,7 +455,7 @@ export default {
 			align-items: center;
 			align-items: center;
 			box-sizing: border-box;
 			box-sizing: border-box;
 			padding: 0 33rpx;
 			padding: 0 33rpx;
-			margin: 54rpx auto;
+			margin: 15rpx auto 54rpx;
 			width: 710rpx;
 			width: 710rpx;
 			height: 78rpx;
 			height: 78rpx;
 			font-size: 24rpx;
 			font-size: 24rpx;

+ 60 - 45
pages/collect/collect.vue

@@ -8,22 +8,26 @@
 		<!-- 列表区域 -->
 		<!-- 列表区域 -->
 		<scroll-view class="body" scroll-y @scrolltolower="handlePull">
 		<scroll-view class="body" scroll-y @scrolltolower="handlePull">
 			<!-- 每一个盒子区域 -->
 			<!-- 每一个盒子区域 -->
-			<view class="box" v-for="item in list" :key="item.id">
+			<view class="box" v-for="item in list" :key="item.id" @click="handleGoPage(item)">
 				<!-- 民宿图片区域 -->
 				<!-- 民宿图片区域 -->
-				<img mode="aspectFill" :src="item.imgUrl" />
+				<img mode="aspectFill" :src="item.coverImg" />
 				<!-- 民宿信息区域 -->
 				<!-- 民宿信息区域 -->
 				<view class="box_info">
 				<view class="box_info">
-					<view class="info_name">{{ item.name }}</view>
+					<view class="info_name">{{ item.hotel_name }}</view>
 					<view class="info_rate">
 					<view class="info_rate">
-						<view class="rate_num">{{ item.rate }}</view>
-						<view class="rate_msg">{{ item.msg }}</view>
+						<view class="rate_num">{{ item.score === 0 ? '5.0' : item.score }}</view>
+						<view v-if="item.score < 1 && item.score > 0" class="rate_msg">很差</view>
+						<view v-if="item.score < 2 && item.score > 1" class="rate_msg">差</view>
+						<view v-if="item.score < 3 && item.score > 2" class="rate_msg">一般</view>
+						<view v-if="item.score < 4 && item.score > 3" class="rate_msg">棒</view>
+						<view v-if="item.score > 4 || item.score === 0" class="rate_msg">超棒</view>
 					</view>
 					</view>
-					<view class="info_town">{{ item.town }}</view>
+					<view class="info_town">{{ item.hotelTownshipName }}</view>
 				</view>
 				</view>
 				<!-- 民宿价格区域 -->
 				<!-- 民宿价格区域 -->
 				<view class="box_price">
 				<view class="box_price">
 					<view class="price_icon">¥</view>
 					<view class="price_icon">¥</view>
-					<view class="price_num">{{ item.price }}</view>
+					<view class="price_num">{{ item.min_price }}</view>
 					<view class="price_msg">起</view>
 					<view class="price_msg">起</view>
 				</view>
 				</view>
 			</view>
 			</view>
@@ -45,53 +49,64 @@ export default {
 			// 分段器数组
 			// 分段器数组
 			headerList: ['收藏', '住过'],
 			headerList: ['收藏', '住过'],
 			// 列表数据
 			// 列表数据
-			list: [
-				// {
-				// 	id: 1,
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '民宿名称',
-				// 	rate: '5.0',
-				// 	town: '宝峰镇',
-				// 	price: 748,
-				// 	msg: '超棒'
-				// },
-				// {
-				// 	id: 2,
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '开心民宿',
-				// 	rate: '5.0',
-				// 	town: '木叶村',
-				// 	price: 999,
-				// 	msg: '超棒'
-				// },
-				// {
-				// 	id: 3,
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '快乐民宿',
-				// 	rate: '5.0',
-				// 	town: '砂隐村',
-				// 	price: 888,
-				// 	msg: '超棒'
-				// }
-			],
-			noDataMsg: '暂无收藏数据'
+			list: [],
+			noDataMsg: '暂无收藏数据',
+			page: 1,
+			rows: 6,
+			total: null,
+			type: '收藏'
 		}
 		}
 	},
 	},
+	onLoad() {
+		this.getData()
+	},
 	methods: {
 	methods: {
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/ampgetHotelAndUsersList.action',
+				data: {
+					userId: uni.getStorageSync('userInfo').id,
+					page: this.page,
+					rows: this.rows,
+					type: this.type
+				}
+			})
+			// console.log(res)
+			if (res.code === 200 && res.data) {
+				this.list = [...this.list, ...res.data.pageList]
+				this.total = res.data.total
+			}
+		},
 		// 切换分段器回调
 		// 切换分段器回调
 		onClickItem(e) {
 		onClickItem(e) {
-			if (this.current !== e.currentIndex) {
-				this.current = e.currentIndex
-				if (this.current === 0) {
-					this.noDataMsg = '暂无收藏数据'
-				} else {
-					this.noDataMsg = '暂无住过数据'
-				}
+			this.activeCurrent = e.currentIndex
+			if (this.activeCurrent === 0) {
+				this.noDataMsg = '暂无收藏数据'
+				this.type = '收藏'
+			} else {
+				this.noDataMsg = '暂无住过数据'
+				this.type = '住过'
 			}
 			}
+			this.list = []
+			this.page = 1
+			this.getData()
 		},
 		},
 		// 列表下拉到底部回调
 		// 列表下拉到底部回调
 		handlePull() {
 		handlePull() {
-			console.log(111)
+			if (this.list.length < this.total) {
+				this.page++
+				this.getData()
+			} else {
+				uni.showToast({
+					title: '没有更多数据了',
+					icon: 'none'
+				})
+			}
+		},
+		handleGoPage(item) {
+			uni.navigateTo({
+				url: `/pages/detail/detail?id=${item.id}`
+			})
 		}
 		}
 	}
 	}
 }
 }

+ 61 - 6
pages/complaint/complaint.vue

@@ -4,7 +4,7 @@
 		<view class="title">
 		<view class="title">
 			<view class="title_key">标题</view>
 			<view class="title_key">标题</view>
 			<view class="title_value">
 			<view class="title_value">
-				<input maxlength="10" type="text" placeholder="请输入标题,不要超过10个字哦~" placeholder-style="color:#B3B3B3;fontSize:28rpx;" />
+				<input maxlength="10" type="text" placeholder="请输入标题,不要超过10个字哦~" placeholder-style="color:#B3B3B3;fontSize:28rpx;" v-model="inputValue" />
 			</view>
 			</view>
 		</view>
 		</view>
 
 
@@ -44,22 +44,37 @@
 </template>
 </template>
 
 
 <script>
 <script>
+var dayjs = require('dayjs')
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
+			// 标题输入框绑定数据
+			inputValue: '',
 			// 评价绑定数据
 			// 评价绑定数据
 			textareaValue: '',
 			textareaValue: '',
 			// 评价文字长度
 			// 评价文字长度
 			textareaValuelength: 0,
 			textareaValuelength: 0,
 			// 上传的图片数据
 			// 上传的图片数据
-			subImgList: []
+			subImgList: [],
+			// 订单id
+			bookingId: '',
+			// 民宿id
+			hotelId: '',
+			// 房间id
+			houseId: ''
 		}
 		}
 	},
 	},
+	onLoad(options) {
+		this.bookingId = options.bookingId
+		this.hotelId = options.hotelId
+		this.houseId = options.houseId
+	},
 	methods: {
 	methods: {
 		// 评价输入框输入回调
 		// 评价输入框输入回调
 		handleInput(e) {
 		handleInput(e) {
 			this.textareaValuelength = e.detail.cursor
 			this.textareaValuelength = e.detail.cursor
 		},
 		},
+		// 上传图片回调
 		handleUpLoad() {
 		handleUpLoad() {
 			uni.chooseMedia({
 			uni.chooseMedia({
 				count: 9,
 				count: 9,
@@ -108,10 +123,50 @@ export default {
 				}
 				}
 			})
 			})
 		},
 		},
-		handleSub() {
-			uni.navigateTo({
-				url: `/pages/complaintStatus/complaintStatus?status=1`
+		// 提交按钮回调
+		async handleSub() {
+			if (!this.inputValue) {
+				uni.showToast({
+					title: '请输入标题',
+					icon: 'none',
+					mask: true
+				})
+				return
+			}
+			if (!this.textareaValue) {
+				uni.showToast({
+					title: '请输入投诉内容',
+					icon: 'none',
+					mask: true
+				})
+				return
+			}
+			let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
+			const res = await this.$myRequest({
+				url: '/mhotel/complaintorderComplaint.action',
+				method: 'post',
+				data: {
+					bookingId: this.bookingId,
+					hotelId: this.hotelId,
+					houseId: this.houseId,
+					title: this.inputValue,
+					content: this.textareaValue,
+					createId: uni.getStorageSync('userInfo').id,
+					createDate: time,
+					modifyDate: time,
+					pictureList: this.subImgList
+				}
 			})
 			})
+			// console.log(res)
+			if (res.code === 200) {
+				uni.navigateTo({
+					url: `/pages/complaintStatus/complaintStatus?status=1`
+				})
+			} else {
+				uni.navigateTo({
+					url: `/pages/complaintStatus/complaintStatus?status=2`
+				})
+			}
 		},
 		},
 		// 删除图片回调
 		// 删除图片回调
 		handleDelete(index) {
 		handleDelete(index) {
@@ -256,4 +311,4 @@ export default {
 		background-color: #096562;
 		background-color: #096562;
 	}
 	}
 }
 }
-</style>
+</style>

+ 69 - 50
pages/complaintProgress/complaintProgress.vue

@@ -1,49 +1,50 @@
 <template>
 <template>
-	<view class="container">
+	<view class="container" v-if="info">
 		<!-- 头部订单信息区域 -->
 		<!-- 头部订单信息区域 -->
 		<view class="header">
 		<view class="header">
 			<view class="header_title">
 			<view class="header_title">
-				<view class="title_left">标题标题标题</view>
-				<view class="title_right">处理中</view>
+				<view class="title_left">{{ info.title }}</view>
+				<view class="title_right">{{ info.detailsVoList[0].progressType }}</view>
 			</view>
 			</view>
 			<view class="header_info">
 			<view class="header_info">
 				<view class="info_box">
 				<view class="info_box">
 					<view class="box_key">订单号</view>
 					<view class="box_key">订单号</view>
-					<view class="box_value">2626262626260660606</view>
+					<view class="box_value">{{ info.bookingId }}</view>
 				</view>
 				</view>
 				<view class="info_box">
 				<view class="info_box">
 					<view class="box_key">投诉单号</view>
 					<view class="box_key">投诉单号</view>
-					<view class="box_value">6165165116506503063</view>
+					<view class="box_value">{{ info.complaintId }}</view>
 				</view>
 				</view>
 				<view class="info_box">
 				<view class="info_box">
 					<view class="box_key">反馈时间</view>
 					<view class="box_key">反馈时间</view>
-					<view class="box_value">2023-05-25 15:15:15</view>
+					<view class="box_value">{{ info.dateTime }}</view>
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
 
 
 		<!-- 进度详情区域 -->
 		<!-- 进度详情区域 -->
-		<view class="progress">
+		<view class="progress" v-if="info.detailsVoList">
 			<view class="progress_title">进度详情</view>
 			<view class="progress_title">进度详情</view>
 			<!-- 进度条区域 -->
 			<!-- 进度条区域 -->
 			<view class="progress_body">
 			<view class="progress_body">
 				<!-- 每一个进度区域 -->
 				<!-- 每一个进度区域 -->
-				<view class="body_item" v-for="item in list" :key="item.id">
+				<view class="body_item" v-for="(item, index) in info.detailsVoList" :key="index">
 					<view class="item_left">
 					<view class="item_left">
-						<view class="left_top">{{ item.day }}</view>
-						<view class="left_bottom">{{ item.time }}</view>
+						<view class="left_top">{{ item.dateTime.slice(5, 10) }}</view>
+						<view class="left_bottom">{{ item.dateTime.slice(11, 16) }}</view>
 						<view class="left_dot"></view>
 						<view class="left_dot"></view>
 					</view>
 					</view>
 					<view class="item_right">
 					<view class="item_right">
-						<view class="right_top">{{ item.title }}</view>
-						<view class="right_bottom" v-for="(ele, index) in item.tags" :key="index">
-							{{ ele }}
-						</view>
+						<view class="right_top">{{ item.progressType }}</view>
+						<view class="right_bottom" v-if="item.title">标题:{{ item.title }}</view>
+						<view class="right_bottom" v-if="item.content">问题描述:{{ item.content }}</view>
+						<view class="right_bottom" v-if="item.progressType === '待处理'">问题跟进中</view>
+						<view class="right_bottom" v-if="item.progressType === '已处理'">您的问题已处理</view>
 						<!-- 图片区域 -->
 						<!-- 图片区域 -->
-						<view class="right_bottom" v-if="item.imgs">
+						<view class="right_bottom" v-if="item.urlList.length">
 							<view class="bottom_key">图片:</view>
 							<view class="bottom_key">图片:</view>
 							<view class="bottom_value">
 							<view class="bottom_value">
-								<img mode="aspectFill" v-for="(img, index2) in item.imgs" :key="index2" :src="img" @click="() => handleClickImg(item, index2)" />
+								<img mode="aspectFill" v-for="(img, index2) in item.urlList" :key="index2" :src="img" @click="() => handleClickImg(item.urlList, index2)" />
 							</view>
 							</view>
 						</view>
 						</view>
 					</view>
 					</view>
@@ -54,54 +55,72 @@
 		<!-- 底部按钮区域 -->
 		<!-- 底部按钮区域 -->
 		<view class="foot">
 		<view class="foot">
 			<view class="btn_phone">服务热线</view>
 			<view class="btn_phone">服务热线</view>
-			<view class="btn_finish">处理完成</view>
+			<view class="btn_finish" v-if="info.detailsVoList[0].progressType !== '已处理'" @click="handleFinish">处理完成</view>
 		</view>
 		</view>
 	</view>
 	</view>
 </template>
 </template>
 
 
 <script>
 <script>
+var dayjs = require('dayjs')
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
 			// 进度条列表数据
 			// 进度条列表数据
-			list: [
-				{
-					id: 1,
-					day: '08-04',
-					time: '12:13',
-					title: '处理完成',
-					tags: ['您的问题已处理']
-				},
-				{
-					id: 1,
-					day: '08-04',
-					time: '12:13',
-					title: '服务热线',
-					tags: ['问题跟进中,呼叫结果:已接通']
-				},
-				{
-					id: 1,
-					day: '08-04',
-					time: '12:13',
-					title: '问题提交成功',
-					tags: ['标题:xxxxxxxxxxxxxxxx', '问题描述:xxxxxxxxxxxxxxxx'],
-					imgs: [
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-						'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375'
-					]
-				}
-			]
+			list: [],
+			id: '',
+			// 进度详情数据
+			info: null
 		}
 		}
 	},
 	},
+	onLoad(options) {
+		this.id = options.id
+		this.getData()
+	},
 	methods: {
 	methods: {
+		// 获取进度详情数据
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/complaintprogressDetails.action',
+				data: {
+					complaintId: this.id
+				}
+			})
+			// console.log(res)
+			if (res.code === 200) {
+				this.info = res.page
+			}
+		},
+		// 处理完成按钮回调
+		handleFinish() {
+			uni.showModal({
+				title: '提示',
+				content: '确定处理完成了吗?',
+				success: async (res) => {
+					if (res.confirm) {
+						let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
+						const res = await this.$myRequest({
+							url: '/mhotel/complaintresolutionComplaint.action',
+							data: {
+								complaintId: this.info.complaintId,
+								createId: uni.getStorageSync('userInfo').id,
+								createDate: time,
+								modifyDate: time
+							}
+						})
+						// console.log(res)
+						if (res.code === 200) {
+							uni.redirectTo({
+								url: '/pages/myComplaint/myComplaint'
+							})
+						}
+					}
+				}
+			})
+		},
 		// 点击进度条图片回调
 		// 点击进度条图片回调
-		handleClickImg(item, index) {
+		handleClickImg(urls, index) {
 			uni.previewImage({
 			uni.previewImage({
-				urls: item.imgs,
+				urls,
 				current: index
 				current: index
 			})
 			})
 		}
 		}

+ 2 - 2
pages/complaintStatus/complaintStatus.vue

@@ -39,8 +39,8 @@ export default {
 	methods: {
 	methods: {
 		handleClickBtn() {
 		handleClickBtn() {
 			if (this.status === '1') {
 			if (this.status === '1') {
-				uni.navigateTo({
-					url: '/pages/complaintProgress/complaintProgress'
+				uni.reLaunch({
+					url: '/pages/myComplaint/myComplaint'
 				})
 				})
 			} else {
 			} else {
 				uni.navigateBack(1)
 				uni.navigateBack(1)

+ 195 - 36
pages/coupon/coupon.vue

@@ -1,31 +1,37 @@
 <template>
 <template>
-	<view class="container">
+	<view class="container" v-if="total !== null">
 		<!-- 头部优惠券总数量区域 -->
 		<!-- 头部优惠券总数量区域 -->
 		<view class="header">
 		<view class="header">
 			可使用优惠券
 			可使用优惠券
-			<text>5张</text>
+			<text>{{ total }}张</text>
 		</view>
 		</view>
 
 
 		<!-- 优惠券列表区域 -->
 		<!-- 优惠券列表区域 -->
-		<view class="body">
+		<scroll-view class="body" scroll-y @scrolltolower="scrolltolower">
 			<!-- 每一张优惠券区域 -->
 			<!-- 每一张优惠券区域 -->
 			<view class="body_item" v-for="item in list" :key="item.id">
 			<view class="body_item" v-for="item in list" :key="item.id">
 				<img src="../../static/my/couponTitle.png" />
 				<img src="../../static/my/couponTitle.png" />
-				<view class="item_type" v-if="item.type === 1">折扣卷</view>
-				<view class="item_type" v-if="item.type === 2">代金卷</view>
+				<view class="item_type" v-if="item.type === 2">折扣卷</view>
+				<view class="item_type" v-if="item.type === 1">代金卷</view>
 				<view class="item_box">
 				<view class="item_box">
 					<view class="box_left">
 					<view class="box_left">
 						<view class="left_title">{{ item.name }}</view>
 						<view class="left_title">{{ item.name }}</view>
 						<view class="left_tags">
 						<view class="left_tags">
-							<view class="tag">有限期至2023.09.01</view>
-							<view class="tag">可通用</view>
-							<view class="tag">全民宿</view>
+							<view class="tag">有限期至{{ item.effectiveEndDate.slice(0, 10) }}</view>
+							<view class="tag" v-if="item.hotelIds.includes('-1')">全名宿</view>
+							<view class="tag" v-else @click="handleClickTag(item.hotelIds)">
+								指定名宿
+								<img src="../../static/index/right2.png" />
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
 					<view class="box_right">
 					<view class="box_right">
 						<view class="right_info">
 						<view class="right_info">
-							<view class="info_top">{{ item.info }}</view>
-							<view class="info_bottom">满200可用</view>
+							<view class="info_top">{{ item.type === 1 ? '¥' + item.deductionPrice : item.rebatePrice + '折' }}</view>
+							<view class="info_bottom" :class="{ color: item.meetPrice === 0 }">{{ item.meetPrice === 0 ? '无门槛' : '满' + item.meetPrice + '可用' }}</view>
+							<view class="info_bottom">
+								{{ item.type === 2 ? '最多减免' + item.maxDeduction : '' }}
+							</view>
 						</view>
 						</view>
 						<view class="right_radio">
 						<view class="right_radio">
 							<radio style="transform: scale(0.8)" color="#096562" :checked="item.isCheck" @click="handleChange(item)" />
 							<radio style="transform: scale(0.8)" color="#096562" :checked="item.isCheck" @click="handleChange(item)" />
@@ -33,10 +39,23 @@
 					</view>
 					</view>
 				</view>
 				</view>
 			</view>
 			</view>
-		</view>
+		</scroll-view>
 
 
 		<!-- 底部确定按钮区域 -->
 		<!-- 底部确定按钮区域 -->
-		<view class="foot_btn">确定</view>
+		<view class="foot_btn" @click="handleConfirm">确定</view>
+
+		<!-- 指定民宿弹窗区域 -->
+		<uni-popup ref="popup" type="center" :is-mask-click="false">
+			<view class="popup_body">
+				<view class="popup_header">
+					<img src="../../static/my/popup_title.png" />
+					<view class="header_title">指定民宿</view>
+					<img src="../../static/my/popup_title.png" />
+				</view>
+				<view class="popup_center">{{ hotels }}</view>
+				<view class="popup_btn" @click="handleClose">我知道了</view>
+			</view>
+		</uni-popup>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -44,34 +63,111 @@
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
-			list: [
-				{
-					id: 1,
-					name: '7.5折折扣卷',
-					type: 1,
-					info: '7.5折',
-					isCheck: false
-				},
-				{
-					id: 2,
-					name: '20元代金券',
-					type: 2,
-					info: '¥20',
-					isCheck: false
-				},
-				{
-					id: 3,
-					name: '7.5折折扣卷',
-					type: 1,
-					info: '7.5折',
-					isCheck: false
-				}
-			]
+			list: [],
+			hotelId: '',
+			page: 1,
+			rows: 10,
+			total: null,
+			// 指定民宿信息
+			hotels: '',
+			totalPrice: null,
+			complaintId: null
 		}
 		}
 	},
 	},
+	onLoad(options) {
+		this.hotelId = options.id
+		this.totalPrice = options.totalPrice
+		this.complaintId = options.complaintId
+		this.getCouponNum()
+	},
 	methods: {
 	methods: {
+		scrolltolower() {
+			if (this.list.length < this.total) {
+				this.page++
+				this.getCouponNum()
+			} else {
+				uni.showToast({
+					title: '没有更多数据了',
+					icon: 'none'
+				})
+			}
+		},
+		// 确定按钮回调
+		async handleConfirm() {
+			let temObj = this.list.find((ele) => ele.isCheck)
+			if (temObj) {
+				const res = await this.$myRequest({
+					url: '/mhotel/hcuseCoupons.action',
+					method: 'post',
+					data: {
+						id: temObj.id,
+						complaintId: temObj.complaintId,
+						totalPrice: this.totalPrice
+					}
+				})
+				// console.log(res)
+				if (res.code === 200) {
+					uni.$emit('choose', { data: res.data })
+				}
+			} else {
+				uni.$emit('choose', { data: { discountAmount: 0 } })
+			}
+			uni.navigateBack(1)
+		},
+		// 点击指定民宿tag回调
+		async handleClickTag(ids) {
+			const res = await this.$myRequest({
+				url: '/mhotel/hcdesignatedHotel.action',
+				data: {
+					hotelIds: ids.join()
+				}
+			})
+			// console.log(res)
+			if (res.code === 200) {
+				this.hotels = res.data.name
+			}
+			this.$refs.popup.open()
+		},
+		async getCouponNum() {
+			const res = await this.$myRequest({
+				url: '/mhotel/hcusefulCoupon.action',
+				data: {
+					hotelId: this.hotelId,
+					page: this.page,
+					rows: this.rows,
+					userId: uni.getStorageSync('userInfo').id
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				this.list = [...this.list, ...res.page.pageList]
+				this.total = res.page.total
+				this.list.forEach((ele, index) => {
+					ele.hotelIds = ele.hotelIds.split(',')
+					this.$set(ele, 'isCheck', false)
+				})
+				if (this.complaintId !== 'undefined') {
+					const num = this.list.findIndex((e) => e.complaintId === this.complaintId)
+					this.list[num].isCheck = true
+				}
+			}
+		},
 		handleChange(item) {
 		handleChange(item) {
-			item.isCheck = !item.isCheck
+			if (item.isCheck) {
+				item.isCheck = !item.isCheck
+			} else {
+				this.list.forEach((ele) => {
+					if (item.id === ele.id) {
+						ele.isCheck = true
+					} else {
+						ele.isCheck = false
+					}
+				})
+			}
+		},
+		// 点击弹窗我知道了按钮回调
+		handleClose() {
+			this.$refs.popup.close()
 		}
 		}
 	}
 	}
 }
 }
@@ -148,8 +244,17 @@ export default {
 						font-size: 24rpx;
 						font-size: 24rpx;
 
 
 						.tag {
 						.tag {
+							display: flex;
+							align-items: center;
 							margin-right: 32rpx;
 							margin-right: 32rpx;
 							margin-bottom: 15rpx;
 							margin-bottom: 15rpx;
+
+							img {
+								margin-top: 4rpx;
+								margin-left: 4rpx;
+								width: 28rpx;
+								height: 28rpx;
+							}
 						}
 						}
 					}
 					}
 				}
 				}
@@ -174,6 +279,10 @@ export default {
 							margin-top: 10rpx;
 							margin-top: 10rpx;
 							font-size: 20rpx;
 							font-size: 20rpx;
 						}
 						}
+
+						.color {
+							color: #a6a6a6;
+						}
 					}
 					}
 
 
 					.right_radio {
 					.right_radio {
@@ -200,5 +309,55 @@ export default {
 		border-radius: 64rpx;
 		border-radius: 64rpx;
 		background-color: #096562;
 		background-color: #096562;
 	}
 	}
+
+	.popup_body {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		width: 481rpx;
+		height: 404rpx;
+		border-radius: 22.5rpx;
+		background-color: #fff;
+
+		.popup_header {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 123rpx;
+			font-size: 34rpx;
+			font-weight: bold;
+			color: #0f194d;
+
+			img {
+				width: 16rpx;
+				height: 16rpx;
+			}
+
+			.header_title {
+				margin: 0 10rpx;
+			}
+		}
+
+		.popup_center {
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			height: 135rpx;
+			color: rgba(15, 25, 77, 0.6);
+			font-size: 28rpx;
+			font-weight: bold;
+		}
+
+		.popup_btn {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 396rpx;
+			height: 76rpx;
+			color: #fff;
+			font-size: 26rpx;
+			border-radius: 43rpx;
+			background: linear-gradient(90deg, #0bc196 0%, #096562 100%);
+		}
+	}
 }
 }
 </style>
 </style>

+ 99 - 42
pages/couponCenter/couponCenter.vue

@@ -5,24 +5,28 @@
 			<!-- 每一张优惠券区域 -->
 			<!-- 每一张优惠券区域 -->
 			<view class="body_item" v-for="item in list" :key="item.id">
 			<view class="body_item" v-for="item in list" :key="item.id">
 				<img src="../../static/my/couponTitle.png" />
 				<img src="../../static/my/couponTitle.png" />
-				<view class="item_type" v-if="item.type === 1">折扣卷</view>
-				<view class="item_type" v-if="item.type === 2">代金卷</view>
+				<view class="item_type" v-if="item.type === 2">折扣卷</view>
+				<view class="item_type" v-if="item.type === 1">代金卷</view>
 				<view class="item_box">
 				<view class="item_box">
 					<view class="box_left">
 					<view class="box_left">
 						<view class="left_title">{{ item.name }}</view>
 						<view class="left_title">{{ item.name }}</view>
-						<view class="left_time">{{ item.time }} 可领取</view>
+						<view class="left_time">{{ item.effectiveStartDate.slice(0, 16) }} - {{ item.effectiveEndDate.slice(0, 16) }} 可领取</view>
 						<view class="left_tags">
 						<view class="left_tags">
-							<view class="tag" v-for="(ele, index) in item.tags" :key="index" @click="handleClickTag(ele)">
-								{{ ele }}
-								<img v-if="ele === '指定民宿'" src="../../static/index/right2.png" />
+							<view class="tag" v-if="item.hotelIds.includes('-1')">全名宿</view>
+							<view class="tag" v-else @click="handleClickTag(item.hotelIds)">
+								指定民宿
+								<img src="../../static/index/right2.png" />
 							</view>
 							</view>
 						</view>
 						</view>
 					</view>
 					</view>
 					<view class="box_right">
 					<view class="box_right">
 						<view class="right_info">
 						<view class="right_info">
-							<view class="info_top">{{ item.info }}</view>
-							<view class="info_bottom">满200可用</view>
-							<view class="info_btn" v-if="item.isFull">立即领取</view>
+							<view class="info_top">{{ item.type === 1 ? '¥' + item.deductionPrice : item.rebatePrice + '折' }}</view>
+							<view class="info_bottom" :class="{ color: item.meetPrice === 0 }">{{ item.meetPrice === 0 ? '无门槛' : '满' + item.meetPrice + '可用' }}</view>
+							<view class="info_bottom">
+								{{ item.type === 2 ? '最多减免' + item.maxDeduction : '' }}
+							</view>
+							<view class="info_btn" v-if="item.claimStatus === 1" @click="handleGet(item.id, item.effectiveEndDate)">立即领取</view>
 							<view class="info_btn2" v-else>已领取</view>
 							<view class="info_btn2" v-else>已领取</view>
 						</view>
 						</view>
 					</view>
 					</view>
@@ -43,7 +47,7 @@
 					<view class="header_title">指定民宿</view>
 					<view class="header_title">指定民宿</view>
 					<img src="../../static/my/popup_title.png" />
 					<img src="../../static/my/popup_title.png" />
 				</view>
 				</view>
-				<view class="popup_center">民宿名称,民宿名称,民宿名称</view>
+				<view class="popup_center">{{ hotels }}</view>
 				<view class="popup_btn" @click="handleClose">我知道了</view>
 				<view class="popup_btn" @click="handleClose">我知道了</view>
 			</view>
 			</view>
 		</uni-popup>
 		</uni-popup>
@@ -51,46 +55,93 @@
 </template>
 </template>
 
 
 <script>
 <script>
+var dayjs = require('dayjs')
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
 			// 优惠券列表数据
 			// 优惠券列表数据
-			list: [
-				// {
-				// 	id: 1,
-				// 	name: '7.5折折扣卷',
-				// 	type: 1,
-				// 	info: '7.5折',
-				// 	isFull: false,
-				// 	time: '2023.09.01  12:00 - 2023.10.01  12:00',
-				// 	tags: ['可通用', '全民宿']
-				// },
-				// {
-				// 	id: 2,
-				// 	name: '20元代金券',
-				// 	type: 2,
-				// 	info: '¥20',
-				// 	isFull: true,
-				// 	time: '2023.09.01  12:00 - 2023.10.01  12:00',
-				// 	tags: ['可通用', '指定民宿']
-				// },
-				// {
-				// 	id: 3,
-				// 	name: '7.5折折扣卷',
-				// 	type: 1,
-				// 	info: '7.5折',
-				// 	isFull: false,
-				// 	time: '2023.09.01  12:00 - 2023.10.01  12:00',
-				// 	tags: ['可通用', '全民宿']
-				// }
-			]
+			list: [],
+			// 当前页
+			page: 1,
+			// 每页多少条
+			rows: 6,
+			// 总条数
+			total: null,
+			// 指定民宿信息
+			hotels: ''
+		}
+	},
+	onLoad() {
+		this.getData()
+	},
+	onReachBottom() {
+		if (this.list.length < this.total) {
+			this.page++
+			this.getData()
+		} else {
+			uni.showToast({
+				title: '没有更多数据了',
+				icon: 'none'
+			})
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/hccouponCollection.action',
+				data: {
+					page: this.page,
+					rows: this.rows
+				}
+			})
+			// console.log(res);
+			if (res.code === 200 && res.page.pageList) {
+				this.list = [...this.list, ...res.page.pageList]
+				this.total = res.page.total
+				this.list.forEach((ele) => {
+					ele.hotelIds = ele.hotelIds.split(',')
+				})
+			}
+		},
 		// 点击指定民宿tag回调
 		// 点击指定民宿tag回调
-		handleClickTag(ele) {
-			if (ele === '指定民宿') {
-				this.$refs.popup.open()
+		async handleClickTag(ids) {
+			const res = await this.$myRequest({
+				url: '/mhotel/hcdesignatedHotel.action',
+				data: {
+					hotelIds: ids.join()
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				this.hotels = res.data.name
+			}
+			this.$refs.popup.open()
+		},
+		// 领取优惠券请求
+		async handleGet(id, endTime) {
+			let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
+			const res = await this.$myRequest({
+				url: '/mhotel/hcgetCoupon.action',
+				method: 'POST',
+				data: {
+					complaintId: id,
+					userId: uni.getStorageSync('userInfo').id,
+					createId: uni.getStorageSync('userInfo').id,
+					createDate: time,
+					modifyDate: time,
+					lapseDate: endTime
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				uni.showToast({
+					title: res.message,
+					icon: 'success',
+					mask: true
+				})
+				setTimeout(() => {
+					uni.navigateBack(1)
+				}, 1500)
 			}
 			}
 		},
 		},
 		// 点击弹窗我知道了按钮回调
 		// 点击弹窗我知道了按钮回调
@@ -200,6 +251,10 @@ export default {
 							font-size: 20rpx;
 							font-size: 20rpx;
 						}
 						}
 
 
+						.color {
+							color: #a6a6a6;
+						}
+
 						.info_btn {
 						.info_btn {
 							display: flex;
 							display: flex;
 							justify-content: center;
 							justify-content: center;
@@ -274,6 +329,8 @@ export default {
 		}
 		}
 
 
 		.popup_center {
 		.popup_center {
+			box-sizing: border-box;
+			padding: 0 20rpx;
 			height: 135rpx;
 			height: 135rpx;
 			color: rgba(15, 25, 77, 0.6);
 			color: rgba(15, 25, 77, 0.6);
 			font-size: 28rpx;
 			font-size: 28rpx;

+ 102 - 90
pages/detail/detail.vue

@@ -15,10 +15,15 @@
 			<view class="slogan">
 			<view class="slogan">
 				<img src="../../static/index/slogan.png" />
 				<img src="../../static/index/slogan.png" />
 			</view>
 			</view>
+			<!-- 720°全景链接区域 -->
 			<view class="full" v-if="info.linkProUrl" @click="handleGoPull(info.linkProUrl)">
 			<view class="full" v-if="info.linkProUrl" @click="handleGoPull(info.linkProUrl)">
 				<img src="../../static/index/full.png" />
 				<img src="../../static/index/full.png" />
 				720°全景
 				720°全景
 			</view>
 			</view>
+			<!-- 收藏按钮区域 -->
+			<view class="collect">
+				<uni-fav circle bgColorChecked="#096562" :checked="info.is_collect_hotel" @click="changeCollect(info.is_collect_hotel)" />
+			</view>
 		</view>
 		</view>
 
 
 		<!-- 民宿详细信息区域 -->
 		<!-- 民宿详细信息区域 -->
@@ -58,7 +63,7 @@
 		<!-- 房型信息区域 -->
 		<!-- 房型信息区域 -->
 		<view class="body">
 		<view class="body">
 			<!-- 选择日期区域 -->
 			<!-- 选择日期区域 -->
-			<view class="body_header" @click="handleOpen">
+			<view class="body_header" @click="handleOpen()">
 				<view class="header_start">
 				<view class="header_start">
 					<view class="header_top">{{ getWeek(startTime) }}入住</view>
 					<view class="header_top">{{ getWeek(startTime) }}入住</view>
 					<view class="header_bottom">{{ startTime.slice(5, 7) }}月{{ startTime.slice(8, 10) }}日</view>
 					<view class="header_bottom">{{ startTime.slice(5, 7) }}月{{ startTime.slice(8, 10) }}日</view>
@@ -86,6 +91,7 @@
 				:selected="selected"
 				:selected="selected"
 				:startDate="earlyTime"
 				:startDate="earlyTime"
 				:endDate="lateTime"
 				:endDate="lateTime"
+				@monthSwitch="monthSwitch"
 				@confirm="handleConfirm"
 				@confirm="handleConfirm"
 			/>
 			/>
 
 
@@ -185,37 +191,37 @@
 			<view class="evaluate_title">评价</view>
 			<view class="evaluate_title">评价</view>
 			<view class="evaluate_body">
 			<view class="evaluate_body">
 				<!-- 评分区域 -->
 				<!-- 评分区域 -->
-				<view class="header">
+				<view class="header" v-if="score">
 					<view class="header_box">
 					<view class="header_box">
 						<!-- 总评分区域 -->
 						<!-- 总评分区域 -->
-						<view class="box_left">4.6</view>
+						<view class="box_left">{{ score }}</view>
 						<view class="box_right">
 						<view class="box_right">
 							<!-- 位置评分区域 -->
 							<!-- 位置评分区域 -->
 							<view class="right_item">
 							<view class="right_item">
-								<view class="item_info">位置 4.6</view>
+								<view class="item_info">位置 {{ scoreWz }}</view>
 								<view class="item_progress">
 								<view class="item_progress">
-									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreWz * 1) / 5) * 100" />
 								</view>
 								</view>
 							</view>
 							</view>
 							<!-- 设施评分区域 -->
 							<!-- 设施评分区域 -->
 							<view class="right_item">
 							<view class="right_item">
-								<view class="item_info">设施 4.6</view>
+								<view class="item_info">设施 {{ scoreSs }}</view>
 								<view class="item_progress">
 								<view class="item_progress">
-									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreSs * 1) / 5) * 100" />
 								</view>
 								</view>
 							</view>
 							</view>
 							<!-- 服务评分区域 -->
 							<!-- 服务评分区域 -->
 							<view class="right_item">
 							<view class="right_item">
-								<view class="item_info">服务 4.6</view>
+								<view class="item_info">服务 {{ scoreFw }}</view>
 								<view class="item_progress">
 								<view class="item_progress">
-									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreFw * 1) / 5) * 100" />
 								</view>
 								</view>
 							</view>
 							</view>
 							<!-- 卫生评分区域 -->
 							<!-- 卫生评分区域 -->
 							<view class="right_item">
 							<view class="right_item">
-								<view class="item_info">卫生 4.6</view>
+								<view class="item_info">卫生 {{ scoreWs }}</view>
 								<view class="item_progress">
 								<view class="item_progress">
-									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="(4.6 / 5) * 100" />
+									<progress activeColor="#0BAD8B" backgroundColor="#CCCCCC" stroke-width="10" border-radius="92" :percent="((scoreWs * 1) / 5) * 100" />
 								</view>
 								</view>
 							</view>
 							</view>
 						</view>
 						</view>
@@ -223,20 +229,20 @@
 				</view>
 				</view>
 
 
 				<!-- 每一个评价区域 -->
 				<!-- 每一个评价区域 -->
-				<view class="evaluate_box" v-for="item in commentList" :key="item.id">
+				<view class="evaluate_box" v-for="item in commentList" :key="item.id" @click="handleGoDetail(item)">
 					<!-- 用户信息区域 -->
 					<!-- 用户信息区域 -->
-					<view class="box_userInfo" @click="handleGoDetail(item)">
-						<img mode="aspectFill" :src="item.imgUrl" />
+					<view class="box_userInfo">
+						<img mode="aspectFill" :src="item.headPhoto" />
 						<view class="userInfo_msg">
 						<view class="userInfo_msg">
-							<view class="msg_name">{{ item.name }}</view>
+							<view class="msg_name">{{ item.userName }}</view>
 							<view class="msg_star">
 							<view class="msg_star">
-								<uni-rate readonly activeColor="#FFC300" :size="16" :value="item.rate" />
+								<uni-rate readonly activeColor="#FFC300" :size="16" :value="item.score" />
 							</view>
 							</view>
 						</view>
 						</view>
 					</view>
 					</view>
 
 
 					<!-- 入住时间区域 -->
 					<!-- 入住时间区域 -->
-					<view class="box_time">{{ item.liveTime }}入住,{{ item.subTime }}发表 | {{ item.type }}</view>
+					<view class="box_time">{{ item.liveTime.slice(0, 10) }}入住,{{ item.commentTime.slice(0, 10) }}发表 | {{ item.houseName }}</view>
 
 
 					<!-- 评价内容区域 -->
 					<!-- 评价内容区域 -->
 					<uv-read-more show-height="85rpx" closeText="全文" color="#096663" fontSize="24rpx" textIndent="0" :toggle="true" :shadowStyle="shadowStyle">
 					<uv-read-more show-height="85rpx" closeText="全文" color="#096663" fontSize="24rpx" textIndent="0" :toggle="true" :shadowStyle="shadowStyle">
@@ -247,12 +253,12 @@
 
 
 					<!-- 图片区域 -->
 					<!-- 图片区域 -->
 					<view class="box_img">
 					<view class="box_img">
-						<img v-for="(ele, index) in item.imgList" :key="index" mode="aspectFill" :src="ele" @click="handleClickImg(item.imgList, index)" />
+						<img v-for="(ele, index) in item.url" :key="index" mode="aspectFill" :src="ele" @click.stop="handleClickImg(item.url, index)" />
 					</view>
 					</view>
 				</view>
 				</view>
 
 
 				<view class="foot" @click="handleGoPage" v-if="commentList.length">
 				<view class="foot" @click="handleGoPage" v-if="commentList.length">
-					查看全部{{ commentList.length }}条评价
+					查看全部{{ total }}条评价
 					<img src="../../static/index/right.png" />
 					<img src="../../static/index/right.png" />
 				</view>
 				</view>
 
 
@@ -298,67 +304,24 @@ export default {
 			activeIndex: 0,
 			activeIndex: 0,
 			headerList: ['预定', '评价'],
 			headerList: ['预定', '评价'],
 			// 评价列表数据
 			// 评价列表数据
-			commentList: [
-				// {
-				// 	id: 1,
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '张三',
-				// 	rate: 4.6,
-				// 	liveTime: '2023-07',
-				// 	subTime: '2023-08-01',
-				// 	type: '大床房',
-				// 	content:
-				// 		'评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富',
-				// 	imgList: [
-				// 		'https://img1.baidu.com/it/u=2776549017,1408541252&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500',
-				// 		'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201912%2F28%2F20191228151619_wxioq.thumb.1000_0.jpg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695352503&t=cf595866bbcbd5c6a01ffe69913da7e0'
-				// 	],
-				// 	count: 12
-				// },
-				// {
-				// 	id: 2,
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '李四',
-				// 	rate: 4.1,
-				// 	liveTime: '2023-08',
-				// 	subTime: '2023-08-11',
-				// 	type: '双人房',
-				// 	content:
-				// 		'评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富',
-				// 	imgList: [
-				// 		'https://img1.baidu.com/it/u=2776549017,1408541252&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500',
-				// 		'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 		'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F201912%2F28%2F20191228151619_wxioq.thumb.1000_0.jpg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695352503&t=cf595866bbcbd5c6a01ffe69913da7e0',
-				// 		'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F70a86822-e473-4ad8-9147-fad3e5cbc5ec%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695352600&t=689d4a86e77580db11cdc227291ef6f7'
-				// 	],
-				// 	count: 8
-				// },
-				// {
-				// 	id: 3,
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '王八',
-				// 	rate: 3.8,
-				// 	liveTime: '2023-07',
-				// 	subTime: '2023-07-11',
-				// 	type: '普通房',
-				// 	content:
-				// 		'评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容评价内容的丰富的丰富',
-				// 	imgList: [],
-				// 	count: 26
-				// }
-			],
+			commentList: [],
 			queryDom: null,
 			queryDom: null,
 			domTop: null,
 			domTop: null,
-			selected: [
-				// {
-				// 	date: '2023-09-07',
-				// 	topinfo: '¥456'
-				// },
-				// {
-				// 	date: '2023-09-08',
-				// 	topinfo: '¥888'
-				// }
-			]
+			selected: [],
+			// 总评分
+			score: '',
+			// 服务评分
+			scoreFw: '',
+			// 设施评分
+			scoreSs: '',
+			// 卫生评分
+			scoreWs: '',
+			// 位置评分
+			scoreWz: '',
+			// 评论总条数
+			total: null,
+			// 是否收藏
+			ischecked: false
 		}
 		}
 	},
 	},
 	onLoad(options) {
 	onLoad(options) {
@@ -390,20 +353,46 @@ export default {
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+		// 点击收藏按钮回调
+		async changeCollect(is_collect_hotel) {
+			const res = await this.$myRequest({
+				url: is_collect_hotel ? '/mhotel/ahpdelCollectHotel.action' : '/mhotel/ahpcollectHotel.action',
+				data: {
+					userId: uni.getStorageSync('userInfo').id,
+					hotelId: this.hotelId
+				}
+			})
+			// console.log(res)
+			if (res.code === 200) {
+				uni.showToast({
+					title: is_collect_hotel ? '取消收藏成功' : '收藏成功',
+					icon: 'success',
+					mask: true
+				})
+				this.info.is_collect_hotel = !this.info.is_collect_hotel
+			}
+		},
 		// 获取评论数据
 		// 获取评论数据
-		getEvaData() {
-			uni.request({
-				url: 'http://192.168.161.224:8088/mhotel/abcaevaluatePage.action',
+		async getEvaData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/abcaevaluatePage.action',
 				data: {
 				data: {
 					hotelId: this.hotelId,
 					hotelId: this.hotelId,
 					page: 1,
 					page: 1,
 					rows: 5,
 					rows: 5,
 					status: 0
 					status: 0
-				},
-				success: (res) => {
-					console.log(res.data)
 				}
 				}
 			})
 			})
+			// console.log(res);
+			if (res.code === 200 && res.page.pageList) {
+				this.score = res.score.score.toFixed(1)
+				this.scoreFw = res.score.scoreFw.toFixed(1)
+				this.scoreSs = res.score.scoreSs.toFixed(1)
+				this.scoreWs = res.score.scoreWs.toFixed(1)
+				this.scoreWz = res.score.scoreWz.toFixed(1)
+				this.commentList = res.page.pageList
+				this.total = res.page.total
+			}
 		},
 		},
 		// 获取民宿信息
 		// 获取民宿信息
 		async getHotelInfo() {
 		async getHotelInfo() {
@@ -411,6 +400,7 @@ export default {
 				url: '/mhotel/ahpgetHouseByHotelId.action',
 				url: '/mhotel/ahpgetHouseByHotelId.action',
 				data: {
 				data: {
 					hotelId: this.hotelId,
 					hotelId: this.hotelId,
+					userId: uni.getStorageSync('userInfo').id,
 					queryStartTime: this.startTime,
 					queryStartTime: this.startTime,
 					queryEndTime: this.endTime
 					queryEndTime: this.endTime
 				}
 				}
@@ -436,6 +426,10 @@ export default {
 				})
 				})
 			}
 			}
 		},
 		},
+		monthSwitch(e) {
+			let time = e.year + '-' + e.month.toString().padStart(2, 0) + '-01'
+			this.handleOpen(time)
+		},
 		// 选择日期确定回调
 		// 选择日期确定回调
 		handleConfirm(e) {
 		handleConfirm(e) {
 			this.startTime = e.range.before
 			this.startTime = e.range.before
@@ -538,7 +532,8 @@ export default {
 						queryEndTime: this.endTime,
 						queryEndTime: this.endTime,
 						dayList: this.dayList,
 						dayList: this.dayList,
 						hTypeName: this.info.hTypeName,
 						hTypeName: this.info.hTypeName,
-						hotelName: this.info.hotel_name
+						hotelName: this.info.hotel_name,
+						hotelId: this.hotelId
 					})
 					})
 					uni.navigateTo({
 					uni.navigateTo({
 						url: `/pages/affirmOrder/affirmOrder?info=${info}`
 						url: `/pages/affirmOrder/affirmOrder?info=${info}`
@@ -564,8 +559,20 @@ export default {
 			}
 			}
 		},
 		},
 		// 点击日期区域回调
 		// 点击日期区域回调
-		handleOpen() {
-			this.$refs.calendar.open()
+		async handleOpen(time) {
+			const res = await this.$myRequest({
+				url: '/mhotel/house/price/priceCalendar.action',
+				data: {
+					merchantId: this.info.managerId,
+					startTime: time ? time : this.startTime
+				}
+			})
+			if (res.code === 200) {
+				this.selected = res.data
+			}
+			if (!time) {
+				this.$refs.calendar.open()
+			}
 		},
 		},
 		// 传入参数获取当前是星期几
 		// 传入参数获取当前是星期几
 		getWeek(time) {
 		getWeek(time) {
@@ -599,9 +606,8 @@ export default {
 		},
 		},
 		// 点击每一个评价回调
 		// 点击每一个评价回调
 		handleGoDetail(item) {
 		handleGoDetail(item) {
-			let info = encodeURIComponent(JSON.stringify(item))
 			uni.navigateTo({
 			uni.navigateTo({
-				url: `/pages/appraiseDetail/appraiseDetail?info=${info}`
+				url: `/pages/appraiseDetail/appraiseDetail?id=${item.id}`
 			})
 			})
 		},
 		},
 		// 点击评价图片回调
 		// 点击评价图片回调
@@ -614,7 +620,7 @@ export default {
 		},
 		},
 		handleGoPage() {
 		handleGoPage() {
 			uni.navigateTo({
 			uni.navigateTo({
-				url: '/pages/appraise/appraise'
+				url: `/pages/appraise/appraise?hotelId=${this.hotelId}`
 			})
 			})
 		}
 		}
 	}
 	}
@@ -699,6 +705,12 @@ export default {
 				height: 40rpx;
 				height: 40rpx;
 			}
 			}
 		}
 		}
+
+		.collect {
+			position: absolute;
+			top: 68rpx;
+			left: 8rpx;
+		}
 	}
 	}
 
 
 	.detail {
 	.detail {

+ 27 - 29
pages/evaluate/evaluate.vue

@@ -167,7 +167,7 @@ export default {
 			})
 			})
 		},
 		},
 		// 点击提交按钮回调
 		// 点击提交按钮回调
-		handleSub() {
+		async handleSub() {
 			if (!this.rateValue || !this.rateLocation || !this.rateFacility || !this.rateHygiene || !this.rateServe) {
 			if (!this.rateValue || !this.rateLocation || !this.rateFacility || !this.rateHygiene || !this.rateServe) {
 				uni.showToast({
 				uni.showToast({
 					title: '请评分后再提交',
 					title: '请评分后再提交',
@@ -180,8 +180,8 @@ export default {
 			let userInfo = uni.getStorageSync('userInfo')
 			let userInfo = uni.getStorageSync('userInfo')
 			let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
 			let time = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
 
 
-			uni.request({
-				url: 'http://192.168.161.224:8088/mhotel/abcaorderRate.action',
+			const res = await this.$myRequest({
+				url: '/mhotel/abcaorderRate.action',
 				method: 'post',
 				method: 'post',
 				data: {
 				data: {
 					bookingId: this.bookingId,
 					bookingId: this.bookingId,
@@ -199,34 +199,32 @@ export default {
 					createDate: time,
 					createDate: time,
 					modifyDate: time,
 					modifyDate: time,
 					pictureList: this.subImgList
 					pictureList: this.subImgList
-				},
-				success: (res) => {
-					// console.log(res.data)
-					if (res.data.code === 200) {
-						uni.showToast({
-							title: '评价成功',
-							icon: 'success',
-							mask: true
-						})
-						setTimeout(() => {
-							uni.navigateTo({
-								url: `/pages/evaluateStatus/evaluateStatus?status=1`
-							})
-						}, 1500)
-					} else {
-						uni.showToast({
-							title: res.data.message,
-							icon: 'none',
-							mask: true
-						})
-						setTimeout(() => {
-							uni.navigateTo({
-								url: `/pages/evaluateStatus/evaluateStatus?status=2`
-							})
-						}, 1500)
-					}
 				}
 				}
 			})
 			})
+			// console.log(res)
+			if (res.code === 200) {
+				uni.showToast({
+					title: '评价成功',
+					icon: 'success',
+					mask: true
+				})
+				setTimeout(() => {
+					uni.navigateTo({
+						url: `/pages/evaluateStatus/evaluateStatus?status=1`
+					})
+				}, 1500)
+			} else {
+				uni.showToast({
+					title: res.message,
+					icon: 'none',
+					mask: true
+				})
+				setTimeout(() => {
+					uni.navigateTo({
+						url: `/pages/evaluateStatus/evaluateStatus?status=2`
+					})
+				}, 1500)
+			}
 		},
 		},
 		// 上传图片回调
 		// 上传图片回调
 		handleUpLoad() {
 		handleUpLoad() {

+ 9 - 0
pages/home3/home3.vue

@@ -266,6 +266,15 @@ export default {
 			this.headerType = false
 			this.headerType = false
 		}
 		}
 	},
 	},
+	onPullDownRefresh() {
+		this.hotelList = []
+		this.page = 1
+		this.getLocation()
+		this.getResidueCount()
+		setTimeout(() => {
+			uni.stopPullDownRefresh()
+		}, 1000)
+	},
 	onLoad() {
 	onLoad() {
 		this.getLocation()
 		this.getLocation()
 		this.getResidueCount()
 		this.getResidueCount()

+ 48 - 66
pages/myComplaint/myComplaint.vue

@@ -7,24 +7,24 @@
 				<!-- 标题区域 -->
 				<!-- 标题区域 -->
 				<view class="box_header">
 				<view class="box_header">
 					<view class="header_left">{{ item.title }}</view>
 					<view class="header_left">{{ item.title }}</view>
-					<view class="header_right">{{ item.type }}</view>
+					<view class="header_right">{{ item.progressType }}</view>
 				</view>
 				</view>
 				<!-- 信息区域 -->
 				<!-- 信息区域 -->
 				<view class="box_info">
 				<view class="box_info">
-					<img mode="aspectFill" :src="item.imgUrl" />
+					<img mode="aspectFill" :src="item.url" />
 					<view class="info_center">
 					<view class="info_center">
-						<view class="center_name">{{ item.name }}</view>
-						<view class="center_time">{{ item.time }}</view>
-						<view class="center_tags">{{ item.count }}间 {{ item.roomType }}</view>
-						<view class="center_price">¥{{ item.price }}</view>
+						<view class="center_name">{{ item.hotelName }}</view>
+						<view class="center_time">{{ item.orderStartTime.slice(0, 10) }} - {{ item.orderEndTime.slice(0, 10) }}</view>
+						<view class="center_tags">{{ item.houseOrderNumber }}间 {{ item.houseName }}</view>
+						<view class="center_price">¥{{ item.payAccount }}</view>
 					</view>
 					</view>
-					<view class="info_right">{{ item.status }}</view>
+					<view class="info_right">{{ item.orderStatus }}</view>
 				</view>
 				</view>
 
 
 				<!-- 反馈时间区域 -->
 				<!-- 反馈时间区域 -->
 				<view class="box_time">
 				<view class="box_time">
 					<view class="time_left">反馈时间</view>
 					<view class="time_left">反馈时间</view>
-					<view class="time_right">{{ item.time2 }}</view>
+					<view class="time_right">{{ item.dateTime }}</view>
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
@@ -40,68 +40,50 @@
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
-			// 投诉列表区域
-			list: [
-				// {
-				// 	id: 1,
-				// 	title: '标题',
-				// 	type: '处理中',
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '开心民宿',
-				// 	time: '2023-07-26  -  2023-07-27',
-				// 	status: '支付超时',
-				// 	price: 666,
-				// 	time2: '2023-08-15  15:15:15',
-				// 	count: 1,
-				// 	roomType: '双人标间'
-				// },
-				// {
-				// 	id: 2,
-				// 	title: '我要投诉',
-				// 	type: '已处理',
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '快乐民宿',
-				// 	time: '2023-07-26  -  2023-07-27',
-				// 	status: '支付超时',
-				// 	price: 888,
-				// 	time2: '2023-08-15  15:15:15',
-				// 	count: 1,
-				// 	roomType: '单人标间'
-				// },
-				// {
-				// 	id: 3,
-				// 	title: '投诉',
-				// 	type: '处理中',
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '健康民宿',
-				// 	time: '2023-07-26  -  2023-07-27',
-				// 	status: '支付超时',
-				// 	price: 1288,
-				// 	time2: '2023-08-15  15:15:15',
-				// 	count: 1,
-				// 	roomType: '双人标间'
-				// },
-				// {
-				// 	id: 4,
-				// 	title: '投诉投诉投诉投诉',
-				// 	type: '投诉',
-				// 	imgUrl: 'https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375',
-				// 	name: '木叶村',
-				// 	time: '2023-07-26  -  2023-07-27',
-				// 	status: '支付超时',
-				// 	price: 8888,
-				// 	time2: '2023-08-15  15:15:15',
-				// 	count: 1,
-				// 	roomType: '火影标间'
-				// }
-			]
+			// 投诉列表数据
+			list: [],
+			// 当前页
+			page: 1,
+			// 每页多少条
+			rows: 6,
+			// 总条数
+			total: null
+		}
+	},
+	onLoad() {
+		this.getData()
+	},
+	onReachBottom() {
+		if (this.list.length < this.total) {
+			this.page++
+			this.getData()
+		} else {
+			uni.showToast({
+				title: '没有更多数据了',
+				icon: 'none'
+			})
 		}
 		}
 	},
 	},
 	methods: {
 	methods: {
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/complaintcomplaintPage.action',
+				data: {
+					usersId: uni.getStorageSync('userInfo').id,
+					page: this.page,
+					rows: this.rows
+				}
+			})
+			// console.log(res)
+			if (res.code === 200 && res.page.pageList) {
+				this.total = res.page.total
+				this.list = [...this.list, ...res.page.pageList]
+			}
+		},
 		// 点击每一个投诉订单的回调
 		// 点击每一个投诉订单的回调
 		handleGoPage(item) {
 		handleGoPage(item) {
 			uni.navigateTo({
 			uni.navigateTo({
-				url: `/pages/complaintProgress/complaintProgress`
+				url: `/pages/complaintProgress/complaintProgress?id=${item.id}`
 			})
 			})
 		}
 		}
 	}
 	}
@@ -112,7 +94,7 @@ export default {
 .container {
 .container {
 	box-sizing: border-box;
 	box-sizing: border-box;
 	padding: 20rpx;
 	padding: 20rpx;
-	height: 100vh;
+	min-height: 100vh;
 	overflow-y: auto;
 	overflow-y: auto;
 	background-color: #f7f7f7;
 	background-color: #f7f7f7;
 
 
@@ -228,4 +210,4 @@ export default {
 		}
 		}
 	}
 	}
 }
 }
-</style>
+</style>

+ 175 - 67
pages/myCoupon/myCoupon.vue

@@ -25,7 +25,7 @@
 				<!-- 代金券类型区域 -->
 				<!-- 代金券类型区域 -->
 				<img src="../../static/my/couponTitle.png" />
 				<img src="../../static/my/couponTitle.png" />
 				<view class="box_title">
 				<view class="box_title">
-					<view class="title_type">{{ item.type }}</view>
+					<view class="title_type">{{ item.type === 1 ? '代金券' : '折扣券' }}</view>
 					<view class="title_num">x{{ item.count }}张</view>
 					<view class="title_num">x{{ item.count }}张</view>
 				</view>
 				</view>
 				<!-- 代金券信息区域 -->
 				<!-- 代金券信息区域 -->
@@ -33,24 +33,42 @@
 					<view class="info_left">
 					<view class="info_left">
 						<view class="left_top">{{ item.name }}</view>
 						<view class="left_top">{{ item.name }}</view>
 						<view class="left_bottom">
 						<view class="left_bottom">
-							<view class="tag">有限期至{{ item.time }}</view>
-							<view class="tag">可通用</view>
-							<view class="tag">全民宿</view>
+							<view class="tag">有限期至{{ item.effectiveEndDate.slice(0, 10) }}</view>
+							<!-- <view class="tag">可通用</view> -->
+							<view class="tag" v-if="item.hotelIds.includes('-1')">全名宿</view>
+							<view class="tag" v-else @click="handleClickTag(item.hotelIds)">
+								指定民宿
+								<img src="../../static/index/right2.png" />
+							</view>
 						</view>
 						</view>
 					</view>
 					</view>
 					<view class="info_right">
 					<view class="info_right">
-						<view class="right_top">{{ item.msg }}</view>
-						<view class="right_bottom" :class="{ color: item.info === '无门槛' }">{{ item.info }}</view>
+						<view class="right_top">{{ item.type === 1 ? '¥' + item.deductionPrice : item.rebatePrice + '折' }}</view>
+						<view class="right_bottom" :class="{ color: item.meetPrice === 0 }">{{ item.meetPrice === 0 ? '无门槛' : '满' + item.meetPrice + '可用' }}</view>
+						<view class="right_bottom">{{ item.type === 2 ? '最多减免' + item.maxDeduction : '' }}</view>
 					</view>
 					</view>
 				</view>
 				</view>
 				<!-- 代金券按钮区域 -->
 				<!-- 代金券按钮区域 -->
-				<view class="box_btn">去使用</view>
+				<view class="box_btn" @click="handleUse(item)">去使用</view>
 			</view>
 			</view>
 
 
 			<view class="noData" v-if="list.length === 0">
 			<view class="noData" v-if="list.length === 0">
 				<img lazy-load :lazy-load-margin="0" src="../../static/images/noData.png" />
 				<img lazy-load :lazy-load-margin="0" src="../../static/images/noData.png" />
 				暂无数据
 				暂无数据
 			</view>
 			</view>
+
+			<!-- 指定民宿弹窗区域 -->
+			<uni-popup ref="popup" type="center" :is-mask-click="false">
+				<view class="popup_body">
+					<view class="popup_header">
+						<img src="../../static/my/popup_title.png" />
+						<view class="header_title">指定民宿</view>
+						<img src="../../static/my/popup_title.png" />
+					</view>
+					<view class="popup_center">{{ hotels }}</view>
+					<view class="popup_btn" @click="handleClose">我知道了</view>
+				</view>
+			</uni-popup>
 		</scroll-view>
 		</scroll-view>
 	</view>
 	</view>
 </template>
 </template>
@@ -63,80 +81,109 @@ export default {
 			activeCurrent: 0,
 			activeCurrent: 0,
 			// 分段器数组
 			// 分段器数组
 			headerList: ['全部', '代金券', '折扣券'],
 			headerList: ['全部', '代金券', '折扣券'],
-			list: [
-				// {
-				// 	id: 1,
-				// 	type: '折扣券',
-				// 	count: 5,
-				// 	name: '7.5折折扣卷',
-				// 	time: '2023.09.01',
-				// 	msg: '7.5折',
-				// 	info: '满200可用'
-				// },
-				// {
-				// 	id: 2,
-				// 	type: '代金券',
-				// 	count: 2,
-				// 	name: '20元代金券',
-				// 	time: '2023.10.01',
-				// 	msg: '¥10',
-				// 	info: '无门槛'
-				// },
-				// {
-				// 	id: 1,
-				// 	type: '折扣券',
-				// 	count: 5,
-				// 	name: '7.5折折扣卷',
-				// 	time: '2023.09.01',
-				// 	msg: '7.5折',
-				// 	info: '满200可用'
-				// },
-				// {
-				// 	id: 2,
-				// 	type: '代金券',
-				// 	count: 2,
-				// 	name: '20元代金券',
-				// 	time: '2023.10.01',
-				// 	msg: '¥10',
-				// 	info: '无门槛'
-				// },
-				// {
-				// 	id: 1,
-				// 	type: '折扣券',
-				// 	count: 5,
-				// 	name: '7.5折折扣卷',
-				// 	time: '2023.09.01',
-				// 	msg: '7.5折',
-				// 	info: '满200可用'
-				// },
-				// {
-				// 	id: 2,
-				// 	type: '代金券',
-				// 	count: 2,
-				// 	name: '20元代金券',
-				// 	time: '2023.10.01',
-				// 	msg: '¥10',
-				// 	info: '无门槛'
-				// }
-			]
+			list: [],
+			// 当前页
+			page: 1,
+			// 每页多少条
+			rows: 6,
+			// 总条数
+			total: null,
+			types: '1,2',
+			// 指定民宿信息
+			hotels: ''
 		}
 		}
 	},
 	},
+	onShow() {
+		this.activeCurrent = 0
+		this.types = '1,2'
+		this.page = 1
+		this.list = []
+		this.getData()
+	},
+	// onLoad() {
+	// 	this.getData()
+	// },
 	methods: {
 	methods: {
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/hccardCouponPage.action',
+				data: {
+					userId: uni.getStorageSync('userInfo').id,
+					types: this.types,
+					page: this.page,
+					rows: this.rows
+				}
+			})
+			// console.log(res);
+			if (res.code === 200 && res.page.pageList) {
+				this.list = [...this.list, ...res.page.pageList]
+				this.total = res.page.total
+				this.list.forEach((ele) => {
+					ele.hotelIds = ele.hotelIds.split(',')
+				})
+			}
+		},
+		// 点击指定民宿tag回调
+		async handleClickTag(ids) {
+			const res = await this.$myRequest({
+				url: '/mhotel/hcdesignatedHotel.action',
+				data: {
+					hotelIds: ids.join()
+				}
+			})
+			// console.log(res);
+			if (res.code === 200) {
+				this.hotels = res.data.name
+			}
+			this.$refs.popup.open()
+		},
+		// 去使用按钮回调
+		handleUse(item) {
+			if (item.hotelIds.length === 1 && !item.hotelIds.includes('-1')) {
+				uni.navigateTo({
+					url: `/pages/detail/detail?id=${item.hotelIds[0]}`
+				})
+			} else {
+				uni.switchTab({
+					url: '/pages/home3/home3'
+				})
+			}
+		},
 		// 切换分段器回调
 		// 切换分段器回调
 		onClickItem(e) {
 		onClickItem(e) {
-			if (this.current !== e.currentIndex) {
-				this.current = e.currentIndex
+			this.activeCurrent = e.currentIndex
+			if (this.activeCurrent === 0) {
+				this.types = '1,2'
+			} else if (this.activeCurrent === 1) {
+				this.types = '1'
+			} else if (this.activeCurrent === 2) {
+				this.types = '2'
 			}
 			}
+			this.page = 1
+			this.list = []
+			this.getData()
 		},
 		},
 		// 列表下拉到底部回调
 		// 列表下拉到底部回调
 		handlePull() {
 		handlePull() {
-			console.log(111)
+			if (this.list.length < this.total) {
+				this.page++
+				this.getData()
+			} else {
+				uni.showToast({
+					title: '没有更多数据了',
+					icon: 'none'
+				})
+			}
 		},
 		},
 		// 跳转页面回调
 		// 跳转页面回调
 		handleGoPage(url) {
 		handleGoPage(url) {
 			uni.navigateTo({
 			uni.navigateTo({
 				url
 				url
 			})
 			})
+		},
+		// 点击弹窗我知道了按钮回调
+		handleClose() {
+			this.$refs.popup.close()
 		}
 		}
 	}
 	}
 }
 }
@@ -220,8 +267,9 @@ export default {
 
 
 		.body_box {
 		.body_box {
 			position: relative;
 			position: relative;
+			padding-bottom: 18rpx;
 			margin-bottom: 20rpx;
 			margin-bottom: 20rpx;
-			height: 218rpx;
+			// height: 218rpx;
 			border-radius: 15rpx;
 			border-radius: 15rpx;
 			background-color: #fff;
 			background-color: #fff;
 
 
@@ -268,7 +316,16 @@ export default {
 						font-size: 24rpx;
 						font-size: 24rpx;
 
 
 						.tag {
 						.tag {
+							display: flex;
+							align-items: center;
 							margin-right: 32rpx;
 							margin-right: 32rpx;
+
+							img {
+								margin-top: 4rpx;
+								margin-left: 4rpx;
+								width: 28rpx;
+								height: 28rpx;
+							}
 						}
 						}
 					}
 					}
 				}
 				}
@@ -283,6 +340,7 @@ export default {
 					}
 					}
 
 
 					.right_bottom {
 					.right_bottom {
+						margin-bottom: 8rpx;
 						text-align: end;
 						text-align: end;
 						font-size: 20rpx;
 						font-size: 20rpx;
 					}
 					}
@@ -322,6 +380,56 @@ export default {
 				height: 600rpx;
 				height: 600rpx;
 			}
 			}
 		}
 		}
+
+		.popup_body {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			width: 481rpx;
+			height: 404rpx;
+			border-radius: 22.5rpx;
+			background-color: #fff;
+
+			.popup_header {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				height: 123rpx;
+				font-size: 34rpx;
+				font-weight: bold;
+				color: #0f194d;
+
+				img {
+					width: 16rpx;
+					height: 16rpx;
+				}
+
+				.header_title {
+					margin: 0 10rpx;
+				}
+			}
+
+			.popup_center {
+				box-sizing: border-box;
+				padding: 0 20rpx;
+				height: 135rpx;
+				color: rgba(15, 25, 77, 0.6);
+				font-size: 28rpx;
+				font-weight: bold;
+			}
+
+			.popup_btn {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				width: 396rpx;
+				height: 76rpx;
+				color: #fff;
+				font-size: 26rpx;
+				border-radius: 43rpx;
+				background: linear-gradient(90deg, #0bc196 0%, #096562 100%);
+			}
+		}
 	}
 	}
 }
 }
 </style>
 </style>

+ 9 - 12
pages/myEvaluate/myEvaluate.vue

@@ -18,7 +18,7 @@
 
 
 				<!-- 房间信息区域 -->
 				<!-- 房间信息区域 -->
 				<view class="box_center">
 				<view class="box_center">
-					<img mode="aspectFill" src="https://img1.baidu.com/it/u=4085584268,3308739054&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=375" />
+					<img mode="aspectFill" :src="item.url" />
 					<view class="center_info">
 					<view class="center_info">
 						<view>{{ item.houseOrderNumber }}间,{{ item.houseName }}</view>
 						<view>{{ item.houseOrderNumber }}间,{{ item.houseName }}</view>
 						<view>{{ item.checkOutTime.slice(0, 10) }} - {{ item.checkOutTime.slice(0, 10) }}</view>
 						<view>{{ item.checkOutTime.slice(0, 10) }} - {{ item.checkOutTime.slice(0, 10) }}</view>
@@ -63,23 +63,21 @@ export default {
 		this.getData()
 		this.getData()
 	},
 	},
 	methods: {
 	methods: {
-		getData() {
-			uni.request({
-				url: 'http://192.168.161.224:8088/mhotel/abcapersonageComment.action',
+		async getData() {
+			const res = await this.$myRequest({
+				url: '/mhotel/abcapersonageComment.action',
 				data: {
 				data: {
 					usersId: uni.getStorageSync('userInfo').id,
 					usersId: uni.getStorageSync('userInfo').id,
 					status: this.activeCurrent,
 					status: this.activeCurrent,
 					page: this.page,
 					page: this.page,
 					rows: this.rows
 					rows: this.rows
-				},
-				success: (res) => {
-					// console.log(res.data)
-					if (res.data.code === 200 && res.data.page.pageList) {
-						this.list = [...this.list, ...res.data.page.pageList]
-						this.total = res.data.total
-					}
 				}
 				}
 			})
 			})
+			// console.log(res)
+			if (res.code === 200 && res.page.pageList) {
+				this.list = [...this.list, ...res.page.pageList]
+				this.total = res.total
+			}
 		},
 		},
 		// 切换分段器回调
 		// 切换分段器回调
 		onClickItem(e) {
 		onClickItem(e) {
@@ -95,7 +93,6 @@ export default {
 		},
 		},
 		// 列表下拉到底部回调
 		// 列表下拉到底部回调
 		handlePull() {
 		handlePull() {
-			console.log(111)
 			if (this.list.length < this.total) {
 			if (this.list.length < this.total) {
 				this.page++
 				this.page++
 				this.getData()
 				this.getData()

+ 2 - 6
pages/orderDetail/orderDetail.vue

@@ -377,13 +377,9 @@ export default {
 			}
 			}
 		},
 		},
 		handleGoPage() {
 		handleGoPage() {
-			uni.showToast({
-				title: '功能开发中',
-				icon: 'none'
+			uni.navigateTo({
+				url: `/pages/complaint/complaint?bookingId=${this.info.id}&hotelId=${this.info.hotelId}&houseId=${this.info.houseId}`
 			})
 			})
-			// uni.navigateTo({
-			// 	url: `/pages/complaint/complaint`
-			// })
 		}
 		}
 	}
 	}
 }
 }

+ 17 - 6
pages/orderManage/orderManage.vue

@@ -81,16 +81,19 @@ export default {
 		}
 		}
 	},
 	},
 	onLoad() {
 	onLoad() {
-		this.getLocation()
+		// this.getLocation()
 	},
 	},
 	onUnload() {
 	onUnload() {
 		this.handleDeleteList()
 		this.handleDeleteList()
 	},
 	},
+	onHide() {
+		this.handleDeleteList()
+	},
 	onShow() {
 	onShow() {
-		// this.page = 1
-		// this.orderList = []
-		// this.getLocation()
-		this.deleteList = []
+		this.total = null
+		this.page = 1
+		this.orderList = []
+		this.getLocation()
 	},
 	},
 	// 下拉刷新
 	// 下拉刷新
 	onPullDownRefresh() {
 	onPullDownRefresh() {
@@ -104,7 +107,7 @@ export default {
 	},
 	},
 	// 上拉加载
 	// 上拉加载
 	onReachBottom() {
 	onReachBottom() {
-		if (this.orderList.length < this.total) {
+		if (this.orderList.length < this.total - this.deleteList.length) {
 			this.page++
 			this.page++
 			this.getOrderList()
 			this.getOrderList()
 		} else {
 		} else {
@@ -363,6 +366,12 @@ export default {
 							this.deleteList.push(item.id)
 							this.deleteList.push(item.id)
 							const num = this.orderList.findIndex((v) => v.id === item.id)
 							const num = this.orderList.findIndex((v) => v.id === item.id)
 							this.orderList.splice(num, 1)
 							this.orderList.splice(num, 1)
+							if (this.orderList.length < this.rows && this.total - this.deleteList.length > this.orderList.length) {
+								this.page++
+								this.getOrderList()
+							}
+							// this.total = this.total - this.deleteList.length
+							// console.log(this.total)
 							uni.showToast({
 							uni.showToast({
 								title: '删除成功',
 								title: '删除成功',
 								icon: 'success',
 								icon: 'success',
@@ -390,6 +399,8 @@ export default {
 				})
 				})
 				// console.log(res)
 				// console.log(res)
 				if (res.code === 200) {
 				if (res.code === 200) {
+					const num = this.deleteList.findIndex((v) => v === ele)
+					this.deleteList.splice(num, 1)
 					// uni.showToast({
 					// uni.showToast({
 					// 	title: '删除成功',
 					// 	title: '删除成功',
 					// 	icon: 'success',
 					// 	icon: 'success',

+ 19 - 0
uni_modules/uni-fav/changelog.md

@@ -0,0 +1,19 @@
+## 1.2.1(2022-05-30)
+- 新增 stat 属性 ,是否开启uni统计功能
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav)
+## 1.1.1(2021-08-24)
+- 新增 支持国际化
+## 1.1.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.0.6(2021-05-12)
+- 新增 组件示例地址
+## 1.0.5(2021-04-21)
+- 优化 添加依赖 uni-icons, 导入后自动下载依赖
+## 1.0.4(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.0.3(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.0.2(2021-02-05)
+- 调整为uni_modules目录规范

+ 4 - 0
uni_modules/uni-fav/components/uni-fav/i18n/en.json

@@ -0,0 +1,4 @@
+{
+	"uni-fav.collect": "collect",
+	"uni-fav.collected": "collected"
+}

+ 8 - 0
uni_modules/uni-fav/components/uni-fav/i18n/index.js

@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+	en,
+	'zh-Hans': zhHans,
+	'zh-Hant': zhHant
+}

+ 4 - 0
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json

@@ -0,0 +1,4 @@
+{
+	"uni-fav.collect": "收藏",
+	"uni-fav.collected": "已收藏"
+}

+ 4 - 0
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json

@@ -0,0 +1,4 @@
+{
+	"uni-fav.collect": "收藏",
+	"uni-fav.collected": "已收藏"
+}

+ 161 - 0
uni_modules/uni-fav/components/uni-fav/uni-fav.vue

@@ -0,0 +1,161 @@
+<template>
+	<view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]"
+	 @click="onClick" class="uni-fav">
+		<!-- #ifdef MP-ALIPAY -->
+		<view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
+			<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
+		</view>
+		<!-- #endif -->
+		<!-- #ifndef MP-ALIPAY -->
+		<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled"
+		 v-if="!checked && (star === true || star === 'true')" />
+		<!-- #endif -->
+		<text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentFav : contentDefault }}</text>
+	</view>
+</template>
+
+<script>
+
+	/**
+	 * Fav 收藏按钮
+	 * @description 用于收藏功能,可点击切换选中、不选中的状态
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=864
+	 * @property {Boolean} star = [true|false] 按钮是否带星星
+	 * @property {String} bgColor 未收藏时的背景色
+	 * @property {String} bgColorChecked 已收藏时的背景色
+	 * @property {String} fgColor 未收藏时的文字颜色
+	 * @property {String} fgColorChecked 已收藏时的文字颜色
+	 * @property {Boolean} circle = [true|false] 是否为圆角
+	 * @property {Boolean} checked = [true|false] 是否为已收藏
+	 * @property {Object} contentText = [true|false] 收藏按钮文字
+	 * @property {Boolean} stat 是否开启统计功能
+	 * @event {Function} click 点击 fav按钮触发事件
+	 * @example <uni-fav :checked="true"/>
+	 */
+
+	import {
+		initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from './i18n/index.js'
+	const {	t	} = initVueI18n(messages)
+
+	export default {
+		name: "UniFav",
+		// TODO 兼容 vue3,需要注册事件
+		emits: ['click'],
+		props: {
+			star: {
+				type: [Boolean, String],
+				default: true
+			},
+			bgColor: {
+				type: String,
+				default: "#eeeeee"
+			},
+			fgColor: {
+				type: String,
+				default: "#666666"
+			},
+			bgColorChecked: {
+				type: String,
+				default: "#007aff"
+			},
+			fgColorChecked: {
+				type: String,
+				default: "#FFFFFF"
+			},
+			circle: {
+				type: [Boolean, String],
+				default: false
+			},
+			checked: {
+				type: Boolean,
+				default: false
+			},
+			contentText: {
+				type: Object,
+				default () {
+					return {
+						contentDefault: "",
+						contentFav: ""
+					};
+				}
+			},
+			stat:{
+				type: Boolean,
+				default: false
+			}
+		},
+		computed: {
+			contentDefault() {
+				return this.contentText.contentDefault || t("uni-fav.collect")
+			},
+			contentFav() {
+				return this.contentText.contentFav || t("uni-fav.collected")
+			},
+		},
+		watch: {
+			checked() {
+				if (uni.report && this.stat) {
+					if (this.checked) {
+						uni.report("收藏", "收藏");
+					} else {
+						uni.report("取消收藏", "取消收藏");
+					}
+				}
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit("click");
+			}
+		}
+	};
+</script>
+
+<style lang="scss" >
+	$fav-height: 25px;
+
+	.uni-fav {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		width: 60px;
+		height: $fav-height;
+		line-height: $fav-height;
+		text-align: center;
+		border-radius: 3px;
+		/* #ifdef H5 */
+		cursor: pointer;
+		/* #endif */
+	}
+
+	.uni-fav--circle {
+		border-radius: 30px;
+	}
+
+	.uni-fav-star {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		height: $fav-height;
+		line-height: 24px;
+		margin-right: 3px;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.uni-fav-text {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		height: $fav-height;
+		line-height: $fav-height;
+		align-items: center;
+		justify-content: center;
+		font-size: 12px;
+	}
+</style>

+ 89 - 0
uni_modules/uni-fav/package.json

@@ -0,0 +1,89 @@
+{
+  "id": "uni-fav",
+  "displayName": "uni-fav 收藏按钮",
+  "version": "1.2.1",
+  "description": " Fav 收藏组件,可自定义颜色、大小。",
+  "keywords": [
+    "fav",
+    "uni-ui",
+    "uniui",
+    "收藏"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": ""
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "前端组件",
+      "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": [
+			"uni-scss",
+			"uni-icons"
+		],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}

+ 10 - 0
uni_modules/uni-fav/readme.md

@@ -0,0 +1,10 @@
+
+
+## Fav 收藏按钮
+> **组件名:uni-fav**
+> 代码块: `uFav`
+
+用于收藏功能,可点击切换选中、不选中的状态。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 4 - 3
util/api.js

@@ -1,6 +1,7 @@
-// const BASE_URL = "https://chtech.ncjti.edu.cn/hotelReservation"
-const BASE_URL = "https://chtech.ncjti.edu.cn/hotelReservation/mhotel"
-// const BASE_URL = "http://192.168.161.232:8080"
+// const BASE_URL = "https://chtech.ncjti.edu.cn/hotelReservation/mhotel"
+// const BASE_URL = "http://101.42.162.31:8088"
+const BASE_URL = "https://chtech.ncjti.edu.cn/homestay"
+// const BASE_URL = "http://192.168.161.224:8088"
 export const myRequest = (options) => {
 export const myRequest = (options) => {
 	uni.showLoading({
 	uni.showLoading({
 		title: "加载中",
 		title: "加载中",