游客
This commit is contained in:
187
pages/agreement/yhxyPage.vue
Normal file
187
pages/agreement/yhxyPage.vue
Normal file
@@ -0,0 +1,187 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="dp_title">疯子读书软件许可及服务协议</view>
|
||||
<view class="dp_content">
|
||||
<view>导言:</view>
|
||||
<view>欢迎你使用疯子读书软件及服务! </view>
|
||||
<view>为使用疯子读书软件及服务(以下简称“本软件”、“疯子读书服务”或“本服务”),你应当阅读并遵守《疯子读书软件许可及服务协议》(以下简称“本协议”)、以及《会员订阅服务条款》等疯子读书服务的各项制度规范。
|
||||
</view>
|
||||
<view>请你务必审慎阅读、充分理解各条款内容,特别是免除或限制疯子读书责任的相应条款,以及开通或使用某项服务(如无限卡会员订阅服务)的单独协议,并选择接受或不接受。限制、免责条款可能以加粗形式提示你注意。
|
||||
</view>
|
||||
<view>除非你已阅读并接受本协议所有条款,否则你无权下载、安装或使用本软件及相关服务。你的下载、安装、使用、登录等行为即视为你已阅读并同意上述协议的约束。 </view>
|
||||
<view>你有违反本协议的任何行为时,疯子读书有权依照违反情况,随时单方限制、中止或终止向你提供本服务,并有权追究你的相关责任。
|
||||
如果你未满18周岁,请在监护人的陪同下阅读本协议及其他上述协议,并特别注意未成年人使用条款。 </view>
|
||||
<view class="dp_con1">一、【协议的范围】 </view>
|
||||
<view class="dp_con2">1. 本协议是你与疯子读书之间关于你下载、安装、使用、复制本软件,以及使用疯子读书相关服务所订立的协议。</view>
|
||||
<view class="dp_con2">2.
|
||||
本协议被视为《疯子读书服务协议》及《疯子读书微信软件许可及服务协议》的补充协议,是其不可分割的组成部分,与其构成统一整体。本协议与上述内容存在冲突的,以本协议为准。
|
||||
</view>
|
||||
<view class="dp_con2">3. 本协议内容同时包括疯子读书可能不断发布的关于本服务的相关协议、服务声明、业务规则及公告指引等内容(以下统称为“专项规则”)。上述内容一经正式发布,即为本协议不可分割的组成部分,你同样应当遵守。
|
||||
</view>
|
||||
<view class="dp_con1">二、【术语定义】 </view>
|
||||
<view class="dp_con2">1.
|
||||
疯子读书软件:是指疯子读书向用户提供的购买、阅读、赠送、分享电子读物,发布读书想法等服务的客户端软件。你启用本软件后,可以阅读、赠送、分享、评论你通过本服务购买的电子读物,你也可以在你的微信好友允许的情况下,浏览微信好友通过本服务阅读、分享的读物及其读书想法等。
|
||||
</view>
|
||||
<view class="dp_con2">2. 疯子读书:是指天津众妙之门科技有限公司及其相关服务可能存在的运营关联单位。 </view>
|
||||
<view class="dp_con2">3. 用户:是指启用、浏览或上传数据至疯子读书服务的用户,在本协议中也称为“你”。 </view>
|
||||
<view class="dp_con2">4. 其他用户:是指除用户本人外与疯子读书服务相关的其他微信用户。 </view>
|
||||
<view class="dp_con1">三、关于本软件 </view>
|
||||
<view class="dp_con2">1.【服务许可】 </view>
|
||||
<view>本软件可能提供多个应用版本,用户必须选择与所安装设备相匹配的软件版本,各应用版本之间的功能可能不一致,具体以相应版本中展示的为准。用户可根据本协议获得以下许可: </view>
|
||||
<view>1.1 疯子读书给予你一项个人的、不可转让及非排他性的许可,以使用本软件。你可以为非商业目的在单一台终端设备上安装、使用、显示、运行本软件。 </view>
|
||||
<view>1.2 你可以为使用本软件的目的复制本软件的一个副本,仅用作备份。备份副本必须包含原软件中含有的所有著作权信息。 </view>
|
||||
<view>1.3 本条及本协议其他条款未明示授权的其他一切权利仍由疯子读书保留,你在行使这些权利时须另外取得疯子读书的书面许可。疯子读书如果未行使前述任何权利,并不构成对该权利的放弃。 </view>
|
||||
<view class="dp_con2">2.【安装与卸载】 </view>
|
||||
<view>2.1
|
||||
你可以直接从疯子读书的网站上获取本软件,也可以从得到疯子读书授权的第三方获取。如果你从未经疯子读书授权的第三方获取本软件或与本软件名称相同的安装程序,疯子读书无法保证本软件能够正常使用,并对因此给你造成的损失不予负责。
|
||||
</view>
|
||||
<view>2.2
|
||||
疯子读书可能为不同的终端设备开发了不同的软件版本,你应当根据实际情况选择下载合适的版本进行安装。下载安装程序后,你需要按照该程序提示的步骤正确安装。为提供更加优质、安全的服务,在本软件安装时疯子读书可能推荐你安装其他软件,你可以选择安装或不安装。
|
||||
</view>
|
||||
<view>2.3 如果你不再需要使用本软件或者需要安装新版软件,可以自行卸载。如果你愿意帮助疯子读书改进产品服务,请告知卸载的原因。 </view>
|
||||
<view>2.4
|
||||
为了改善用户体验、完善服务内容,疯子读书将不断努力开发新的服务,并为你不时提供软件更新(这些更新可能会采取软件替换、修改、功能强化、版本升级等形式)。为了保证本软件安全性和功能的一致性,疯子读书有权不经向你特别通知而对软件进行更新,或者对软件的部分功能效果进行改变或限制。本软件新版本发布后,旧版本的软件可能无法使用。疯子读书不保证旧版本软件继续可用及相应的客户服务,请你随时核对并下载最新版本。
|
||||
</view>
|
||||
<view class="dp_con1">四、【用户个人信息保护】 </view>
|
||||
<view class="dp_con2">1.
|
||||
保护用户个人信息是疯子读书的一项基本原则,疯子读书将会采取合理的措施保护用户的个人信息。除法律法规规定或本协议另有约定的情形外,未经用户许可疯子读书不会向第三方公开、透露用户个人信息。疯子读书对相关信息采用专业加密存储与传输方式,保障用户个人信息的安全。
|
||||
</view>
|
||||
<view class="dp_con2">2.
|
||||
你使用本服务的部分功能前需要有一个成功注册的微信帐号,并通过该微信帐号进行授权,授权内容包括但不限于:获得该微信帐号的公开信息(昵称、头像等)、寻找与你共同使用该应用的微信好友、帮助你分享信息到朋友圈等。对于你的微信帐号信息,疯子读书将采用专业加密存储与传输方式,保障信息安全,不会擅自收集、利用、透露或公开。用户有责任妥善保管你的微信帐号信息及帐号密码的安全,因你自身的原因导致微信帐号及密码泄漏,而造成的本服务下相关信息的泄露、篡改、删除等后果,疯子读书不承担任何责任。
|
||||
</view>
|
||||
<view class="dp_con2">3. 疯子读书将运用各种安全技术和程序建立完善的管理制度来保护你的个人信息,以免遭受未经授权的访问、使用或披露。 </view>
|
||||
<view class="dp_con2">4. 未经你的同意,疯子读书不会向疯子读书以外的任何公司、组织和个人披露你的个人信息,但法律法规另有规定或本协议另有约定的除外。 </view>
|
||||
<view class="dp_con1">五、【用户注意事项】 </view>
|
||||
<view class="dp_con2">1. 你理解并同意:为了向你提供有效的服务,本软件会利用你设备终端的处理器和带宽等资源。本软件使用过程中可能产生数据流量的费用,用户需自行向运营商了解相关资费信息,并自行承担相关费用。 </view>
|
||||
<view class="dp_con2">2. 你在使用本软件某一特定服务时,该服务可能会另有单独的协议、专项规则等,你在使用该项服务前请阅读并同意相关的单独协议、专项规则,包括但不限于适用于无限卡会员订阅服务的《会员订阅服务条款》等。
|
||||
</view>
|
||||
<view class="dp_con2">3. 你理解并同意疯子读书将会尽其商业上的合理努力保障你在本软件中的数据存储安全,但是,疯子读书并不能就此提供完全保证,包括但不限于以下情形: </view>
|
||||
<view>3.1 疯子读书不对你在本软件中相关数据的删除或储存失败负责; </view>
|
||||
<view>3.2 疯子读书有权根据实际情况自行决定单个用户在本软件中数据的最长储存期限,并在服务器上为其分配数据最大存储空间等; </view>
|
||||
<view>3.3 如果你停止使用本软件或服务被终止或取消,疯子读书可以从服务器上永久地删除你的数据。服务停止、终止或取消后,疯子读书没有义务向你返还任何数据。 </view>
|
||||
<view class="dp_con2">4. 用户在使用本软件时,须自行承担如下来自疯子读书不可掌控的风险内容,包括但不限于</view>
|
||||
<view>4.1 由于信息网络设备维护、连接故障,系统故障,电力故障,罢工,暴乱,火灾,洪水,风暴,爆炸,战争,政府行为,司法行政机关的命令或因第三方因素可能引起的个人信息丢失、泄漏及其他损害等风险;
|
||||
</view>
|
||||
<view>4.2 如使用本客户端软件,用户必须选择与所安装设备相匹配的软件版本,否则,由于软件与设备型号不相匹配所导致的任何问题或损害,均由用户自行承担; </view>
|
||||
<view>4.3 用户发布的内容或你的软件使用信息(包括但不限于使用本服务所产生的你的书架、你正在阅读的读物、你推荐的读物及你的读书想法等信息)被他人转发、分享,因此等传播可能带来的风险和责任; </view>
|
||||
<view>4.4 由于网络信号不稳定、网络带宽小等原因,所引起的本软件登录失败、资料同步不完整、页面打开速度慢等风险。 </view>
|
||||
<view class="dp_con2">
|
||||
5.
|
||||
你理解并同意,本服务可生成软件使用信息(包括但不限于你的书架、你正在阅读的读物、你推荐的读物及你的读书想法等信息),并向与你有微信好友关系的用户及其他用户开放浏览可见,用户之间可浏览对方因使用本服务所生成的全部或部分软件使用信息,你也可以选择对前述软件使用信息的可见范围等进行相关设置。
|
||||
</view>
|
||||
<view class="dp_con1">六、【用户行为规范】 </view>
|
||||
<view class="dp_con2">1. 【服务使用规范】 </view>
|
||||
<view>1.1
|
||||
你应遵守本协议使用本服务。你理解并同意,本服务是你与其他用户之间就读物阅读进行信息交流的平台,疯子读书不鼓励你在未经其他用户允许的前提下将其他用户使用本服务所产生的软件使用信息对外转发、分享、传播或用作其他违法或不合理用途。
|
||||
</view>
|
||||
<view class="dp_con2">2. 【信息内容规范】 </view>
|
||||
<view>2.1 本条所述信息内容是指用户使用本服务过程中所制作、复制、发布、传播的任何内容,包括但不限于图片、文字、相关链接页面等使用本服务所产生的内容。 </view>
|
||||
<view>2.2 你理解并同意,疯子读书一直致力于为用户提供文明健康、规范有序的网络环境,你不得利用本服务制作、复制、发布、传播如下干扰本服务正常运营,以及侵犯其他用户或第三方合法权益的内容,包括但不限于:
|
||||
</view>
|
||||
<view>2.2.1 发布、传送、传播、储存违反国家法律法规禁止的内容: </view>
|
||||
<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>2.2.2 发布、传送、传播、储存侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的内容; </view>
|
||||
<view>2.2.3 未经他人许可发布、传送、传播涉及他人隐私、个人信息或资料的内容,但因使用本服务所默认生成并公布的软件使用信息除外; </view>
|
||||
<view>2.2.4 发表、传送、传播骚扰、广告信息及垃圾信息或含有任何性或性暗示的; </view>
|
||||
<view>2.2.5 其他违反法律法规、政策及公序良俗、社会公德或干扰本服务正常运营和侵犯其他用户或第三方合法权益内容的信息。 </view>
|
||||
<view class="dp_con2">3.【运营规范】 </view>
|
||||
<view>你使用本服务过程中不得从事下列行为: </view>
|
||||
<view>3.1 提交、发布虚假信息,或冒充、利用他人名义的; </view>
|
||||
<view>3.2 诱导其他用户点击链接页面或分享信息的; </view>
|
||||
<view>3.3 虚构事实、隐瞒真相以误导、欺骗他人的; </view>
|
||||
<view>3.4 侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的; </view>
|
||||
<view>3.5 未经疯子读书书面许可利用微信帐号和任何服务,以及第三方运营平台进行推广或互相推广的; </view>
|
||||
<view>3.6 利用本软件及服务从事任何违法犯罪活动的; </view>
|
||||
<view>3.7 制作、发布与以上行为相关的方法、工具,或对此类方法、工具进行运营或传播,无论这些行为是否为商业目的; </view>
|
||||
<view>3.8 其他违反法律法规规定、侵犯其他用户合法权益、干扰产品正常运营或疯子读书未明示授权的行为。 </view>
|
||||
<view class="dp_con2">4.【对自己行为负责】 </view>
|
||||
<view>
|
||||
你充分了解并同意,你必须为自己注册帐号下的一切行为负责,包括你所发表的任何内容以及由此产生的任何后果。你应对本服务中的内容自行加以判断,并承担因使用内容而引起的所有风险,包括因对内容的正确性、完整性或实用性的依赖而产生的风险;同时,你应在本协议约定的范围内使用本服务,因你利用本服务进行违反法律法规、本协议、专项规则的行为所产生的风险亦由你自行承担。疯子读书无法且不会对因前述风险而导致的任何损失或损害承担责任。
|
||||
</view>
|
||||
<view class="dp_con1">七、【管理规范】 </view>
|
||||
<view class="dp_con2">
|
||||
1.
|
||||
疯子读书有权根据国家相关法规政策,按照本协议的规定,对你发布、传送、传播、储存的内容进行审查,以保证用户使用本服务的行为不违反法律法规及社会公共道德准则、不侵犯疯子读书或第三方的合法权益、不带有诋毁疯子读书及其产品形象的要素。但并不因为疯子读书的审核而减轻你自身使用本服务时应承担的责任,由此产生的一切责任和后果仍由你单独承担。
|
||||
</view>
|
||||
<view class="dp_con2">
|
||||
2.
|
||||
如果疯子读书发现或收到他人举报或投诉用户违反本协议约定的,疯子读书有权不经通知随时对相关内容进行删除、屏蔽,并视行为情节对违规帐号处以包括但不限于警告、限制或禁止使用部分或全部服务、帐号封禁直至注销的处罚,并公告处理结果。
|
||||
</view>
|
||||
<view class="dp_con2">
|
||||
3.
|
||||
你理解并同意,疯子读书有权依合理判断对违反有关法律法规或本协议规定的行为进行处罚,对违法违规的任何用户采取适当的法律行动,并依据法律法规保存有关信息向有关部门报告等,用户应独自承担由此而产生的一切法律责任。
|
||||
</view>
|
||||
<view class="dp_con2">4. 你理解并同意,因你违反本协议或相关服务条款的规定,导致或产生第三方主张的任何索赔、要求或损失,你应当独立承担责任;疯子读书因此遭受损失的,你也应当一并赔偿。 </view>
|
||||
<view class="dp_con1">八、【知识产权声明】 </view>
|
||||
<view class="dp_con2">1.
|
||||
疯子读书是本软件的知识产权权利人。本软件的一切著作权、商标权、专利权、商业秘密等知识产权,以及与本软件相关的所有信息内容(包括但不限于文字、图片、音频、视频、图表、界面设计、版面框架、有关数据或电子文档等)均受中华人民共和国法律法规和相应的国际条约保护,疯子读书享有上述知识产权,但相关权利人依照法律规定应享有的权利除外。
|
||||
</view>
|
||||
<view class="dp_con2">2. 未经疯子读书或相关权利人书面同意,你不得为任何商业或非商业目的自行或许可任何第三方实施、利用、转让上述知识产权。 </view>
|
||||
<view class="dp_con1">九、【终端安全责任】 </view>
|
||||
<view class="dp_con2">1.
|
||||
你理解并同意,本软件同大多数互联网软件一样,可能会受多种因素影响,包括但不限于用户原因、网络服务质量、社会环境等;也可能会受各种安全问题的侵扰,包括但不限于他人非法利用用户资料,进行现实中的骚扰;用户下载安装的其他软件或访问的其他网站中可能含有病毒、木马程序或其他恶意程序,威胁你的终端设备信息和数据安全,继而影响本软件的正常使用等。因此,你应加强信息安全及个人信息的保护意识,注意密码保护,以免遭受损失。
|
||||
</view>
|
||||
<view class="dp_con2">2. 你不得制作、发布、使用、传播用于窃取微信帐号及他人个人信息、财产的恶意程序。 </view>
|
||||
<view class="dp_con2">3. 维护软件安全与正常使用是疯子读书和你的共同责任,疯子读书将按照行业标准合理审慎地采取必要技术措施保护你的终端设备信息和数据安全,但是你承认和同意疯子读书并不能就此提供完全保证。 </view>
|
||||
<view class="dp_con2">4. 在任何情况下,你不应轻信借款、索要密码或其他涉及财产的网络信息。涉及财产操作的,请一定先核实对方身份,并请经常留意疯子读书有关防范诈骗犯罪的提示。 </view>
|
||||
<view class="dp_con1">十、【未成年人保护】 </view>
|
||||
<view class="dp_con2">疯子读书非常重视对未成年人个人信息的保护。若你是18周岁以下的未成年人,在使用疯子读书的服务前,应事先取得你监护人的书面同意。</view>
|
||||
<view class="dp_con1">十一、【其他】 </view>
|
||||
<view class="dp_con2">1.
|
||||
你使用本软件即视为你已阅读并同意受本协议的约束。疯子读书有权在必要时修改本协议条款。你可以在本软件的最新版本中查阅相关协议条款。本协议条款变更后,如果你继续使用本软件,即视为你已接受修改后的协议。如果你不接受修改后的协议,应当停止使用本软件。
|
||||
</view>
|
||||
<view class="dp_con2">2. 本协议签订地为中华人民共和国天津市南开区。 </view>
|
||||
<view class="dp_con2">3. 本协议的成立、生效、履行、解释及纠纷解决,适用中华人民共和国大陆地区法律(不包括冲突法)。 </view>
|
||||
<view class="dp_con2">4. 若你和疯子读书之间发生任何纠纷或争议,首先应友好协商解决;协商不成的,你同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。 </view>
|
||||
<view class="dp_con2">5. 本协议所有条款的标题仅为阅读方便,本身并无实际涵义,不能作为本协议涵义解释的依据。</view>
|
||||
<view class="dp_con2">6. 本协议条款无论因何种原因部分无效或不可执行,其余条款仍有效,对双方具有约束力。(正文完) </view>
|
||||
<view>天津众妙之门科技有限公司 </view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped lang="less">
|
||||
.dp_title {
|
||||
font-size: 36rpx;
|
||||
margin-bottom: 50rpx;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dp_content {
|
||||
max-height: 1000rpx;
|
||||
overflow-y: scroll;
|
||||
font-size: 28rpx;
|
||||
color: #555;
|
||||
line-height: 45rpx;
|
||||
|
||||
.dp_con1 {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.dp_con2 {
|
||||
font-size: 30rpx;
|
||||
margin-top: 10rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
191
pages/agreement/yszcPage.vue
Normal file
191
pages/agreement/yszcPage.vue
Normal file
@@ -0,0 +1,191 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="dp_title" v-html="yszcText.title"></view>
|
||||
<view class="dp_content" v-html="yszcText.content"></view>
|
||||
|
||||
<!-- <view class="dp_title">隐私策略</view>
|
||||
<view class="dp_content">
|
||||
<view class="dp_con1" style="margin-top: 0;">一、隐私保护</view>
|
||||
<view class="dp_con2">
|
||||
1.
|
||||
用户同意,个人隐私信息是指那些能够对用户进行个人辨识或涉及个人通信的信息,包括下列信息:用户真实姓名,身份证号,手机号码,IP地址。而非个人隐私信息是指用户对本服务的操作状态以及使用习惯等一些明确且客观反映在本公司服务器端的基本记录信息和其他一切个人隐私信息范围外的普通信息,以及用户同意公开的上述隐私信息;
|
||||
</view>
|
||||
<view class="dp_con2">
|
||||
2.
|
||||
保护用户(特别是未成年人)的隐私是疯子读书的一项基本政策,疯子读书将对用户所提供的资料进行严格的管理及保护,并使用相应的技术,防止用户的个人资料丢失、被盗用或遭篡改,保证不对外公开或向第三方提供单个用户的注册资料及用户在使用网络服务时存储在疯子读书的非公开内容,但下列情况除外:
|
||||
</view>
|
||||
<view>2.1 事先获得用户的明确授权;</view>
|
||||
<view>2.2 根据有关的法律法规要求;</view>
|
||||
<view>2.3 按照相关政府主管部门的要求;</view>
|
||||
<view>2.4 为维护社会公众的利益;</view>
|
||||
<view>2.5 为维护疯子读书的合法权益。</view>
|
||||
<view class="dp_con2">
|
||||
3. 任何时候如果您对我们的隐私策略有疑问,请利用电子邮件huashengxiangyue@163.com联系我们,我们会尽一切努力,请合理适当的范围内立即改善这个问题。
|
||||
</view>
|
||||
<view class="dp_con1">二、第三方信息共享清单:</view>
|
||||
<view class="dp_con2">aliPay SDK(支付宝支付sdk):</view>
|
||||
<view class="dp_con2">共享的信息:收款账户信息,订单数据信息</view>
|
||||
<view class="dp_con2">wxpay SDK (微信支付sdk)</view>
|
||||
<view class="dp_con2">共享的信息:收款账户信息,订单数据信息</view>
|
||||
<view class="dp_con1">三、我们获取的您的信息</view>
|
||||
<view>您使用服务时我们可能收集已经经过您授权获取或主动填写的如下信息:</view>
|
||||
<view class="dp_con2">1、日志信息,指您使用我们的服务时,系统可能通过自动采集的技术信息,包括:</view>
|
||||
<view>1.1 获取设备信息或获取已安装APP信息,例如您的移动设备、网页浏览器或用于接入我们服务的其他程序所提供的配置信息、您的IP地址和移动设备所用的版本和设备识别码。</view>
|
||||
<view>1.2 您通过我们的服务进行通讯的信息,例如曾通讯的账号。</view>
|
||||
<view>1.3 您通过我们的服务分享的内容所包含的信息(元数据),例如拍摄或上传的共享照片或录像的日期、时间或地点等。</view>
|
||||
<view class="dp_con2">2、位置信息,指您开启设备定位功能并使用我们基于位置提供的相关服务时,收集的有关您位置的信息,包括:</view>
|
||||
<view>2.1 您通过具有定位功能的移动设备使用我们的服务时,通过GPS或WiFi等方式收集的您的地理位置信息用于 健康超市收货 提供位置信息。</view>
|
||||
<view>
|
||||
2.2 您或其他用户提供的包含您所处地理位置的实时信息,例如您提供的账户信息中包含的您所在地区信息,您上传的显示您当前或曾经所处地理位置的共享信息,您或其他人共享的照片包含的地理标记信息。
|
||||
</view>
|
||||
<view>2.3 您可以通过关闭定位功能,停止对您的地理位置信息的收集。</view>
|
||||
<view class="dp_con2">
|
||||
3. 设备信息,包括:
|
||||
</view>
|
||||
<view>3.1 在使用“疯子读书”时可能获取并上传您的的设备信息(Android_ID),网络设备硬件地址(MAC地址),获取手机状态,获取其中的设备序列号用于验证手机型号及安卓版本。</view>
|
||||
<view>3.2 获取OAID,用以标记设备唯一性。</view>
|
||||
<view>3.3 获取定位信息,用于应用获取您的位置信息提供应用服务。</view>
|
||||
<view>3.4 获取软件安装列表,用以第三方应用、服务或链接。</view>
|
||||
<view class="dp_con2">4. 根据相关法律法规及国家标准,在以下情形中,我们可能会依法收集并使用您的个人信息无需征得您的同意:</view>
|
||||
<view>4.1 与国家安全、国防安全直接相关的。</view>
|
||||
<view>4.2 与公共安全、公共卫生、重大公共利益直接相关的。</view>
|
||||
<view>4.3 与犯罪侦查、起诉、审判和判决执行等直接相关的。</view>
|
||||
<view>4.4 出于维护您或他人的生命、财产等重大合法权益但又很难得到您本人同意的。</view>
|
||||
<view>4.5 所收集的个人信息是您自行向社会公众公开的。</view>
|
||||
<view>4.6 根据您的要求签订和履行合同所必需的。</view>
|
||||
<view>4.7 用于维护所提供的服务的安全稳定运行所必需的,例如:发现、处置服务的故障。</view>
|
||||
<view>4.8 法律法规规定的其他情形。</view>
|
||||
<view class="dp_con1">四. 我们可能如何使用信息</view>
|
||||
<view>我们可能将在向您提供服务的过程之中所收集的信息用作下列用途:</view>
|
||||
<view class="dp_con2">1. 向您提供服务。</view>
|
||||
<view class="dp_con2">2. 在我们提供服务时,用于身份验证、客户服务、安全防范等用途,确保我们向您提供的产品和服务的安全性。</view>
|
||||
<view class="dp_con2">3. 帮助我们设计新服务,改善我们现有服务。</view>
|
||||
<view class="dp_con2">4. 让您参与有关我们产品和服务的调查。</view>
|
||||
<view class="dp_con1">五. 您如何访问和控制自己的个人信息</view>
|
||||
<view>我们非常重视您对个人信息的管理,并尽全力保护您对于您个人信息的查询、访问、修改、删除、撤回同意授权、注销账号功能的相关权利,以使您有能力保障您的隐私和信息安全。</view>
|
||||
<view class="dp_con2">1. 您可以在设备本身操作系统中关闭GPS地理位置、摄像头、麦克风、相册权限改变同意范围或撤回您的授权。撤回授权后我们将不再收集与这些权限相关信息。
|
||||
</view>
|
||||
<view class="dp_con2">
|
||||
2.
|
||||
特定的业务功能和服务将需要您的信息才能得以完成,当您撤回同意或授权后,我们无法继续为您提供撤回同意或授权所对应的功能和服务,也不再处理您相应的个人信息。但您撤回同意或授权的决定,不会影响此前基于您的授权而开展的个人信息处理。
|
||||
</view>
|
||||
<view class="dp_con2">3. 访问、更正您的个人信息,您可以查询、访问您的头像、用户名、昵称等信息。</view>
|
||||
<view class="dp_con2">
|
||||
4. 注销账号:账号注销采用客服注销的形式,注销流程:先APP内提交注销账户操作,然后联系官方客服客服;提交注销申请路径:我的》注销账户,客服电话:022-24142321
|
||||
</view>
|
||||
<view class="dp_con1">六、信息安全</view>
|
||||
<view>我们仅在本《隐私协议》所述目的所必需的期间和法律法规要求的时限内保留您的个人信息。</view>
|
||||
<view class="dp_con2">
|
||||
1. 我们非常重视您个人信息的安全,将努力采取合理的安全措施(包括技术方面和管理方面)来保护您的个人信息,防止您提供的个人信息被不当使用或未经授权的情况下被访问、公开披露、使用、修改、损坏、丢失或泄漏。
|
||||
</view>
|
||||
<view class="dp_con2">2. 我们会使用加密技术、匿名化处理及相关合理可行的手段保护您的个人信息,并使用安全保护机制防止您的个人信息遭到恶意攻击。</view>
|
||||
<view class="dp_con2">3. 我们依照法律法规的规定,将在境内运营过程中收集和产生的您的个人信息存储于中华人民共和国境内。目前,我们不会将上述信息传输至境外。</view>
|
||||
<view class="dp_con2">
|
||||
4.
|
||||
您知悉并理解,您接入我们的服务所用的系统和通讯网络,有可能因我们可控范围外的因素而出现问题。因此,我们强烈建议您采取积极措施保护个人信息的安全,包括但不限于使用复杂密码、定期修改密码、不将自己的账号密码及相关个人信息透露给他人。
|
||||
</view>
|
||||
<view class="dp_con2">
|
||||
5.
|
||||
我们会制定应急处理预案,并在发生用户信息安全事件时立即启动应急预案,努力阻止这些安全事件的影响和后果扩大。一旦发生用户信息安全事件(泄露、丢失)后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已经采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施。我们将及时将事件相关情况以推送通知、短信及相关形式告知您,难以逐一告知时,我们会采取合理、有效的方式发布公告。同时,我们还将按照相关监管部门要求,上报用户信息安全事件的处置情况。
|
||||
</view>
|
||||
<view class="dp_con1">七、知识产权</view>
|
||||
<view class="dp_con2">1. 天津众妙之门科技有限公司系疯子读书的著作权人,未经疯子读书许可,用户不得对该软件进行反向工程(reverse
|
||||
engineer)、反向编译(decompile)或反汇编(disassemble)。</view>
|
||||
<view class="dp_con2">
|
||||
2.
|
||||
疯子读书提供的网络服务中包含的任何文本、图片、图形、音频和/或视频资料均受版权、商标和/或其它财产所有权法律的保护,未经相关权利人同意,上述资料均不得在任何媒体直接或间接发布、播放、出于播放或发布目的而改写或再发行,或者被用于其他任何商业目的。所有这些资料或资料的任何部分仅可作为私人和非商业用途而保存在用户终端内。疯子读书不就由上述资料产生或在传送或递交全部或部分上述资料过程中产生的延误、不准确、错误和遗漏或从中产生或由此产生的任何损害赔偿,以任何形式,向用户或任何第三方负责。
|
||||
</view>
|
||||
<view class="dp_con2">3. 疯子读书所有作品内容仅代表作者自己的立场和观点,与疯子读书无关,由作者本人承担一切法律责任。</view>
|
||||
</view> -->
|
||||
</view>
|
||||
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import $http from '@/config/requestConfig.js';
|
||||
|
||||
|
||||
export default {
|
||||
|
||||
data() {
|
||||
return {
|
||||
|
||||
yhxyText: {},
|
||||
yszcText: {},
|
||||
|
||||
};
|
||||
},
|
||||
//第一次加载
|
||||
onLoad(e) {
|
||||
|
||||
this.getSettlement()
|
||||
},
|
||||
//页面显示
|
||||
onShow() {
|
||||
|
||||
this.getSettlement()
|
||||
},
|
||||
//方法
|
||||
methods: {
|
||||
|
||||
// 获取协议内容
|
||||
getSettlement() {
|
||||
this.$http
|
||||
.post('sys/agreement/getPrivacyDetail')
|
||||
.then(res => {
|
||||
|
||||
this.yszcText = res.privacy
|
||||
this.yszcText.content = this.yszcText.content.replace(/<p>/g, '');
|
||||
this.yszcText.content = this.yszcText.content.replace(/<\/p>/g, '<br/>');
|
||||
console.log(this.yszcText.content)
|
||||
|
||||
}).catch((e) => {
|
||||
console.log(e, 'e')
|
||||
})
|
||||
this.$http
|
||||
.post('sys/agreement/getUserDetail')
|
||||
.then(res => {
|
||||
|
||||
this.yhxyText = res.user
|
||||
|
||||
}).catch((e) => {
|
||||
console.log(e, 'e')
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.dp_title {
|
||||
font-size: 36rpx;
|
||||
margin-bottom: 50rpx;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dp_content {
|
||||
max-height: 1000rpx;
|
||||
overflow-y: scroll;
|
||||
font-size: 28rpx;
|
||||
color: #555;
|
||||
line-height: 45rpx;
|
||||
|
||||
.dp_con1 {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.dp_con2 {
|
||||
font-size: 30rpx;
|
||||
margin-top: 10rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -15,13 +15,13 @@
|
||||
<image :src="productInfo.images" mode="aspectFill" class="imageradius bookinfoimage"></image>
|
||||
<view class="bookInfo-inner">
|
||||
<span class="title">{{productInfo.name}}</span>
|
||||
<span class="author">作者:{{productInfo.authorName}}</span>
|
||||
<span class="author" v-if="productInfo.authorName!=''">作者:{{productInfo.authorName}}</span>
|
||||
<!-- <view class="description">{{productInfo.bookdesc}}</view> -->
|
||||
|
||||
<view class="ting-du-mai">
|
||||
<view class="ting-du-mai-item" @click="toOtherPage(1,productInfo)">听书</view>
|
||||
<view class="ting-du-mai-item" @click="toOtherPage(2,productInfo)">读书打卡</view>
|
||||
<view class="ting-du-mai-item" @click="toOtherPage(3,productInfo)">立即购买</view>
|
||||
<view class="ting-du-mai-item" v-if="productInfo.canListen" @click="toOtherPage(1,productInfo)">听书</view>
|
||||
<view class="ting-du-mai-item" v-if="productInfo.clockIn == 1" @click="toOtherPage(2,productInfo)">读书打卡</view>
|
||||
<view class="ting-du-mai-item" v-if="productInfo.bookType == 0" @click="toOtherPage(3,productInfo)">立即购买</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
@@ -171,17 +171,17 @@ import { data } from 'jquery';
|
||||
status:3,
|
||||
shupingList:[],
|
||||
bfaid:null,
|
||||
commentsTabs: [{
|
||||
commentsTabs: [ {
|
||||
name: '书集',
|
||||
value: 3
|
||||
},{
|
||||
name: '最新',
|
||||
value: 1
|
||||
}, {
|
||||
name: '最热',
|
||||
value: 2
|
||||
}, {
|
||||
name: '书集',
|
||||
value: 3
|
||||
}],
|
||||
commentsListTab: 1,
|
||||
commentsListTab: 3,
|
||||
newestpage: 1,
|
||||
hotestpage: 1,
|
||||
booksetpage: 1,
|
||||
@@ -221,7 +221,7 @@ import { data } from 'jquery';
|
||||
this.windowWidth = uni.getSystemInfoSync().windowWidth;
|
||||
console.log(e,'onload')
|
||||
// this.bookid = e.bookid
|
||||
this.getBookList(1, false)
|
||||
this.getBookList(3, false)
|
||||
},
|
||||
computed:{
|
||||
...mapState(['userInfo']),
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<view style="font-weight: bold;margin-bottom: 30rpx;">
|
||||
{{bookMessage.name}}
|
||||
</view>
|
||||
<view style="color: #9b9b9b;font-size: 28rpx;margin:20rpx 0 0 0;max-width: 400rpx;line-height: 38rpx;">
|
||||
<view v-if="bookMessage.bookType==0" style="color: #9b9b9b;font-size: 28rpx;margin:20rpx 0 0 0;max-width: 400rpx;line-height: 38rpx;">
|
||||
<p @click="onAuCHJump(bookMessage.author.id,1)" style="margin-bottom: 20rpx;">
|
||||
{{bookMessage.author.authorName}} [著] >
|
||||
</p>
|
||||
@@ -18,7 +18,7 @@
|
||||
{{item.title}} >
|
||||
</p> -->
|
||||
</view>
|
||||
<view class="tags">
|
||||
<view class="tags" v-if="bookMessage.bookType==0">
|
||||
<uni-tag class="tag" @click="toMore()" :inverted="true" text="书评" type="success"></uni-tag>
|
||||
<uni-tag @click="gotoListen()" class="tag" v-if="bookMessage.canListen" :inverted="true" text="听书"
|
||||
type="primary"></uni-tag>
|
||||
@@ -28,7 +28,16 @@
|
||||
<uni-tag @click="goJiangShu()" v-if="bookMessage.teachIn == 1" class="tag" :inverted="true"
|
||||
text="讲书" type="error"></uni-tag>
|
||||
</view>
|
||||
<view class="buy" v-if="!bookMessage.isBuy">
|
||||
<!-- <view class="tags" v-if="bookMessage.bookType==1||bookMessage.bookType==2">
|
||||
<uni-tag class="tag" @click="onPageJump('../comments/comments?bookid=' + bookId)" :inverted="true" text="书评" type="success"></uni-tag>
|
||||
<uni-tag @click="onPageJump('../listen/listen?bookid='+ bookId)" class="tag" v-if="bookMessage.canListen" :inverted="true" text="听书"
|
||||
type="primary"></uni-tag>
|
||||
<uni-tag @click="onPageJump('../clock/clock?bookid='+ bookId)" v-if="bookMessage.clockIn == 1" class="tag" :inverted="true" text="打卡"
|
||||
type="warning"></uni-tag>
|
||||
<uni-tag @click="onPageJump('../talkBook/talkBookML?bookid='+ bookId)" v-if="bookMessage.teachIn == 1" class="tag" :inverted="true"
|
||||
text="讲书" type="error"></uni-tag>
|
||||
</view> -->
|
||||
<view class="buy" v-if="!bookMessage.isBuy&&bookMessage.bookType==0">
|
||||
<view class="btn" @click="goBuy">
|
||||
立即购买
|
||||
</view>
|
||||
@@ -193,14 +202,15 @@
|
||||
// .post('book/book/appinfo/' + this.bookId + '/' + this.userInfo.id)
|
||||
.post('book/book/getBookInfo', {
|
||||
'bookId': this.bookId,
|
||||
// 'bookId': this.bookId,
|
||||
'userId': this.userInfo.id
|
||||
})
|
||||
.then(res => {
|
||||
console.log('书详细', res.book)
|
||||
this.bookMessage = res.book
|
||||
this.bokMesDet.bookId = res.book.id
|
||||
this.bokMesDet.bookName = res.book.name,
|
||||
this.bokMesDet.images = res.book.images
|
||||
this.bokMesDet.bookName = res.book.name
|
||||
this.bokMesDet.images = res.book.images
|
||||
this.isBuy = res.book.isBuy
|
||||
this.freeChapterCount = res.book.freeChapterCount
|
||||
this.bokMesDet.userId = this.userInfo.id
|
||||
@@ -285,6 +295,7 @@
|
||||
'userId': this.userInfo.id,
|
||||
'bookId': this.bookId
|
||||
}
|
||||
|
||||
checkBookRight(data,res=>{
|
||||
console.log(res)
|
||||
if(res.success){
|
||||
@@ -408,9 +419,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<!-- <z-nav-bar title="我的图书"></z-nav-bar> -->
|
||||
<view class="home_bg">
|
||||
<view class="" style=" ">
|
||||
<view style="height: 80rpx"></view>
|
||||
<view class="icon_hua">
|
||||
<image src="../../static/icon/home_icon_3.png" mode="aspectFit" class="icon_hua_1"></image>
|
||||
</view>
|
||||
@@ -101,6 +102,18 @@
|
||||
<text>讲 书</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item " >
|
||||
<!-- <u-icon name="chat" color="#fcbd71" size="24"></u-icon> -->
|
||||
<view class="" v-if="item.relationId != null && item.relationId != 0" @click="goGuji(item)">
|
||||
<image src="../../static/icon/home6.png" mode="aspectFit"></image>
|
||||
</view>
|
||||
<view class="" v-else @click="noOp()">
|
||||
<image class="gray" src="../../static/icon/home6.png" mode="aspectFit"></image>
|
||||
</view>
|
||||
<view class="v1">
|
||||
<text>古 书</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -353,6 +366,12 @@
|
||||
url: '../talkBook/talkBookDetail?bookId='+ val.id
|
||||
})
|
||||
},
|
||||
// 跳转到古籍
|
||||
goGuji(val){
|
||||
uni.navigateTo({
|
||||
url: '../eBook/bookContent?Id='+ val.relationId
|
||||
})
|
||||
},
|
||||
// 跳转到打卡
|
||||
goDaKa(val){
|
||||
uni.navigateTo({
|
||||
@@ -392,7 +411,7 @@
|
||||
image{
|
||||
display: block; height: 108rpx;
|
||||
}
|
||||
.v1{margin-top: -30rpx;}
|
||||
.v1{margin-top: -10rpx;}
|
||||
}
|
||||
}
|
||||
.author{
|
||||
@@ -401,7 +420,7 @@
|
||||
.info{width:200rpx;
|
||||
image{width:100% ; height: 280rpx; border-radius: 20rpx;}
|
||||
}
|
||||
.icons{ margin-top: 10rpx;
|
||||
.icons{ margin-top: 10rpx;margin-left: -10rpx;
|
||||
text{font-size: 26rpx; margin-top: -10rpx; color: #999;}
|
||||
}
|
||||
}
|
||||
@@ -469,7 +488,7 @@
|
||||
}
|
||||
|
||||
.bookName {
|
||||
margin-top: 10rpx;
|
||||
margin-top: 30rpx;
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
// font-weight: bold;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!-- <z-nav-bar backState="2000" title="首页"></z-nav-bar> -->
|
||||
<view class="home_bg">
|
||||
<view class="" style=" ">
|
||||
|
||||
<view style="height: 60rpx"></view>
|
||||
<view class="icon_hua">
|
||||
<image src="../../static/icon/home_icon_1.png" mode="aspectFit" class="icon_hua_1"></image>
|
||||
</view>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<!--父组件-->
|
||||
|
||||
|
||||
<view class="container" style="padding-bottom: 10rpx;">
|
||||
<!-- <view class="mini"></view> -->
|
||||
<view>
|
||||
<z-nav-bar title="讲书目录"></z-nav-bar>
|
||||
<!-- 基本信息 -->
|
||||
<!-- 基本信息 -->
|
||||
<view class="book_neir">
|
||||
<view class="flexbox info">
|
||||
<view class="item">
|
||||
@@ -31,13 +31,20 @@
|
||||
{{item.title}} >
|
||||
</p>
|
||||
</view>
|
||||
<view class="tags">
|
||||
<view class="tags" v-if="bookInfo.bookType==0">
|
||||
<uni-tag class="tag" @click="toMore()" :inverted="true" text="书评"
|
||||
type="success"></uni-tag>
|
||||
<!-- 1:打卡,2不打卡 -->
|
||||
<uni-tag @click="gotoclock()" v-if="bookInfo.clockIn == 1" class="tag" :inverted="true"
|
||||
text="签到" type="warning"></uni-tag>
|
||||
</view>
|
||||
<view class="tags" v-if="bookInfo.bookType==1||bookInfo.bookType==2">
|
||||
<uni-tag class="tag" @click="onPageJump('../comments/comments?bookid=' + bookid)" :inverted="true" text="书评"
|
||||
type="success"></uni-tag>
|
||||
<!-- 1:打卡,2不打卡 -->
|
||||
<uni-tag @click="onPageJump('../clock/clock?bookid='+ bookid)" v-if="bookInfo.clockIn == 1" class="tag" :inverted="true"
|
||||
text="签到" type="warning"></uni-tag>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -49,11 +56,17 @@
|
||||
<view>
|
||||
<view @click="toDetail(item)" class="flexbox muluitem">
|
||||
<span>{{item.title}}</span>
|
||||
<view >
|
||||
<uni-tag v-if="item.voices != ''" class="tag" size="small" :inverted="true" text="音频"
|
||||
type="success" /></view>
|
||||
<view ><uni-tag v-if="item.content != ''" class="tag" size="small" :inverted="true" text="文字"
|
||||
type="primary" /></view>
|
||||
<view>
|
||||
<uni-tag v-if="item.voices != ''" class="tag" size="small" :inverted="true" text="音频"
|
||||
type="success" />
|
||||
<uni-tag v-if="item.images != ''" class="tag" size="small" :inverted="true" text="图片"
|
||||
type="error" />
|
||||
<uni-tag v-if="item.video != ''" class="tag" size="small" :inverted="true" text="视频"
|
||||
type="warning" />
|
||||
<uni-tag v-if="item.content != ''" class="tag" size="small" :inverted="true" text="文字"
|
||||
type="primary" />
|
||||
</view>
|
||||
|
||||
<!-- <image class="playingFig" src="/static/playingGif.gif" mode="aspectFill"></image> -->
|
||||
</view>
|
||||
</view>
|
||||
@@ -61,17 +74,18 @@
|
||||
<view style="width: 100%;">
|
||||
<view v-if="status==0" style="text-align: center;">
|
||||
<u-loading-icon style="display: inline-block;"></u-loading-icon>
|
||||
<font style='vertical-align: super;margin-left: 10px;font-size: 26rpx;color: #909399;'>努力加载中</font>
|
||||
<font style='vertical-align: super;margin-left: 10px;font-size: 26rpx;color: #909399;'>努力加载中
|
||||
</font>
|
||||
</view>
|
||||
<view v-if="status==1">
|
||||
<u-divider text="全部加载完成"></u-divider>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-divider v-else text="暂无讲书目录"></u-divider>
|
||||
<music-play :playData="playData"></music-play>
|
||||
<!-- 公共组件-每个页面必须引入 -->
|
||||
<public-module></public-module>
|
||||
<public-module></public-module>
|
||||
<!-- <z-navigation></z-navigation> -->
|
||||
</view>
|
||||
</view>
|
||||
@@ -98,19 +112,19 @@
|
||||
data() {
|
||||
return {
|
||||
isBuy: false, // true 已购买,false 未购买
|
||||
playData: {},
|
||||
playData: {},
|
||||
bookInfo: {
|
||||
author:{
|
||||
authorName:''
|
||||
author: {
|
||||
authorName: ''
|
||||
}
|
||||
}, // 书籍详情
|
||||
bookid: null, // 书籍id
|
||||
status:3,
|
||||
status: 3,
|
||||
freeChapterCount: 0, // 免费章节数
|
||||
libLIst: [], // 书籍目录
|
||||
videoList: [], //音频文件
|
||||
page:1,
|
||||
totalPage:0,
|
||||
page: 1,
|
||||
totalPage: 0,
|
||||
}
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
@@ -123,12 +137,12 @@
|
||||
},
|
||||
onReachBottom() {
|
||||
// console.log('到底了',this.page+1 , this.totalPage)
|
||||
|
||||
if(this.page+1 <= this.totalPage){
|
||||
|
||||
if (this.page + 1 <= this.totalPage) {
|
||||
this.page++
|
||||
this.status = 0
|
||||
this.getLibList()
|
||||
}else{
|
||||
} else {
|
||||
this.status = 1
|
||||
}
|
||||
},
|
||||
@@ -142,15 +156,15 @@
|
||||
// 隐藏原生的tabbar
|
||||
console.log(e, 'e')
|
||||
uni.hideTabBar();
|
||||
this.bookid = e.bookid
|
||||
},
|
||||
this.bookid = e.bookid
|
||||
},
|
||||
onShow() {
|
||||
// this.libLIst = []
|
||||
// this.page = 1
|
||||
// this.totalPage = 0
|
||||
this.getLibList()
|
||||
this.getBookInfo()
|
||||
|
||||
|
||||
},
|
||||
computed: {
|
||||
...mapState(['userInfo'])
|
||||
@@ -165,20 +179,20 @@
|
||||
'userId': this.userInfo.id,
|
||||
'bookId': this.bookid
|
||||
}
|
||||
checkBookRight(data,res=>{
|
||||
checkBookRight(data, res => {
|
||||
console.log(res)
|
||||
if(res.success){
|
||||
if (res.success) {
|
||||
uni.navigateTo({
|
||||
url: '../comments/comments?bookid=' + this.bookid,
|
||||
});
|
||||
}else{
|
||||
} else {
|
||||
uni.showToast({
|
||||
title:'购买本书后方可查看此内容!',
|
||||
icon:'none'
|
||||
title: '购买本书后方可查看此内容!',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
},
|
||||
// 去打卡
|
||||
gotoclock() {
|
||||
@@ -188,7 +202,7 @@
|
||||
},
|
||||
getBookInfo() {
|
||||
// 获取书本基本信息
|
||||
this.$http
|
||||
this.$http
|
||||
.post('book/book/getBookInfo', {
|
||||
'bookId': this.bookid,
|
||||
'userId': this.userInfo.id
|
||||
@@ -212,7 +226,7 @@
|
||||
toDetail(item) {
|
||||
console.log('点击了', item)
|
||||
uni.navigateTo({
|
||||
url: './talkBookDetail?teachId=' + item.teachId +"&bookId="+item.bookId
|
||||
url: './talkBookDetail?teachId=' + item.teachId + "&bookId=" + item.bookId
|
||||
});
|
||||
},
|
||||
|
||||
@@ -228,18 +242,18 @@
|
||||
.post('book/teach/getBookTeachItems', {
|
||||
'bookId': this.bookid,
|
||||
'limit': 20,
|
||||
'page': this.page
|
||||
'page': this.page
|
||||
})
|
||||
.then(res => {
|
||||
if (res.code == 0) {
|
||||
console.log( '章节目录',res)
|
||||
console.log('章节目录', res)
|
||||
if (res.page.records.length > 0) {
|
||||
this.libLIst = this.libLIst.concat(res.page.records)
|
||||
this.status = 3
|
||||
this.totalPage = res.page.pages
|
||||
if(this.totalPage == res.page.current){
|
||||
this.totalPage = res.page.pages
|
||||
if (this.totalPage == res.page.current) {
|
||||
this.status = 1
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.libLIst = []
|
||||
this.totalPage = 0
|
||||
@@ -250,18 +264,29 @@
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
|
||||
// 跳转
|
||||
onPageJump(url) {
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.muluitem{
|
||||
span{
|
||||
.muluitem {
|
||||
span {
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.playingFig {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
|
||||
@@ -15,58 +15,79 @@
|
||||
<!-- <view class="title" :class="{ active: type == 2000 }" @click="type = 2000">验证码登录/注册</view>
|
||||
<view class="title" :class="{ active: type == 1000 }" @click="type = 1000">密码登录</view> -->
|
||||
</view>
|
||||
<view class="flexbox" style=" margin-top: 20rpx;">
|
||||
<view class="input_tit" style="margin-top: 0; margin-right: 20rpx;">手机号</view>
|
||||
<view class="quhao">
|
||||
<uni-data-select class="myselect" placeholder="选择区号" v-model="quCode" :localdata="quCodeList" style="height: 30rpx !important;"
|
||||
@change="quChange"></uni-data-select>
|
||||
|
||||
<!-- 验证码登录 -->
|
||||
<view v-if="type == 2000">
|
||||
<view class="flexbox" style=" margin-top: 50rpx;">
|
||||
<view class="input_tit emaPho" style="margin-top: 0; margin-right: 20rpx;">
|
||||
<view @click="brand=3000" :class="{ active: brand == 3000 }">手机号</view>
|
||||
<span>/</span>
|
||||
<view @click="brand=4000" :class="{ active: brand == 4000 }">邮箱</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 带区号 -->
|
||||
<view class="flexbox " style="margin:36rpx 0; justify-content: space-between;">
|
||||
<view class="triangle borderBottom phoneNumberInput" style="width: 150rpx;">
|
||||
<input type="number" v-model="quCode" placeholder="区号" placeholder-class="grey" />
|
||||
|
||||
<!-- 带区号手机号 -->
|
||||
<view class="flexbox" v-if="brand == 3000" style="margin:36rpx 0; justify-content: space-between;">
|
||||
<!-- <view class="triangle borderBottom phoneNumberInput" style="width: 150rpx;">
|
||||
<input type="number" v-model="quCode" placeholder="区号" placeholder-class="grey" />
|
||||
|
||||
</view> -->
|
||||
<view class="quhao">
|
||||
<uni-data-select class="myselect" placeholder="请选择区号" v-model="quCode" :localdata="quCodeList"
|
||||
style="height: 30rpx !important;" @change="quChange"></uni-data-select>
|
||||
</view>
|
||||
<view class="triangle borderBottom phoneNumberInput"
|
||||
:clasfs="[type == 1000 ? 'left_triangle': 'right_triangle']">
|
||||
<input type="number" v-model="phone" @input="onInput" placeholder="请输入您的手机号"
|
||||
placeholder-class="grey" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="triangle borderBottom phoneNumberInput"
|
||||
|
||||
<!-- 不带区号 -->
|
||||
<!-- <view class="triangle borderBottom phoneNumberInput input_box"
|
||||
:clasfs="[type == 1000 ? 'left_triangle': 'right_triangle']">
|
||||
<input type="number" v-model="phone" @input="onInput" placeholder="请输入您的手机号"
|
||||
placeholder-class="grey" />
|
||||
<input type="number" v-model="phone" @input="onInput" placeholder="请输入您的手机号" placeholder-class="grey" />
|
||||
</view> -->
|
||||
|
||||
<!-- 邮箱 -->
|
||||
<view class="input_box" v-if="brand == 4000">
|
||||
<input v-model="email" placeholder="请输入您的邮箱" placeholder-class="grey" @input="onInput" />
|
||||
</view>
|
||||
<view class="input_tit">验证码</view>
|
||||
<view class="input_box">
|
||||
<input v-model="code" placeholder="请输入您的验证码" placeholder-class="grey" @input="onInput" maxlength="6"
|
||||
@confirm="onSubmit" />
|
||||
<button class="active" @click="onSetCode">{{ codeText }}</button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 不带区号 -->
|
||||
<!-- <view class="triangle borderBottom phoneNumberInput input_box"
|
||||
:clasfs="[type == 1000 ? 'left_triangle': 'right_triangle']">
|
||||
<input type="number" v-model="phone" @input="onInput" placeholder="请输入您的手机号" placeholder-class="grey" />
|
||||
</view> -->
|
||||
|
||||
<view class="input_tit" v-if="type == 1000">密码</view>
|
||||
<view class="input_box" v-if="type == 1000">
|
||||
<input class="input_item" v-model="password" @input="onInput" :password="!isSee" placeholder="请输入密码"
|
||||
placeholder-class="grey" @confirm="onSubmit" />
|
||||
<image v-if="isSee" src="../../static/icon/ic_logon_display.png" mode="aspectFit"
|
||||
@click="isSee = false">
|
||||
</image>
|
||||
<image v-else-if="!isSee" src="../../static/icon/ic_logon_hide.png" mode="aspectFit"
|
||||
@click="isSee = true">
|
||||
</image>
|
||||
<!-- 密码登录 -->
|
||||
<view v-if="type == 1000">
|
||||
<!-- 手机号/邮箱 -->
|
||||
<view class="input_tit" style=" margin-top: 80rpx;">手机号 / 邮箱</view>
|
||||
<view class="input_box">
|
||||
<input v-model="phoneEmail" placeholder="请输入您的手机号或者邮箱" placeholder-class="grey" @input="onInput" />
|
||||
</view>
|
||||
<view class="input_tit">密码</view>
|
||||
<view class="input_box">
|
||||
<input class="input_item" v-model="password" @input="onInput" :password="!isSee" placeholder="请输入密码"
|
||||
placeholder-class="grey" @confirm="onSubmit" />
|
||||
<image v-if="isSee" src="../../static/icon/ic_logon_display.png" mode="aspectFit"
|
||||
@click="isSee = false">
|
||||
</image>
|
||||
<image v-else-if="!isSee" src="../../static/icon/ic_logon_hide.png" mode="aspectFit"
|
||||
@click="isSee = true">
|
||||
</image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="input_tit" v-if="type == 2000">验证码</view>
|
||||
<view class="input_box" v-if="type == 2000">
|
||||
<input v-model="code" placeholder="请输入您的验证码" placeholder-class="grey" @input="onInput" maxlength="6"
|
||||
@confirm="onSubmit" />
|
||||
<button class="active" @click="onSetCode">{{ codeText }}</button>
|
||||
</view>
|
||||
<view class="protocol_box">
|
||||
<view class="select" :class="{active: agree}" @click="agree = !agree"></view>
|
||||
我已同意
|
||||
<!-- <text @click="plus.runtime.openURL('https://main.nuttyreading.com/agreement.html')">《用户协议》</text> -->
|
||||
<!-- <text @click="onPageJump('/pages/user/protocol')">《用户协议》</text> -->
|
||||
<span class="highlight" @click="showXieyi('user')">《用户协议》</span>
|
||||
<span class="highlight" @click="yhxyShow=true">《用户协议》</span>
|
||||
和
|
||||
<span class="highlight" @click="showXieyi('privacy')">《隐私协议》</span>
|
||||
<span class="highlight" @click="yszcShow=true">《隐私协议》</span>
|
||||
<!-- <text @click="onPageJump('/pages/user/protocol')">《隐私协议》</text>-->
|
||||
</view>
|
||||
<view class="btn_box">
|
||||
@@ -93,6 +114,11 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="youKeL">
|
||||
<view @click="onPageJump('/pages/user/visitor')">免登陆体验</view>
|
||||
</view>
|
||||
|
||||
|
||||
<z-popup v-model="HealthOpen" type="center" :hideOnBlur="false">
|
||||
<view class="popup_box">
|
||||
<view class="popup_title">
|
||||
@@ -138,14 +164,22 @@
|
||||
</view> -->
|
||||
<!-- #endif -->
|
||||
|
||||
<u-popup :show="xieyiShow" :round="10" @close="xieyiShow=false">
|
||||
<u-popup :show="yhxyShow" title='用户协议' :round="10" @close="yhxyShow=false">
|
||||
<view class="tanchu">
|
||||
<view class="dp_title">{{xieyi.title}}</view>
|
||||
<view style="max-height: 1000rpx;overflow-y: scroll;">
|
||||
<view v-html="xieyi.Content"></view>
|
||||
</view>
|
||||
<view class="dp_title" v-html="yhxyText.title"></view>
|
||||
<view class="dp_content" v-html="yhxyText.content"></view>
|
||||
<!-- <yhxyPage></yhxyPage> -->
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<u-popup :show="yszcShow" title='隐私政策' :round="10" @close="yszcShow=false">
|
||||
<view class="tanchu">
|
||||
<view class="dp_title" v-html="yszcText.title"></view>
|
||||
<view class="dp_content" v-html="yszcText.content"></view>
|
||||
<!-- <yszcPage></yszcPage> -->
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
@@ -154,9 +188,12 @@
|
||||
<script>
|
||||
import $http from '@/config/requestConfig.js';
|
||||
import md5 from '@/plugins/md5';
|
||||
// import yhxyPage from '@/pages/agreement/yhxyPage.vue';
|
||||
// import yszcPage from '@/pages/agreement/yszcPage.vue';
|
||||
|
||||
import localuserxieyi from '@/static/json/userAndyinsiP.json'
|
||||
import localyinsixieyi from '@/static/json/yinsiP.json'
|
||||
|
||||
// import localuserxieyi from '@/static/json/userAndyinsiP.json'
|
||||
// import localyinsixieyi from '@/static/json/yinsiP.json'
|
||||
var clear;
|
||||
import {
|
||||
mapState,
|
||||
@@ -164,14 +201,21 @@
|
||||
} from 'vuex';
|
||||
import socket from '@/config/socket';
|
||||
export default {
|
||||
// components: {
|
||||
// yhxyPage,
|
||||
// yszcPage
|
||||
// },
|
||||
data() {
|
||||
return {
|
||||
type: 2000,
|
||||
brand: 3000,
|
||||
isSee: false,
|
||||
code: '',
|
||||
// phone: '15022449475',
|
||||
// phone: '18047689535',
|
||||
phone: '',
|
||||
email: '',
|
||||
phoneEmail: '',
|
||||
password: '',
|
||||
//验证码
|
||||
codeText: '获取验证码',
|
||||
@@ -189,11 +233,10 @@
|
||||
health_phone: '',
|
||||
health_password: '',
|
||||
isSee_H: false,
|
||||
xieyiShow: false,
|
||||
xieyi: {
|
||||
title: '',
|
||||
Content: ''
|
||||
},
|
||||
yhxyShow: false,
|
||||
yszcShow: false,
|
||||
yhxyText: {},
|
||||
yszcText: {},
|
||||
quShow: false,
|
||||
quCodeList: [], // 国家区域码
|
||||
quCode: 86,
|
||||
@@ -215,6 +258,7 @@
|
||||
//页面显示
|
||||
onShow() {
|
||||
this.getCountyCode()
|
||||
this.getSettlement()
|
||||
},
|
||||
//方法
|
||||
methods: {
|
||||
@@ -236,7 +280,7 @@
|
||||
// this.quCodeList = res.baseAreas
|
||||
this.quCodeList = res.baseAreas.map(item => {
|
||||
let obj = {
|
||||
'text': item.title,
|
||||
'text': item.title + ' (+' + item.code + ')',
|
||||
'value': item.code,
|
||||
}
|
||||
return obj
|
||||
@@ -250,6 +294,35 @@
|
||||
console.log(e, 'e')
|
||||
});
|
||||
},
|
||||
// 获取协议内容
|
||||
getSettlement() {
|
||||
this.$http
|
||||
.post('sys/agreement/getPrivacyDetail')
|
||||
.then(res => {
|
||||
this.yszcText = res.privacy
|
||||
this.yszcText.content = this.yszcText.content.replace(/<h5>/g,
|
||||
'<view style="font-weight: bold;font-size: 32rpx;margin-top: 20rpx;margin-bottom: 20rpx;">'
|
||||
);
|
||||
this.yszcText.content = this.yszcText.content.replace(/<\/h5>/g, '</view>');
|
||||
|
||||
}).catch((e) => {
|
||||
console.log(e, 'e')
|
||||
})
|
||||
this.$http
|
||||
.post('sys/agreement/getUserDetail')
|
||||
.then(res => {
|
||||
this.yhxyText = res.user
|
||||
this.yhxyText.content = this.yhxyText.content.replace(/<h5>/g,
|
||||
'<view style="font-weight: bold;font-size: 32rpx;margin-top: 20rpx;margin-bottom: 20rpx;">'
|
||||
);
|
||||
this.yhxyText.content = this.yhxyText.content.replace(/<\/h5>/g, '</view>');
|
||||
}).catch((e) => {
|
||||
console.log(e, 'e')
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
|
||||
quChange(e) {
|
||||
console.log(e, 'e')
|
||||
},
|
||||
@@ -260,17 +333,8 @@
|
||||
url: "/pages/home/shop/goodsDetail"
|
||||
})
|
||||
},
|
||||
// 显示协议
|
||||
showXieyi(str) {
|
||||
if (str == 'user') {
|
||||
this.xieyi = localuserxieyi
|
||||
} else {
|
||||
this.xieyi = localyinsixieyi
|
||||
}
|
||||
//console.log(localuserxieyi)
|
||||
this.xieyiShow = true
|
||||
|
||||
},
|
||||
|
||||
onPageJump(url) {
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
@@ -316,23 +380,7 @@
|
||||
if (this.readonly) {
|
||||
return;
|
||||
}
|
||||
if (!this.phone) {
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.quCode == null || this.quCode == 86) { // 如果没选择国家code,默认是中国大陆
|
||||
if (!this.$base.phoneRegular.test(this.phone)) {
|
||||
uni.showToast({
|
||||
title: '手机格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
console.log(this.quCode, '选择的区段')
|
||||
}
|
||||
|
||||
if (!this.agree) {
|
||||
uni.showToast({
|
||||
title: '请先同意《用户协议》和《隐私协议》',
|
||||
@@ -341,19 +389,66 @@
|
||||
return;
|
||||
}
|
||||
|
||||
this.$http
|
||||
.get('book/user/sms/sendcode', {
|
||||
phone: this.phone,
|
||||
areaCode: this.quCode,
|
||||
type: 2000
|
||||
})
|
||||
.then(res => {
|
||||
if (this.brand == 3000) {
|
||||
if (!this.phone) {
|
||||
uni.showToast({
|
||||
title: '验证码发送成功',
|
||||
title: '请输入手机号',
|
||||
icon: 'none'
|
||||
});
|
||||
this.getCodeState();
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.quCode == null || this.quCode == 86) { // 如果没选择国家code,默认是中国大陆
|
||||
if (!this.$base.phoneRegular.test(this.phone)) {
|
||||
uni.showToast({
|
||||
title: '手机格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
console.log(this.quCode, '选择的区段')
|
||||
}
|
||||
this.$http
|
||||
.get('book/user/sms/sendcode', {
|
||||
phone: this.phone,
|
||||
areaCode: this.quCode,
|
||||
type: 2000
|
||||
})
|
||||
.then(res => {
|
||||
uni.showToast({
|
||||
title: '验证码发送成功',
|
||||
icon: 'none'
|
||||
});
|
||||
this.getCodeState();
|
||||
});
|
||||
} else {
|
||||
if (!this.email) {
|
||||
uni.showToast({
|
||||
title: '请输入邮箱',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.$base.mailRegular.test(this.email)) {
|
||||
uni.showToast({
|
||||
title: '邮箱格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.$http
|
||||
.get('book/user/getMailCaptcha', {
|
||||
email: this.email
|
||||
})
|
||||
.then(res => {
|
||||
uni.showToast({
|
||||
title: '验证码发送成功',
|
||||
icon: 'none'
|
||||
});
|
||||
this.getCodeState();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
|
||||
// 手机密码登录
|
||||
@@ -365,24 +460,44 @@
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.phone) {
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.quCode == null || this.quCode == 86) {
|
||||
if (!this.$base.phoneRegular.test(this.phone)) {
|
||||
uni.showToast({
|
||||
title: '手机格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let httpData = {};
|
||||
if (this.type == 2000) {
|
||||
if (this.brand == 3000) {
|
||||
if (!this.phone) {
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.quCode == null || this.quCode == 86) {
|
||||
if (!this.$base.phoneRegular.test(this.phone)) {
|
||||
uni.showToast({
|
||||
title: '手机格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
httpData.tel = this.phone;
|
||||
} else {
|
||||
if (!this.email) {
|
||||
uni.showToast({
|
||||
title: '请输入邮箱',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.$base.mailRegular.test(this.email)) {
|
||||
uni.showToast({
|
||||
title: '邮箱格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
httpData.tel = this.email;
|
||||
}
|
||||
if (!this.code) {
|
||||
uni.showToast({
|
||||
title: '请输入验证码',
|
||||
@@ -391,7 +506,7 @@
|
||||
return;
|
||||
}
|
||||
httpData.code = this.code;
|
||||
httpData.tel = this.phone;
|
||||
|
||||
this.$http
|
||||
.get('book/user/registerOrLogin', httpData)
|
||||
.then(res => {
|
||||
@@ -409,6 +524,13 @@
|
||||
}, 1000);
|
||||
});
|
||||
} else {
|
||||
if (!this.phoneEmail) {
|
||||
uni.showToast({
|
||||
title: '请输入手机号或邮箱',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.password) {
|
||||
uni.showToast({
|
||||
title: '请输入密码',
|
||||
@@ -418,7 +540,7 @@
|
||||
}
|
||||
// httpData.password = md5(this.password);
|
||||
httpData.password = this.password;
|
||||
httpData.phone = this.phone;
|
||||
httpData.phone = this.phoneEmail;
|
||||
this.$http
|
||||
.post('book/user/login', httpData)
|
||||
.then(res => {
|
||||
@@ -670,7 +792,7 @@
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import '@/style/mixin.scss';
|
||||
.myselect{height: 50rpx !important;}
|
||||
|
||||
.phoneNumberInput {
|
||||
width: calc(100% - 160rpx);
|
||||
// width: 100%;
|
||||
@@ -692,9 +814,28 @@
|
||||
|
||||
.quhao {
|
||||
height: 50rpx;
|
||||
width: 180rpx;
|
||||
width: 290rpx;
|
||||
margin: 12rpx 15rpx 0 0;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
.myselect {
|
||||
height: 50rpx !important;
|
||||
|
||||
/deep/.uni-select {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/deep/.uni-select__selector-item {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.highlight {
|
||||
color: $themeColor;
|
||||
}
|
||||
@@ -704,13 +845,6 @@
|
||||
position: relative;
|
||||
|
||||
|
||||
.dp_title {
|
||||
font-size: 32rpx;
|
||||
margin-bottom: 50rpx;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -817,6 +951,28 @@
|
||||
margin-top: 20rpx;
|
||||
font-size: 34rpx;
|
||||
font-weight: bold;
|
||||
color: #54a966;
|
||||
}
|
||||
|
||||
.emaPho {}
|
||||
|
||||
.emaPho>view {
|
||||
display: inline-block;
|
||||
padding: 10rpx 0;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.emaPho>view.active {
|
||||
color: #54a966;
|
||||
padding: 10rpx 10rpx;
|
||||
border-bottom: 2px solid #54a966;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.emaPho>span {
|
||||
display: inline-block;
|
||||
margin: 0 30rpx;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.input_box {
|
||||
@@ -1019,9 +1175,61 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.dp_title {
|
||||
font-size: 36rpx;
|
||||
margin-bottom: 50rpx;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dp_content {
|
||||
max-height: 1000rpx;
|
||||
overflow-y: scroll;
|
||||
font-size: 28rpx;
|
||||
color: #555;
|
||||
line-height: 45rpx;
|
||||
|
||||
.dp_con1 {
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
// .dp_con2 {
|
||||
// font-size: 30rpx;
|
||||
// margin-top: 10rpx;
|
||||
// margin-bottom: 10rpx;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
.qie_huan {
|
||||
font-size: 26rpx;
|
||||
margin: 20rpx 0 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.comTy {
|
||||
font-size: 28rpx;
|
||||
line-height: 46rpx;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.youKeL {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin: 30rpx 0 0 0;
|
||||
font-size: 26rpx;
|
||||
color: #54a966;
|
||||
|
||||
view {
|
||||
font-weight: bold;
|
||||
border: 1px solid #54a966;
|
||||
border-radius: 10rpx;
|
||||
padding: 5rpx 15rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -5,33 +5,92 @@
|
||||
<z-nav-bar title="个人资料"></z-nav-bar>
|
||||
<view class="tabulate">
|
||||
<view class="per_list">
|
||||
<text class="biaoti">账号</text>
|
||||
<text class="neirong">{{userMes.tel}}</text>
|
||||
<text class="biaoti">手机号</text>
|
||||
<text class="neirong">{{userMsage.tel}}</text>
|
||||
<text class="marPer" v-if="userMsage.tel==''" @click="phoneShow = true;OpenClear()"
|
||||
style="background-color: #ed901d;">点击绑定</text>
|
||||
</view>
|
||||
<view class="per_list">
|
||||
<text class="biaoti">邮箱</text>
|
||||
<text class="neirong">{{userMsage.email}}</text>
|
||||
<text class="marPer" v-if="userMsage.email!=''" @click="emailShow = true;OpenClear()"
|
||||
style="background-color: #ed901d;">点击绑定</text>
|
||||
</view>
|
||||
<view class="per_list per_list_arrow" @click="avatarShow = true">
|
||||
<text class="biaoti" style="margin-top: 40rpx;">头像</text>
|
||||
<text class="neirong" style="margin-top: 0;">
|
||||
<image :src="userMes.avatar" class="per_mes_img"></image>
|
||||
<image :src="userMsage.avatar" class="per_mes_img"></image>
|
||||
</text>
|
||||
</view>
|
||||
<view class="per_list per_list_arrow" @click="nicknameShow = true">
|
||||
<text class="biaoti">昵称</text>
|
||||
<text class="neirong">{{userMes.nickname}}</text>
|
||||
<text class="neirong">{{userMsage.nickname}}</text>
|
||||
</view>
|
||||
<view class="per_list per_list_arrow" @click="passwordShow = true">
|
||||
<text class="biaoti">修改密码</text>
|
||||
<text class="biaoti">密码</text>
|
||||
<text v-if="userMsage.YNpass!=''" class="neirong">点击修改</text>
|
||||
<text class="marPer" v-if="userMsage.YNpass!=''"
|
||||
style="background-color: #92c78c;margin-right: 40rpx;">已设定</text>
|
||||
<text v-if="userMsage.YNpass==''" class="neirong">去设置</text>
|
||||
<text class="marPer" v-if="userMsage.YNpass==''"
|
||||
style="background-color: #9d9d9d;margin-right: 40rpx;">未设定</text>
|
||||
|
||||
</view>
|
||||
<view class="per_list per_list_arrow" @click="ageShow = true">
|
||||
<text class="biaoti">年龄</text>
|
||||
<text class="neirong">{{userMes.age}}</text>
|
||||
<text class="neirong">{{userMsage.age}}</text>
|
||||
</view>
|
||||
<view class="per_list per_list_arrow" @click="sexShow = true">
|
||||
<text class="biaoti">性别</text>
|
||||
<text class="neirong" v-if="userMes.sex==1">男</text>
|
||||
<text class="neirong" v-if="userMes.sex==0">女</text>
|
||||
<text class="neirong" v-if="userMsage.sex==1">男</text>
|
||||
<text class="neirong" v-if="userMsage.sex==0">女</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 手机 -->
|
||||
<u-popup :show="phoneShow" :round="10" @close="phoneShow=false;">
|
||||
<view class="tanchu">
|
||||
<view class="dp_title">请输入手机号</view>
|
||||
<view style="display: flex;">
|
||||
<view class="quhao">
|
||||
<uni-data-select class="quhaoSel" placeholder="请选择区号" v-model="userMes.quCode"
|
||||
:localdata="quCodeList"></uni-data-select>
|
||||
</view> <u--input v-model="userMes.phone" placeholder="请输入手机号" border="surround" clearable>
|
||||
</u--input>
|
||||
|
||||
</view>
|
||||
<view style="display: flex;">
|
||||
<u--input v-model="userMes.phonecode" type="number" placeholder="请输入验证码" border="surround" clearable
|
||||
style="margin-top: 20rpx;">
|
||||
</u--input>
|
||||
<button class="emPHCode" @click="onSetCode('phone')">{{ PhoneEmailNote }}</button>
|
||||
</view>
|
||||
<u-button color="linear-gradient(to right, #72d386, #317e42)" text="确定" @click="chosePhone()"
|
||||
style="margin-top: 50rpx;"></u-button>
|
||||
<view @click="phoneShow=false" class="dp_canBtn">
|
||||
取消</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<!-- 邮箱 -->
|
||||
<u-popup :show="emailShow" :round="10" @close="emailShow=false;PhoneEmailNote = '获取验证码'">
|
||||
<view class="tanchu">
|
||||
<view class="dp_title">请输入邮箱</view>
|
||||
<u--input v-model="userMes.email" placeholder="请输入邮箱" border="surround" clearable>
|
||||
</u--input>
|
||||
<view style="display: flex;">
|
||||
<u--input v-model="userMes.emailcode" type="number" placeholder="请输入验证码" border="surround" clearable
|
||||
style="margin-top: 20rpx;">
|
||||
</u--input>
|
||||
<button class="emPHCode" @click="onSetCode('email')">{{ PhoneEmailNote }}</button>
|
||||
</view>
|
||||
<u-button color="linear-gradient(to right, #72d386, #317e42)" text="确定" @click="choseEmail()"
|
||||
style="margin-top: 50rpx;"></u-button>
|
||||
<view @click="emailShow=false" class="dp_canBtn">
|
||||
取消</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<!-- 头像 -->
|
||||
<u-popup :show="avatarShow" :round="10" @close="avatarShow=false">
|
||||
<view class="tanchu">
|
||||
@@ -91,15 +150,15 @@
|
||||
<u-popup :show="passwordShow" :round="10" @close="cancelPass">
|
||||
<view class="tanchu">
|
||||
<view class="dp_title">请修改密码</view>
|
||||
<u--input maxlength="8" v-model="userMes.password" placeholder="请输入新密码" :password="true" border="surround" clearable
|
||||
@input="inputMethod(userMes.password)">
|
||||
<u--input maxlength="8" v-model="userMiMa.password" placeholder="请输入新密码" :password="true"
|
||||
border="surround" clearable @input="inputMethod(userMiMa.password)">
|
||||
</u--input>
|
||||
<view class="" style="font-size: 28rpx; color: #999;">
|
||||
<p v-if="note != ''">{{note}}</p>
|
||||
<p v-html="str2" style="margin-top: 10rpx;"></p>
|
||||
</view>
|
||||
<u--input maxlength="8" v-model="userMes.Repassword" placeholder="请再确认密码" :password="true" border="surround" clearable
|
||||
style="margin-top: 20rpx;"></u--input>
|
||||
<p v-if="passNote != ''">{{passNote}}</p>
|
||||
<p v-html="passStr" style="margin-top: 10rpx;"></p>
|
||||
</view>
|
||||
<u--input maxlength="8" v-model="userMiMa.Repassword" placeholder="请再确认密码" :password="true"
|
||||
border="surround" clearable style="margin-top: 20rpx;"></u--input>
|
||||
<u-button color="linear-gradient(to right, #72d386, #317e42)" text="确定" @click="chosePassword()"
|
||||
style="margin-top: 50rpx;"></u-button>
|
||||
<view @click="cancelPass" class="dp_canBtn">取消</view>
|
||||
@@ -115,6 +174,7 @@
|
||||
<script>
|
||||
import musicPlay from '@/components/music.vue'
|
||||
import $http from '@/config/requestConfig.js';
|
||||
var clear;
|
||||
import {
|
||||
mapState
|
||||
} from 'vuex';
|
||||
@@ -131,21 +191,45 @@
|
||||
return {
|
||||
playData: {},
|
||||
userMes: {
|
||||
quCode: '',
|
||||
phone: '',
|
||||
email: '',
|
||||
id: '',
|
||||
age: '',
|
||||
sex: '',
|
||||
nickname: '',
|
||||
tel: '',
|
||||
password: '',
|
||||
Repassword: '',
|
||||
oldName: '', // 老的用户名
|
||||
},
|
||||
userMsage: {
|
||||
quCode: '',
|
||||
phonecode: '',
|
||||
phone: '',
|
||||
emailcode: '',
|
||||
email: '',
|
||||
id: '',
|
||||
age: '',
|
||||
sex: '',
|
||||
nickname: '',
|
||||
tel: '',
|
||||
YNpass: '',
|
||||
oldName: '', // 老的用户名
|
||||
},
|
||||
userMiMa: {
|
||||
id: '',
|
||||
password: '',
|
||||
Repassword: '',
|
||||
},
|
||||
readonly: false,
|
||||
phoneShow: false,
|
||||
emailShow: false,
|
||||
avatarShow: false,
|
||||
nicknameShow: false,
|
||||
ageShow: false,
|
||||
sexShow: false,
|
||||
passwordShow: false,
|
||||
fileAvatar: [],
|
||||
quCodeList: [], // 国家区域码
|
||||
sexList: [{
|
||||
title: '男',
|
||||
id: 1,
|
||||
@@ -155,9 +239,10 @@
|
||||
id: 0,
|
||||
}
|
||||
],
|
||||
note: '',
|
||||
str2: '',
|
||||
passwordOk:false, // 密码是否满足规则
|
||||
PhoneEmailNote: '获取验证码',
|
||||
passNote: '',
|
||||
passStr: '',
|
||||
passwordOk: false, // 密码是否满足规则
|
||||
};
|
||||
},
|
||||
//第一次加载
|
||||
@@ -173,6 +258,7 @@
|
||||
// 隐藏原生的tabbar
|
||||
uni.hideTabBar();
|
||||
this.getData();
|
||||
this.getCountyCode()
|
||||
},
|
||||
components: {
|
||||
musicPlay
|
||||
@@ -180,8 +266,37 @@
|
||||
//方法
|
||||
methods: {
|
||||
// 获取
|
||||
getCountyCode() {
|
||||
let that = this
|
||||
// 获取国家区域编码
|
||||
$http.request({
|
||||
url: "book/baseArea/getAllBaseArea",
|
||||
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
||||
data: {},
|
||||
header: { //默认 无 说明:请求头
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
})
|
||||
.then(res => {
|
||||
// console.log(res,'区域码')
|
||||
if (res.code == 0 && res.baseAreas.length > 0) {
|
||||
that.quCodeList = res.baseAreas.map(item => {
|
||||
let obj = {
|
||||
'text': item.title + ' (+' + item.code + ')',
|
||||
'value': item.code,
|
||||
}
|
||||
return obj
|
||||
})
|
||||
} else {
|
||||
that.quCodeList = []
|
||||
}
|
||||
}).catch(e => {
|
||||
console.log(e, 'e')
|
||||
});
|
||||
},
|
||||
getData() {
|
||||
let that = this
|
||||
|
||||
// 获取个人信息
|
||||
if (this.userInfo.id != undefined) {
|
||||
this.$http
|
||||
@@ -194,173 +309,371 @@
|
||||
that.userMes.tel = res.user.tel
|
||||
that.userMes.avatar = res.user.avatar
|
||||
that.userMes.oldName = that.userMes.nickname
|
||||
that.userMes.id = res.user.id
|
||||
|
||||
that.userMsage.age = res.user.age
|
||||
that.userMsage.email = res.user.email
|
||||
that.userMsage.sex = res.user.sex
|
||||
that.userMsage.nickname = res.user.nickname
|
||||
that.userMsage.tel = res.user.tel
|
||||
that.userMsage.avatar = res.user.avatar
|
||||
that.userMsage.YNpass = res.user.password
|
||||
that.userMiMa.id = res.user.id
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
},
|
||||
cancelPass(){
|
||||
this.passwordShow = false,
|
||||
this.userMes.password = '',
|
||||
this.userMes.Repassword = ''
|
||||
this.note = '',
|
||||
this.str2 = ''
|
||||
cancelPass() {
|
||||
this.passwordShow = false
|
||||
this.userMiMa.password = ''
|
||||
this.userMiMa.Repassword = ''
|
||||
this.passNote = ''
|
||||
this.passStr = ''
|
||||
},
|
||||
// 密码验证
|
||||
inputMethod(value) {
|
||||
this.passwordOk = false
|
||||
// console.log('输入的值为:', value)
|
||||
// console.log('输入的值为:', value)
|
||||
if (strongRegex.test(value)) {
|
||||
//console.log('强密码-----',value)
|
||||
this.str2 = "<span style='color:#18bc37'>密码强度很不错哦!</span>"
|
||||
// this.note = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.note = ''
|
||||
this.passStr = "<span style='color:#18bc37'>密码强度很不错哦!</span>"
|
||||
// this.passNote = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.passNote = ''
|
||||
this.passwordOk = true
|
||||
} else if (mediumRegex.test(value)) {
|
||||
//console.log('中等密码-----',value)
|
||||
this.note = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.str2 = "<span style='color:#2979ff'>密码强度中等!</span>"
|
||||
this.passNote = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.passStr = "<span style='color:#2979ff'>密码强度中等!</span>"
|
||||
this.passwordOk = true
|
||||
} else if (enoughRegex.test(value)) {
|
||||
//console.log('弱密码-----',value)
|
||||
this.str2 = "<span style='color:#f3a73f'>密码强度太弱!</span>"
|
||||
this.note = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.passStr = "<span style='color:#f3a73f'>密码强度太弱!</span>"
|
||||
this.passNote = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
} else {
|
||||
this.passwordOk = false
|
||||
this.note = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.str2 = ""
|
||||
this.passNote = '请至少使用大小写字母、数字、符号两种类型组合的密码,长度为8位。'
|
||||
this.passStr = ""
|
||||
//console.log('密码-----',value)
|
||||
}
|
||||
},
|
||||
// 头像
|
||||
choseAvatar(e) {
|
||||
let that = this
|
||||
if (that.fileAvatar.length == 0) {
|
||||
uni.showToast({
|
||||
title: "请选择图片",
|
||||
icon: 'none'
|
||||
});
|
||||
return
|
||||
}
|
||||
that.userMes.avatar = that.fileAvatar[0].url
|
||||
that.choseData()
|
||||
that.avatarShow = false
|
||||
that.fileAvatar.splice(0, 1)
|
||||
},
|
||||
// 年龄
|
||||
choseAge(e) {
|
||||
let that = this
|
||||
if (that.userMes.age <= 0) {
|
||||
uni.showToast({
|
||||
title: "年龄不能小于0",
|
||||
icon: 'none'
|
||||
});
|
||||
return
|
||||
}
|
||||
that.choseData()
|
||||
that.ageShow = false
|
||||
},
|
||||
|
||||
// 昵称
|
||||
choseNickname(e) {
|
||||
let that = this
|
||||
if (e && e != '') {
|
||||
|
||||
that.choseData()
|
||||
that.nicknameShow = false
|
||||
} else {
|
||||
that.userMes.nickname = that.userMes.oldName
|
||||
console.log(that.userMes.nickname)
|
||||
uni.showToast({
|
||||
title: '昵称不可为空',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 性别
|
||||
choseSex(e) {
|
||||
let that = this
|
||||
that.userMes.sex = e
|
||||
that.choseData()
|
||||
that.sexShow = false
|
||||
},
|
||||
|
||||
// 修改密码
|
||||
chosePassword() {
|
||||
if(!this.passwordOk){
|
||||
console.log('不满足密码格式',this.note)
|
||||
uni.showToast({
|
||||
title:this.note,
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
let that = this
|
||||
|
||||
if (that.userMes.Repassword == '' || that.userMes.password == '') {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "请输入密码!"
|
||||
});
|
||||
return
|
||||
}
|
||||
if (that.userMes.Repassword != that.userMes.password) {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "两次密码输入不一致!"
|
||||
});
|
||||
return
|
||||
}
|
||||
|
||||
that.choseData()
|
||||
that.passwordShow = false
|
||||
},
|
||||
|
||||
// 修改个人资料
|
||||
choseData() {
|
||||
let that = this
|
||||
$http.request({
|
||||
url: "book/user/update",
|
||||
method: "POST",
|
||||
data: that.userMes,
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
}).then(function(res) {
|
||||
if (res.code == 0) {
|
||||
uni.showToast({
|
||||
title: "修改成功"
|
||||
});
|
||||
}
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
// 头像上传
|
||||
afterRead(e) {
|
||||
let that = this
|
||||
uni.uploadFile({
|
||||
url: this.$baseUrl + 'oss/fileoss',
|
||||
filePath: e.file[0].url,
|
||||
name: 'file',
|
||||
formData: {},
|
||||
success: (res) => {
|
||||
that.fileAvatar.push({
|
||||
url: JSON.parse(res.data).url
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 删除图片
|
||||
deletePic() {
|
||||
let that = this
|
||||
that.fileAvatar.splice(0, 1)
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
// 清除验证码
|
||||
OpenClear() {
|
||||
clearInterval(clear)
|
||||
this.PhoneEmailNote = '获取验证码';
|
||||
this.readonly = false;
|
||||
},
|
||||
|
||||
// 获取验证码
|
||||
emPHCode() {
|
||||
clear && clearInterval(clear);
|
||||
this.readonly = true
|
||||
this.PhoneEmailNote = '60S';
|
||||
var s = 60;
|
||||
clear = setInterval(() => {
|
||||
s--;
|
||||
this.PhoneEmailNote = s + 'S';
|
||||
if (s <= 0) {
|
||||
clearInterval(clear);
|
||||
this.PhoneEmailNote = '获取验证码';
|
||||
this.readonly = false;
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
|
||||
|
||||
// 发送验证码
|
||||
onSetCode(e) {
|
||||
if (this.readonly) {
|
||||
return;
|
||||
}
|
||||
if (e == 'phone') {
|
||||
if (!this.userMes.phone) {
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.userMes.quCode == null || this.userMes.quCode == 86) {
|
||||
if (!this.$base.phoneRegular.test(this.userMes.phone)) {
|
||||
uni.showToast({
|
||||
title: '手机格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.$http
|
||||
.get('book/user/sms/sendcode', {
|
||||
phone: this.userMes.phone,
|
||||
areaCode: this.userMes.quCode,
|
||||
type: 2000
|
||||
})
|
||||
.then(res => {
|
||||
uni.showToast({
|
||||
title: '验证码发送成功',
|
||||
icon: 'none'
|
||||
});
|
||||
this.emPHCode();
|
||||
});
|
||||
}
|
||||
if (e == 'email') {
|
||||
if (!this.userMes.email) {
|
||||
uni.showToast({
|
||||
title: '请输入邮箱',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.$base.mailRegular.test(this.userMes.email)) {
|
||||
uni.showToast({
|
||||
title: '邮箱格式不正确',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.$http
|
||||
.get('book/user/getMailCaptcha', {
|
||||
email: this.userMes.email
|
||||
})
|
||||
.then(res => {
|
||||
uni.showToast({
|
||||
title: '验证码发送成功',
|
||||
icon: 'none'
|
||||
});
|
||||
this.emPHCode();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 手机
|
||||
chosePhone(e) {
|
||||
this.userMes.code = this.userMes.phonecode
|
||||
if (this.userMes.email == '') {
|
||||
uni.showToast({
|
||||
title: '请输入手机号',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.userMes.code == '' || this.userMes.code == null) {
|
||||
uni.showToast({
|
||||
title: '请输入验证码',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
$http.request({
|
||||
url: "book/user/updateUserTel",
|
||||
method: "POST",
|
||||
data: this.userMes,
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
}).then(function(res) {
|
||||
if (res.code == 0) {
|
||||
this.getData();
|
||||
this.phoneShow = false
|
||||
uni.showToast({
|
||||
title: "绑定手机号成功"
|
||||
});
|
||||
}
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
// 邮箱
|
||||
choseEmail(e) {
|
||||
this.userMes.code = this.userMes.emailcode
|
||||
if (this.userMes.email == '') {
|
||||
uni.showToast({
|
||||
title: '请输入邮箱',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.userMes.code == '' || this.userMes.code == null) {
|
||||
uni.showToast({
|
||||
title: '请输入验证码',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
$http.request({
|
||||
url: "book/user/updateUserEmail",
|
||||
method: "POST",
|
||||
data: this.userMes,
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
}).then(function(res) {
|
||||
if (res.code == 0) {
|
||||
this.getData();
|
||||
this.emailShow = false
|
||||
uni.showToast({
|
||||
title: "绑定邮箱成功"
|
||||
});
|
||||
}
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
|
||||
// 头像
|
||||
choseAvatar(e) {
|
||||
let that = this
|
||||
if (that.fileAvatar.length == 0) {
|
||||
uni.showToast({
|
||||
title: "请选择图片",
|
||||
icon: 'none'
|
||||
});
|
||||
return
|
||||
}
|
||||
that.userMes.avatar = that.fileAvatar[0].url
|
||||
that.choseData()
|
||||
that.avatarShow = false
|
||||
that.fileAvatar.splice(0, 1)
|
||||
},
|
||||
// 年龄
|
||||
choseAge(e) {
|
||||
let that = this
|
||||
if (that.userMes.age <= 0) {
|
||||
uni.showToast({
|
||||
title: "年龄不能小于0",
|
||||
icon: 'none'
|
||||
});
|
||||
return
|
||||
}
|
||||
that.choseData()
|
||||
that.ageShow = false
|
||||
},
|
||||
|
||||
// 昵称
|
||||
choseNickname(e) {
|
||||
let that = this
|
||||
if (e && e != '') {
|
||||
that.choseData()
|
||||
that.nicknameShow = false
|
||||
} else {
|
||||
that.userMes.nickname = that.userMes.oldName
|
||||
console.log(that.userMes.nickname)
|
||||
uni.showToast({
|
||||
title: '昵称不可为空',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 性别
|
||||
choseSex(e) {
|
||||
let that = this
|
||||
that.userMes.sex = e
|
||||
that.choseData()
|
||||
that.sexShow = false
|
||||
},
|
||||
|
||||
// 修改密码
|
||||
chosePassword() {
|
||||
if (!this.passwordOk) {
|
||||
console.log('不满足密码格式', this.passNote)
|
||||
uni.showToast({
|
||||
title: this.passNote,
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
let that = this
|
||||
|
||||
if (that.userMiMa.Repassword == '' || that.userMiMa.password == '') {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "请输入密码!"
|
||||
});
|
||||
return
|
||||
}
|
||||
if (that.userMiMa.Repassword != that.userMiMa.password) {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "两次密码输入不一致!"
|
||||
});
|
||||
return
|
||||
}
|
||||
|
||||
$http.request({
|
||||
url: "book/user/updateUserPassword",
|
||||
method: "POST",
|
||||
data: that.userMiMa,
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
}).then(function(res) {
|
||||
if (res.code == 0) {
|
||||
uni.showToast({
|
||||
title: "修改成功"
|
||||
});
|
||||
that.passwordShow = false
|
||||
}
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
// 修改个人资料
|
||||
choseData() {
|
||||
let that = this
|
||||
$http.request({
|
||||
url: "book/user/update",
|
||||
method: "POST",
|
||||
data: that.userMes,
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
}).then(function(res) {
|
||||
if (res.code == 0) {
|
||||
that.getData();
|
||||
// that.$forceUpdate()
|
||||
uni.showToast({
|
||||
title: "修改成功"
|
||||
});
|
||||
}
|
||||
}).catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
// 头像上传
|
||||
afterRead(e) {
|
||||
let that = this
|
||||
uni.uploadFile({
|
||||
url: this.$baseUrl + 'oss/fileoss',
|
||||
filePath: e.file[0].url,
|
||||
name: 'file',
|
||||
formData: {},
|
||||
success: (res) => {
|
||||
that.fileAvatar.push({
|
||||
url: JSON.parse(res.data).url
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 删除图片
|
||||
deletePic() {
|
||||
let that = this
|
||||
that.fileAvatar.splice(0, 1)
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import '@/style/mixin.scss';
|
||||
@@ -409,6 +722,17 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
text.marPer {
|
||||
color: #fff;
|
||||
font-weight: normal;
|
||||
float: right;
|
||||
margin: 25rpx 0 0 0;
|
||||
display: block;
|
||||
border-radius: 10rpx;
|
||||
background-color: #eee;
|
||||
padding: 2rpx 10rpx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -484,7 +808,40 @@
|
||||
margin-top: 25rpx;
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
|
||||
.submit {}
|
||||
.emPHCode {
|
||||
height: 80rpx;
|
||||
width: 200rpx;
|
||||
background-color: #f8f9fb;
|
||||
font-size: 28rpx;
|
||||
padding: 0 14rpx;
|
||||
color: #54a966;
|
||||
line-height: 80rpx;
|
||||
margin: 20rpx 0 0 20rpx;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.quhao {
|
||||
height: 60rpx;
|
||||
width: 240rpx;
|
||||
margin: 1rpx 15rpx 0 0;
|
||||
|
||||
.quhaoSel {
|
||||
|
||||
/deep/.uni-select {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/deep/.uni-select__selector-item {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
/deep/.uni-stat__select {
|
||||
height: 60rpx;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
1255
pages/user/visitor.vue
Normal file
1255
pages/user/visitor.vue
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user