bangdingsj.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>绑定手机号</title>
  6. <meta name="format-detection" content="telephone=no"/>
  7. <meta name="viewport"
  8. content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
  9. <meta name="apple-mobile-web-app-capable" content="yes"/>
  10. <meta name="apple-mobile-web-app-status-bar-style" content="black"/>
  11. <link rel="stylesheet" href="../../../css/cross.css" type="text/css"/>
  12. <link rel="stylesheet" href="../../home/css/bind-phone.css" type="text/css"/>
  13. <link rel="stylesheet" href="../../../css/cross.ui.css" type="text/css"/>
  14. <link rel="stylesheet" type="text/css" href="../../../css/ss-style.css">
  15. <link rel="stylesheet" type="text/css" href="../../../iconfont/iconfont.css" />
  16. <style>
  17. .n-list-info{position: relative;}
  18. .searchbar-clear{position: absolute;width: 28px;height: 28px;right: 0;top:8px;opacity:0;pointer-events:none;background-position:center;background-repeat:no-repeat;background-image:url(../../../images/delete01_pre.png);-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transition-duration:300ms;transition-duration:300ms;cursor:pointer;}
  19. #div-yzm{width:80px;height:29px;border:1px solid #4DCD70;color:#4DCD70;font-size:14px;line-height:29px;text-align:center;border-radius:10px;margin-top:7px;}
  20. .c-btn-dcdcdc{background: #DCDCDC;}
  21. .c-btn.active{background: #4DCD70;}
  22. </style>
  23. </head>
  24. <body style="overflow: hidden;">
  25. <div class="main">
  26. <ul class="n-list edit-info registered c-border-tb mt15 c-f15 form-register">
  27. <li>
  28. <div class="n-list-key" style="width: 2.3em;">
  29. <i class="iconfont icon-shouji1"></i>
  30. </div>
  31. <div class="n-list-info">
  32. <input id="txtMobile" type="tel" class="width-100 c-f16 c-5b5b5b" maxlength="11" placeholder="请输入新的手机号码" onkeyup="this.value=this.value.replace(/[^\d]/g,'')"/>
  33. <a href="#" class="searchbar-clear"></a>
  34. </div>
  35. </li>
  36. <li>
  37. <div class="n-list-key" style="width: 2.3em;">
  38. <i class="iconfont icon-yanzhengma01"></i>
  39. </div>
  40. <div class="n-list-info">
  41. <input id="txtCode" type="text" class="width-100 c-f16 c-5b5b5b" placeholder="请输入验证码"/>
  42. <a href="#" class="searchbar-clear"></a>
  43. </div>
  44. <div id="messageCode1" class="n-list-key pl15 c-17b3ec" onclick="sendCode()">
  45. <span>获取短信验证码</span>
  46. </div>
  47. <div id="messageCode2" class="n-list-key pl15 c-999999" style="display: none;">
  48. <span id="message"></span>
  49. </div>
  50. </li>
  51. </ul>
  52. <div class="mb15 mlr15 mt20">
  53. <a href="javascript:;" style="font-size: 18px;" class="c-btn c-btn-dcdcdc c-btn-full c-btn-radius c-f16">完 成</a>
  54. </div>
  55. </div>
  56. <div id="phoneBindWrap">
  57. <div style="display: none;" id="phoneBindBox">
  58. <div class="common-mask bg-black js-closePhoneBox"></div>
  59. <div class="phone-bind-box mlr15 mtb10">
  60. <div class="bgc-fff border-radius-rounded">
  61. <div class="phone-bind-msg ptb15 plr15">
  62. 该号码已与他人绑定,是否继续使用该号码注册?是否将已绑人员设定为家庭成员?(家庭成员间可互相切换账号并查看健康档案等隐私信息)
  63. </div>
  64. <div class="phone-bind-member c-border-t c-border-b js-LookBindPeople">查看绑定人员</div>
  65. <div class="phone-bind-member c-border-b js-beFamily">继续绑定,且成为家人</div>
  66. <div class="phone-bind-member js-notBeFamily">继续绑定,但不成为家人</div>
  67. </div>
  68. <div class="phone-bind-member border-radius-rounded bgc-fff mt10 js-closePhoneBox">取消</div>
  69. </div>
  70. </div>
  71. <div class="common-mask bgc-f9f9f9" style="display: none;" id="phoneMemberList">
  72. <div class="phone-member-box">
  73. <ul class="phone-member-list plr10 ptb10 mt10 c-border-b c-border-t" id="phoneMemberItem">
  74. <script id="memberList" type="text/html">
  75. {{each dataList as value i}}
  76. <li class="phone-member-item">
  77. <div><img src="{{value.photo | setPhoto}}" class="phone-member-img"></div>
  78. <span class="phone-member-name">{{value.name}}</span>
  79. </li>
  80. {{/each}}
  81. </script>
  82. </ul>
  83. <div class="plr10">
  84. <div class="phone-member-btn js-beFamily">继续绑定,且成为家人</div>
  85. <div class="phone-member-btn mt10 js-notBeFamily">继续绑定,但不成为家人</div>
  86. <div class="phone-member-btn phone-member-back mt10 js-closePhoneBox">返回修改手机号码</div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. </body>
  92. <script type="text/javascript" src="../../../js/jquery/2.1.3/jquery.js" ></script>
  93. <script type="text/javascript" src="../../../js/common_http.js" ></script>
  94. <script type="text/javascript" src="../../../js/weixin_common.js" ></script>
  95. <script type="text/javascript" src="../../../js/template.js" ></script>
  96. <link rel="stylesheet" type="text/css" href="../../../widget/artDialog/6.0.5/css/ui-dialog.min.css">
  97. <script src="../../../widget/artDialog/6.0.5/js/dialog-plus.js"></script>
  98. <script type="text/javascript" src="../../../js/commit_validate.js" ></script>
  99. <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
  100. <script type="text/javascript">
  101. var dd = dialog({contentType:'load', skin:'bk-popup', content:'绑定中...'});
  102. var Request = new Object();
  103. Request = GetRequest();
  104. var openid = Request["openid"];
  105. var type = Number(Request["type"]);
  106. var mobile1 = Request["mobile"];
  107. var clock = "";
  108. var nums = 60;
  109. var loginParams = Request["loginParams"];
  110. var relation = 0;
  111. isValueChange();//判断当前是否有输入值,有输入则登录按钮变亮
  112. bindEvents();
  113. if(loginParams) {
  114. loginParams = JSON.parse(decodeURIComponent( Request["loginParams"]));
  115. }
  116. $(function (){
  117. var userAgent = window.localStorage.getItem(agentName);
  118. if(userAgent){
  119. var paurl = "";
  120. if(type == 0){
  121. paurl = "wx/html/home/html/login.html?type=0&openid=" + openid;
  122. }
  123. else{
  124. if(mobile1){
  125. paurl = "wx/html/home/html/login.html?type=" + type + "&openid=" + openid + "&mobile=" + mobile1;
  126. }
  127. else{
  128. paurl = "wx/html/home/html/login.html?type=" + type + "&openid=" + openid;
  129. }
  130. }
  131. //从后台那边获取签名等信息
  132. var params = {};
  133. params.pageUrl = window.location.href;
  134. $.ajax(server + "weixin/getSign", {
  135. data: params,
  136. dataType: "json",
  137. type: "post",
  138. success: function(res){
  139. if (res.status == 200) {
  140. var t = res.data.timestamp;
  141. var noncestr = res.data.noncestr;
  142. var signature = res.data.signature;
  143. wx.config({
  144. //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  145. appId: appId, // 必填,公众号的唯一标识
  146. timestamp: t, // 必填,生成签名的时间戳
  147. nonceStr: noncestr, // 必填,生成签名的随机串
  148. signature: signature,// 必填,签名,见附录1
  149. jsApiList: [
  150. 'closeWindow'
  151. ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  152. });
  153. }
  154. }
  155. });
  156. /*wx.ready(function(){
  157. wx.closeWindow();
  158. });*/
  159. }
  160. else{
  161. if(!openid){
  162. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'openid获取失败'}).show();
  163. }
  164. }
  165. })
  166. function bindEvents(){
  167. $(".c-btn").on("click",function(){
  168. if($(this).hasClass("active")){
  169. commit();
  170. }
  171. })
  172. $("input").on("focus",function(){
  173. $(".searchbar-clear").css("pointer-events","none").css("opacity",0);
  174. if($(this).val()){
  175. $(this).next().css("pointer-events","auto").css("opacity",1);
  176. }
  177. }).on("input",function(){
  178. $(this).next().css("pointer-events","auto").css("opacity",1);
  179. });
  180. $(".n-list-info").on("click",".searchbar-clear",function(){
  181. $(this).prev().val("");
  182. $(this).css("pointer-events","none").css("opacity",0);
  183. $(this).prev().focus();
  184. return false;
  185. });
  186. }
  187. function isValueChange(){
  188. var self = this;
  189. var int= setInterval(function() {
  190. if($("#txtMobile").val()&&$("#txtCode").val()){
  191. clearInterval(int);
  192. int = null;
  193. $(".c-btn").addClass("active");
  194. }
  195. },300);
  196. }
  197. function sendCode(){
  198. var mobile = document.getElementById("txtMobile").value;
  199. if(!mobile){
  200. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'请输入手机号'}).show();
  201. return;
  202. }
  203. if(!isphone(mobile)){
  204. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'手机号格式不正确'}).show();
  205. return;
  206. }
  207. var dd1 = dialog({contentType:'load', skin:'bk-popup', content:'请求中...'});
  208. dd1.showModal();
  209. sendPost("patient/is_mobile_register", {mobile: mobile}, "json", "post", function(res){
  210. dd1.close();
  211. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'验证手机是否注册失败'}).show();
  212. }, function(res){
  213. dd1.close();
  214. if(res.status==200){
  215. if(res.data == 0){
  216. $("#messageCode1").hide();
  217. document.getElementById("message").innerHTML = nums+'秒后可重新获取';
  218. $("#messageCode2").show();
  219. clock = setInterval(doLoop, 1000); //一秒执行一次
  220. var data = {};
  221. data.mobile = mobile;
  222. data.type = 8;
  223. sendPost("common/captcha", data, "json", "post", sendFailed, sendSuccesss);
  224. } else {
  225. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'该手机已注册!'}).show();
  226. }
  227. } else{
  228. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'验证手机是否注册失败'}).show();
  229. }
  230. })
  231. }
  232. //失败
  233. function sendFailed(res) {
  234. clearInterval(clock); //清除js定时器
  235. $("#messageCode1").show();
  236. $("#messageCode2").hide();
  237.    nums = 60; //重置时间
  238. if (res && res.msg) {
  239. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:res.msg}).show();
  240. } else {
  241. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'获取失败'}).show();
  242. }
  243. }
  244. function sendSuccesss(res){
  245. if (res.status == 200) {
  246. }
  247. else{
  248. sendFailed(res);
  249. }
  250. }
  251. function doLoop(){
  252. nums--;
  253. if(nums > 0){
  254. document.getElementById("message").innerHTML = nums+'秒后可重新获取';
  255. }else{
  256.    clearInterval(clock); //清除js定时器
  257. $("#messageCode1").show();
  258. $("#messageCode2").hide();
  259.    nums = 60; //重置时间
  260. }
  261. }
  262. function commit(){
  263. var
  264. mobile = document.getElementById("txtMobile").value,
  265. captcha = document.getElementById("txtCode").value,
  266. data = {};
  267. //拼请求内容
  268. data.mobile = mobile;
  269. data.captcha = captcha;
  270. data.type = 1;
  271. data.relation = 0;
  272. if (!mobile || !captcha) {
  273. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'手机号和验证码不能为空'}).show();
  274. return;
  275. }
  276. if(!isphone(mobile)){
  277. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'手机号格式不正确'}).show();
  278. return;
  279. }
  280. dd.showModal();
  281. sendPost("patient/mobile_update", data, "json", "post", operateFailed, operateSuccesss)
  282. //成功调用登录接口
  283. function operateSuccesss(res) {
  284. function showBindPhone () {
  285. var
  286. resData = res.data,
  287. $phoneBindBox = $('#phoneBindBox'),
  288. $closePhoneBox = $('.js-closePhoneBox'),
  289. $beFamily = $('.js-beFamily'),
  290. $notBeFamily = $('.js-notBeFamily'),
  291. $LookBindPeople = $('.js-LookBindPeople'),
  292. $phoneMemberList = $('#phoneMemberList'),
  293. $phoneMemberItem = $('#phoneMemberItem');
  294. // name = $("#txtName").val(),
  295. // idcard = $("#txtIdcard").val(),
  296. // ssc = $("#txtSsc").val(),
  297. // mobile = $("#txtMobile").val(),
  298. // paramAgent = "",
  299. if (resData) {
  300. memberLength = resData.length; //成员数量
  301. if (memberLength > 0){
  302. showPhoneBoxFn();
  303. }
  304. }
  305. // 手机有绑定成员时显示弹框
  306. function showPhoneBoxFn() {
  307. $phoneBindBox.show();
  308. dd.close();
  309. $closePhoneBox.click(function () {
  310. $phoneBindBox.hide();
  311. $phoneMemberList.hide();
  312. });
  313. $beFamily.click(function () {
  314. relation = 2;
  315. agreementPageFn();
  316. });
  317. $notBeFamily.click(function () {
  318. relation = 1;
  319. agreementPageFn();
  320. });
  321. $LookBindPeople.click(function () {
  322. $phoneBindBox.hide();
  323. $phoneMemberList.show();
  324. var data = {
  325. dataList: resData,
  326. };
  327. var html = template('memberList', data);
  328. $phoneMemberItem.html(html);
  329. });
  330. }
  331. };
  332. function agreementPageFn() {
  333. data.relation = relation;
  334. sendPost("patient/mobile_update", data, "json", "post", failed, success);
  335. function failed() {
  336. //非200则为失败
  337. operateFailed(res);
  338. };
  339. function success() {
  340. // window.location.href = "my-detail.html?type=" + type + "&openid=" + openid;
  341. console.log(relation);
  342. };
  343. }
  344. if (res.status == 200) {
  345. window.location.href = "my-detail.html?type=" + type + "&openid=" + openid;
  346. dd.close();
  347. } else if (res.status == 1) {
  348. showBindPhone();
  349. } else {
  350. //非200则为失败
  351. operateFailed(res);
  352. }
  353. }
  354. //失败
  355. function operateFailed(res) {
  356. dd.close();
  357. if (res && res.msg) {
  358. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:res.msg}).show();
  359. } else {
  360. dialog({contentType:'tipsbox',bottom:true, skin:'bk-popup' , content:'验证码验证失败'}).show();
  361. }
  362. }
  363. }
  364. template.helper("setPhoto", function(p) {
  365. return getImgUrl(p);
  366. });
  367. </script>
  368. </html>