zs пре 1 година
родитељ
комит
32f97963cb

+ 7 - 3
common/css/font-icon.css

@@ -1,9 +1,9 @@
 @font-face {
 	font-family: "iconfont";
 	/* Project id 4241853 */
-	src: url('//at.alicdn.com/t/c/font_4241853_sf51vf7aycr.woff2?t=1694763107326') format('woff2'),
-		url('//at.alicdn.com/t/c/font_4241853_sf51vf7aycr.woff?t=1694763107326') format('woff'),
-		url('//at.alicdn.com/t/c/font_4241853_sf51vf7aycr.ttf?t=1694763107326') format('truetype');
+	src: url('//at.alicdn.com/t/c/font_4241853_861ns30g5ar.woff2?t=1695020600071') format('woff2'),
+		url('//at.alicdn.com/t/c/font_4241853_861ns30g5ar.woff?t=1695020600071') format('woff'),
+		url('//at.alicdn.com/t/c/font_4241853_861ns30g5ar.ttf?t=1695020600071') format('truetype');
 }
 
 .iconfont {
@@ -14,6 +14,10 @@
 	-moz-osx-font-smoothing: grayscale;
 }
 
+.icon-ditu:before {
+	content: "\e68b";
+}
+
 .icon-zaixiankefu:before {
 	content: "\e65a";
 }

+ 13 - 0
pages.json

@@ -154,6 +154,19 @@
 						"navigationBarTitleText": "房间信息"
 					}
 				},
+				{
+					"path": "ticket/index",
+					"style": {
+						"navigationBarTitleText": "景区门票",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "ticket/info",
+					"style": {
+						"navigationBarTitleText": "详情"
+					}
+				},
 				{
 					"path": "weather/index",
 					"style": {

+ 531 - 0
pagesHome/ticket/index.vue

@@ -0,0 +1,531 @@
+<template>
+	<view class="main">
+		<view class="one">
+			<swiper class="swiper" circular :indicator-dots="true" indicator-color="#F5F5F5"
+				indicator-active-color="#ffffff" :autoplay="true" :interval="3000" :duration="1000">
+				<swiper-item class="list" v-for="(item,index) in config.file" :key="index">
+					<image class="image" :src="item.url" mode="">
+					</image>
+				</swiper-item>
+			</swiper>
+		</view>
+		<view class="bottom">
+			<view class="two">
+				<view class="two_1">{{config.name||'暂无'}}</view>
+				<view class="two_2">
+					<view class="left">
+						<view class="left_1">
+							<text :class="[config.status=='0'?'text_1':'text_2']">{{config.zhStatus||'暂无'}}</text>
+							<text class="time">{{config.open_time||'暂无'}}</text>
+						</view>
+						<view class="left_2">
+							<text>有优待政策</text>
+							<text>景区电话</text>
+							<text>有免费停车</text>
+							<text>院内交通</text>
+						</view>
+					</view>
+					<view class="right">简介<text class="iconfont icon-dayuhao"></text></view>
+				</view>
+				<view class="two_3">
+					<view class="left">{{config.address||'暂无'}}</view>
+					<view class="right">
+						<text class="iconfont icon-ditu"></text>
+						<text>地图</text>
+					</view>
+				</view>
+				<view class="two_4">
+					<view class="left">优惠卷</view>
+					<view class="right">领卷<text class="iconfont icon-dayuhao"></text></view>
+				</view>
+			</view>
+			<view class="thr">
+				<view class="thr_1">门票</view>
+				<view class="thr_2">
+					<text class="text">今日出游</text>
+					<text class="text">明日出游</text>
+					<text class="text">指定日期<text class="iconfont icon-dayuhao"></text></text>
+				</view>
+				<view class="thr_3">
+					<view class="list" v-for="(item, index) in totalList" :key="index">
+						<text class="text">{{item.label}}</text>
+					</view>
+					<view>筛选</view>
+				</view>
+				<view class="thr_4">
+					<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
+						<view class="list-scroll-view">
+							<view class="list" v-for="(item, index) in list" :key="index">
+								<view class="left">
+									<view class="name">{{item.name||'暂无'}}</view>
+									<view class="type">#{{item.zhType||'暂无'}}</view>
+									<view class="other">
+										已售{{item.buy_num||0}}|购买须知
+										<text class="iconfont icon-dayuhao"></text>
+									</view>
+								</view>
+								<view class="right">
+									<view class="money">
+										<text>¥{{item.original_price||'暂无'}}</text>
+										<text>¥{{item.money||'暂无'}}起</text>
+									</view>
+									<view class="button">
+										<button type="warn" @tap.stop="toBuy(item)">预订</button>
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="is_bottom" v-if="is_bottom">
+							<text>{{config.bottom_title||'到底了!'}}</text>
+						</view>
+					</scroll-view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				type: '',
+				searchInfo: {},
+				config: {},
+				user: {},
+				list: [],
+				total: 0,
+				skip: 0,
+				limit: 10,
+				page: 0,
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
+				// 字典表
+				statusList: [],
+				personList: [],
+				typeList: [],
+				totalList: []
+			}
+		},
+		onLoad: async function(e) {
+			const that = this;
+			that.$set(that, `type`, e && e.type || '');
+			uni.setNavigationBarTitle({
+				title: e && e.title || '分类'
+			});
+			await that.searchOther();
+			that.searchConfig();
+			that.searchToken();
+			that.search();
+		},
+		methods: {
+			searchToken() {
+				const that = this;
+				try {
+					const res = uni.getStorageSync('token');
+					if (res) that.$set(that, `user`, res);
+				} catch (e) {
+					uni.showToast({
+						title: err.errmsg,
+						icon: 'error',
+						duration: 2000
+					});
+				}
+			},
+			searchConfig() {
+				const that = this;
+				try {
+					const res = uni.getStorageSync('config');
+					if (res) {
+						const status = that.statusList.find(i => i.value == res.status)
+						if (status) res.zhStatus = status.label
+						that.$set(that, `config`, res);
+					}
+				} catch (e) {
+					uni.showToast({
+						title: err.errmsg,
+						icon: 'error',
+						duration: 2000
+					});
+				}
+			},
+			// 查询
+			async search() {
+				const that = this;
+				let info = {
+					skip: that.skip,
+					limit: that.limit,
+					is_use: '0',
+					status: '1'
+				}
+				const res = await that.$api(`/ticket`, 'GET', {
+					...info,
+					...that.searchInfo
+				})
+				if (res.errcode == '0') {
+					let list = [...that.list, ...res.data];
+					for (let val of list) {
+						const type = that.typeList.find(i => i.value == val.type)
+						if (type) val.zhType = type.label
+					}
+					that.$set(that, `list`, list)
+					that.$set(that, `total`, res.total)
+				} else {
+					uni.showToast({
+						title: res.errmsg,
+					});
+				}
+			},
+			// 输入框
+			toInput(e) {
+				const that = this;
+				if (that.searchInfo.name) that.$set(that.searchInfo, `name`, e.detail.value)
+				else that.$set(that, `searchInfo`, {})
+				that.clearPage();
+				that.search();
+			},
+			// 详情
+			toInfo(e) {
+				uni.navigateTo({
+					url: `/pagesHome/hotel/info?id=${e.id||e._id}`
+				})
+			},
+			// 预订
+			toBuy(item) {
+				const that = this;
+				if (that.user && that.user._id) {
+					console.log(item);
+				} else {
+					uni.navigateTo({
+						url: `/pagesIndex/login/index`
+					})
+				}
+			},
+			// 查询其他信息
+			async searchOther() {
+				const that = this;
+				let res;
+				// 查询状态
+				res = await that.$api(`/dictData`, 'GET', {
+					type: 'config_status',
+					is_use: '0',
+				})
+				if (res.errcode == '0') that.$set(that, `statusList`, res.data);
+				// 出游人群
+				res = await that.$api(`/dictData`, 'GET', {
+					type: 'ticket_person',
+					is_use: '0',
+				})
+				if (res.errcode == '0') that.$set(that, `personList`, res.data);
+				// 服务特色
+				res = await that.$api(`/dictData`, 'GET', {
+					type: 'ticket_type',
+					is_use: '0',
+				})
+				if (res.errcode == '0') that.$set(that, `typeList`, res.data);
+				that.$set(that, `totalList`, [...that.personList, ...that.typeList].slice(0, 7));
+			},
+			// 分页
+			toPage(e) {
+				const that = this;
+				let list = that.list;
+				let limit = that.limit;
+				if (that.total > list.length) {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					})
+					let page = that.page + 1;
+					that.$set(that, `page`, page)
+					let skip = page * limit;
+					that.$set(that, `skip`, skip)
+					that.searchComment();
+					uni.hideLoading();
+				} else that.$set(that, `is_bottom`, true)
+			},
+			// 触底
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
+			},
+			// 清空列表
+			clearPage() {
+				const that = this;
+				that.$set(that, `list`, [])
+				that.$set(that, `skip`, 0)
+				that.$set(that, `limit`, 10)
+				that.$set(that, `page`, 0)
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.main {
+		display: flex;
+		flex-direction: column;
+		width: 100vw;
+		height: 100vh;
+
+		.one {
+			padding: 0 0 2vw 0;
+
+			.swiper {
+				height: 60vw;
+
+				.list {
+					.image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+		}
+
+		.bottom {
+			position: absolute;
+			top: 55vw;
+			left: 0;
+			right: 0;
+			background-color: var(--f9Color);
+			border-radius: 20px;
+			padding: 2vw;
+
+			.two {
+				.two_1 {
+					padding: 2vw 0;
+					font-size: var(--font18Size);
+					font-weight: bold;
+				}
+
+				.two_2 {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+
+					.left {
+						.left_1 {
+							font-size: var(--font14Size);
+
+							.time {
+								font-weight: 500;
+								margin: 0 1vw;
+							}
+
+							.text_1 {
+								padding: 1px;
+								color: var(--mainColor);
+								background-color: mediumseagreen;
+							}
+
+							.text_2 {
+								padding: 1px;
+								color: var(--mainColor);
+								background-color: red;
+							}
+						}
+
+						.left_2 {
+							font-size: var(--font12Size);
+							margin: 2vw 0;
+
+							text {
+								margin: 0 2px 0 0;
+								padding: 2px 3px;
+								border: 1px solid #964726;
+								color: #964726;
+								border-radius: 5px;
+							}
+						}
+
+					}
+
+					.right {
+						display: flex;
+						align-items: center;
+						font-size: var(--font14Size);
+						color: var(--f85Color);
+					}
+				}
+
+				.two_3 {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					font-size: var(--font14Size);
+
+					.right {
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						font-size: var(--font12Size);
+						padding: 0 5vw 0 0;
+
+						.iconfont {
+							font-size: 20px;
+						}
+					}
+				}
+
+				.two_4 {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					padding: 2vw;
+					font-size: var(--font14Size);
+					background-color: var(--mainColor);
+					border-radius: 10px;
+					margin: 1vw 0;
+
+					.right {
+						display: flex;
+						align-items: center;
+						font-size: var(--font14Size);
+						color: var(--fF0Color);
+					}
+				}
+			}
+
+			.thr {
+				.thr_1 {
+					padding: 2vw 0;
+					font-size: var(--font18Size);
+					font-weight: bold;
+				}
+
+				.thr_2 {
+					padding: 1vw 0;
+
+					.text {
+						margin: 0 5px 0 0;
+						padding: 1vw;
+						border-radius: 5px;
+						font-size: var(--font12Size);
+						color: var(--f69Color);
+						background-color: var(--mainColor);
+
+						.iconfont {
+							font-size: 14px;
+						}
+					}
+				}
+
+				.thr_3 {
+					display: flex;
+					justify-content: space-between;
+					padding: 1vw 0;
+					font-size: var(--font15Size);
+					margin: 1vw 0 0 0;
+
+					.list {
+
+						.text {
+							margin: 0 5px 0 0;
+							padding: 1vw;
+							border-radius: 5px;
+							font-size: var(--font12Size);
+							color: var(--f69Color);
+							background-color: var(--mainColor);
+
+							.iconfont {
+								font-size: 14px;
+							}
+						}
+					}
+
+
+				}
+
+				.thr_4 {
+					position: relative;
+					height: 82vh;
+
+					.list {
+						display: flex;
+						justify-content: space-between;
+						background-color: var(--mainColor);
+						border: 1px solid var(--f5Color);
+						padding: 2vw;
+						margin: 2vw 2vw 0 2vw;
+						border-radius: 5px;
+
+						.left {
+							.name {
+								padding: 2vw 0;
+								font-size: var(--font18Size);
+								font-weight: bold;
+							}
+
+							.type {
+								padding: 0 0 1vw 0;
+								color: var(--f3CColor);
+								font-size: var(--font12Size);
+							}
+
+							.other {
+								color: var(--f69Color);
+								font-size: var(--font12Size);
+							}
+						}
+
+						.right {
+							display: flex;
+							flex-direction: column;
+							justify-content: space-between;
+
+							.money {
+								color: var(--fF0Color);
+								font-size: var(--font16Size);
+								font-weight: bold;
+
+								text:first-child {
+									text-decoration: line-through;
+									color: var(--f69Color);
+									font-size: var(--font12Size);
+									font-weight: 400;
+								}
+							}
+
+							.button {
+								button {
+									font-size: var(--font14Size);
+									border-radius: 40px;
+									background: linear-gradient(to right, #00BFFF, #007AFF);
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.scroll-view {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+
+		.list-scroll-view {
+			display: flex;
+			flex-direction: column;
+		}
+	}
+
+	.is_bottom {
+		width: 100%;
+		text-align: center;
+
+		text {
+			padding: 2vw 0;
+			display: inline-block;
+			color: var(--f85Color);
+			font-size: var(--font14Size);
+		}
+	}
+</style>

+ 227 - 0
pagesHome/ticket/info.vue

@@ -0,0 +1,227 @@
+<template>
+	<view class="main">
+		<view class="one" v-if="info.file.length>0">
+			<swiper class="swiper" circular :indicator-dots="true" indicator-color="#F5F5F5"
+				indicator-active-color="#ffffff" :autoplay="true" :interval="3000" :duration="1000">
+				<swiper-item class="list" v-for="(item,index) in info.file" :key="index">
+					<image class="image" :src="item.url" mode="">
+					</image>
+				</swiper-item>
+			</swiper>
+		</view>
+		<view class="bottom">
+			<view class="two">
+				<view class="two_1">{{info.name||'暂无'}}</view>
+			</view>
+			<view class="thr">
+				<view class="thr_1">
+					<view class="left">价格:</view>
+					<view class="right"><text class="text_1" :user-select='true'>¥{{info.money||'暂无'}}</text></view>
+				</view>
+				<view class="thr_1">
+					<view class="left">数量:</view>
+					<view class="right">
+						<text v-if="info.num==0">售罄</text>
+						<text v-else>{{info.num||'暂无'}} 间</text>
+					</view>
+				</view>
+			</view>
+			<view class="four">
+				<view class="four_1">简介</view>
+				<rich-text :nodes="formatRichText(info.brief)"></rich-text>
+			</view>
+			<view class="foot">
+				<view class="button" v-if="info.num==0"><text>售罄</text></view>
+				<view class="button" v-else @click="toBuy"><text>预订</text></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				id: '',
+				user: {},
+				info: {
+					file: []
+				},
+				// 字典表
+				typeList: []
+			}
+		},
+		onLoad: async function(e) {
+			const that = this;
+			that.$set(that, `id`, e && e.id || '');
+			await that.searchOther();
+			await that.search();
+		},
+		onShow: async function(e) {
+			const that = this;
+			that.searchToken();
+		},
+		methods: {
+			searchToken() {
+				const that = this;
+				try {
+					const res = uni.getStorageSync('token');
+					if (res) {
+						that.$set(that, `user`, res);
+					}
+				} catch (e) {
+					uni.showToast({
+						title: err.errmsg,
+						icon: 'error',
+						duration: 2000
+					});
+				}
+			},
+			async search() {
+				const that = this;
+				if (that.id) {
+					const res = await that.$api(`/ticket/${that.id}`, 'GET', {})
+					if (res.errcode == '0') {
+						const type = that.typeList.find(i => i.value == res.data.type)
+						if (type) res.data.zhType = type.label
+						that.$set(that, `info`, res.data)
+					} else {
+						uni.showToast({
+							title: res.errmsg,
+						});
+					}
+				}
+			},
+			// 处理富文本
+			formatRichText(html) {
+				// 富文本内容格式化
+				return html && html.replace(/<img[^>]*>/gi, function(match, capture) {
+					// 查找所有的 img 元素
+					return match.replace(/style=".*"/gi, '').replace(/style='.*'/gi,
+						'')
+					// 删除找到的所有 img 元素中的 style 属性
+				}).replace(/\<img/gi, '<img style="width:100%;"') // 对 img 元素增加 style 属性,并设置宽度为 100%
+			},
+			// 预订
+			toBuy(item) {
+				const that = this;
+				if (that.user && that.user._id) {
+					console.log("预订");
+				} else {
+					uni.navigateTo({
+						url: `/pagesIndex/login/index`
+					})
+				}
+			},
+			// 查询其他信息
+			async searchOther() {
+				const that = this;
+				let res;
+				// 查询类型
+				res = await that.$api(`/dictData`, 'GET', {
+					type: 'project_type',
+					is_use: '0',
+				})
+				if (res.errcode == '0') that.$set(that, `typeList`, res.data);
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.main {
+		.one {
+			.swiper {
+				height: 70vw;
+
+				.list {
+					.image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+		}
+
+		.bottom {
+			position: absolute;
+			top: 65vw;
+			left: 0;
+			right: 0;
+			background-color: var(--mainColor);
+			border-radius: 20px;
+			padding: 2vw 0 0 0;
+
+			.two {
+				padding: 4vw 2vw;
+
+				.two_1 {
+					padding: 1vw 0;
+					font-weight: bold;
+					font-size: var(--font16Size);
+				}
+
+				.two_2 {
+					color: var(--f85Color);
+					font-size: var(--font12Size);
+				}
+
+			}
+
+			.thr {
+				padding: 2vw;
+
+				.thr_1 {
+					display: flex;
+					font-size: var(--font14Size);
+					padding: 0 0 1vw 0;
+
+					.left {
+						padding: 0 1vw 0 0;
+						font-weight: bold;
+					}
+
+					.right {
+						color: var(--f85Color);
+
+						.text_1 {
+							font-size: var(--font14Size);
+							color: var(--fF0Color);
+						}
+					}
+				}
+			}
+
+			.four {
+				padding: 2vw;
+				margin: 0 0 15vw 0;
+
+				.four_1 {
+					font-weight: bold;
+					font-size: var(--font16Size);
+					padding: 0 0 1vw 0;
+				}
+			}
+		}
+
+		.foot {
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			right: 0;
+
+			.button {
+				display: flex;
+				justify-content: center;
+				background-color: var(--f3CColor);
+				padding: 4vw;
+
+				text {
+					font-size: var(--font16Size);
+					color: var(--mainColor);
+				}
+			}
+		}
+
+	}
+</style>

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/ticket/index.js.map


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pagesHome/ticket/info.js.map


+ 2 - 0
unpackage/dist/dev/mp-weixin/app.json

@@ -37,6 +37,8 @@
         "hotel/index",
         "hotel/info",
         "hotel/detail",
+        "ticket/index",
+        "ticket/info",
         "weather/index",
         "notice/index",
         "notice/detail",

+ 6 - 3
unpackage/dist/dev/mp-weixin/common/main.wxss

@@ -6,9 +6,9 @@
 @font-face {
 	font-family: "iconfont";
 	/* Project id 4241853 */
-	src: url('//at.alicdn.com/t/c/font_4241853_sf51vf7aycr.woff2?t=1694763107326') format('woff2'),
-		url('//at.alicdn.com/t/c/font_4241853_sf51vf7aycr.woff?t=1694763107326') format('woff'),
-		url('//at.alicdn.com/t/c/font_4241853_sf51vf7aycr.ttf?t=1694763107326') format('truetype');
+	src: url('//at.alicdn.com/t/c/font_4241853_861ns30g5ar.woff2?t=1695020600071') format('woff2'),
+		url('//at.alicdn.com/t/c/font_4241853_861ns30g5ar.woff?t=1695020600071') format('woff'),
+		url('//at.alicdn.com/t/c/font_4241853_861ns30g5ar.ttf?t=1695020600071') format('truetype');
 }
 .iconfont {
 	font-family: "iconfont" !important;
@@ -17,6 +17,9 @@
 	-webkit-font-smoothing: antialiased;
 	-moz-osx-font-smoothing: grayscale;
 }
+.icon-ditu:before {
+	content: "\e68b";
+}
 .icon-zaixiankefu:before {
 	content: "\e65a";
 }

+ 11 - 0
unpackage/dist/dev/mp-weixin/common/vendor.js

@@ -39488,6 +39488,17 @@ var _default = {
       "style": {
         "navigationBarTitleText": "房间信息"
       }
+    }, {
+      "path": "ticket/index",
+      "style": {
+        "navigationBarTitleText": "景区门票",
+        "enablePullDownRefresh": true
+      }
+    }, {
+      "path": "ticket/info",
+      "style": {
+        "navigationBarTitleText": "详情"
+      }
     }, {
       "path": "weather/index",
       "style": {

Разлика између датотеке није приказан због своје велике величине
+ 520 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/index.js


+ 5 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/index.json

@@ -0,0 +1,5 @@
+{
+  "navigationBarTitleText": "景区门票",
+  "enablePullDownRefresh": true,
+  "usingComponents": {}
+}

Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/index.wxml


+ 211 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/index.wxss

@@ -0,0 +1,211 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.main.data-v-1ae5c169 {
+  display: flex;
+  flex-direction: column;
+  width: 100vw;
+  height: 100vh;
+}
+.main .one.data-v-1ae5c169 {
+  padding: 0 0 2vw 0;
+}
+.main .one .swiper.data-v-1ae5c169 {
+  height: 60vw;
+}
+.main .one .swiper .list .image.data-v-1ae5c169 {
+  width: 100%;
+  height: 100%;
+}
+.main .bottom.data-v-1ae5c169 {
+  position: absolute;
+  top: 55vw;
+  left: 0;
+  right: 0;
+  background-color: var(--f9Color);
+  border-radius: 20px;
+  padding: 2vw;
+}
+.main .bottom .two .two_1.data-v-1ae5c169 {
+  padding: 2vw 0;
+  font-size: var(--font18Size);
+  font-weight: bold;
+}
+.main .bottom .two .two_2.data-v-1ae5c169 {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.main .bottom .two .two_2 .left .left_1.data-v-1ae5c169 {
+  font-size: var(--font14Size);
+}
+.main .bottom .two .two_2 .left .left_1 .time.data-v-1ae5c169 {
+  font-weight: 500;
+  margin: 0 1vw;
+}
+.main .bottom .two .two_2 .left .left_1 .text_1.data-v-1ae5c169 {
+  padding: 1px;
+  color: var(--mainColor);
+  background-color: mediumseagreen;
+}
+.main .bottom .two .two_2 .left .left_1 .text_2.data-v-1ae5c169 {
+  padding: 1px;
+  color: var(--mainColor);
+  background-color: red;
+}
+.main .bottom .two .two_2 .left .left_2.data-v-1ae5c169 {
+  font-size: var(--font12Size);
+  margin: 2vw 0;
+}
+.main .bottom .two .two_2 .left .left_2 text.data-v-1ae5c169 {
+  margin: 0 2px 0 0;
+  padding: 2px 3px;
+  border: 1px solid #964726;
+  color: #964726;
+  border-radius: 5px;
+}
+.main .bottom .two .two_2 .right.data-v-1ae5c169 {
+  display: flex;
+  align-items: center;
+  font-size: var(--font14Size);
+  color: var(--f85Color);
+}
+.main .bottom .two .two_3.data-v-1ae5c169 {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: var(--font14Size);
+}
+.main .bottom .two .two_3 .right.data-v-1ae5c169 {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  font-size: var(--font12Size);
+  padding: 0 5vw 0 0;
+}
+.main .bottom .two .two_3 .right .iconfont.data-v-1ae5c169 {
+  font-size: 20px;
+}
+.main .bottom .two .two_4.data-v-1ae5c169 {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 2vw;
+  font-size: var(--font14Size);
+  background-color: var(--mainColor);
+  border-radius: 10px;
+  margin: 1vw 0;
+}
+.main .bottom .two .two_4 .right.data-v-1ae5c169 {
+  display: flex;
+  align-items: center;
+  font-size: var(--font14Size);
+  color: var(--fF0Color);
+}
+.main .bottom .thr .thr_1.data-v-1ae5c169 {
+  padding: 2vw 0;
+  font-size: var(--font18Size);
+  font-weight: bold;
+}
+.main .bottom .thr .thr_2.data-v-1ae5c169 {
+  padding: 1vw 0;
+}
+.main .bottom .thr .thr_2 .text.data-v-1ae5c169 {
+  margin: 0 5px 0 0;
+  padding: 1vw;
+  border-radius: 5px;
+  font-size: var(--font12Size);
+  color: var(--f69Color);
+  background-color: var(--mainColor);
+}
+.main .bottom .thr .thr_2 .text .iconfont.data-v-1ae5c169 {
+  font-size: 14px;
+}
+.main .bottom .thr .thr_3.data-v-1ae5c169 {
+  display: flex;
+  justify-content: space-between;
+  padding: 1vw 0;
+  font-size: var(--font15Size);
+  margin: 1vw 0 0 0;
+}
+.main .bottom .thr .thr_3 .list .text.data-v-1ae5c169 {
+  margin: 0 5px 0 0;
+  padding: 1vw;
+  border-radius: 5px;
+  font-size: var(--font12Size);
+  color: var(--f69Color);
+  background-color: var(--mainColor);
+}
+.main .bottom .thr .thr_3 .list .text .iconfont.data-v-1ae5c169 {
+  font-size: 14px;
+}
+.main .bottom .thr .thr_4.data-v-1ae5c169 {
+  position: relative;
+  height: 82vh;
+}
+.main .bottom .thr .thr_4 .list.data-v-1ae5c169 {
+  display: flex;
+  justify-content: space-between;
+  background-color: var(--mainColor);
+  border: 1px solid var(--f5Color);
+  padding: 2vw;
+  margin: 2vw 2vw 0 2vw;
+  border-radius: 5px;
+}
+.main .bottom .thr .thr_4 .list .left .name.data-v-1ae5c169 {
+  padding: 2vw 0;
+  font-size: var(--font18Size);
+  font-weight: bold;
+}
+.main .bottom .thr .thr_4 .list .left .type.data-v-1ae5c169 {
+  padding: 0 0 1vw 0;
+  color: var(--f3CColor);
+  font-size: var(--font12Size);
+}
+.main .bottom .thr .thr_4 .list .left .other.data-v-1ae5c169 {
+  color: var(--f69Color);
+  font-size: var(--font12Size);
+}
+.main .bottom .thr .thr_4 .list .right.data-v-1ae5c169 {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+.main .bottom .thr .thr_4 .list .right .money.data-v-1ae5c169 {
+  color: var(--fF0Color);
+  font-size: var(--font16Size);
+  font-weight: bold;
+}
+.main .bottom .thr .thr_4 .list .right .money text.data-v-1ae5c169:first-child {
+  text-decoration: line-through;
+  color: var(--f69Color);
+  font-size: var(--font12Size);
+  font-weight: 400;
+}
+.main .bottom .thr .thr_4 .list .right .button button.data-v-1ae5c169 {
+  font-size: var(--font14Size);
+  border-radius: 40px;
+  background: linear-gradient(to right, #00BFFF, #007AFF);
+}
+.scroll-view.data-v-1ae5c169 {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.scroll-view .list-scroll-view.data-v-1ae5c169 {
+  display: flex;
+  flex-direction: column;
+}
+.is_bottom.data-v-1ae5c169 {
+  width: 100%;
+  text-align: center;
+}
+.is_bottom text.data-v-1ae5c169 {
+  padding: 2vw 0;
+  display: inline-block;
+  color: var(--f85Color);
+  font-size: var(--font14Size);
+}
+

Разлика између датотеке није приказан због своје велике величине
+ 392 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/info.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/info.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "详情",
+  "usingComponents": {}
+}

Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/info.wxml


+ 76 - 0
unpackage/dist/dev/mp-weixin/pagesHome/ticket/info.wxss

@@ -0,0 +1,76 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.main .one .swiper.data-v-071bd532 {
+  height: 70vw;
+}
+.main .one .swiper .list .image.data-v-071bd532 {
+  width: 100%;
+  height: 100%;
+}
+.main .bottom.data-v-071bd532 {
+  position: absolute;
+  top: 65vw;
+  left: 0;
+  right: 0;
+  background-color: var(--mainColor);
+  border-radius: 20px;
+  padding: 2vw 0 0 0;
+}
+.main .bottom .two.data-v-071bd532 {
+  padding: 4vw 2vw;
+}
+.main .bottom .two .two_1.data-v-071bd532 {
+  padding: 1vw 0;
+  font-weight: bold;
+  font-size: var(--font16Size);
+}
+.main .bottom .two .two_2.data-v-071bd532 {
+  color: var(--f85Color);
+  font-size: var(--font12Size);
+}
+.main .bottom .thr.data-v-071bd532 {
+  padding: 2vw;
+}
+.main .bottom .thr .thr_1.data-v-071bd532 {
+  display: flex;
+  font-size: var(--font14Size);
+  padding: 0 0 1vw 0;
+}
+.main .bottom .thr .thr_1 .left.data-v-071bd532 {
+  padding: 0 1vw 0 0;
+  font-weight: bold;
+}
+.main .bottom .thr .thr_1 .right.data-v-071bd532 {
+  color: var(--f85Color);
+}
+.main .bottom .thr .thr_1 .right .text_1.data-v-071bd532 {
+  font-size: var(--font14Size);
+  color: var(--fF0Color);
+}
+.main .bottom .four.data-v-071bd532 {
+  padding: 2vw;
+  margin: 0 0 15vw 0;
+}
+.main .bottom .four .four_1.data-v-071bd532 {
+  font-weight: bold;
+  font-size: var(--font16Size);
+  padding: 0 0 1vw 0;
+}
+.main .foot.data-v-071bd532 {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+}
+.main .foot .button.data-v-071bd532 {
+  display: flex;
+  justify-content: center;
+  background-color: var(--f3CColor);
+  padding: 4vw;
+}
+.main .foot .button text.data-v-071bd532 {
+  font-size: var(--font16Size);
+  color: var(--mainColor);
+}
+