瀏覽代碼

添加会员套餐和酒店筛选调整

wenjie 9 月之前
父節點
當前提交
6e0ca5a669

+ 5 - 5
App.vue

@@ -16,11 +16,11 @@
 		onShow: function() {
 			console.log('App Show')
 			// 获取商品类型字段
-			getGoodsTypeObj().then(res => {
-				if (res.state == 'Success') {
-					uni.setStorageSync('goodsTypeObj',JSON.stringify(res.content))
-				}
-			})
+			// getGoodsTypeObj().then(res => {
+			// 	if (res.state == 'Success') {
+			// 		uni.setStorageSync('goodsTypeObj',JSON.stringify(res.content))
+			// 	}
+			// })
 		},
 		onHide: function() {
 			console.log('App Hide')

+ 378 - 0
agreement/member.vue

@@ -0,0 +1,378 @@
+<template>
+	<view class="member-agreement">
+		<view class="title">
+			慧研学惠生活用户服务协议
+		</view>
+		<view class="time">
+			发布/生效日期:【2023 年 11 月 6 日】
+		</view>
+		
+		<view class="text">
+			欢迎您注册慧研学惠生活账号并使用服务!
+		</view>
+		
+		<view class="text">
+			本《慧研学惠生活用户服务协议》(以下简称“本服务协议”)是您与慧研学惠生活平台(慧研学惠生活平台是由中数未来(广州)信息技术有限公司及其关联公司运营的平台)之间就注册慧研学惠生活用户账号及使用慧研学惠生活的各项服务等相关事宜所订立的协议。本协议具有合同效力。为使用慧研学惠生活的服务,您应当仔细阅读并遵守本服务协议下的全部内容,特别是涉及免除或者责任限制的条款,该类条款可能以黑体加粗或加下划线的形式提示您重点注意。除非您已阅读并接受本服务协议所有条款,否则您将不能注册慧研学惠生活账号或使用慧研学惠生活的服务,如您不同意本服务条款的任意内容,请勿注册或使用慧研学惠生活的服务,并应立即停止注册程序。如您对本服务协议的内容(特别是涉及免除或者责任限制的条款)有任何疑义,可随时按照本服务协议中列明的联系方式与我们联系,我们将根据您的要求为您进一步解释和说明相关内容。如您勾选“我同意《慧研学惠生活用户服务协议》”并通过注册程序或其他任何方式使用或接受慧研学惠生活的任何服务,即视为您已阅读并同意本服务协议,自愿接受本服务协议的所有内容的约束。请您在决定注册或使用服务前再次确认您已知悉并完全理解本服务协议的所有内容。
+		</view>
+		
+		<view class="text">
+			如果您未满 18 周岁,请务必在家长和其他法定监护人的陪同下阅读本服务协 
+			议,并在进行注册、下单、支付等任何行为或使用慧研学惠生活的其他任何服务前,应事先征得您的家长和其他法定监护人的同意。 
+		</view>
+		
+		<view class="text">
+			本服务协议所述“服务”既包括您使用慧研学惠生活用户账号接受慧研学惠生活平台相关商家、个人所提供的服务与产品,亦包括在某些特定的业务类别下您使用慧研学惠生活用户账号向其他商家、个人或其他主体提供服务的情形。无论“服务”属于上述何种情形,本《慧研学惠生活用户服务协议》都将予以适用。
+		</view>
+		
+		
+		<view class="sub-title">
+			一、协议的主体与范围 
+		</view>
+		
+		<view class="text">
+			【签约主体】视您所使用的具体服务而定,“慧研学惠生活”是指慧研学惠生活旗下运营或提供您所使用的相关具体服务的相关主体的统称,您可在相关服务的具体服务条款或说明文件中查慧研学惠生活看上述主体的名称和信息。“用户”是指使用慧研学惠生活相关服务的使用人,在本服务协议中更多称呼为“您”。
+		</view>
+		
+		<view class="text">
+			【协议内容】本服务协议内容同时包括:
+		</view>
+		
+		<view class="text">
+			(1)《慧研学惠生活用户服务协议》(本协议)
+		</view>
+		<view class="text">
+			(2)《慧研学惠生活平台隐私政策》
+			慧研学惠生活非常重视您的个人信息和隐私的保护,将按照《慧研学惠生活平台隐私政策》中所公布的政策在具体服务中进行隐私及个人信息的收集、存储、使用、披露等活动。您在注册慧研学惠生活账号前,应仔细阅读《慧研学惠生活平台隐私政策》;
+		</view>
+		<view class="text red">
+			(3)基础用户服务规则:您的慧研学惠生活平台账号一经注册,即可凭该账号按规定浏览/搜索慧研学惠生活平台上的各项优惠折扣服务和使用/购买部分基础用户可享的优惠服务。
+		</view>
+		<view class="text red">
+			(4)会员服务规则:为更好地提升用户体验,慧研学惠生活平台提供基础用户升级为会员的通道(付费),成为慧研学惠生活会员后,平台商品或服务可享受会员的专属优惠,具体规则详见《慧研学惠生活会员规则及服务协议》。
+		</view>
+		<view class="text">
+			(5)第三方服务相关的用户授权协议。为方便您在使用慧研学惠生活平台服务的同时, 根据您自身需要,通过慧研学惠生活平台进行跳转等方式,自愿选择接受独立第三方服务商及部分关联第三方服务商所提供的服务,您将在使用该第三方服务前对相应的用户授权协议予以同意确认,以作为您和慧研学惠生活平台之间就该等第三方服务的使用所涉及的相关事项的权利义务依据。
+		</view>
+		<view class="text">
+			(6)由于互联网高速发展,您与慧研学惠生活平台签署的本协议列明的条款并不能完整罗列并覆盖您与慧研学惠生活平台所有权利与义务,因此本协议内容还包括慧研学惠生活平台已经发布的或将来可能发布的各类规则,所有规则为本协议不可分割的组成部分,与协议正文具有同等法律效力。
+		</view>
+		<view class="text">
+			上述各项内容之间如存在不一致之处,以时间上最新发布的内容为准,发布时间相同的,以本款【协议内容】中所包含的组成部分的序号倒序排列为准。
+		</view>
+		<view class="text">
+			【协议遵守】您理解并同意:
+		</view>
+		<view class="text">
+			(1)上述【协议内容】中所述的协议、政策、条款与规则构成本服务协议不可分割的组成部分,共同适用于您所使用的慧研学惠生活平台服务。
+		</view>
+		<view class="text">
+			(2)根据国家法律法规变化、运营需要或为提升服务质量的目的,慧研学惠生活将在必要的时候对上述各项协议、条款与规则不时地进行修改更新,并通过在小程序上发出公告、小程序通知等合理、醒目的方式向您进行提前通知,上述修改更新内容将在相关更新说明中指定的日期开始实施,通常情况下不短于发布之日后八个自然日。
+		</view>
+		<view class="text">
+			(3)您应当及时查阅并了解相关更新修改内容,如您不同意相关更新修改内容,可停止使用相关更新修改内容所涉及的服务,此情形下,变更事项对您不产生效力;如您在上述更新修改内容实施后继续使用所涉及的服务,将视为您已同意各项更新修改内容。
+		</view>
+		<view class="text">
+			【适用平台】本服务协议适用小程序等各类平台或媒介中慧研学惠生活所提供的各项服务。您知悉并理解,为享受上述相关服务,您必须自行提供相关上网设备(如:个人电脑、手机、平板电脑或其他设备)并自行负担相关网络使用和商品服务支付所产生的有关费用。
+		</view>
+		<view class="sub-title">
+			二、账号的注册
+		</view>
+		<view class="text">
+			【注册资料】您应遵循诚实信用、合法善意的原则,向慧研学惠生活提交相关注册资料,相关注册资料应当遵守法律法规、社会主义制度、国家利益、公民合法权益、公序良俗、信息真实等原则,不应提交任何违法或不良信息,相关资料如有变动,您应及时更新。如果因您所提供的注册资料不合法、不真实、不准确或未及时更新,从而导致相关法律责任或不利后果的,您将承担全部的法律责任及不利后果,若又因此对慧研学惠生活平台带来损失,您将承担全部赔偿责任。
+		</view>
+		<view class="text">
+			您已知悉,在慧研学惠生活账号注册过程中,因安全性、内部管理等原因,部分初始注册资料可能将无法再次更改。因此,您应谨慎核查此部分注册资料,确保正确填写。
+		</view>
+		<view class="text">
+			【民事行为能力】您知悉并承诺,您具有完全民事权利能力和行为能力或虽不具有完全民事权利能力和行为能力但已经过您的家长和其他法定监护人同意并由您的家长和其他法定监护人代理注册及使用慧研学惠生活的各项服务。若您不具备前述相适应的民事行为能力即进行账号注册的,则您及您的家长和其他法定监护人应依照法律规定承担因此而导致的一切后果。
+		</view>
+		<view class="text">
+			【真实身份】因国家法律法规、监管要求及特定门类的服务(如金融服务等)需要,您有可能需要在注册或使用该等服务的特定环节中填写真实的身份信息,并需通过相关验证流程后方可使用服务,如您填写的身份信息不完整、不真实或未通过验证,将导致您无法使用该服务、损害自身、他人利益或造成其他不利后果,该等后果将由您予以承担。
+		</view>
+		<view class="text">
+			【注册信息保护】慧研学惠生活将对您所提交的注册信息予以保护,不会将其披露给任何非关联的第三方,除非:
+		</view>
+		<view class="text">
+			(1)相关法律法规或国家机关要求;
+		</view>
+		<view class="text">
+			(2)慧研学惠生活发生相关合并、分立、收购或资产转移;
+		</view>
+		<view class="text">
+			(3)为提供相关服务所必须的情况。
+		</view>
+		<view class="text">
+			对于您所提交的注册信息中涉及个人信息的内容,慧研学惠生活将严格按照《慧研学惠生活隐私政策》的规定进行收集、处理和使用。
+		</view>
+		<view class="text">
+			【账号数量】除因历史原因、业务整合等慧研学惠生活所认可的特殊情况外,慧研学惠生活原则上只允许您使用一个慧研学惠生活用户账号。如有证据证明或慧研学惠生活有理由相信您存在不当注册或不当使用多个慧研学惠生活账号的情形,慧研学惠生活可将相关账号信息进行合并或采取其他合理措施,如因您不当注册或不当使用给慧研学惠生活及相关方造成损失的,您还应承担相应的赔偿责任。此外,出于相关业务需要,慧研学惠生活也可对同一用户的多个账号或相关信息进行合并,如该等合并将对您的权益产生实质影响,慧研学惠生活将在进行上述合并前事先征得您的同意。
+		</view>
+		<view class="text">
+			【提示】因为无法进行安全验证,如果您使用境外手机号码注册慧研学惠生活账号,将无法享受包括但不限于部分优惠活动在内的账号权益。
+		</view>
+		<view class="sub-title">
+			三、账号的使用
+		</view>
+		<view class="text">
+			【账号登录】您可以使用注册账号时填写登记的并获得系统审核通过的账号密 
+			码登录慧研学惠生活平台。慧研学惠生活可根据相关法律法规、监管要求、用户体验、风险控制等因素对登录方式予以适时调整或增减,或在具体业务门类的用户服务条款等规定中予以进一步细化或调整。
+		</view>
+		<view class="text">
+			【账号使用】您应对您账号项下的所有行为(包括但不限于在线签署任何协议,浏览、购买、支付、点评、上传、发布、输入任何内容)所产生的一切后果负责,通过您的账号所发生的上述各项行为将视为您本人的真实意思表示。慧研学惠生活提示您,您通过自身账号在接受慧研学惠生活的各项服务中所上传、发送的任何内容都应具有合法来源,如相关内容涉及任何第三方的合法权益,应事先获得相应的许可。如慧研学惠生活收到涉及您的相关举报或投诉,慧研学惠生活可采取相关法律法规所要求或允许的方式,向相关争议方、相关部门提供包括账号在内的必要的信息,以便解决纠纷争议,保护正当权利人的合法权益。
+		</view>
+		<view class="text">
+			【账号借用】为保证相关账号安全,未经慧研学惠生活的书面同意,您不应将慧研学惠生活平台上所注册的账号借给他人使用,否则您应当承担由此产生的全部责任,慧研学惠生活平台保留拒绝提供相应服务、冻结或收回注册账号或终止本服务协议的权利,并可要求您对慧研学惠生活所承受的损失予以赔偿。
+		</view>
+		<view class="text">
+			【安全义务】如您发现账号存在安全问题,请您立即联系慧研学惠生活予以调查处理,否则慧研学惠生活对潜在损失的产生或扩大不承担任何责任。慧研学惠生活特别提示您,您应该妥善保管您的账号和密码,当您使用完毕慧研学惠生活的服务后,您应安全退出。此外,您不应轻信借款、索要密码或其他涉及财产的网络信息。涉及财产操作的,请一定先核实对方身份,并请经常留意慧研学惠生活有关防范诈骗犯罪的提示。您知悉并同意,如您在账号信息的保管上、相关上网设备的网络安全维护上存在任何过失导致账号丢失、泄露,您应对此所产生的任何后果负责,慧研学惠生活对此不负任何责任,如慧研学惠生活因此产生相关支出,慧研学惠生活将有权向您追偿。
+		</view>
+		<view class="text">
+			【限制冻结】您知悉并同意,在符合法律法规的规定,或经国家机关要求的前 
+			提下,慧研学惠生活有权对您的注册账号进行限制或冻结,在该等情况下,您可能无法继续登陆或使用您的注册账号。
+		</view>
+		<view class="sub-title">
+			四、用户行为规范与责任承担 
+		</view>
+		<view class="text">
+			【用户义务】您知悉并承诺,在使用慧研学惠生活所提供的服务的过程中,您应遵守相关法律法规,不应从事如下违反法律法规的规定,影响正常服务提供或损害他人合法利益的行为:
+		</view>
+		<view class="text">
+			(1)不应利用慧研学惠生活平台或相关服务危害国家安全、破坏政治稳定、泄露国家秘密,不侵犯国家、社会、集体利益和第三方的合法权益,不从事违法犯罪活动,不设立用于实施诈骗,传授犯罪方法,制作或者销售违禁物品、管制物品等违法犯罪活动的网站、通讯群组,不利用网络发布涉及实施诈骗,制作或者销售违禁物品、管制物品以及其他违法犯罪活动的信息;
+		</view>
+		<view class="text">
+			(2)不应制作、发布、复制、查阅和传播、存储、链接下列信息:反对宪法所确定的基本原则的;危害国家安全,泄露国家秘密,颠覆国家政权,推翻社会主义制度,煽动分裂国家,破坏国家统一的;损害国家荣誉和利益的;煽动民族仇恨、民族歧视,破坏民族团结的;破坏国家宗教政策,宣扬邪教和封建迷信的;煽动非法集会、结社、游行、示威、聚众扰乱社会秩序的;捏造、散布谣言,侵犯他人权利,扰乱经济、社会秩序,破坏社会稳定的;散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;侮辱或者诽谤他人,侵害他人合法权益的;宣扬恐怖主义、极端主义的;违背当地风俗习惯的;含有法律、行政法规禁止的其他内容的。
+		</view>
+		<view class="text">
+			(3)不应从事下列危害计算机信息网络安全的活动:对网络服务及相关软硬件设施进行破解、破坏、删除、修改或者增加的;对计算机信息网络中存储或者传输的数据和应用程序进行删除、修改或者增加的;使用软件或硬件等方式窃取他人口令、非法入侵他人计算机系统;故意制作、传播计算机病毒等破坏性程序的;其他危害计算机信息网络安全的活动;
+		</view>
+		<view class="text">
+			(4)不应擅自复制和使用网络上未公开和未授权的文件。除相关著作权人明示同意,不应在网络中擅自破解、传播、下载或复制第三人享有著作权的软件或进行其他任何侵害他人知识产权的活动;
+		</view>
+		<view class="text">
+			(5)不应私自传播广告信息或以“刷单”等不正当方式帮助他人提升评价或利用评价权利对其他用户、商户实施威胁、敲诈勒索;
+		</view>
+		<view class="text">
+			(6)不应因对慧研学惠生活相关服务的使用行为导致慧研学惠生活卷入政治和公共事件;
+		</view>
+		<view class="text">
+			(7)不应通过侵犯第三人合法权益、作弊、扰乱系统、实施网络攻击、恶意套现、刷信誉、批量注册、用机器注册慧研学惠生活平台账户、用机器模拟小程序等手段进行交易或参加慧研学惠生活或其所授权的第三方发布的任何活动;
+		</view>
+		<view class="text">
+			(8)未经慧研学惠生活事先书面许可,不应自行或授权、协助任何第三方非法抓取慧研学惠生活所展示的任何内容(“非法抓取”是指采用未经慧研学惠生活认可的程序或者非正常浏览等技术手段获取内容数据的行为)。
+		</view>
+		<view class="text">
+			【责任承担】如您在使用慧研学惠生活服务过程中涉及上述行为中的一项或多项,则需要对自己的行为承担法律责任。承担法律责任的形式包括但不限于:对受到侵害者进行赔偿,以及在慧研学惠生活首先承担了因您的行为导致的行政处罚或侵权损害赔偿责任等损失(含诉讼费、律师费等相关法律程序费用)后,您应立即给予慧研学惠生活等额的赔偿。此外,根据具体违法违规情形,慧研学惠生活有权作出独立判断,立即暂停或终止对您提供部分或全部服务,包括锁定、注销、删除帐号等措施。
+		</view>
+		<view class="text">
+			您知悉并理解,如果慧研学惠生活发现您的上述违法违规行为,依据相关法律法规的规定,慧研学惠生活有权或有义务立即停止相关服务,删除或屏蔽相关违规信息、服务评价,并视情况进行调查取证,保存有关记录,或向国家有关机关举报。同时,慧研学惠生活有权自主删除、屏蔽含有该内容的任何数据信息。慧研学惠生活将根据国家相关法律法规要求,对依法删除、屏蔽的数据信息予以记录、保存。
+		</view>
+		<view class="text">
+			【广告促销】您理解并同意:为向您提供更为细致、贴心的服务,在经过您的 
+			事先确认后,慧研学惠生活或其授权、认可的第三方商家、广告商可能通过您注册时填写的手机号码或者电子邮箱向您发送您可能感兴趣的商品服务的广告宣传信息、促销优惠等商业性信息,其方式和范围可不经向您特别通知而变更;如果您不愿意接收此类信息,则您有权通过慧研学惠生活平台小程序/公众号或短信提供的相应的退订方式进行退订。
+		</view>
+		<view class="text">
+			您理解并同意,对上述的相关广告信息,您应审慎判断其真实性和可靠性,除 
+			法律法规明确规定外,您应对依据该广告信息进行的交易负责。 
+		</view>
+		<view class="text">
+			【使用目的】除非在特定服务条款或规则中您与慧研学惠生活另有约定或慧研学惠生活另行予以书面同意,您将确保本服务协议下的服务仅为您个人非商业性质的使用。未经慧研学惠生活书面同意,您不得使用未经慧研学惠生活授权的任何插件、外挂或第三方工具对本服务协议下的服务进行干扰、破坏、修改或施加其他影响。
+		</view>
+		<view class="sub-title">
+			五、知识产权 
+		</view>
+		<view class="text">
+			【知识产权】您理解并知悉,除另有书面声明以外,以下信息和内容的知识产权(包括但不限于专利权、著作权、商标权及商业秘密)归慧研学惠生活所有: 
+		</view>
+		<view class="text">
+			1.在慧研学惠生活相关服务中所提供的内容和信息(包括但不限于软件、技术、程序、网页、文字、图片、图像、地图、图标、音频、视频、图表、版面设计、
+			电子文档、数据资料等);
+		</view>
+		<view class="text">
+			2.慧研学惠生活用于提供上述内容和信息的基础设施和平台(包括但不限于小程序、网站、应用程序等);
+		</view>
+		<view class="text">
+			3.在慧研学惠生活提供相关服务中所使用的各项商标、商业形象、商业标识、技术诀窍、标语、文案等;
+		</view>
+		<view class="text">
+			4.慧研学惠生活平台服务的开发、运营、维护等过程中产生的所有数据和信息。 
+			慧研学惠生活所拥有的上述权利及所提供服务中所包含的任何内容的知识产权均受到法律保护,未经慧研学惠生活事先书面许可,您承诺不应且不应允许或协助任何人以任何形式(包括但不限于通过任何机器人、蜘蛛、截屏等程序或设备)进行使用、出租、出借、分发、展示、复制、修改、链接、转载、汇编、发表、出版、抓取、监视、引用或创造相关衍生作品。
+		</view>
+		<view class="text">
+			【用户生成内容】您理解并同意,您在使用慧研学惠生活提供的服务时上传、提交、存储或发布的内容(包括但不限于文字、图片、视频、音频、动画等)均由您原创或已获合法授权。您通过慧研学惠生活上传、提交、存储或发布的任何内容的知识产权归属您或原始著作权人所有,您的上传、提交、存储或发布行为不会侵犯他人的知识产权或其他合法权益。您知悉、理解并同意,您一旦接受本服务协议,即表明您主动将上述内容的非专属、可转让的财产性权利,如著作权(包括但不限于:复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权以及应当由著作权人享有的其他可转让权利),在全世界范围内永久、免费、独家且不可撤销地授权给慧研学惠生活及其关联公司,慧研学惠生活及其关联公司可基于该等授权使用上述内容(包括但不限于用于商业用途)或向第三方自主进行任何必要的转授权。该等授权、转授权的使用场景包括但不限于当前或其他任何网站、应用程序、产品或移动终端设备等,且慧研学惠生活及其关联公司或慧研学惠生活及其关联公司所授权许可的第三方可通过对上述授权内容进行修改、复制、改编、翻译、汇编或制作,形成衍生产品。在不违反相关法律法规的强制性规定、尊重相关原始授权内容的知识产权的基础上,该等衍生产品的相关知识产权归慧研学惠生活及其关联公司或慧研学惠生活所授权许可的第三方所有。
+		</view>
+		<view class="text">
+您确认并同意授权慧研学惠生活及其关联公司以自己的名义或委托专业第三方针对有关您上传、提交、存储或发布的内容(含衍生作品)的侵权行为进行独立自主的维权并获得全部赔偿。维权形式包括但不限于:监测侵权行为、发送维权函、提起诉讼或仲裁、调解、和解等。慧研学惠生活及其关联公司有权对维权事宜做出独立决策并予以实施。
+		</view>
+		<view class="text">
+			您同意,因您通过慧研学惠生活上传、发布的任何内容导致的知识产权侵权问题,您将承担全部责任;如慧研学惠生活及其关联公司,或慧研学惠生活授权的其他服务提供方因第三方知识产权维权而产生损失,您将等额赔偿。
+		</view>
+		<view class="text">
+			本服务协议已经构成《著作权法》第二十五条所规定的书面协议,其效力及于 
+			用户在慧研学惠生活平台发布的任何受著作权法保护的作品内容,无论该内容形成于本服务协议签订前还是本服务协议签订后。慧研学惠生活及慧研学惠生活转授权、许可的相关方有权将您在慧研学惠生活平台发表的产品使用体验、产品讨论或图片进行使用或者与其他人合作使用,使用范围包括但不限于网站、电子杂志、杂志、刊物、海报、公众号文章、微信小程序等。
+		</view>
+		<view class="text">
+			【软件使用】在使用慧研学惠生活过程中,为了改善用户体验、修复漏洞、保障安全性等考虑,慧研学惠生活有权对小程序进行更新,您应该同意更新并更新至最新版本,否则慧研学惠生活将不保证您能正常使用相关服务。
+		</view>
+		<view class="text">
+【软件使用禁止性规定】除非慧研学惠生活书面许可,您在使用慧研学惠生活时不得从事下列任一行为: 
+		</view>
+		<view class="text">
+			(1)删除、编辑或遮挡软件及其副本上关于著作权、商标或其他权利标识或标 
+			记的信息;
+		</view>
+		<view class="text">
+			(2)复制、发布、出售或出租软件或其任何部分;
+		</view>
+		<view class="text">
+			(3)对软件进行反向工程、反向汇编、反向编译,或者以其他方式尝试挖掘、 
+			提取软件的源代码;
+		</view>
+		<view class="text">
+			(4)其他对小程序所产生的数据所进行的任何增加、删减、变动的任何行 
+			为,包含制作、利用、授权各种第三方外挂、插件、系统进行上述行为。
+		</view>
+		<view class="sub-title">
+			六、协议的终止 
+		</view>
+		<view class="text">
+			【协议终止情形】本服务协议于以下任一情形下终止:
+		</view>
+		<view class="text">
+			(1)慧研学惠生活有权依据本服务协议约定,收回、注销用户账号,此情形下本服务协议于账号收回、注销之日终止; 
+		</view>
+		<view class="text">
+			(2)在满足慧研学惠生活平台公示的账号注销条件时,您通过网站自助服务或慧研学惠生活的客服注销慧研学惠生活的用户账号,本服务协议于账号注销之日终止。您理解并同意,您已认真阅读、认可《慧研学惠生活隐私政策》,并已了 解、同意相关用户注销流程及注销后的权利义务安排;
+		</view>
+		<view class="text">
+			(3)慧研学惠生活有权根据自身商业安排经过合理的提前通知终止全部慧研学惠生活平台服务,本服务协议于慧研学惠生活平台全部服务依法定程序及方式终止之日终止。
+		</view>
+		<view class="text">
+			本服务协议终止后,慧研学惠生活将无法继续向您提供任何服务或履行任何其他义务,包括但不限于为您保留或向您披露其原慧研学惠生活账号中的任何信息,向您或第三方转发任何未曾阅读或发送过的信息等。 
+		</view>
+		<view class="text">
+			本服务协议的终止不影响第五条知识产权条款以及其他根据其内容应继续有效 
+			的条款的有效性,也不影响本服务协议终止前各方的相关权利和义务,包括但 
+			不限于守约方依据本服务协议向违约方追究相应的违约责任。
+		</view>
+		<view class="sub-title">
+			七、通知与送达 
+		</view>
+		<view class="text">
+			您知悉并认可,慧研学惠生活可视情况通过下列任意一种或几种方式向您通知重要信息:
+		</view>
+		<view class="text">
+			(1)向您注册时所提交的电子邮箱地址发送电子信息;
+		</view>
+		<view class="text">
+			(2)向您注册时所提交的手机号码发送电子信息; 
+		</view>
+		<view class="text">
+			(3)向您提供的实际地址进行寄送纸质载体信息;
+		</view>
+		<view class="text">
+			(4)在网站或客户端显著位置刊登电子信息;
+		</view>
+		<view class="text">
+			(5)向慧研学惠生活小程序或官方公众号账户的站内信或其他即时通信客户端发送电子信息。 
+		</view>
+		<view class="text">
+			上述电子信息在发送成功或刊登完成后即视为送达。相关纸质载体的发送以相关邮寄凭证上的邮寄日期后的第五个自然日视为送达。
+		</view>
+		<view class="text">
+			上述送达方式同样可适用于相关仲裁或司法程序(含起诉、审理、执行等各阶段)。
+		</view>
+		<view class="text">
+			您应当保证所提供的联系方式是准确、有效的,并进行适时更新,如因提供的 
+			联系方式不准确或怠于更新等不可归责于慧研学惠生活的原因,导致相关通知、文件、文书无法送达或及时送达,您将自行承担由此可能产生的法律后果。
+		</view>
+		<view class="sub-title">
+			八、不可抗力或其他免责事由 
+		</view>
+		<view class="text">
+			【不可抗力】您理解并同意,在使用本服务的过程中,可能会遇到不可抗力等风险因素,使本服务协议下的服务发生中断或终止。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件,包括但不限于信息网络设备维护、信息网络连接故障、电脑、通讯或其他系统的故障、电力故障、罢工、劳动争议、暴乱、起义、骚乱、生产力或生产资料不足、火灾、洪水、风暴、爆炸、战争、政府行为、法律法规变动、司法行政机关的命令、其他不可抗力或第三方的不作为而造成的不能服务或延迟服务等行为。出现上述情况时,慧研学惠生活将努力在第一时间与相关部门配合,及时进行修复,但是由此给您造成的损失,慧研学惠生活在法律允许的范围内免责。
+		</view>
+		<view class="text">
+			【其他免责事由】您理解并同意,在法律允许的范围内,慧研学惠生活对以下事由所导致的服务中断或终止不承担责任:
+		</view>
+		<view class="text">
+			(1)受到计算机病毒、木马或其他恶意程序、黑客攻击的破坏;
+		</view>
+		<view class="text">
+			(2)用户或慧研学惠生活的小程序、系统、硬件和通信线路出现故障;
+		</view>
+		<view class="text">
+			(3)用户操作不当;
+		</view>
+		<view class="text">
+			(4)用户通过非慧研学惠生活授权的方式使用本服务;
+		</view>
+		<view class="text">
+			(5)其他慧研学惠生活无法控制或合理预见的情形。
+		</view>
+		<view class="text">
+			【信息真实性】慧研学惠生活提示您,在使用本服务的过程中,您可能会遇到网络信息或其他用户行为带来的风险,该等风险包含他人匿名或冒名的含有威胁、诽谤、令人反感、非法、误导、欺骗等任何信息或行为所造成任何心理、生理上的伤害或经济损失。请您仔细甄别,并在遇到上述相关不法行为时及时向慧研学惠生活或有关机关举报或投诉。慧研学惠生活将对相关内容开展日常检查并在收到举报或投诉时进行相应处理,但请您注意,慧研学惠生活不对非慧研学惠生活所发出或刊登的任何信息的真实性、适用性、合法性承担责任,也不对因第三方侵权行为给您造成的损害负责。
+		</view>
+		<view class="text">
+			【责任限制】除非另有明确书面说明,在符合法律法规规定的情况下,慧研学惠生活不对其网站和客户端上的信息、内容、材料、产品或服务做任何形式的明示或默示的声明或担保。
+		</view>
+		<view class="sub-title">
+			九、管辖、法律适用与争议解决
+		</view>
+		<view class="text">
+			本服务协议的成立、生效、履行、解释与纠纷解决,适用中华人民共和国大陆 
+			地区法律法规,并且排除一切冲突法规定的适用。如因某项具体服务中的产品或服务问题导致您与慧研学惠生活间出现纠纷,您同意,该等纠纷将由适用于该项具体服务的服务条款或规则中所规定的争议解决地的有管辖权人民法院受理。就本服务协议而言,如您因本服务协议文本与慧研学惠生活产生争议纠纷,您同意交由本服务协议签订地有管辖权人民法院受理。<text class="red">本服务协议签订地为广东省广州市天河区。</text> 
+		</view>
+		<view class="sub-title">
+			十、其他
+		</view>
+		<view class="text">
+			【关键词】本服务协议各条款前所列关键词仅供帮助理解条款主旨及快速定位查询条款所用,不能代替条款的任何内容,亦不作为解释条款的依据,慧研学惠生活建议您仔细阅读各条款的具体表述,以维护您的合法权益。
+		</view>
+		<view class="text">
+			【可分性】如果本服务协议中任何一条被视为废止、无效或因任何理由不可执 
+			行,该条应视为可分的且并不影响任何其余条款的有效性和可执行性。
+		</view>
+		<view class="text">
+			如您对本服务协议有任何问题或建议,请在工作时间联系慧研学惠生活客服部门( <text class="red">联系方式:10086</text> )。 
+		</view>
+		<view class="text">
+			再次感谢您的耐心阅读!
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		
+	}
+</script>
+
+<style lang="scss" scoped>
+	.member-agreement{
+		padding: 20rpx 24rpx 200rpx;
+		.title{
+			font-size: 30rpx;
+			font-weight: bold;
+			text-align: center;
+		}
+		.time{
+			text-align: right;
+			font-size: 24rpx;
+			margin-top: 20rpx;
+		}
+		.sub-title{
+			font-size: 28rpx;
+			font-weight: bold;
+			margin-top: 20rpx;
+		}
+		.text{
+			font-size: 24rpx;
+			margin-top: 20rpx;
+		}
+		.red{
+			color: red;
+		}
+	}
+
+</style>

+ 15 - 3
api/coupon.js

@@ -42,6 +42,18 @@ export function couponByUser(data) {
 		data
 	})
 }
-
-
-
+// 小桔优惠券领取
+export function getXiaojuCoupon(data) {
+	return request({
+		url: '/zswl-cloud-shop/couponInfoLog/getXiaojuCoupon',
+		method:'post',
+		data
+	})
+}
+// 优惠券详情
+export function getCouponDetail(data) {
+	return request({
+		url: '/zswl-cloud-shop/couponInfo/detail',
+		data
+	})
+}

+ 8 - 0
api/refuel.js

@@ -44,3 +44,11 @@ export function cancelOrder(data) {
 	})
 }
 
+// 查询最优优惠券
+export function queryOrderPromotionList(data) {
+	return request({
+		url: '/springbatchservice/xiaoju/queryOrderPromotionList',
+		method:'post',
+		data
+	})
+}

+ 4 - 0
detail/discountsDetail/index.vue

@@ -372,6 +372,10 @@
 						font-size: 24rpx;
 						color: #222222;
 						margin-left: 18rpx;
+						width: 260rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
 					}
 					.price-box {
 						display: flex;

+ 7 - 4
detail/goodsDetail/index.vue

@@ -83,10 +83,10 @@
 					</view>
 					
 					<view class="left">
-						<view class="unit">
+						<view class="unit" v-if="i.num">
 							{{`(${i.num}${i.unit})`}}
 						</view>
-						<view class="price">
+						<view class="price" v-if="i.price">
 							¥{{i.price}}
 						</view>
 					</view>
@@ -148,7 +148,7 @@
 			</view>
 		</view>
 		
-		<u-modal :show="show"  title="开通会员" showCancelButton cancelText="下次再说" confirmColor="#FF4D3A" confirmText="立即开通" @cancel="show = false" @confirm="jump('/my/memberCenter/index')">
+		<u-modal :show="show"  title="开通会员" showCancelButton cancelText="下次再说" confirmColor="#FF4D3A" confirmText="立即开通" @cancel="cancel" @confirm="jump('/my/memberCenter/index')">
 			<view class="slot-content">
 				<view class="">
 					此商品需要开通
@@ -185,6 +185,9 @@
 			
 		},
 		methods: {
+			cancel(){
+				this.show = false
+			},
 			getDistance() {
 					var radLat1 = this.location.latitude * Math.PI / 180.0;
 					var radLat2 = this.info.shopInfo.mapLat* Math.PI / 180.0;
@@ -284,7 +287,7 @@
 			goShopDetail(shopInfo) {
 				uni.setStorageSync('shopInfo', JSON.stringify(this.info.shopInfo))
 				uni.navigateTo({
-					url: `../../detail/shopDetail/shopDetail`
+					url: `../../detail/shopDetail/shopDetail?id=${this.info.shopId}`
 				})
 			},
 			getShopList(goodsId){

+ 3 - 1
detail/shopDetail/shopDetail.vue

@@ -144,7 +144,6 @@
 					shopId:'',
 					userId:''
 				},
-				
 				freeList:[],
 				buyList:[],
 				goodsTypeObj:{},
@@ -345,7 +344,10 @@
 				this.init()
 		},
 		onLoad(options) {
+			console.log(66666);
 			this.goodsTypeObj = JSON.parse(uni.getStorageSync('goodsTypeObj')) 
+			this.info.shopId = options.id
+			// this.init()
 		},
 		
 	}

+ 1 - 1
hotel/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="hotel">
 		<zs-header  :background="background"></zs-header>
-	<zs-img class="banner" width="750rpx" height="556rpx" src="https://zswl-dev.oss-cn-chengdu.aliyuncs.com/63b7c68b71a69169d1b33f92/store/bdb/user/avatar/ymXHEWZKPqHc8af6f071b190394c9495a5147a7e1a9b.jpg/1.jpg"></zs-img>
+	<zs-img class="banner" width="750rpx" height="556rpx" src="https://hyxhsh.oss-cn-chengdu.aliyuncs.com/63b7c68b71a69169d1b33f92/store/bdb/user/avatar/LZVwmPjcG6eo4b817697d9ce892c8400c439427fddea.png/1.png"></zs-img>
 	
 	<view class="search-box">
 		<view class="address-box">

+ 123 - 32
hotel/search.vue

@@ -38,13 +38,13 @@
 					<image class="icon" src="@/static/shop-desc.png" mode=""></image>
 				</view>
 				<view class="tab-item" :class="[query.filter.poiCode?'active':'']" @click="handleTab(2)">
-					区域位置
+					位置距离
 					<image class="icon" src="@/static/shop-desc.png" mode=""></image>
 				</view>
-				<!-- <view class="tab-item" @click="handleTab(3)">
+				<view class="tab-item" @click="handleTab(3)">
 					综合筛选
 					<image class="icon" src="@/static/shop-desc.png" mode=""></image>
-				</view> -->
+				</view>
 			</view>
 		</view>
 		
@@ -60,7 +60,7 @@
 							{{item.starName}}
 						</view> -->
 					</view>
-					<image class="star" v-for="i in getTag(item.star).num" src="../static/star.png" mode=""></image>
+					<image class="star" v-for="(i,d) in getTag(item.star).num" :key="d" src="../static/star.png" mode=""></image>
 					<view class="district">
 						<!-- 观山湖区 -->
 					</view>
@@ -119,28 +119,28 @@
 					</view>
 				</view>
 				<view class="tab-box">
-					<view class="tab-item" @click="handleTab(0)">
-						推荐排序
+					<view class="tab-item" :class="[active == 0?'active':'']" @click="handleTab(0)">
+						{{currentLabel}}
 						<image class="icon" src="@/static/shop-desc.png" mode=""></image>
 					</view>
-					<view class="tab-item" @click="handleTab(1)">
+					<view class="tab-item" :class="[active == 1?'active':'']" @click="handleTab(1)">
 						档次价格
 						<image class="icon" src="@/static/shop-desc.png" mode=""></image>
 					</view>
-					<view class="tab-item" @click="handleTab(2)">
-						区域位置
+					<view class="tab-item" :class="[active == 2?'active':'']" @click="handleTab(2)">
+						位置距离
 						<image class="icon" src="@/static/shop-desc.png" mode=""></image>
 					</view>
-					<!-- <view class="tab-item" @click="handleTab(3)">
+					<view class="tab-item" :class="[active == 3?'active':'']" @click="handleTab(3)">
 						综合筛选
 						<image class="icon" src="@/static/shop-desc.png" mode=""></image>
-					</view> -->
+					</view>
 				</view>
 				
 				
 				<view class="choose-box">
 					<view class="radio-box" v-if="active == 0">
-						<view class="radio" v-for="item in sortList" :key="item.value" @click="chooseTab(item.value,0)">
+						<view class="radio" v-for="item in sortList" :key="item.value" @click="chooseTab(item.value,0,item.label)">
 							<view class="label">
 							{{item.label}}
 							</view>
@@ -155,7 +155,7 @@
 							星级(可多选)
 						</view>
 						<view class="tab-box">
-							<view class="tab" :class="[index%4!=0?'ml20':'',query.filter.star.indexOf(item.id) != -1?'active':'']" v-for="(item,index) in starList" :key="item.id" @click="chooseTab(item.id,1)">
+							<view class="tab" :class="[index%4!=0?'ml20':'',query.filter.star.indexOf(item.id) != -1?'active':'']" v-for="(item,index) in starList" :key="item.id" @click="chooseTab(item,1)">
 								{{item.label}}
 							</view>
 						</view>
@@ -169,7 +169,7 @@
 							</view>
 						</view>
 					</template>
-					<view class="radio-box" v-if="active == 2">
+					<view class="radio-box" v-else-if="active == 2">
 						<view class="radio" v-for="item in areaList" :key="item.code" @click="chooseTab(item,2)">
 							<view class="label">
 							{{item.name}}
@@ -179,6 +179,23 @@
 							</view>
 						</view>
 					</view>
+					<view class="filter-box" v-else-if="active == 3">
+						<view class="left-box">
+							<view class="left-item" :class="[filterIndex == index?'active':'']" v-for="(item,index) in filterObj" :key="index" @click="chooseType(index)">
+								{{item.filterName}}
+							</view>
+						</view>
+						<view class="right-box" >
+							<view class="right-item" v-for="(item,index) in filterObj[filterIndex].pros" :key="index" @click="chooseItem(item)">
+								<view class="label">
+								{{item.name}}
+								</view>
+								<view class="value" v-if="query.filter[filterObj[filterIndex].filterId].indexOf(item.code)!=-1">
+									√
+								</view>
+							</view>
+						</view>
+					</view>
 				</view>
 			</view>
 			<view class="btn-box">
@@ -225,6 +242,9 @@
 				  "cityCode": 0,
 				  "cityName": uni.getStorageSync('city').replace('市',''),
 				  "filter": {
+					  "brand":[],
+					  "facility":[],
+					  "feature":[],
 					  "star":[],
 					  "price":[10, 2000],
 					  "poiKey": "",
@@ -239,6 +259,7 @@
 				  "start": 0
 				},
 				districtList:JSON.parse(uni.getStorageSync('districtList')),
+				currentLabel:'推荐排序',
 				sortList:[
 					{
 						value:'recommend',
@@ -259,15 +280,17 @@
 				],
 				priceValue: [10, 2000],  // 可以指定默认值
 				starList:[
-					{
-						id:1,
-						label:'一星级',
-						data:[1,0]
-					},
+					// {
+					// 	id:1,
+					// 	label:'一星级',
+					// 	data:[1,0]
+					// },
 					{
 						id:2,
-						label:'二星级',
-						data:[2,6]
+						// label:'二星级',
+						// data:[2,6]
+						label:'二星级及以下',
+						data:[1,0,2,6]
 					},
 					{
 						id:3,
@@ -329,6 +352,8 @@
 					}
 				],
 				areaList:[],//存放行政区信息
+				filterObj:{},//综合筛选
+				filterIndex:0,
 				location:{
 					latitude:0,
 					longitude:0,
@@ -368,6 +393,19 @@
 			})
 		},
 		methods: {
+			chooseType(index){
+				this.filterIndex = index
+			},
+			chooseItem(item){
+				let key = this.filterObj[this.filterIndex].filterId
+				let index = this.query.filter[key].indexOf(item.code)
+				if(index!=-1){
+					this.query.filter[key].splice(index,1)
+				}else{
+					this.query.filter[key].push(item.code)
+				}
+				
+			},
 			getTag(star){
 				if(star == 0 ||star == 1){
 					return {tag:'tag1',num:1}
@@ -388,6 +426,9 @@
 			},
 			reset(){
 				this.query.sortKey = "recommend"
+				this.query.filter.brand = []
+				this.query.filter.facility = []
+				this.query.filter.feature = []
 				this.query.filter.star = []
 				this.query.filter.price = []
 				this.query.filter.poiCode = ''
@@ -395,7 +436,7 @@
 				this.query.filter.latitude = this.location.latitude
 				this.query.filter.longitude = this.location.longitude
 				this.curPrice = ''
-				this.search()
+				// this.search()
 				this.$refs.slider.updateValue(10, 2000)
 				
 			},
@@ -403,18 +444,19 @@
 				this.search()
 				this.show1 = false
 			},
-			chooseTab(val,type){
+			chooseTab(val,type,label){
 				if(type == 0){
 					this.query.sortKey = val
+					this.currentLabel = label
 				}else if(type == 1){
 					// 星级筛选
-					if(this.query.filter.star.indexOf(val) != -1){
-						this.starList[val-1].data.map(item=>{
+					if(this.query.filter.star.indexOf(val.data[0]) != -1){
+						val.data.map(item=>{
 							let index = this.query.filter.star.indexOf(item)
 							this.query.filter.star.splice(index,1)
 						})
 					}else{
-						this.query.filter.star = this.query.filter.star.concat(this.starList[val-1].data)
+						this.query.filter.star = this.query.filter.star.concat(val.data)
 					}
 				}else if(type == 2){
 					this.query.filter.poiKey =  "DISTRICT"
@@ -475,11 +517,15 @@
 						this.list = this.list.concat(res.content.data.hotelList) 
 						if(!this.areaList.length){
 							let filterList = res.content.data.filter
-							filterList.map(item=>{
+							filterList.map((item,index)=>{
 								if(item.filterName == '位置'){
 									this.areaList = item.pros[0].filter
+									filterList.splice(index,1)
+									// item.pros.splice(0,1)
 								}
 							})
+							this.filterObj = filterList
+							console.log(2222222,this.filterObj);
 						}else{
 							this.query.returnFilter = 0
 						}
@@ -490,6 +536,8 @@
 							this.query.start++
 						}
 					}
+				}).catch(()=>{
+					this.status = 'more'
 				})
 			}
 		},
@@ -516,13 +564,13 @@
 		z-index: 2;
 		width: 100%;
 		background: #fff;
-		padding: 0 24rpx;
 		
 	}
 	
 	.search-box{
 		display: flex;
 		align-items: center;
+		padding: 0 24rpx;
 		.city-box{
 			display: flex;
 			align-items: center;
@@ -610,6 +658,50 @@
 		}
 	}
 	
+	.filter-box{
+		display: flex;
+		
+		.left-box{
+			flex: 0 0 156rpx;
+			height: 500rpx;
+			overflow: auto;
+			background: #F0F0F0;
+			.left-item{
+				line-height: 90rpx;
+				text-indent: 24rpx;
+			}
+			.left-item.active{
+				color: #EE4320;
+				font-weight: bold;
+				background: #fff;
+			}
+		}
+		
+		.right-box{
+			flex: 1;
+			height: 500rpx;
+			overflow: auto;
+			background: #fff;
+			padding: 0 20rpx;
+			.right-item{
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				height: 90rpx;
+				box-sizing: border-box;
+				border-bottom:1rpx solid #F0F0F0;
+				.label{
+					font-size: 26rpx;
+					color: #222222;
+				}
+				.value{
+					color: #FF4D3A;
+				}
+			}
+		}
+		
+	}
+	
 	.zs-list {
 		margin-top: 20rpx;
 		.hotel-item.disable{
@@ -676,7 +768,7 @@
 	}
 	
 	.content{
-		padding: 20rpx 24rpx;
+		padding: 20rpx 0;
 		.choose-box{
 			.tab-box{
 				display: flex;
@@ -763,10 +855,9 @@
 			line-height: 70rpx;
 			text-align: center;
 			border-radius: 35rpx;
-			border: 2rpx solid #EE4320;
-			font-weight: 600;
+			background: #F0F0F0;
 			font-size: 28rpx;
-			color: #EE4320;
+			color: #AAAAAA;
 		}
 		.btn+.btn{
 			background: #EE4320;

+ 4 - 5
login/login/login.vue

@@ -159,7 +159,6 @@
 												
 											getUserDetail().then(res => {
 												uni.setStorageSync('userInfo', JSON.stringify(res.content))
-												if (res.content.isAuth == 1) {
 													if(that.redirect){
 														console.log(that.scene);
 														uni.reLaunch({
@@ -171,9 +170,10 @@
 															url: '../../pages/index/index'
 														})
 													}
-												} else { //未实名认证
-													that.show = true
-												}
+												// if (res.content.isAuth == 1) {
+												// } else { //未实名认证
+												// 	that.show = true
+												// }
 											})
 										}
 									
@@ -262,7 +262,6 @@
 					}
 				}
 			}
-			console.log(1111111,this.params);
 		}
 
 	}

+ 10 - 4
login/login/otherLogin.vue

@@ -199,10 +199,16 @@
 									.refreshToken) //refreshToken
 								getUserDetail().then(res => {
 									uni.setStorageSync('userInfo', JSON.stringify(res.content))
-									uni.reLaunch({
-										// url:`${that.redirect}?scene=${that.scene}&id=${that.id}`
-										url:`${that.redirect}?${that.params}`
-									})
+									if(this.redirect){
+										uni.reLaunch({
+											// url:`${this.redirect}?scene=${this.scene}&id=${this.id}`
+											url:`${this.redirect}?${this.params}`
+										})
+									}else{
+										uni.reLaunch({
+											url: '../../pages/index/index'
+										})
+									}
 									// if (res.content.isAuth == 1) {
 									// 	if(that.redirect && that.redirect !=  "undefined"){
 									// 		uni.reLaunch({

+ 10 - 8
movie/chooseSeat.vue

@@ -90,14 +90,16 @@
 						res.content.data.seatSection.seatRows.map(item=>{
 							item.columns.map(i=>{
 								if(i.colId){
-									let price
-									let originPrice
-									res.content.data.areaPriceList.map(pItem=>{
-										if(pItem.areaId == i.areaId){
-											price = pItem.price
-											originPrice = pItem.originPrice
-										}
-									})
+									let price = res.content.data.sellPrice
+									let originPrice = res.content.data.originPrice
+									if(res.content.data.areaPriceList.length){
+										res.content.data.areaPriceList.map(pItem=>{
+											if(pItem.areaId == i.areaId){
+												price = pItem.price
+												originPrice = pItem.originPrice
+											}
+										})
+									}
 									let obj = {
 										"YCoord": item.rowsNum,
 										"XCoord": i.colNum,

+ 1 - 1
movie/index.vue

@@ -266,7 +266,7 @@
 		top: 0;
 		left: 0;
 		width: 100%;
-		z-index: 2;
+		z-index: 3;
 		.back{
 			position: absolute;
 			left: 32rpx;

+ 278 - 47
my/memberCenter/index.vue

@@ -60,7 +60,7 @@
 			</view>
 		
 			<u-grid :border="false" col="3">
-				<u-grid-item v-for="(item,d) in list2" :key="d">
+				<u-grid-item v-for="(item,d) in list2" :key="d" @click="openPop(item)">
 					<image class="icon" :src="item.equityImg" mode=""></image>
 					<text class="title">{{item.equityName}}</text>
 					<text class="desc">{{item.equityDetail}}</text>
@@ -88,23 +88,78 @@
 
 
 		<view class="fixed-box">
-			<view class="left-box">
-				<image class="icon" src="../../static/phone.png" mode=""></image>
-				<view class="info">
-					<view class="tel">
-						10086
-					</view>
-					<view class="desc">
-						套餐咨询
+			<view class="btn-box">
+				<view class="left-box" @click="handleCall">
+					<image class="icon" src="../../static/phone.png" mode=""></image>
+					<view class="info">
+						<view class="tel">
+							10086
+						</view>
+						<view class="desc">
+							套餐咨询
+						</view>
 					</view>
 				</view>
+				<button class="btn" :loading="btnLoading" @click="goOrder">
+					立即开通
+				</button>
+			</view>
+			<view class="agreement-box">
+				<u-checkbox-group size="28rpx" v-model="checked" @change="choose">
+					<u-checkbox  activeColor="#EE4320" shape="circle" name="1" ></u-checkbox>
+				</u-checkbox-group>
+				<view class="text">
+					已阅读并同意 <text class="color" @click="jump">《慧研学惠生活基础会员服务协议》</text>
+				</view>
 			</view>
-			<button class="btn" :loading="btnLoading" @click="goOrder">
-				立即开通
-			</button>
+			
 		</view>
 		
 		
+		<u-popup :show="show" round="32rpx" mode="bottom" @close="show = false">
+				<view class="discounts-title">
+					权益领取
+				</view>
+				<view class="discounts">
+					<view class="discounts-item" >
+							<view class="type-box">
+								<view class="price">
+									{{item | filterPrice}}
+								</view>
+								<view class="type">
+									{{item | filterType}}
+								</view>
+							</view>
+							<view class="info">
+								<view class="card-title">
+									{{item.couponName}}
+								</view>
+								<view class="limit">
+									{{item.useStartTime}}后可用
+								</view>
+								
+								<view class="desc">
+									{{item.usrDetail || '-'}}
+								</view>
+							</view>
+							<view class="btn" :class="[item.exist > 0?'used':'']" @click="handleBuy(item.id,item.exist)">
+								{{item.exist > 0?'已领取':'领取'}}
+							</view>
+					</view>
+					
+					<view class="sub-title" v-if="item.equityMsg">
+						权益领取
+					</view>
+					<!-- <rich-text class="desc" :nodes="item.equityMsg"></rich-text> -->
+					<view class="desc" v-html="item.equityMsg">
+						{{item.equityMsg}}
+					</view>
+					
+				
+				</view>
+			</u-popup>
+		
+		
 		<web-view v-if="H5url" :src="H5url"></web-view>
 
 	</view>
@@ -112,9 +167,12 @@
 
 <script>
 	import {mealList,equityList,getH5url} from '@/api/combo.js'
+	import {getXiaojuCoupon,getCouponDetail} from '@/api/coupon.js'
+	
 	export default {
 		data() {
 			return {
+				checked:'',
 				current: 0,//轮播套餐index
 				currentMeal: 0,//套餐id
 				background: false,
@@ -131,19 +189,22 @@
 					sex: 1,
 					userId: "",
 				},
-				list: [],
+				list: [{backImg:''}],
 				list1:[],
 				list2:[],
 				query:{
 					"channelCode": "",
 				    "channelType": "",
-				    "discount": 5,
-				    "extension": "",
+				    "discount": 6,
+				    "extension": "test",
 				    "phone": "",
 				    "saleModalId": ""
 				},
 				H5url:'',
 				btnLoading:false,
+				currentMealCode:0,
+				show:false,
+				item:{}
 			}
 		},
 		computed: {
@@ -160,8 +221,80 @@
 				}
 			}
 		},
+		filters: {
+			filterPrice: function(val) {
+				if(val.couponType == 1){
+					return `¥${val.couponDiscount}`
+				}else if(val.couponType == 2){
+					return `${val.couponDiscount}折`
+				}else if(val.couponType == 3){
+					return `¥${val.couponDiscount}`
+				}
+			},
+			filterType: function(val) {
+				if(val.couponType == 1){
+					if(val.couponCondition){
+						return `满${val.couponCondition}立减`
+					}else{
+						return '无门槛立减'
+					}
+				}else if(val.couponType == 2){
+					if(val.couponCondition){
+						return `满${val.couponCondition}`
+					}else{
+						return '无门槛立减'
+					}
+				}else if(val.couponType == 3){
+					if(val.couponCondition){
+						return `满${val.couponCondition}立减`
+					}else{
+						return '无门槛立减'
+					}
+				}
+			},
+		},
 		methods: {
+			handleCall() {
+				uni.makePhoneCall({
+					phoneNumber: '10086' //仅为示例
+				});
+				
+			},
+			openPop(item){
+				if(item.bindService == 2){//加油券
+					this.show = true
+					getCouponDetail({id:item.bindContent}).then(res=>{
+						if(res.state == 'Success'){
+							this.item = res.content
+							this.item.equityMsg = item.equityMsg.replaceAll('\n','<br/>')
+						}
+					})
+				}
+			},
+			// 点击领取
+			handleBuy() {
+				getXiaojuCoupon({activityXiaojuId:this.item.activityXiaojuId,userId:JSON.parse(uni.getStorageSync('userInfo')).userId,mobile:JSON.parse(uni.getStorageSync('userInfo')).phoneNum}).then(res=>{
+					if(res.state == 'Success'){
+						uni.showToast({
+							title:'领取成功',
+							icon:'success'
+						})
+					}
+				})
+			},
+			jump(){
+				uni.navigateTo({
+					url:'/agreement/member'
+				})
+			},
+			choose(val){
+				console.log(val);
+			},
 			goOrder(){
+				if(!this.checked.length) return uni.showToast({
+					title:'请勾选会员服务协议',
+					icon:'none'
+				})
 				if(this.btnLoading) return
 				this.query.saleModalId = this.list[this.current].setMealCode
 				// this.H5url = 'http://iot-pay-server.dev.zonelife.cn/app-h5/task/dist/index.html#/localLife/orderResult?businessName=%E7%A0%94%E5%AD%A620%E5%85%83%E5%8C%85&lifeId=fcbfbb7ea3ada89ad160da82dc9c75e6'
@@ -170,6 +303,7 @@
 			changeSwiper(val) {
 				this.current = val.target.current
 				this.currentMeal = this.list[val.target.current].setMealCode
+				this.query.discount = this.list[val.target.current].discount
 				this.equityList(this.currentMeal,1)
 				this.equityList(this.currentMeal,2)
 				
@@ -179,8 +313,8 @@
 					mealList({currentPage:1,pageSize:99,status:1}).then(res=>{
 						if (res.state == 'Success') {
 							this.list = res.content.records
-							this.currentMeal = this.list[0].id
-							
+							this.currentMeal = this.list[0].setMealCode
+							this.query.discount = this.list[0].discount
 							resolve(this.currentMeal)
 						}
 					})
@@ -412,48 +546,145 @@
 			left: 0%;
 			width: 100%;
 			background: #fff;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
 			padding: 15rpx 20rpx 40rpx;
 			box-sizing: border-box;
-
-			.left-box {
+			.btn-box{
 				display: flex;
+				justify-content: space-between;
 				align-items: center;
+				.left-box {
+					display: flex;
+					align-items: center;
 
-				.icon {
-					width: 80rpx;
-					height: 80rpx;
-				}
+					.icon {
+						width: 80rpx;
+						height: 80rpx;
+					}
 
-				.info {
-					margin-left: 20rpx;
+					.info {
+						margin-left: 20rpx;
 
-					.tel {
-						color: #222222;
-						font-weight: bold;
-						font-size: 32rpx;
-					}
+						.tel {
+							color: #222222;
+							font-weight: bold;
+							font-size: 32rpx;
+						}
 
-					.desc {
-						font-size: 22rpx;
-						color: #999999;
+						.desc {
+							font-size: 22rpx;
+							color: #999999;
+						}
 					}
 				}
-			}
 
-			.btn {
-				width: 340rpx;
-				height: 80rpx;
-				line-height: 80rpx;
-				margin: 0;
-				text-align: center;
-				background: #FF4C3A;
-				color: #fff;
-				font-size: 28rpx;
+				.btn {
+					width: 340rpx;
+					height: 80rpx;
+					line-height: 80rpx;
+					margin: 0;
+					text-align: center;
+					background: #FF4C3A;
+					color: #fff;
+					font-size: 28rpx;
+					font-weight: bold;
+					border-radius: 40rpx 40rpx 40rpx 40rpx;
+				}
+			}
+			
+			.agreement-box{
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				font-size: 20rpx;
+				color: #999999;
+				margin-top: 20rpx;
+				.color{
+					color: #EE4320;
+				}
+			}
+		}
+		
+		.discounts-title {
+			font-weight: bold;
+			font-size: 32rpx;
+			color: #222222;
+			// text-align: center;
+			padding: 28rpx 24rpx;
+		}
+		.discounts {
+			padding: 0 24rpx 28rpx;
+			max-height: 1000rpx;
+			min-height: 600rpx;
+			overflow: auto;
+			.discounts-item {
+				margin-bottom: 20rpx;
+					display: flex;
+					align-items: center;
+					background-color: rgb(239, 239, 239);
+					background: url('../../static/new-card.png') no-repeat;
+					background-repeat: no-repeat;
+					background-size: 100% 144rpx;
+					border-radius: 16rpx;
+					height: 144rpx;
+					padding: 0 24rpx;
+					box-sizing: border-box;
+					.type-box{
+						text-align: center;
+						.price{
+							ont-size: 40rpx;
+							color: #FF4D3A;
+						}
+						.type{
+							font-size: 20rpx;
+							color: #AAAAAA;
+							margin-top: 12rpx;
+						}
+					}
+					.info {
+						flex: 1;
+						margin-left: 40rpx;
+						.card-title {
+							font-size: 28rpx;
+							color: #222222;
+						}
+						.desc{
+							font-size: 20rpx;	
+							color: #AAAAAA;
+						}
+						.limit{
+							font-size: 20rpx;
+							color: #AAAAAA;
+							margin:10rpx 0;
+						}
+					}
+						.btn {
+							width: 118rpx;
+							height: 48rpx;
+							line-height: 48rpx;
+							text-align: center;
+							font-size: 24rpx;
+							background: #EE4320;
+							border-radius: 24rpx;
+							color: #FFF;
+							box-sizing: border-box;
+						}
+						.btn.used{
+							border: 2rpx solid #EE421F;
+							color: #EE421F;
+							background: none;
+						}
+			}
+			.sub-title{
 				font-weight: bold;
-				border-radius: 40rpx 40rpx 40rpx 40rpx;
+				font-size: 26rpx;
+				color: #222222;
+				// text-align: center;
+				padding: 28rpx 24rpx;
+			}
+			.desc{
+				color: #AAAAAA;
+				font-size: 24rpx;
+				line-height: 40rpx;
 			}
 		}
 

+ 1 - 1
my/order/index.vue

@@ -23,7 +23,7 @@
 			<view class="order-item" v-for="(item,index) in list" :key="index" @click="jump(item)">
 				<view class="top-box">
 					<view class="label">
-						{{item.shopInfo.shopName}}
+						{{ item.shopInfo.shopName||'慧研学惠生活'}}
 					</view>
 					<view class="status">
 						{{ item.goodsModelList[0] |filterType}}

+ 32 - 40
my/order/movie/detail.vue

@@ -50,19 +50,23 @@
 				</view>
 			</view>
 			
-<!-- 			<view class="content code-box"  v-if="info.goodsList[0].jobFlowMap != 'P802'&&info.goodsList[0].goodsState == 'WAIT_USE'&&info.goodsList[0].goodsName!='二维码支付'">
-				<view class="left">
+				<view class="content code-box" v-if="info.goodsList[0].goodsState == 'USED'">
 					<view class="title">
 						券码信息
 					</view>
-					<view class="codeNum">
-						
-					</view>
-				</view>
-				<view class="code-btn"  @click="checkCode">
+				<!-- <view class="code-btn"  @click="checkCode">
 					查看券码 <image class="jiantou" src="../../static/jiantou-icon.png" mode=""></image>
-				</view>
-			</view> -->
+				</view> -->
+					
+					<uqrcode class="qrcode" ref="uqrcode" type="2d" auto canvas-id="qrcode" :value="codeData" :loading="loading" :options="{ margin: 20 }">
+						 <template v-slot:loading>
+							<text style="color: black;">拼命加载中...</text>
+						  </template>
+					</uqrcode>
+					<view class="code">
+						{{codeData}}
+					</view>
+			</view>
 			
 			<view class="content">
 				<view class="title">
@@ -193,10 +197,10 @@
 			</template> -->
 			
 			
-			<view class="btn-box" v-if="info.goodsList[0].goodsState == 'WAIT_PAYMENT'&&info.goodsList[0].jobFlowMap == 'XiaoJu'">
-				<button class="cancel-btn" @click="cancel" :loading="btnLoading">
+			<view class="btn-box" v-if="info.goodsList[0].goodsState == 'WAIT_PAYMENT'">
+				<!-- <button class="cancel-btn" @click="cancel" :loading="btnLoading">
 					取消订单
-				</button>
+				</button> -->
 				<button class="btn" @click="pay" :loading="btnLoading">
 					立即支付
 				</button>
@@ -242,7 +246,7 @@
 <script>
 	import {qrCode} from '@/api/order.js'
 	import {payDetails,queryPayOrder,unRefund,refundIntervene} from '@/api/payment.js';
-	import {cancelOrder} from '@/api/refuel.js'
+	// import {cancelOrder} from '@/api/refuel.js'
 	export default {
 		data() {
 			return {
@@ -305,21 +309,13 @@
 		computed: {
 			closeTime() {
 				// return (this.info.createTime + 1000*60*30) - new Date().getTime()
-				return (this.info.createTime + 1000*10) - new Date().getTime()
+				return (this.info.createTime + 1000*60*10) - new Date().getTime()
 			},
 			payTime(){
-				if(this.info.goodsList[0].extend&&!JSON.parse(this.info.goodsList[0].extend).hasOwnProperty('account')){
-					if(JSON.parse(this.info.goodsList[0].extend).hasOwnProperty('notifyOrderInfo')){
-						return JSON.parse(this.info.goodsList[0].extend).notifyOrderInfo.payTime
-					}else{
-						return '-'
-					}
+				if(this.info.payment && this.info.payment.paymentTime){
+					return uni.$u.timeFormat(this.info.payment.paymentTime,'yyyy-mm-dd hh:MM:ss') 
 				}else{
-					if(this.info.payment && this.info.payment.paymentTime){
-						return uni.$u.timeFormat(this.info.payment.paymentTime,'yyyy-mm-dd hh:MM:ss') 
-					}else{
-						return '-'
-					}
+					return '-'
 				}
 			}
 		},
@@ -422,6 +418,7 @@
 				payDetails(orderNo).then(res=>{
 					this.pageLoading = false
 					this.info = res.content
+					this.codeData = JSON.parse(this.info.goodsList[0].extend).sync.ticketCode
 					if(this.info.goodsList[0].jobFlowMap == 'P802'){
 						this.isVisual = true
 					}
@@ -626,21 +623,11 @@
 	}
 	
 	.code-box{
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		.left{
-			.title{
-				font-weight: 500;
-				font-size: 28rpx;
-				color: #222222;
-			}
-			.codeNum{
-				font-weight: 300;
-				font-size: 24rpx;
-				color: #AAAAAA;
-				margin-top: 15rpx;
-			}
+		.qrcode{
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			margin-top: 20rpx;
 		}
 		.code-btn{
 			display: flex;
@@ -653,6 +640,11 @@
 				height: 24rpx;
 			}
 		}
+		.code{
+			font-size: 28rpx;
+			color: #222222;
+			text-align: center;
+		}
 		
 	}
 	

+ 4 - 3
my/order/signUp/refund.vue

@@ -2,11 +2,12 @@
 	<view class="refund">
 		<view class="shop-box">
 			<view class="shop-name">
-				{{info.shopInfo.shopName}}
+				{{info.shopInfo.shopName||'慧研学惠生活'}}
+				
 			</view>
-			<view class="address">
+		<!-- 	<view class="address">
 				{{info.shopInfo.address}}
-			</view>
+			</view> -->
 		</view>
 
 		<view class="content info">

+ 18 - 0
pages.json

@@ -82,6 +82,13 @@
 						"navigationBarTitleText": "确认下单"
 						// "navigationStyle": "custom"
 					}
+				},
+				{
+					"path": "coupon",
+					"style": {
+						"navigationBarTitleText": "优惠券"
+						// "navigationStyle": "custom"
+					}
 				}
 			]
 		},
@@ -548,6 +555,17 @@
 				}
 		
 			]
+		},
+		{
+			"root": "agreement",
+			"pages": [
+				{
+					"path": "member",
+					"style": {
+						"navigationBarTitleText": "会员服务协议"
+					}
+				}
+			]
 		}
 
 	],

+ 3 - 4
pages/index/index.vue

@@ -192,7 +192,6 @@
 						title:'请登录',
 						confirmText:'去登录',
 						success(res){
-							console.log(res);
 							if(res.confirm){
 								uni.navigateTo({
 									url:'/login/login/login?redirect=/pages/index/index'
@@ -233,7 +232,6 @@
 									success: function(res) {
 										// 市
 										that.city = res.result.address_component.city
-										console.log(9999,that.city,res);
 										if(uni.setStorageSync('districtList')&&uni.getStorageSync('city')==that.city) return
 										uni.setStorageSync('city',res.result.address_component.city)
 										// 获取市区的行政区
@@ -464,7 +462,8 @@
 				this.getUserDetail()
 			}
 		},
-		onHide() {},
+		onHide() {
+		},
 		onLoad(query){
 			 uni.setStorageSync('inviteCode',decodeURIComponent(query.scene))
 		},
@@ -583,7 +582,7 @@
 			.swiper-box{
 				position: relative;
 				width: 344rpx;
-				height: 482rpx;
+				height: 462rpx;
 				border-radius: 16rpx;
 				margin-bottom: 20rpx;
 				.progress{

+ 27 - 5
pages/my/index.vue

@@ -13,10 +13,10 @@
 			</view>
 			<view class="level-box"  @click="jump('../../my/memberCenter/index')">
 				<view class="level-content">
-					<image class="level" :src="`../../static/level${userInfo.setMealCode|| 0}.png`" mode=""></image>
-					<view class="num" v-if="userInfo.setMealCode&&(userInfo.setMealCode!=0)" :style="{color:filterMeal(userInfo.setMealCode).bgColor}">
+					<image class="level" :src="`../../static/level${levelImgNameObj[userInfo.setMealCode]|| 0}.png`" mode=""></image>
+				<!-- 	<view class="num" v-if="userInfo.setMealCode&&(userInfo.setMealCode!=0)" :style="{color:filterMeal(userInfo.setMealCode).bgColor}">
 						已为您节省99元
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -92,6 +92,9 @@
 			<u-cell title="客服"  @click="jump('../../my/service/index')" :border="false" :isLink="true" arrow-direction="right">
 				<image slot="icon" class="cell-icon" src="../../static/service-icon.png" mode=""></image>
 			</u-cell>
+	<!-- 		<u-cell title="订阅"  @click="Subscribe" :border="false" :isLink="true" arrow-direction="right">
+				<image slot="icon" class="cell-icon" src="../../static/service-icon.png" mode=""></image>
+			</u-cell> -->
 		</u-cell-group>
 
 
@@ -104,6 +107,7 @@
 		getUserDetail
 	} from '@/api/common.js'
 	import {mealList} from '@/api/combo.js'
+	import {levelImgName} from '@/utils/config.js'
 	export default {
 		data() {
 			return {
@@ -125,6 +129,7 @@
 					valid: 0,
 					setMealCode:0
 				},
+				levelImgNameObj:levelImgName,
 				list:[],//套餐列表
 			}
 		},
@@ -143,14 +148,14 @@
 					userId: "",
 					valid: 0
 				},
+				
 				uni.showModal({
 					title:'请登录',
 					confirmText:'去登录',
 					success(res){
-						console.log(res);
 						if(res.confirm){
 							uni.navigateTo({
-								url:'../../login/login/login'
+								url:'../../login/login/login?redirect=/pages/my/index'
 							})
 						}
 					}
@@ -164,6 +169,23 @@
 		},
 		
 		methods: {
+			Subscribe(){
+				wx.requestSubscribeMessage({
+				  tmplIds: ['2MWtGXO1dOgEieVbIoBicAdLUj945Nv__4K2vh-Pk9Q'],
+				  success (res) { 
+					  console.log(res);
+					  uni.showToast({
+					  	title:'订阅成功'
+					  })
+				  },
+				  fail(){
+					  uni.showToast({
+					  	title:'订阅失败'
+					  })
+				  }
+				})
+			},
+			
 			
 			filterMeal(val) {
 				let color

+ 1 - 1
pay/pay1.vue

@@ -262,7 +262,7 @@
 												that.loading = false
 												uni.hideLoading()
 												uni.showToast({
-													title: '取消支付1',
+													title: '取消支付',
 													icon: 'fail'
 												})
 												// 取消支付后

+ 290 - 0
refuel/coupon.vue

@@ -0,0 +1,290 @@
+<template>
+	<view class="coupon">
+		<!-- 列表 -->
+		<zs-list class="store-box" mt="0" @load="loadMore" :status="status">
+			
+			<view class="discounts-item" v-for="(item,index) in list" :key="index" >
+					<view class="type-box">
+						<view class="price">
+							¥{{item.discount/100}}
+						</view>
+						<view class="type">
+							{{item | filterType}}
+						</view>
+					</view>
+					<view class="info">
+						<view class="title">
+							{{item.promotionDesc}}
+						</view>
+						<view class="limit">
+							{{$u.timeFormat(item.startTimestamp*1000, 'yyyy-mm-dd hh:MM:ss') }}后可用
+						</view>
+						<view class="desc">
+							{{item.statusDesc || '-'}}
+						</view>
+	
+					</view>
+					<view class="radio-box">
+						<image class="radio"  @click="handleRadio(item)" :src="item.allowanceId == info.allowanceId?require('@/static/choosed.png'):require('@/static/unChoose.png')" mode=""></image>
+					</view>
+	
+			</view>
+		</zs-list>
+		
+		<view class="btn-box">
+			<button class="save-btn" type="default" @click="save">确定</button>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import {queryOrderPromotionList } from '@/api/refuel.js';
+	export default {
+		data() {
+			return {
+				that:this,
+				type:'',//判断是线下支付还是线上支付
+				open:999,
+				status:'more',
+				query:{
+					  "orderAmount": 0,
+					  "storeId": ""
+				},
+				list:[],
+				info:{
+					allowanceId:'',
+					allowanceType:2,
+				},//订单金额信息,用于返回订单页面传回
+			}
+		},
+		filters: {
+			filterPrice: function(val) {
+				if(val.couponType == 1){
+					return `¥${val.couponDiscount}`
+				}else if(val.couponType == 2){
+					return `${val.couponDiscount}折`
+				}else if(val.couponType == 3){
+					return `¥${val.couponDiscount}`
+				}
+			},
+			filterType: function(val) {
+				if(val.promotionType == 1){
+					return `满${val.amount/100}立减`
+				}else{
+					return '无门槛立减'
+					
+				}
+			},
+	
+		},
+		methods: {
+			handleRadio(item){
+				if(item.allowanceId == this.info.allowanceId){
+					this.info.allowanceId = ''
+					this.info.couponName = ''
+				}else{
+					this.info.allowanceId = item.allowanceId
+					// this.info.allowanceType = item.promotionType
+					this.info.couponName = item.promotionDesc
+				}
+			},
+			
+			handleOpen(val,open){
+				if(val === this[open]){
+					this[open] = 999
+				}else{
+					this[open] = val
+				}
+			},
+			
+			loadMore(){
+				// this.getMyCouponList()
+			},
+			getMyCouponList(){
+				this.status = 'loading'
+				queryOrderPromotionList(this.query).then(res=>{
+					if(res.state == 'Success'){
+						this.list = res.content
+						this.status = 'noMore'
+					}
+				})
+			},
+			save(id){
+				let that = this
+				uni.navigateTo({
+					url:`./refuelDetail?storeId=${this.query.storeId}&epId=${this.info.epId}`,
+					success: function(res) {
+					  // 通过eventChannel向被打开页面传送数据
+					  res.eventChannel.emit('pay', that.info)
+					}
+				})
+			},
+		},
+		created() {
+		},
+		onLoad(options) {
+			this.query.storeId = options.storeId
+			// this.info.amount = options.amount
+			// this.info.itemId = options.itemId
+			// this.info.num = options.num
+			// this.info.epId = options.epId
+			let that = this
+			const eventChannel = this.getOpenerEventChannel();
+			eventChannel.on('coupon', function(data) {
+				that.query.orderAmount = data.amount*100
+				that.info = {...that.info,...data}
+				console.log(111,that.info);
+				that.getMyCouponList()
+			})
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.coupon{
+	background: #f5f5f5;
+	padding: 20rpx 24rpx 130rpx;
+	min-height: 100vh;
+	.tab-group{
+		display: flex;
+		align-items: center;
+		background: #fff;
+		position: fixed;
+		height: 80rpx;
+		top: 0%;
+		left: 0%;
+		width: 100%;
+		z-index: 9;
+		.tab{
+			width: 150rpx;
+			padding: 15rpx 30rpx;
+			text-align: center;
+			color: #999999;
+			font-size: 28rpx;
+		}
+		.active{
+			font-weight: bold;
+			font-size: 32rpx;
+			position: relative;
+			color: #222222;
+			&::before{
+				display: block;
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0%;
+				transform: translateX(-50%);
+				width: 40rpx;
+				height: 8rpx;
+				background: linear-gradient(265deg, #FF4A39 0%, #FC8B45 100%);
+				box-shadow: inset 0rpx 6rpx 12rpx 2rpx rgba(255,255,255,0.16);
+				border-radius: 4rpx 4rpx 4rpx 4rpx;
+			}
+			
+		}
+	}
+	
+	.discounts-item {
+		margin-bottom: 20rpx;
+			display: flex;
+			align-items: center;
+			background-color: rgb(239, 239, 239);
+			background: url('@/static/new-card.png') no-repeat;
+			background-repeat: no-repeat;
+			background-size: 100% 144rpx;
+			border-radius: 16rpx;
+			height: 144rpx;
+			padding: 0 24rpx;
+			box-sizing: border-box;
+			.type-box{
+				width: 135rpx;
+				text-align: center;
+				.price{
+					ont-size: 40rpx;
+					color: #FF4D3A;
+				}
+				.type{
+					font-size: 20rpx;
+					color: #AAAAAA;
+					margin-top: 12rpx;
+				}
+			}
+			.info {
+				flex: 1;
+				margin-left: 40rpx;
+				.title {
+					font-size: 28rpx;
+					color: #222222;
+				}
+				.desc{
+					font-size: 20rpx;	
+					color: #AAAAAA;
+				}
+				.limit{
+					font-size: 20rpx;
+					color: #AAAAAA;
+					margin:10rpx 0;
+				}
+			}
+			.radio-box{
+				padding-right: 30rpx;
+				.radio{
+					width: 40rpx;
+					height: 40rpx;
+					vertical-align: bottom;
+				}
+				
+				.unChoose{
+					width: 40rpx;
+					height: 40rpx;
+					border-radius: 50%;
+					box-sizing: border-box;
+					border: 2rpx solid #FF4D3A;
+				}
+			}
+			.num{
+				position: absolute;
+				white-space: nowrap;
+				bottom: 10rpx;
+				right: 10rpx;
+				font-size: 18rpx;
+				color: #FFFFFF;
+			}
+	
+		.card-desc{
+			font-size: 20rpx;
+			color: #AAAAAA;
+			padding: 20rpx 10rpx;
+			background: #FFFFFF;
+			border-radius: 0rpx 0rpx 16rpx 16rpx;
+			.time{
+				
+			}
+			.desc{
+				margin-top: 22rpx;
+			}
+		}
+	}
+	
+	.btn-box{
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		width: 100%;
+		box-sizing: border-box;
+		background: #fff;
+		padding: 20rpx 0 40rpx;
+		.save-btn{
+			margin: 0 auto;
+			width: 690rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			border-radius: 40rpx;
+			background: $uni-color-primary;
+			color: #fff;
+		}
+	}
+}
+</style>

+ 8 - 8
refuel/index.vue

@@ -25,10 +25,13 @@
 							距离你 {{(item.distance/1000).toFixed(2)}} 公里
 						</view>
 						<view  class="activity">
-							<view class="coupon">
+							<view class="discount">
+								满200元减14
+							</view>
+		<!-- 					<view class="coupon">
 								<image class="icon" src="../static/refuel/card-icon.png" mode=""></image>
 								优惠券省999
-							</view>
+							</view> -->
 							
 							<view class="price-box">
 								<view class="label">
@@ -40,9 +43,7 @@
 							</view>
 							
 						</view>
-						<view class="discount">
-							满200元减50
-						</view>
+						
 						
 					</view>
 				</view>
@@ -86,7 +87,7 @@
 					'location.lon': 0,
 					pageCurrent: 1,
 					pageSize: 10,
-					userId: JSON.parse(uni.getStorageSync('userInfo')).userId
+					userId: uni.getStorageSync('userInfo')?JSON.parse(uni.getStorageSync('userInfo')).userId:''
 				},
 			}
 		},
@@ -147,7 +148,6 @@
 								}
 							})
 							this.list = this.list.concat(dataList)
-							console.log(this.list);
 							if (this.list.length >= res.content.total) {
 								this.status = 'noMore'
 							} else {
@@ -285,7 +285,7 @@
 						display: flex;
 						align-items: center;
 						justify-content: space-between;
-						margin-top: 20rpx;
+						margin-top: 10rpx;
 						.price-box{
 							display: flex;
 							align-items: center;

+ 145 - 32
refuel/refuelDetail.vue

@@ -112,8 +112,8 @@
 						<view class="label">
 							优惠券
 						</view>
-						<view class="value gray">
-							{{payInfo.totalPrice?'暂无可用' : '输入金额后查看优惠券'}}
+						<view class="value gray" :class="[couponLabel.value?'red':'']" @click="chooseCoupon">
+							{{payInfo.totalPrice? couponLabel.label : '输入金额后查看优惠券'}}
 							
 						</view>
 					</view>
@@ -173,7 +173,7 @@
 </template>
 
 <script>
-	import { queryStoreDetail,queryCalPrice,queryNewOrder } from '@/api/refuel.js';
+	import { queryStoreDetail,queryCalPrice,queryNewOrder,queryOrderPromotionList } from '@/api/refuel.js';
 	import {debounce} from '@/utils/tool.js'
 	// 腾讯地图
 	var QQMapWX = require('@/libs/qqmap-wx-jssdk.min.js');
@@ -210,6 +210,20 @@
 					totalPrice: 0,
 				},
 				epId:'',//店铺id
+				couponList:[],//可以优惠券列表
+				query:{
+					allowanceinfo: [
+						{
+						  "allowanceId": "",
+						  "allowanceType": 2
+						}
+					],
+					amount:0,
+					itemName :this.num,
+					storeId:this.storeId,
+				},
+				couponName:0,//优惠券名称
+				isChooseBack:false,//是否是选择优惠券返回
 			}
 		},
 		watch: {
@@ -227,7 +241,9 @@
 						totalPrice: 0,
 					}
 				}
-				this.queryCalPrice()
+				this.queryOrderPromotionList().then(()=>{
+					this.queryCalPrice()
+				})
 				// else if(!this.num||!this.gun){
 				// 	uni.showToast({
 				// 		title:'请选择油号/油枪',
@@ -256,13 +272,19 @@
 					return this.info.itemInfoList[this.numIndex].gunNoList
 				}
 			},
-			query(){
-				return {
-					amount:this.amount*100,
-					itemName :this.num,
-					storeId:this.storeId,
-				}
-			},
+			// query(){
+			// 	return {
+			// 		allowanceinfo: [
+			// 		    {
+			// 		      "allowanceId": "",
+			// 		      "allowanceType": 0
+			// 		    }
+			// 		],
+			// 		amount:this.amount*100,
+			// 		itemName :this.num,
+			// 		storeId:this.storeId,
+			// 	}
+			// },
 			notice(){
 				if(this.amount&&this.amount<10){
 					return uni.showToast({
@@ -287,9 +309,48 @@
 								icon:'none'
 							})
 				}
+			},
+			couponLabel(){
+				if(this.couponList.length){
+					if(this.couponName){
+						return {label: `${this.couponName}`,value:true}
+					}else{
+						return {label: `有${this.couponList.length}张可用`,value:true} 
+					}
+					
+				}else{
+					return {label: '暂无可用',value:false} 
+				}
 			}
 		},
 		methods: {
+			chooseCoupon(){
+				if(this.couponList.length){
+					let that = this
+					uni.navigateTo({
+						url:`/refuel/coupon?storeId=${this.storeId}`,
+						success: function(res) {
+						  // 通过eventChannel向被打开页面传送数据
+						  let info = {
+							  allowanceId:that.query.allowanceinfo[0].allowanceId,
+							  allowanceType:that.query.allowanceinfo[0].allowanceType,
+							  gun:that.gun,
+							  numIndex:that.numIndex,
+							  itemId:that.itemId,
+							  num:that.num,
+							  cityPrice:that.price.cityPrice,
+							  vipPrice:that.price.vipPrice,
+							  storePrice:that.price.storePrice,
+							  amount:that.amount,
+							  epId:that.epId,
+							  couponName:that.couponName
+						  }
+						  res.eventChannel.emit('coupon',info)
+						}
+						
+					})
+				}
+			},
 			handleTab(item,type,index){
 				if(type == 'gun'){
 					this.gun = item
@@ -345,18 +406,43 @@
 			},
 			// 加油站详情
 			queryStoreDetail(storeId){
+				uni.showLoading({
+					title:'加载中'
+				})
 				queryStoreDetail(storeId).then(res=>{
+					uni.hideLoading()
 					this.info = res.content
 					this.getDistance()
-					this.info.itemInfoList.map((item,index)=>{
-						if(item.itemName == '92#'){
-							this.numIndex = index
-							this.itemId = item.itemId
-							this.num = item.itemName
-							this.price.cityPrice = item.cityPrice
-							this.price.vipPrice = item.vipPrice
-							this.price.storePrice = item.storePrice
+					if(!this.itemId&&!this.num){//没使用优惠券时
+						this.info.itemInfoList.map((item,index)=>{
+							if(item.itemName == '92#'){
+								this.numIndex = index
+								this.itemId = item.itemId
+								this.num = item.itemName
+								this.price.cityPrice = item.cityPrice
+								this.price.vipPrice = item.vipPrice
+								this.price.storePrice = item.storePrice
+							}
+						})
+					}
+				})
+			},
+			queryOrderPromotionList(){
+				return new Promise((resolve,reject)=>{
+					queryOrderPromotionList({
+					  "orderAmount": this.amount*100,
+					  "storeId": this.storeId
+					}).then(res=>{
+						console.log(res);
+						if(Array.isArray(res.content)&&res.content.length&&!this.isChooseBack){
+							this.couponList = res.content
+							this.couponName = res.content[0].promotionDesc
+							this.query.allowanceinfo[0].allowanceId = res.content[0].allowanceId
+						}
+						else if(Array.isArray(res.content)){
+							this.couponList = res.content
 						}
+						resolve()
 					})
 				})
 			},
@@ -365,7 +451,11 @@
 					uni.showLoading({
 						title:'计算中'
 					})
-					queryCalPrice(this.query).then(res=>{
+					let query = JSON.parse(JSON.stringify(this.query))
+					query.amount = this.amount*100
+					query.itemName = this.num,
+					query.storeId = this.storeId,
+					queryCalPrice(query).then(res=>{
 						uni.hideLoading()
 						if(res.state == 'Success'){
 							this.payInfo = res.content
@@ -401,6 +491,7 @@
 				let that = this
 				let location = JSON.parse(uni.getStorageSync('location'))
 				console.log('不能超过(米):',this.amount*1000,'距离加油站(米):',this.getFlatternDistance(location.latitude,location.longitude,this.info.lat,this.info.lon))
+				// if(this.getFlatternDistance(location.latitude,location.longitude,this.info.lat,this.info.lon)>100000000){
 				if(this.getFlatternDistance(location.latitude,location.longitude,this.info.lat,this.info.lon)>1000){
 					return uni.showModal({
 						title:'提示',
@@ -436,12 +527,7 @@
 					  "originalAmount": this.payInfo.totalPrice,
 					  "outNewUserFlag": "",
 					  "paymentAmount":  this.payInfo.realPrice,
-					  "promotionInfo": [
-					    {
-					      "allowanceId": "string",
-					      "allowanceType": 0
-					    }
-					  ],
+					  "promotionInfo": this.query.allowanceinfo,
 					  "serviceFee": this.payInfo.serviceFee,
 					  "storeId":this.storeId,
 					  "storePrice": this.price.storePrice,
@@ -463,17 +549,35 @@
 			this.map = uni.createMapContext("map", this);
 		},
 		onShow() {
-			if(!this.btnDisabled){
-				uni.reLaunch({
-					url:'/my/order/index'
-				})
-			}
+			// if(!this.btnDisabled){
+			// 	uni.reLaunch({
+			// 		url:'/my/order/index'
+			// 	})
+			// }
 		},
 		onLoad(options) {
 			this.epId = options.epId
 			// '5154031457384536897'
-			this.storeId = options.id
+			this.storeId =  options.id
 			this.queryStoreDetail(options.id)
+			const eventChannel = this.getOpenerEventChannel();
+			let that = this
+			eventChannel.on('pay', function(data) {
+				that.query.allowanceinfo[0].allowanceId = data.allowanceId
+				that.query.allowanceinfo[0].allowanceType = data.allowanceType
+				
+				that.gun = data.gun
+				that.numIndex =data.numIndex 
+				that.itemId = data.itemId
+				that.num = data.num
+				that.price.cityPrice = data.cityPrice,
+				that.price.vipPrice = data.vipPrice,
+				that.price.storePrice = data.storePrice,
+				that.amount = data.amount
+				that.couponName = data.couponName
+				that.isChooseBack = true
+				console.log('data', data);
+			})
 			
 		}
 	}
@@ -734,6 +838,15 @@
 					font-size: 28rpx;
 					color: #222222;
 					margin-left: 20rpx;
+					max-width: 400rpx;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					/* 弹性伸缩盒子模型显示 */
+					display: -webkit-box;
+					/* 限制在一个块元素显示的文本的行数 */
+					-webkit-line-clamp: 1;
+					/* 设置或检索伸缩盒对象的子元素的排列方式 */
+					-webkit-box-orient: vertical;
 				}
 				.gray{
 					color: #AAAAAA!important;

+ 1 - 1
scenic/index.vue

@@ -3,7 +3,7 @@
 		<zs-skeleton type="scenic" :loading="loading"></zs-skeleton>
 		<zs-header :background="background" title="景区门票"></zs-header>
 		<view class="bg-box">
-			<image class="bg" src="http://zswl-dev.oss-cn-chengdu.aliyuncs.com/63b7c68b71a69169d1b33f92/store/bdb/user/avatar/Nv8k50xQcNng4a51b33fc54f9dd85fefc3245bce0f91.jpg/1.jpg" mode=""></image>
+			<image class="bg" src="https://hyxhsh.oss-cn-chengdu.aliyuncs.com/63b7c68b71a69169d1b33f92/store/bdb/user/avatar/AHQWEtDgezfk6e611290c7c9ba152e04c5fe7c339cca.jpg/1.jpg" mode=""></image>
 			<view class="fixed-box">
 				<view class="search-box" @click="handleSearch">
 					<view class="city-box">

+ 5 - 0
scenic/makeOut.vue

@@ -619,6 +619,11 @@
 								title: res.content.split('不符合资源')[0]+'不合法',
 								icon: 'none'
 							})
+						}else{
+							uni.showToast({
+								title: res.content,
+								icon: 'none'
+							})
 						}
 					}
 				})

+ 0 - 0
static/level2023110101.png → static/level1.png


+ 0 - 0
static/level2023110102.png → static/level2.png


+ 0 - 0
static/level2023110103.png → static/level3.png


+ 1 - 1
study/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="study">
 		<view class="top-box">
-			<image class="bg" :src="typeList[0].columnImg" mode=""></image>
+			<image class="bg" src="https://hyxhsh.oss-cn-chengdu.aliyuncs.com/63b7c68b71a69169d1b33f92/store/bdb/user/avatar/06qgjHTlTxWEb95dd5bef869e62f2a78c625ea6bef78.jpg/1.jpg" mode=""></image>
 			<view class="type-box">
 				<view class="type-item" v-for="item in typeList" :key="item.id" @click="handleType(item.id,item.secondaryImg)">
 					<image class="icon" :src="item.columnImg" mode=""></image>

+ 6 - 4
study/studyGoodsDetail.vue

@@ -76,7 +76,7 @@
 		
 		
 		<view class="buy-box">
-			<image class="head" :src="shopInfo.logoPath" @click="goShopDetail(shopInfo)" mode=""></image>
+			<image class="head" :src="info.shopInfo.logoPath" @click="goShopDetail(shopInfo)" mode=""></image>
 			<view class="btn-box">
 				
 			<!-- 	<view class="group-btn" @click="handleBuy">
@@ -110,7 +110,9 @@
 				active:0,
 				tab:1,
 				shopList:[],
-				info: {},
+				info: {
+					specs:[{specValues:[]}]
+				},
 				shopInfo:{}
 			}
 		},
@@ -174,7 +176,7 @@
 				})
 			},
 			goShopDetail(shopInfo) {
-				uni.setStorageSync('shopInfo', JSON.stringify(shopInfo))
+				uni.setStorageSync('shopInfo', JSON.stringify(this.info.shopInfo))
 				uni.navigateTo({
 					url: `/detail/shopDetail/shopDetail`
 				})
@@ -182,7 +184,7 @@
 			
 		},
 		onLoad(option) {
-			this.shopInfo = JSON.parse(uni.getStorageSync('shopInfo')) 
+			// this.shopInfo = JSON.parse(uni.getStorageSync('shopInfo')) 
 			this.detail(option.id)
 		}
 		

+ 4 - 0
utils/config.js

@@ -3,3 +3,7 @@ const env = 'develop' // develop production
 export const BASE_URL = env == 'production'?'https://api.zonelife.cn':'https://api.dev.zonelife.cn';
 
 export const SHOP_ID =  env == 'production'?'6618e31330fed626f8b57f18':'6618d9be32e63427d1a17009';
+
+export const levelImgName =  env == 'production'?{212086906345:1,212086906346:2,212086906347:3}:{2023110101:1,2023110102:2,2023110103:3};
+
+

+ 2 - 2
utils/request.js

@@ -77,7 +77,8 @@ export let request = (options) => {
 										}
 									})
 								}else{
-									
+									uni.hideLoading()
+									console.log(111);
 									uni.showModal({
 										title:'请登录',
 										confirmText:'去登录',
@@ -104,7 +105,6 @@ export let request = (options) => {
 											}
 										}
 									})
-									
 								}
 						}