Commit 0f277ee5 by yuzhenWang

Merge branch 'feature-20250609-优化cffp' into 'uat'

Feature 20250609 优化cffp

See merge request !8
parents de413fa6 b3e070b6
...@@ -2,6 +2,309 @@ ...@@ -2,6 +2,309 @@
<view class="container" > <view class="container" >
<text class="iconfont icon-youjiantou zuojiantou" @click="goBack()" style="top: 20rpx;" v-if="isBack !=1"></text> <text class="iconfont icon-youjiantou zuojiantou" @click="goBack()" style="top: 20rpx;" v-if="isBack !=1"></text>
<view class="content" v-if="type == 1" :style="{'margin-top': isBack!=1 ? '60rpx' : '0'}"> <view class="content" v-if="type == 1" :style="{'margin-top': isBack!=1 ? '60rpx' : '0'}">
<!-- <view class="user-agreement">
<view class="header">
<view class="title">用户服务协议</view>
</view>
<view class="content">
<view class="section">
银盾家办(广州)企业管理咨询有限公司(以下简称银盾家办)在此特别提醒您(用户)在注册成为用户之前,请认真阅读本《用户协议》(以下简称"协议"),确保您充分理解本协议中各条款(特别是以下划线标注的内容)。请您审慎阅读并选择接受或不接受本协议。除非您接受本协议所有条款,否则您无权注册、登录、授权或使用本协议所涉服务。您的注册、登录、授权、使用等行为将视为对本协议的接受,并同意接受本协议的全部约定内容以及与本服务协议有关的已经发布或将来可能发布的各项协议、规则、说明、用户须知、页面展示、操作流程、公告或通知。
</view>
<view class="section">
如您在本公司提供的移动应用、软件、公众号、小程序或网页应用(以下简称"平台")上访问或使用我们的产品服务,便视为您完全接受本服务协议项下的全部内容。
</view>
<view class="section-title">一、用户须知</view>
<view class="subsection-title">1.1. 用户资格</view>
<view class="section">
用户(以下简称"您")确认,在自愿完成注册程序成为平台用户以及使用本公司服务时,您应当是具备完全民事行为能力的自然人。若您不具备前述主体资格,则您及您的监护人应承担因此而导致的一切后果。
</view>
<view class="subsection-title">1.2. 用户信息</view>
<view class="section">
<view>(1) 在您注册、授权、激活或验证流程时,您应当按照相应页面的提示提供您真实有效的身份信息及相关资料,以使之真实、及时、完整和准确。当您的身份信息及资料发生变化时,您应当及时更新并准确提供您的身份信息及资料。您承诺将承担因提供身份信息及相关资料不准确、不真实、不及时和不完整而引发的一切责任。</view>
<view>(2) 如本公司须您按照法律法规的要求取得相关资质时,您应及时向本公司提供相关资质证明文件及相关资料。当您的资质证明文件及相关资料发生变化时,您应当及时更新并准确提供您的资质证明文件及相关资料。您承诺将承担因提供资质证明文件及相关资料不准确、不真实、不及时和不完整而引发的一切责任。</view>
<view>(3) 您每次使用前须确认已充分了解与本公司系统相关的各项使用说明、所有条款。</view>
<view>(4) 银盾家办的服务仅向注册用户提供,您应对注册获得的账号项下的一切行为承担全部责任。平台不建议您将账号与他人共享使用,由此造成的任何损失风险和法律责任都将由您本人承担。</view>
</view>
<view class="subsection-title">1.3. 账户安全</view>
<view class="section">
您了解并同意:如发现任何人未经授权使用您的账号或发生其他任何安全问题,您应当立即通知本平台,授权平台经过必要身份识别措施后作出其他应对措施。但平台不会对因您未能遵守本款规定而发生的任何损失负责。
</view>
<view class="subsection-title">1.4. 账户管理</view>
<view class="section">
您同意并授权平台:采取各种必要手段,包括但不限于通过您的第三方支付机构、银行或者我们认可的其他方式对您身份进行验证。除非有法律规定或司法裁判,否则您的账号和密码及账号所绑定的任何平台权益不得以任何方式转让、赠与或继承。
</view>
<view class="subsection-title">1.5. 退款</view>
<view class="section">
在开通会员之后的一周内,无激活任何权益的可以申请退款,银盾家办会退还本次支付的100%。本公司有权扣回该笔订单对应的所有奖励。如付费超过一周后申请退款,银盾家办将部分退费。银盾家办不支持任何将会员时间折算为费用的退费申请。
</view>
<view class="subsection-title">1.6. 账户封禁</view>
<view class="section">
<view>凡以任何方式抓取平台数据的,银盾家办都将予以账户封禁处理。</view>
<view>凡以任何非官方手段获取会员权益的,银盾家办有权对会员权益进行收回。</view>
</view>
<view class="section-title">二、用户的权利和义务</view>
<view class="subsection-title">2.1.</view>
<view class="section">
在遵守本服务协议的前提下,您将享有本公司提供的用户服务,并将收到本公司最新的产品信息,活动资讯和平台的相关信息及通知。
</view>
<view class="subsection-title">2.2.</view>
<view class="section">
在平台上使用本公司服务过程中,您承诺遵守以下约定:
<view>(1). 在使用本公司服务过程中所有行为均遵守国家法律、法规等规范性文件,不违背社会公共利益或公共道德,不损害他人合法权益,不违反本服务协议;</view>
<view>(2). 在使用本公司服务过程中,不得从事恶意投诉、侵害利益相关方,诈骗等违法违规行为。如经查实您从事相关行为的,本公司有权取消并扣回已经给予您的相应奖励,并视情节严重可禁止您登录账户,中止或注销您的账号,同时您必须承担由此给本公司带来的所有损失。您应自行承担因违法从事产品经营行为而产生的所有民事、行政、刑事等一切法律责任。</view>
<view>(3) 平台包括公司运营的移动应用、软件、公众号、小程序或网页应用以及内含的文字、图片、视频、音频等元素,本公司对提供上述服务享有知识产权。您承诺将不以任何形式侵犯本公司的知识产权。</view>
</view>
<view class="subsection-title">2.3.</view>
<view class="section">
您了解并同意:
<view>(1). 对于您在平台上发布的涉嫌违法或涉嫌侵犯他人合法权利或违反本服务协议的信息,本公司有权不经通知您即予以删除,并且保留您因不合法行为导致本公司或平台可能发生的名誉、经济等各项损失的法律追究权利;</view>
<view>(2). 对于您涉嫌违反承诺的行为对任意第三方造成损害的,您均应当以自己的名义独立承担所有的法律责任。</view>
<view>(3). 平台涉及到互联网及移动通讯等服务,可能会受到各个环节不稳定因素等影响,若由此出现的系统差错、故障或其他原因导致您不当获利等情形的,您同意本公司可以采取更正差错、扣划款项、暂停服务等适当纠正措施。</view>
</view>
<view class="subsection-title">2.4.</view>
<view class="section">
在参与平台上的活动时,您了解并同意:
<view>(1) 平台将依据您完成的服务成果向您支付相应奖励,并视为您已了解及认可您在进行引流时的规则及政策。</view>
<view>(2) 奖励的计算和支付:奖励按照平台发布的奖励方案进行发放,平台有权利对奖励方案随时更新。</view>
</view>
<view class="subsection-title">2.5.</view>
<view class="section">
在平台上传的自定义内容,您了解并同意:
<view>(1) 用户在银盾家办分销系统上传的自定义内容是指经由银盾家办提供的服务,以上传、张贴或任何其他方式传送或传播的任何资讯、资料、文字、符号、表情、照片、图片、图形、或其他资料。无论系公开还是私下传送(以下简称"内容"),内容提供者、上传者应对其提供、上传的内容承担全部责任,如果给银盾家办造成损失的,还应向银盾家办承担赔偿责任。</view>
<view>(2) 您在银盾家办分销系统上传或发布的内容,您保证对其享有合法的著作权或相应授权。</view>
</view>
<view class="section-title">三、用户行为规范</view>
<view class="subsection-title">3.1.</view>
<view class="section">
用户在使用银盾家办服务的过程中,应遵守以下法律法规:
<view>(1) 《中华人民共和国保守国家秘密法》;</view>
<view>(2) 《中华人民共和国个人信息保护法》;</view>
<view>(3) 《中华人民共和国数据安全法》;</view>
<view>(4) 《中华人民共和国未成年人保护法》;</view>
<view>(5) 《中华人民共和国网络安全法》;</view>
<view>(6) 《中华人民共和国著作权法》;</view>
<view>(7) 《计算机软件保护条例》;</view>
<view>(8) 《信息网络传播权保护条例》;</view>
<view>(9) 《中华人民共和国计算机信息系统安全保护条例》;</view>
<view>(10) 《计算机信息网络国际联网安全保护管理办法》;</view>
<view>(11) 《互联网用户账号信息管理规定》;</view>
<view>(12) 《网络信息内容生态治理规定》;</view>
<view>(13) 《互联网跟帖评论服务管理规定》;</view>
<view>(14) 《互联网用户公众账号信息服务管理规定》;</view>
<view>(15) 《网络音视频信息服务管理规定》;</view>
<view>(16) 其他法律、法规、规章、条例等具有法律效力的规范。</view>
</view>
<view class="subsection-title">3.2.</view>
<view class="section">
银盾家办鼓励用户从事以下行为,在制作、上传、复制、传送、传播含有下列内容的信息(包括但不限于资讯、资料、文字、符号、表情、照片、图片、图形、信息或其他资料,下同):
<view>(1) 宣传习近平新时代中国特色社会主义思想,全面准确生动解读中国特色社会主义道路、理论、制度、文化的;</view>
<view>(2) 宣传党的理论路线方针政策和中央重大决策部署的;</view>
<view>(3) 展示经济社会发展亮点,反映人民群众伟大奋斗和火热生活的;</view>
<view>(4) 弘扬社会主义核心价值观,宣传优秀道德文化和时代精神,充分展现中华民族昂扬向上精神风貌的;</view>
<view>(5) 有效宣传金融知识,对国家、社会、家庭、个人积极作用的文字。</view>
</view>
<view class="subsection-title">3.3.</view>
<view class="section">
银盾家办禁止用户从事以下违法行为或在银盾家办平台制作、上传、复制、传送、传播含有下列内容的违法信息:
<view>(1) 反对宪法所确定的基本原则的;</view>
<view>(2) 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;</view>
<view>(3) 损害国家荣誉和利益的;</view>
<view>(4) 歪曲、丑化、亵渎、否定英雄烈士事迹和精神,以侮辱、诽谤或者其他方式侵害英雄烈士的姓名、肖像、名誉、荣誉的;</view>
<view>(5) 宣扬恐怖主义、极端主义或者煽动实施恐怖活动、极端主义活动的;</view>
<view>(6) 煽动民族仇恨、民族歧视,破坏民族团结的;</view>
<view>(7) 破坏国家宗教政策,宣扬邪教和封建迷信的;</view>
<view>(8) 散布谣言,扰乱经济秩序和社会秩序的;</view>
<view>(9) 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪、引诱自杀的;</view>
<view>(10) 侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益的;</view>
<view>(11) 侵害未成年人合法权益或可能危害未成年人身心健康的;</view>
<view>(12) 违反金融监管行业要求的内容。</view>
<view>(13) 法律、行政法规禁止的其他行为或内容。</view>
</view>
<view class="subsection-title">3.4.</view>
<view class="section">
银盾家办有权限制用户从事以下不良行为或在银盾家办平台制作、上传、复制、传送、传播含有下列内容的不良信息。
<view>(1) 使用夸张标题,内容与标题严重不符的;</view>
<view>(2) 炒作绯闻、丑闻、劣迹等的;</view>
<view>(3) 不当评述自然灾害、重大事故等灾难的;</view>
<view>(4) 带有性暗示、性挑逗等易使人产生性联想的;</view>
<view>(5) 展现血腥、惊悚、残忍、自杀/自残等致人身心不适的;</view>
<view>(6) 煽动人群歧视、地域歧视等的;</view>
<view>(7) 宣扬低俗、庸俗、媚俗内容的;</view>
<view>(8) 可能引发未成年人模仿不安全行为和违反社会公德行为、诱导未成年人不良嗜好等可能影响未成年人身心健康的;</view>
<view>(9) 对网络生态造成不良影响的其他行为或内容。</view>
<view>(10) 任何对产品销售中有误导客户的内容。</view>
</view>
<view class="subsection-title">3.5.</view>
<view class="section">
银盾家办有权限制用户从事以下违规行为或在银盾家办平台制作、上传、复制、传送、传播含有下列内容的违规信息:
<view>(1) 冒充任何人或机构,或以虚伪不实的方式谎称或使人误认为与任何人或任何机构有关;</view>
<view>(2) 伪造标题或以其他方式操控识别资料,使人误认为该内容为本平台所传送;</view>
<view>(3) 将无权传送的内容(例如内部资料、机密资料)进行上载、张贴、发送电子邮件或以其他方式传送;</view>
<view>(4) 将侵犯任何人的专利、商标、著作权、商业秘密等知识产权的内容加以上载、张贴、发送电子邮件或以其他方式传送;</view>
<view>(5) 将广告函件、促销资料、"垃圾邮件"等,加以上载、张贴、发送电子邮件或以其他方式传送;</view>
<view>(6) 跟踪或以其他方式骚扰他人;</view>
</view>
<view class="section-title">四、隐私声明</view>
<view class="subsection-title">4.1.</view>
<view class="section">
您在注册成为平台的用户、使用平台提供的各类产品资料和服务时,代表您在知情和同意的情况下,自愿向本公司提供您的个人信息,例如姓名、证件类型、证件号码、证件有效期限、手机号、邮箱、联系地址、第三方支付账户等(以下简称"个人信息")。
</view>
<view class="subsection-title">4.2.</view>
<view class="section">
在必要情形下第三方可能接触并使用您的个人信息,包括得到授权的本公司员工、执行与我们的业务、营销活动和数据整理有关的工作人员,以及与业务相关的公司、机构以及第三方支付机构。所有此类人员及公司均需遵守相关保密协议,同时也需遵守国家关于个人信息保护有关法律法规,以确保您的个人信息随时得到保护。
</view>
<view class="section-title">五、免责声明及第三方责任</view>
<view class="subsection-title">5.1.</view>
<view class="section">
您了解并同意,您接受或购买的本公司的产品或服务协议内容中约定的免责范围,以及约定的责任范围之外的损失,本公司不对上述情况而导致您的任何损害承担责任。
</view>
<view class="subsection-title">5.2.</view>
<view class="section">
在相关特殊情况下,本公司均不对由于信息网络正常的设备维护,信息网络连接故障,电脑、通讯或其他系统的故障,电力故障,罢工,暴乱,起义,骚乱,火灾,洪水,风暴,爆炸,战争,政府行为,司法行政机关的命令或第三方的不作为等平台无法预测或控制的原因,而造成的服务中断、延误、取消或终止的风险,由此给您带来的损失本公司不承担赔偿责任。
</view>
<view class="subsection-title">5.3.</view>
<view class="section">
为了提高服务质量,本公司可能暂停服务以调整或升级系统。在相关特殊情况下,本公司无须为暂停用户服务承担违约责任。
</view>
<view class="subsection-title">5.4.</view>
<view class="section">
在任何情况下,对于您使用本公司服务过程中涉及由第三方提供相关服务的责任由该第三方承担,本公司不承担该等责任。本公司不承担责任的情形包括但不限于:
<view>(1) 因各公司、机构以及第三方支付机构等第三方未按照您和/或本公司指令进行操作引起的任何损失或责任;</view>
<view>(2) 因各公司、机构以及第三方支付机构等第三方原因导致资金未能及时到账或未能到账引起的任何损失或责任;</view>
<view>(3) 因各公司、机构以及第三方支付机构等第三方对交易限额或次数等方面的限制而引起的任何损失或责任;</view>
<view>(4) 因其他第三方的行为或原因导致的任何损失或责任。</view>
</view>
<view class="subsection-title">5.5.</view>
<view class="section">
因您自身的原因导致的任何损失或责任,由您自行负责,本公司不承担责任。本公司不承担责任的情形包括但不限于:
<view>(1) 您未按照本服务协议或平台不时公布的任何规则进行操作导致的任何损失或责任;</view>
<view>(2) 您向本公司发送的指令信息不明确、或存在歧义、不完整等导致的任何损失或责任;</view>
<view>(3) 您未按照本服务协议或平台不时公布的任何规则发布或上传的内容所导致的任何损失或责任。</view>
<view>(4) 其他因您原因导致的任何损失或责任。</view>
</view>
<view class="section-title">六、本服务协议的修改</view>
<view class="subsection-title">6.1.</view>
<view class="section">
您了解并同意:本公司在法律环境变化或业务发展需要时可能对本服务协议所做的修改,或者与本服务协议有关的各项协议、规则、说明、用户须知、页面展示、操作流程、公告或通知,本公司将在平台上公示变动或更新内容。若您在相关内容公告后继续使用的,表示您已充分阅读、理解并接受变动或更新公告的内容,也将遵循变动或更新公告内容进行使用;若您不同意变动或更新公告内容的,应停止使用相关服务。
</view>
<view class="section-title">七、保密</view>
<view class="section">
您在使用本公司时获得的所有用户名单,包括但不限于用户姓名、用户手机号、注册用户数量等,无论该内容是否是您自行取得或构思的,均不得以任何目的为由对外公开,更不得以任何商业目的、竞争为目的、或出于私利、或为第三人谋利、或为故意加害于本公司,擅自披露、使用商业秘密;不得直接或间接地向无关人员泄露;不得向不承担保密义务的任何第三人披露本公司的商业秘密;不得允许(出借、赠与、出租、转让等处分本公司商业秘密的行为皆属于"允许")或协助不承担保密义务的任何第三人使用本公司的商业秘密;不得复制或公开包含本公司商业秘密的文件或文件副本。
</view>
<view class="section-title">八、违约行为及责任</view>
<view class="subsection-title">8.1.</view>
<view class="section">
本公司严禁您通过以下行为非法获得奖励,一经发现,本公司有权取消并扣回已经给予您的相应奖励,并视情节严重可禁止您登录账户,中止或注销您的账号,同时您必须承担由此给本公司带来的所有损失:
<view>(1) 就本公司发布的平台活动,如您利用该平台活动规则不当获利的;</view>
<view>(2) 您存在恶意投诉行为,鼓动、怂恿等类似行为而促使客户进行投诉的,即出现业务问题或其他问题时未与平台沟通协商处理而直接向微信平台、本公司或有关监管机构投诉的;</view>
<view>(3) 您为您的客户代为购买且造成客户损失的,包括但不限于未按规定如实履行告知说明义务、非依据客户本人购买意愿等;</view>
<view>(4) 您在客户购买产品过程中存在误导客户、阻碍您的客户如实履行告知义务或诱导、虚张夸大产品责任和利益的;</view>
<view>(5) 您以任何方式收取费用导致客户利益受损的,包括但不限于超过产品费用收取额外费用等的;</view>
<view>(6) 其它违反法律法规或违反诚实信用、公平原则等本公司认为应当取消并扣回相应奖励及禁止您登录账户的情况。</view>
</view>
<view class="subsection-title">8.2.</view>
<view class="section">
本公司有权对您是否违反上述禁止行为做出单方认定,并根据单方认定结果适用规则予以处理,这无须征得您的同意。
</view>
<view class="subsection-title">8.3.</view>
<view class="section">
您同意,出现以下情况时,本公司有权对您是否存在下述情况进行单方认定且基于具体适用规则不经事先通知地中止、终止向您提供部分或全部本公司的会员服务,并永久停用您的账户(本公司会员资格),且无须为此向您承担任何责任,如本公司因此遭受损失的您应予以全部承担:
<view>(1) 您在使用本公司服务期间存在违法行为或违反本服务协议和/或规则的行为的;</view>
<view>(2) 您提供的个人身份信息虚假或不真实或不完整或过期无效的;</view>
<view>(3) 经证实用户为政府部门发布的恐怖分子或被列入其他黑名单;</view>
<view>(4) 存在其他违反诚实信用或欺诈行为的;</view>
<view>(5) 本服务协议变更时,您明示并通知本公司不愿接受新的服务协议的;</view>
<view>(6) 如您连续三年未登录过本公司,您的本公司会员资格可能被注销;</view>
<view>(7) 其他本公司认为应当终止服务的情况。</view>
</view>
<view class="subsection-title">8.4.</view>
<view class="section">
您的会员服务被中止、终止或者账户被永久停用后,本公司仍有权继续保存您在本公司服务期间的所有信息。
</view>
<view class="subsection-title">8.5.</view>
<view class="section">
本公司中止或终止向您提供本公司服务或永久停用您的账户后,对于您在服务中止或终止之前接受或购买的本公司的产品和服务,本公司将不再按产品或服务所对应具体协议或约定履行,包括但不限于中止或终止给予您相应奖励。
</view>
<view class="subsection-title">8.6.</view>
<view class="section">
如您以任何不正当方式非法取得平台奖励的,本公司有权立即追回,并要求您承担相应的法律责任。
</view>
<view class="section-title">九、法律适用、管辖与其他</view>
<view class="subsection-title">9.1.</view>
<view class="section">
本服务协议适用中华人民共和国大陆地区法律。
</view>
<view class="subsection-title">9.2.</view>
<view class="section">
您和本公司之间一切有关本服务协议项下的争议应通过友好协商进行解决。协商不成,可向银盾家办所在地人民法院起诉。
</view>
<view class="subsection-title">9.3.</view>
<view class="section">
除本服务协议或者您和本公司另有约定外,任何一方违反本服务协议项下任何约定导致本服务协议部分或全部不能履行的,守约方有权要求违约一方承担违约责任,且违约方应就守约方遭受的全部损失承担赔偿责任。
</view>
<view class="subsection-title">9.4.</view>
<view class="section">
本服务协议包含了您成为本公司会员所需要了解并遵守的协议条款,您在购买或接受本公司某产品或服务时还需要了解并签署该特定产品或服务的条款或具体约定(请参见您接受该产品或服务时签署的其他协议)。如本服务协议与具体产品或服务协议有不一致之处,以具体产品或服务的协议为准。
</view>
</view>
</view> -->
<view class=""> <view class="">
【审慎阅读】您在申请注册流程中点击同意本协议之前,应当认真阅读本协议。请您务必审慎阅读、 【审慎阅读】您在申请注册流程中点击同意本协议之前,应当认真阅读本协议。请您务必审慎阅读、
充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款。免除或者限制责 充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款。免除或者限制责
...@@ -105,59 +408,96 @@ ...@@ -105,59 +408,96 @@
<view class="">2. 如因本协议产生之争议,您同意以CFFP注册地人民法院为管辖法院。</view> <view class="">2. 如因本协议产生之争议,您同意以CFFP注册地人民法院为管辖法院。</view>
<view class="">3. 本协议包含了您成为CFFP会员所需要了解并遵守的协议条款,您在购买或接受CFFP在线平台某课程或服务时还需要了解并签署该课程或服务的条款或具体约定(请参见您接受该产品或服务时签署的其他协议)。如本服务协议与具体产品或服务协议有不一致之处,以具体课程或服务的协议为准。</view> <view class="">3. 本协议包含了您成为CFFP会员所需要了解并遵守的协议条款,您在购买或接受CFFP在线平台某课程或服务时还需要了解并签署该课程或服务的条款或具体约定(请参见您接受该产品或服务时签署的其他协议)。如本服务协议与具体产品或服务协议有不一致之处,以具体课程或服务的协议为准。</view>
</view> </view>
<view v-if="type == 2" class="content" :style="{'margin-top': isBack!=1 ? '60rpx' : '0'}"> <view v-if="type == 2" class="content" :style="{'margin-top': isBack!=1 ? '60rpx' : '0'}">
<h4>隐私条款</h4>
<view class="">银盾家办是CFFP家庭财务策划师联盟所运营、持有的专属APP,开发者为{{companyFullName}}</view> <view class="privacy-policy">
<view class="">CFFP家庭财务策划师联盟(以下简称CFFP)是AIOFP中国分会,由{{companyFullName}}负责运营。</view> <!-- 顶部标题栏 -->
<view class="">AIOFP(Association of Independently Owned Financial Professionals)是澳洲最大的的独立金融专业人士协会)</view> <view class="header">
<view class="">CFFP致力于培养千位优秀的家庭财务策划师,传递正确的家庭财务管理理念,通过专业及精准的规划帮助千家万户达成家庭幸福圆满!</view> <view class="title">隐私政策说明</view>
<view class="">本网站由CFFP拥有和运营。</view> </view>
<view class="">CFFP尊重并保护所有使用服务用户的个人隐私权。CFFP应用(含App、网站、微信公众号、微信小程序、H5页面)会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。</view>
<view class="">如果您有任何个人信息的疑问、意见、建议或投诉举报,请通过以下联系人及联系方式与我们联系:</view> <!-- 正文内容 -->
<view class="">个人信息保护联系人:CS专员 </view> <view class="content">
<view class="">电子邮箱: CS@ydinsurance.cn</view> <view class="section">
<view class="">专线:400-921-9290</view> 为了保护您的隐私和更好地为您提供财务咨询服务,银盾家办(广州)企业管理咨询有限公司(以下简称"我们")按照合法合理、正当、必要、诚信的原则,依据《个人信息保护法》及相关法律法规要求,合理的收集、保存、使用和共享您的个人信息。本政策适用于我们旗下所有自营网络平台(含网站,微信公众号,微信小程序,H5页面,APP)的产品和服务。如果您有任何疑问、意见或建议,请通过以下方式与我们联系:
<view class="">1. 适用范围</view> </view>
<view class="">(a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;</view>
<view class="">(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和设备上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;</view> <view class="contact">
<view class="">(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。</view> <view>客服热线: 400-921-9290</view>
<view class="">您了解并同意,以下信息不适用本隐私权政策:</view> <view>邮箱: cs@ydinsurance.cn</view>
<view class="">(a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;</view> </view>
<view class="">(b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;</view>
<view class="">(c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。</view> <!-- 1. 适用范围 -->
<view class="">2. 信息使用</view> <view class="section-title">1. 适用范围</view>
<view class="">(a)本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本应用(含本应用关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。</view> <view class="section">
<view class="">(b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。</view> <view>(a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;</view>
<view class="">3. 信息披露</view> <view>(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;</view>
<view class="">在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:</view> <view>(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。</view>
<view class="">(a) 经您事先同意,向第三方披露;</view> </view>
<view class="">(b)为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;</view>
<view class="">(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;</view> <view class="section">
<view class="">(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;</view> 您了解并同意,以下信息不适用本隐私权政策:
<view class="">(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;</view> </view>
<view class="">(f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息</view> <view class="subsection">
<view class="">披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。</view> <view>(a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;</view>
<view class="">(g) 其它本应用根据法律、法规或者网站政策认为合适的披露。</view> <view>(b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;</view>
<view class="">4. 信息存储和交换</view> <view>(c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。</view>
<view class="">本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。</view> </view>
<view class="">5. Cookie的使用</view>
<view class="">(a) 本应用会在您的设备上设定或取用cookies ,以便您能登录或使用依赖于cookies的本应用平台服务或功能。</view> <!-- 2. 信息使用 -->
<view class="">(b) 通过本应用所设cookies所取得的有关信息,将适用本政策。</view> <view class="section-title">2. 信息使用</view>
<view class="">6. 下单与支付类服务</view> <view class="section">
<view class="">(a) app集成com.alipay(支付宝;阿里乘车码;阿里芝麻信用实名认证;芝麻认证)为了提供平台支付宝支付能力。</view> <view>(a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本应用(含本应用关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。</view>
<view class="">(b) app集成com.tencent(微信分享;微信支付)为了提供平台微信支付与分享能力。</view> <view>(b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。</view>
<view class="">(c) 在您使用第三方支付机构进行支付时,我们会收集您的相关支付信息(包括姓名、手机号、订单id)。</view> <view>(c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。</view>
<view class="">(d) 为了向您提供实现网络支付购买付费课程,我们会收集您的用户标识信息(QQ号、微信openid)、手机号、交易金额、下单时间、订单编号、支付方式、支付状态,以确保交易安全,保障购课成功。</view> </view>
<view class="">(e) 为了保证您正常使用积分,我们会收集你的积分和积分明细信息(交易时间、积分数、使用目的),以保证您可正常使用积分购买课程、获得奖励积分和查看积分明细。需注意积分由我们发放给您,您可通过平台运营活动获得奖励积分。</view>
<view class="">7. 在线客服服务</view> <!-- 3. 信息披露 -->
<view class="">(a) app集成com.netease(网易;七鱼)为平台提供在线客服服务。</view> <view class="section-title">3. 信息披露</view>
<view class="">(b) 为了您可以更方便使用APP、我们提供在线客户功能,在您进行客服互动时,我们会收集您主动提交的账号信息(昵称、QQ号、微信openid)、反馈信息(图片、文字)、订单信息、联系方式(手机号码、电子邮箱)。</view> <view class="section">
<view class="">8. 信息安全</view> 在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:
<view class="">(a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。</view> </view>
<view class="">(b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</view> <view class="subsection">
<view class="">9.本隐私政策的更改</view> <view>(a) 经您事先同意,向第三方披露;</view>
<view class="">(a)如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</view> <view>(b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;</view>
<view class="">(b)CFFP保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。</view> <view>(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;</view>
<view>(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;</view>
<view>(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;</view>
<view>(f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。</view>
<view>(g) 其它本应用根据法律、法规或者网站政策认为合适的披露。</view>
</view>
<!-- 4. 信息存储和交换 -->
<view class="section-title">4. 信息存储和交换</view>
<view class="section">
本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。
</view>
<!-- 5. Cookie的使用 -->
<view class="section-title">5. Cookie的使用</view>
<view class="section">
<view>(a) 在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。</view>
<view>(b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。</view>
<view>(c) 通过本应用所设cookies所取得的有关信息,将适用本政策。</view>
</view>
<!-- 6. 信息安全 -->
<view class="section-title">6. 信息安全</view>
<view class="section">
<view>(a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在"完善的安全措施"。</view>
<view>(b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</view>
</view>
<!-- 7. 本隐私政策的更改 -->
<view class="section-title">7. 本隐私政策的更改</view>
<view class="section">
<view>(a) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</view>
<view>(b) 我们保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。</view>
</view>
</view>
</view>
</view> </view>
</view> </view>
...@@ -188,8 +528,106 @@ ...@@ -188,8 +528,106 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
padding: 30rpx; padding: 30rpx;
} }
.user-agreement {
padding: 20rpx 30rpx;
color: #333;
line-height: 1.6;
font-size: 28rpx;
.header {
margin-bottom: 30rpx;
text-align: center;
.title {
font-size: 36rpx;
font-weight: bold;
margin-bottom: 10rpx;
}
}
.content {
.section {
margin-bottom: 30rpx;
text-align: justify;
}
.section-title {
font-weight: bold;
margin: 40rpx 0 20rpx;
font-size: 32rpx;
color: #333;
}
.subsection-title {
font-weight: bold;
margin: 30rpx 0 15rpx;
font-size: 30rpx;
color: #444;
}
.subsection {
margin-left: 30rpx;
margin-bottom: 30rpx;
}
}
}
.privacy-policy {
padding: 20rpx 30rpx;
color: #333;
line-height: 1.6;
font-size: 28rpx;
.header {
margin-bottom: 30rpx;
text-align: center;
.title {
font-size: 36rpx;
font-weight: bold;
margin-bottom: 10rpx;
}
.subtitle {
font-size: 26rpx;
color: #666;
}
}
.content {
.section {
margin-bottom: 30rpx;
text-align: justify;
}
.section-title {
font-weight: bold;
margin: 40rpx 0 20rpx;
font-size: 32rpx;
}
.subsection {
margin-left: 30rpx;
margin-bottom: 30rpx;
}
.contact {
margin: 20rpx 0 30rpx;
padding: 20rpx;
background-color: #f5f5f5;
border-radius: 8rpx;
view {
margin-bottom: 10rpx;
&:last-child {
margin-bottom: 0;
}
}
}
}
}
</style> </style>
\ No newline at end of file
...@@ -39,7 +39,8 @@ ...@@ -39,7 +39,8 @@
points: [], points: [],
//签名图片 //签名图片
SignatureImg: '', SignatureImg: '',
hasSign: false hasSign: false,
isDrawing: false // 新增绘制状态
}; };
}, },
props: ['showCanvas'], props: ['showCanvas'],
...@@ -67,36 +68,83 @@ ...@@ -67,36 +68,83 @@
this.ctx.lineCap = 'round'; this.ctx.lineCap = 'round';
this.ctx.lineJoin = 'round'; this.ctx.lineJoin = 'round';
}, },
//触摸开始,获取到起点 // //触摸开始,获取到起点
touchstart(e) { // touchstart(e) {
let startX = e.changedTouches[0].x; // let startX = e.changedTouches[0].x;
let startY = e.changedTouches[0].y; // let startY = e.changedTouches[0].y;
let startPoint = { // let startPoint = {
X: startX, // X: startX,
Y: startY // Y: startY
}; // };
this.points.push(startPoint); // this.points.push(startPoint);
//每次触摸开始,开启新的路径 // //每次触摸开始,开启新的路径
this.ctx.beginPath(); // this.ctx.beginPath();
}, // },
//触摸移动,获取到路径点 // 触摸开始,获取到起点 - 修改后的方法
touchmove(e) { touchstart(e) {
let moveX = e.changedTouches[0].x; this.isDrawing = true;
let moveY = e.changedTouches[0].y; let startX = e.changedTouches[0].x;
let movePoint = { let startY = e.changedTouches[0].y;
X: moveX, let startPoint = {
Y: moveY X: startX,
}; Y: startY
this.points.push(movePoint); //存点 };
let len = this.points.length; this.points.push(startPoint);
if (len >= 2) { this.ctx.beginPath();
this.draw(); //绘制路径
} // 阻止事件冒泡
}, e.stopPropagation();
// 触摸结束,将未绘制的点清空防止对后续路径产生干扰 return false;
touchend() { },
this.points = []; // //触摸移动,获取到路径点
}, // touchmove(e) {
// let moveX = e.changedTouches[0].x;
// let moveY = e.changedTouches[0].y;
// let movePoint = {
// X: moveX,
// Y: moveY
// };
// this.points.push(movePoint); //存点
// let len = this.points.length;
// if (len >= 2) {
// this.draw(); //绘制路径
// }
// },
// 触摸移动,获取到路径点 - 修改后的方法
touchmove(e) {
if (!this.isDrawing) return;
let moveX = e.changedTouches[0].x;
let moveY = e.changedTouches[0].y;
let movePoint = {
X: moveX,
Y: moveY
};
this.points.push(movePoint);
let len = this.points.length;
if (len >= 2) {
this.draw();
}
// 阻止事件冒泡
e.stopPropagation();
return false;
},
// // 触摸结束,将未绘制的点清空防止对后续路径产生干扰
// touchend() {
// this.points = [];
// },
// 触摸结束 - 修改后的方法
touchend() {
this.isDrawing = false;
this.points = [];
// 阻止事件冒泡
if (e) {
e.stopPropagation();
}
return false;
},
//绘制笔迹 //绘制笔迹
draw() { draw() {
let point1 = this.points[0]; let point1 = this.points[0];
...@@ -154,6 +202,18 @@ ...@@ -154,6 +202,18 @@
}, },
mounted() { mounted() {
this.createCanvas(); this.createCanvas();
// 新增代码
// 在组件挂载时添加额外的事件监听
// #ifdef H5
const canvas = document.querySelector('.mycanvas');
if (canvas) {
canvas.addEventListener('touchmove', (e) => {
if (this.isDrawing) {
e.preventDefault();
}
}, { passive: false });
}
// #endif
} }
}; };
</script> </script>
...@@ -163,32 +223,22 @@ ...@@ -163,32 +223,22 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
background: #fff; background: #fff;
// height: calc(100vh-44rpx);
//签名模块 //签名模块
.signature { .signature {
// position: fixed; touch-action: none; /* 禁用触摸操作 */
// top: 10px;
// left: 2%;
// z-index: 999;
width: 96%; width: 96%;
//canvas //canvas
.mycanvas { .mycanvas {
touch-action: none; /* 禁用触摸操作 */
width: 100%; width: 100%;
// height: calc(100vh - 200upx);
height: calc(100vh - 600rpx); height: calc(100vh - 600rpx);
background-color: #f9f9f9; background-color: #f9f9f9;
border-radius: 10px 10px 0 0; border-radius: 10px 10px 0 0;
} }
//底部按钮 //底部按钮
.footer { .footer {
// font-size: 14px;
// height: 150upx;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
// align-items: center;
// background-color: #fff;
// border-radius: 0 0 10px 10px;
// border-top: 1px solid #a7a7a733;
} }
} }
//生成的图片 //生成的图片
......
...@@ -108,20 +108,6 @@ ...@@ -108,20 +108,6 @@
c_agreeFlag(){ c_agreeFlag(){
this.agreeFlag=!this.agreeFlag; this.agreeFlag=!this.agreeFlag;
}, },
// rpsdlogin(){
// if(this.loginType== 'resetpw'){
// this.loginType= 'codelogin'
// return
// }else {
// // uni.navigateBack({ delta: 1 });
// const pages = getCurrentPages();
// console.log('pages',pages);
// if (pages.length > 1) {
// uni.navigateBack({ delta: 1 });
// }
// }
// },
rpsdlogin() { rpsdlogin() {
if (this.loginType == 'resetpw') { if (this.loginType == 'resetpw') {
this.loginType = 'codelogin'; this.loginType = 'codelogin';
...@@ -134,7 +120,6 @@ ...@@ -134,7 +120,6 @@
const pages = getCurrentPages(); const pages = getCurrentPages();
const currentPage = pages[pages.length - 1]; const currentPage = pages[pages.length - 1];
const from = currentPage.options.from; // 获取 url 中的 from 参数 const from = currentPage.options.from; // 获取 url 中的 from 参数
console.log('currentPage',currentPage);
// 从 TabBar 页跳转过来,用 switchTab 返回 // 从 TabBar 页跳转过来,用 switchTab 返回
if (from === 'index') { if (from === 'index') {
uni.switchTab({ uni.switchTab({
...@@ -202,6 +187,8 @@ ...@@ -202,6 +187,8 @@
}, 1000); }, 1000);
}, },
loginIn(loginType,urlType){ loginIn(loginType,urlType){
console.log('loginType',loginType);
console.log('this.loginType',this.loginType);
uni.showLoading({ uni.showLoading({
title: '加载中...' title: '加载中...'
}); });
......
const dev = { const dev = {
// base_url:'https://mstage.zuihuibi.cn',
// api_url:'https://mstage.zuihuibi.cn/cffpApi',
// cffp_url:'https://mstage.zuihuibi.cn/cffpApi/cffp',
// share_url:'https://mstage.zuihuibi.cn/cffp',
base_url:'https://mdev.anjibao.cn', base_url:'https://mdev.anjibao.cn',
api_url:'https://mdev.anjibao.cn/cffpApi', api_url:'https://mdev.anjibao.cn/cffpApi',
cffp_url:'https://mdev.anjibao.cn/cffpApi/cffp', cffp_url:'https://mdev.anjibao.cn/cffpApi/cffp',
...@@ -37,7 +41,7 @@ const config = { ...@@ -37,7 +41,7 @@ const config = {
stage, stage,
prod prod
} }
let env = 'prod'; let env = 'dev';
let baseURL = config[env].base_url; let baseURL = config[env].base_url;
let apiURL = config[env].api_url; let apiURL = config[env].api_url;
......
...@@ -169,7 +169,7 @@ ...@@ -169,7 +169,7 @@
"vueVersion" : "3", "vueVersion" : "3",
"h5" : { "h5" : {
"router" : { "router" : {
"base" : "/appYdhomeoffice/", "base" : "/cffp/",
"mode" : "history" "mode" : "history"
}, },
"devServer" : { "devServer" : {
......
...@@ -1852,6 +1852,7 @@ ...@@ -1852,6 +1852,7 @@
loginPopup.value.close(); loginPopup.value.close();
uni.setStorageSync('cffp_userId', String(res['data']['userId'])); uni.setStorageSync('cffp_userId', String(res['data']['userId']));
uni.setStorageSync('uni-token',res['data']['token']); uni.setStorageSync('uni-token',res['data']['token']);
uni.setStorageSync('loginType', 'codelogin');
userId.value= String(res['data']['userId']); userId.value= String(res['data']['userId']);
powerQuery(); powerQuery();
} else { } else {
......
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
}, },
touchMoveHandler:null, touchMoveHandler:null,
isScrollLocked: false // 新增滚动锁定状态
} }
}, },
components:{eSignature}, components:{eSignature},
...@@ -97,34 +98,90 @@ ...@@ -97,34 +98,90 @@
this.releaseScroll(); this.releaseScroll();
}, },
methods: { methods: {
// 锁定滚动 // // 锁定滚动
lockScroll() { // lockScroll() {
// #ifdef H5 // // #ifdef H5
if (this.touchMoveHandler) return; // 避免重复绑定 // if (this.touchMoveHandler) return; // 避免重复绑定
this.touchMoveHandler = (e) => { // this.touchMoveHandler = (e) => {
e.preventDefault(); // e.preventDefault();
}; // };
document.body.addEventListener( // document.body.addEventListener(
'touchmove', // 'touchmove',
this.touchMoveHandler, // this.touchMoveHandler,
{ passive: false } // { passive: false }
); // );
// #endif // // #endif
}, // },
// 释放滚动 // 锁定滚动 - 修改后的方法
releaseScroll() { lockScroll() {
// #ifdef H5 if (this.isScrollLocked) return;
if (this.touchMoveHandler) {
document.body.removeEventListener( // #ifdef H5
'touchmove', // 阻止触摸事件默认行为
this.touchMoveHandler this.touchMoveHandler = (e) => {
); // 检查触摸事件是否发生在签名区域内
this.touchMoveHandler = null; const signatureArea = document.querySelector('.signatureContent');
} if (signatureArea && signatureArea.contains(e.target)) {
// #endif e.preventDefault();
}, }
};
document.body.addEventListener('touchmove', this.touchMoveHandler, { passive: false });
// #endif
// 在App端也需要禁用滚动
// #ifdef APP-PLUS
const pages = getCurrentPages();
const page = pages[pages.length - 1];
const webview = page.$getAppWebview();
webview.setStyle({
scrollIndicator: 'none',
scrollsToTop: false,
bounce: 'none'
});
// #endif
this.isScrollLocked = true;
},
// // 释放滚动
// releaseScroll() {
// // #ifdef H5
// if (this.touchMoveHandler) {
// document.body.removeEventListener(
// 'touchmove',
// this.touchMoveHandler
// );
// this.touchMoveHandler = null;
// }
// // #endif
// },
// 释放滚动 - 修改后的方法
releaseScroll() {
if (!this.isScrollLocked) return;
// #ifdef H5
if (this.touchMoveHandler) {
document.body.removeEventListener('touchmove', this.touchMoveHandler);
this.touchMoveHandler = null;
}
// #endif
// 在App端恢复滚动
// #ifdef APP-PLUS
const pages = getCurrentPages();
const page = pages[pages.length - 1];
const webview = page.$getAppWebview();
webview.setStyle({
scrollIndicator: 'auto',
scrollsToTop: true,
bounce: 'vertical'
});
// #endif
this.isScrollLocked = false;
},
goBack() { goBack() {
this.releaseScroll() this.releaseScroll()
uni.navigateBack({ uni.navigateBack({
...@@ -218,17 +275,24 @@ ...@@ -218,17 +275,24 @@
<style lang="scss" scoped> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
// uni-page-wrapper{
// overflow: hidden!important;
// }
.container{ .container{
background-color: #fff; background-color: #fff;
// 新增样式
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
-webkit-overflow-scrolling: touch;
} }
.signatureContent{ .signatureContent{
background: #fff; background: #fff;
margin-top: 20rpx; margin-top: 20rpx;
height: auto; height: auto;
position: relative; position: relative;
// 新增样式
touch-action: none; /* 禁用触摸操作 */
} }
.signature_action{ .signature_action{
display: flex; display: flex;
...@@ -243,10 +307,6 @@ ...@@ -243,10 +307,6 @@
.imgBox{ .imgBox{
display: flex; display: flex;
align-items: center; align-items: center;
// position: absolute;
// bottom: -7%;
// left: 50%;
// transform: translateX(-50%);
width: 120rpx; width: 120rpx;
height: 120rpx; height: 120rpx;
} }
......
...@@ -29,10 +29,13 @@ ...@@ -29,10 +29,13 @@
<view class="swiperBox" v-if="bannerViewType == '2'"> <view class="swiperBox" v-if="bannerViewType == '2'">
<uni-swiper-dot <uni-swiper-dot
:dots-styles="{ :dots-styles="{
backgroundColor: 'rgba(255, 255, 255, 0.5)', backgroundColor: 'rgba(145, 151, 201, .5)',
selectedBackgroundColor: 'rgba(255, 255, 255, 1)' selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
}" :info="swiperList" :current="current" mode="default"> bottom:100,
<swiper autoplay :interval="3000" circular class="swiper-box" @change="changeSwiper"> selectedBorder: '10rpx rgba(255, 255, 255, 1) solid',
width:8
}" :info="swiperList" :current="current" mode="default">
<swiper autoplay :indicator-dots="true" :interval="3000" circular class="swiper-box" @change="changeSwiper">
<swiper-item v-for="(item,index) in swiperList" :key="index" class="swiper-item-no-gap"> <swiper-item v-for="(item,index) in swiperList" :key="index" class="swiper-item-no-gap">
<view class="swiper-item"> <view class="swiper-item">
<image style="height: 100%;width: 100%;display: block;" :src="item['filePath']" mode="aspectFill"></image> <image style="height: 100%;width: 100%;display: block;" :src="item['filePath']" mode="aspectFill"></image>
...@@ -568,7 +571,7 @@ ...@@ -568,7 +571,7 @@
} }
//this.courseInfo.serviceContent = res['data']['data']['filePathOss']; //this.courseInfo.serviceContent = res['data']['data']['filePathOss'];
this.lecturerId = res['data']['data']['fileLecturerId']; this.lecturerId = res['data']['data']['fileLecturerId'];
this.lecturerQuery(); // this.lecturerQuery();
this.relatedCoursesList(); this.relatedCoursesList();
if (uni.getStorageSync('h5_coursesharing')) { if (uni.getStorageSync('h5_coursesharing')) {
this.coursesharing = uni.getStorageSync('h5_coursesharing') this.coursesharing = uni.getStorageSync('h5_coursesharing')
......
...@@ -223,6 +223,10 @@ ...@@ -223,6 +223,10 @@
this.loginornot = false this.loginornot = false
}else{ }else{
this.loginornot = true; this.loginornot = true;
}
if(loginType == 'codelogin'){
this.querySystemMessage() this.querySystemMessage()
} }
this.queryAreaCenterInfo(); this.queryAreaCenterInfo();
......
...@@ -66,8 +66,8 @@ ...@@ -66,8 +66,8 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.container{ .container{
height: 100vh; height: 100vh;
background: url('../../static/app-plus/registerBg.png') 100% 100%; background: url('../../static/app-plus/registerBg.png') 30% 30% no-repeat;
background-size: contain; background-size: cover;
color: #fff; color: #fff;
.logo{ .logo{
padding-top: 100rpx; padding-top: 100rpx;
...@@ -114,4 +114,4 @@ ...@@ -114,4 +114,4 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
</style> </style>
\ No newline at end of file
...@@ -143,6 +143,7 @@ ...@@ -143,6 +143,7 @@
uni.setStorageSync('cffp_userId', this.userId); uni.setStorageSync('cffp_userId', this.userId);
uni.setStorageSync('isH5', 1); uni.setStorageSync('isH5', 1);
uni.setStorageSync('uni-token', res.data['token']); uni.setStorageSync('uni-token', res.data['token']);
uni.setStorageSync('loginType', 'codelogin');
uni.navigateTo({ uni.navigateTo({
url:'/pages/application-process/basic-info?userId=' + this.userId + '&shareId=' + this.form.id url:'/pages/application-process/basic-info?userId=' + this.userId + '&shareId=' + this.form.id
}) })
......
...@@ -11,17 +11,16 @@ ...@@ -11,17 +11,16 @@
<view class="headerInfo"> <view class="headerInfo">
<view class="headerTop"> <view class="headerTop">
<view class="" style="margin-right: 15rpx;"> <view class="" style="margin-right: 15rpx;">
<view class="myName" v-if="loginornot">{{showMyName || '点击头像完善信息'}}</view> <view class="myName" v-if="loginType == 'codelogin'">{{showMyName || '点击头像完善信息'}}</view>
<view class="myName" v-if="!loginornot">游客</view> <view class="myName" v-if="loginType == 'visitor'">游客</view>
</view> </view>
<view class="desBox" v-if="loginornot&&customerBasicInfo.partnerType"> <view class="desBox" v-if="loginType == 'codelogin'&&customerBasicInfo.partnerType">
{{customerBasicInfo.partnerType}} {{customerBasicInfo.partnerType}}
</view> </view>
</view> </view>
<view class="nickName"> <view class="nickName">
<!--昵称:{{loginornot == true ?customerBasicInfo.nickName :'游客'}} --> <text v-if="loginType == 'codelogin' && customerBasicInfo.nickName">昵称:{{customerBasicInfo.nickName}}</text>
<text v-if="loginornot && customerBasicInfo.nickName">昵称:{{customerBasicInfo.nickName}}</text> <text v-if="loginType == 'visitor'">昵称:游客</text>
<text v-if="!loginornot">昵称:游客</text>
</view> </view>
</view> </view>
...@@ -145,12 +144,14 @@ ...@@ -145,12 +144,14 @@
export default { export default {
data() { data() {
return { return {
showMyName:'', showMyName:'',
msgTotal:0, msgTotal:0,
messageInfo:[], messageInfo:[],
companyType : companyInfo.companyType, companyType : companyInfo.companyType,
companyLogo : '../../static/myteam/logo.png', companyLogo : '../../static/myteam/logo.png',
userId: uni.getStorageSync('cffp_userId'), userId: uni.getStorageSync('cffp_userId'),
loginType : uni.getStorageSync('loginType'),
inviteEqrode:'', inviteEqrode:'',
currentPage:'personalCenter', currentPage:'personalCenter',
customerBasicInfo:{}, customerBasicInfo:{},
...@@ -228,21 +229,24 @@ ...@@ -228,21 +229,24 @@
tabBar, tabBar,
}, },
onShow() { onShow() {
this.loginType = uni.getStorageSync('loginType')
console.log('this.loginType',this.loginType);
if(this.companyType == '1'){ if(this.companyType == '1'){
this.companyLogo='../../static/myteam/Group1633.png'; this.companyLogo='../../static/myteam/Group1633.png';
}else if(this.companyType == '2'){ }else if(this.companyType == '2'){
this.companyLogo='../../static/myteam/logo.png'; this.companyLogo='../../static/myteam/logo.png';
} }
this.queryInfo();
let loginType = uni.getStorageSync('loginType') if(this.loginType == "visitor" ){
if(loginType == "visitor" ){
this.loginornot = false this.loginornot = false
this.messageInfo = [] this.messageInfo = []
}else{ }else{
this.querySystemMessage()
this.loginornot = true; this.loginornot = true;
} }
if(this.loginType == 'codelogin'){
this.querySystemMessage()
this.queryInfo();
}
uni.$on("handClick", res => { uni.$on("handClick", res => {
this.customerBasicInfo = res.data this.customerBasicInfo = res.data
if(this.customerBasicInfo?.realName && this.customerBasicInfo?.realName.length>5){ if(this.customerBasicInfo?.realName && this.customerBasicInfo?.realName.length>5){
...@@ -253,10 +257,6 @@ ...@@ -253,10 +257,6 @@
// 移除监听事件 // 移除监听事件
uni.$off('handClick'); uni.$off('handClick');
}); });
// setTimeout(() => {
// this.loadshow = false
// }, 10000)
}, },
methods: { methods: {
...@@ -285,7 +285,6 @@ ...@@ -285,7 +285,6 @@
} }
}, },
jumpToSystemMsg(){ jumpToSystemMsg(){
if(this.userId&& this.messageInfo.length>0){ if(this.userId&& this.messageInfo.length>0){
uni.navigateTo({ uni.navigateTo({
url:'../systemMsg/system_msg' url:'../systemMsg/system_msg'
...@@ -405,14 +404,20 @@ ...@@ -405,14 +404,20 @@
this.inviteEqrode = this.customerBasicInfo.invitationCode; this.inviteEqrode = this.customerBasicInfo.invitationCode;
uni.setStorageSync('user_mobile', res.data.mobile) uni.setStorageSync('user_mobile', res.data.mobile)
uni.setStorageSync('userinfodataForm', res.data) uni.setStorageSync('userinfodataForm', res.data)
// }else{
// uni.showToast({
// title: res['message'],
// duration: 2000
// });
}else { }else {
// uni.showToast({
// title: res['message'],
// duration: 2000
// });
// 清空全部本地存储
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor')
this.showMyName = '' this.showMyName = ''
this.loginType = 'visitor'
} }
console.log('this.showMyName',this.showMyName);
}) })
} }
}, },
......
...@@ -400,6 +400,14 @@ ...@@ -400,6 +400,14 @@
this.$emit('comfirm',{year:this.year,month:this.month,current:this.current,timeType:'8'}) this.$emit('comfirm',{year:this.year,month:this.month,current:this.current,timeType:'8'})
} }
if(this.current=='2'){ if(this.current=='2'){
if(!this.currentDate.length){
uni.showToast({
title: `请选择时间`,
duration: 1000,
icon: 'none'
});
return
}
let newObj = {} let newObj = {}
if(this.monthList.filter(item=>item.value == this.currentMonth).length>0){ if(this.monthList.filter(item=>item.value == this.currentMonth).length>0){
newObj = this.monthList.filter(item=>item.value == this.currentMonth)[0] newObj = this.monthList.filter(item=>item.value == this.currentMonth)[0]
......

436 KB | W: | H:

12.1 KB | W: | H:

static/logo1.png
static/logo1.png
static/logo1.png
static/logo1.png
  • 2-up
  • Swipe
  • Onion skin
import {apiURL,cffpURL} from "../environments/environment"; import {apiURL,cffpURL} from "../environments/environment";
import api from "@/api/api";
// 白名单,不需要携带token就允许被访问的接口 // 白名单,不需要携带token就允许被访问的接口
const whiteApiList = [`${apiURL}/authorize/obtainToken`, `${apiURL}/authorize/checkToken`, `${cffpURL}/user/loginVerification`,`${apiURL}/appVersion/checkIsUpdate`, const whiteApiList = [`${apiURL}/authorize/obtainToken`, `${apiURL}/authorize/checkToken`, `${cffpURL}/user/loginVerification`,`${apiURL}/appVersion/checkIsUpdate`,
`${cffpURL}/accessLog/accessLogSave`,`${cffpURL}/user/powerQuery`,`${cffpURL}/user/wxLogin`,`${cffpURL}/certificate/officialWebsiteDetail`]; `${cffpURL}/accessLog/accessLogSave`,`${cffpURL}/user/powerQuery`,`${cffpURL}/user/wxLogin`,`${cffpURL}/certificate/officialWebsiteDetail`];
...@@ -8,13 +9,16 @@ export const interceptor = () => { ...@@ -8,13 +9,16 @@ export const interceptor = () => {
invoke(args) { invoke(args) {
// 当本地没有token,并且接口地址没在白名单内,需要重新获取token // 当本地没有token,并且接口地址没在白名单内,需要重新获取token
if (!uni.getStorageSync('uni-token') && !whiteApiList.includes(args.url)) { if (!uni.getStorageSync('uni-token') && !whiteApiList.includes(args.url)) {
const params = { const params = {
ticket: 'uni-app', ticket: 'uni-app',
loginId: null loginId: null
} }
let h5userId = uni.getStorageSync('cffp_userId'); let h5userId = uni.getStorageSync('cffp_userId');
if (h5userId) { if (h5userId) {
params.loginId = h5userId; params.loginId = h5userId;
} }
uni.request({ uni.request({
url: `${apiURL}/authorize/obtainToken`, url: `${apiURL}/authorize/obtainToken`,
......
import api from "@/api/api";
//只要是未登录状态,想要跳转到名单内的路径时,直接跳到登录页 //只要是未登录状态,想要跳转到名单内的路径时,直接跳到登录页
// 页面白名单,不受拦截 // 页面白名单,不受拦截
const whiteList = [ const whiteList = [
...@@ -10,10 +11,24 @@ const whiteList = [ ...@@ -10,10 +11,24 @@ const whiteList = [
'/pages/index/index' '/pages/index/index'
] ]
export default function initApp(){ export default function initApp(){
uni.addInterceptor('navigateTo', { uni.addInterceptor('navigateTo', {
// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转 // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
invoke (e) { invoke (e) {
if(uni.getStorageSync('cffp_userId')){
api.queryInfo({userId:uni.getStorageSync('cffp_userId')}).then(res=>{
if(!res['success']){
// 清空全部本地存储
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor')
uni.redirectTo({
url: '/components/login/login'
})
return
}
})
}
let whiteArr = ['index','personalCenter','courselist','product'] let whiteArr = ['index','personalCenter','courselist','product']
// 1. 解析 URL 中的 from 参数 // 1. 解析 URL 中的 from 参数
const getQueryParam = (url, key) => { const getQueryParam = (url, key) => {
...@@ -65,7 +80,7 @@ function hasPermission (url) { ...@@ -65,7 +80,7 @@ function hasPermission (url) {
let islogin = uni.getStorageSync("isLogin");//在这可以使用token、vuex let islogin = uni.getStorageSync("isLogin");//在这可以使用token、vuex
// islogin = Boolean(Number(islogin));//返回布尔值 // islogin = Boolean(Number(islogin));//返回布尔值
// 在白名单中或有登录判断条件可以直接跳转 // 在白名单中或有登录判断条件可以直接跳转
console.log(whiteList.indexOf(url.slice(0,url.indexOf('?'))) !== -1);
if(whiteList.indexOf(url.slice(0,url.indexOf('?'))) !== -1 || islogin) { if(whiteList.indexOf(url.slice(0,url.indexOf('?'))) !== -1 || islogin) {
return true return true
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment