dailiqianyue.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. // 登录者相关信息(包括userAgent)
  2. var loginerInfo = null,
  3. // 基础环境信息(包括当前webview、encry相关)
  4. baseEnv = null;
  5. var self;
  6. // 专科医生li容器
  7. var $doctorZK = $('#doctor_zk'),
  8. // 慢病类别li容器
  9. $disease = $("#disease"),
  10. // 添加附件图标按钮
  11. $imgArea = $('.add-img'),
  12. // 扫描医保卡自动识别居民信息提示栏
  13. $scanSSCInfo = $('#scan_ssc_info'),
  14. // 重新扫描医保卡提示栏
  15. $rescanSSCInfo = $('#rescan_ssc_info'),
  16. // 下一步按钮
  17. $nextStep = $('#next_step'),
  18. // 表单的ul容器
  19. $infoList = $("#info_list"),
  20. // 姓名
  21. $nameInput = $("#name").find("input"),
  22. // 身份证
  23. $idcardInput = $("#idcard").find("input"),
  24. // 医保卡号
  25. $sscInput = $("#ssc").find("input"),
  26. // 医疗保险号
  27. $medicareNumberInput = $("#medicareNumber").find("input"),
  28. // 手机号码
  29. $mobileInput = $("#mobile").find("input"),
  30. //居委会
  31. $committee = $("#selectType").find("input")
  32. // 应急人联系电话
  33. $emerMoblieInput = $("#emerMoblie").find("input");
  34. // 关闭重新登录检查(防止一个ajax error导致所有请求成功无法回调)
  35. var checkReload = false;
  36. // 获取登录相关信息
  37. var getLoginerInfo = function() {
  38. // 登录的相关信息
  39. var userAgent = JSON.parse(plus.storage.getItem("userAgent")),
  40. // 登录的医生类别
  41. docType = plus.storage.getItem("docType"),
  42. // 登录的医生信息
  43. docInfo= JSON.parse(plus.storage.getItem("docInfo")),
  44. // 该医生(登录者)所在社区(机构)编码
  45. hospital = plus.storage.getItem("hospital");
  46. return {
  47. userAgent: userAgent,
  48. docInfo: $.extend(docInfo,{docType:docType},{hospital: hospital})
  49. }
  50. },
  51. // 获取基础环境信息
  52. getBaseEnvPromise = function () {
  53. var env = {
  54. webview: plus.webview.currentWebview(),
  55. encryURL: "login/public_key",
  56. encryKey: ""
  57. };
  58. plus.nativeUI.showWaiting();
  59. // 因为有异步请求,需要等待数据返回之后进行处理,所以返回Promise
  60. return getReqPromise(env.encryURL,null).then(function(res) {
  61. plus.nativeUI.closeWaiting();
  62. if(res.status == 200) {
  63. var mod = res.data.modulus;
  64. var exp = res.data.exponent;
  65. // key = RSAUtils.getKeyPair(exp, "", mod);
  66. env.encryKey = RSAUtils.getKeyPair(exp, "", mod);
  67. return env;
  68. } else {
  69. mui.toast(res.msg);
  70. }
  71. }).catch(function(e) { plus.nativeUI.closeWaiting(); });
  72. },
  73. // 根据身份证获取医保卡号
  74. getSSCNoByIdcard = function(idcard) {
  75. var checkUrl = "doctor/patient_cardno";
  76. getReqPromise(checkUrl,{idcard:idcard}).then(function(res) {
  77. if(res.status=='200'){
  78. $sscInput.val(res.data);
  79. if(res.data){
  80. $sscInput.attr("readonly","readonly");
  81. } else {
  82. $sscInput.removeAttr("readonly");
  83. }
  84. } else {
  85. mui.toast(res.msg);
  86. }
  87. });
  88. },
  89. // 图片缩放
  90. scaleRefresh = function (dom) {
  91. ImagesZoom.init({
  92. "elem": dom,
  93. "delBack": function(index) {
  94. $(".pic-count").text($(".pic-count").text() - 1); //删除图片后的回调
  95. $(dom).find("li").eq(index).remove();
  96. }
  97. });
  98. },
  99. // 上传并获取图片url地址(多张图片以“,”分割)
  100. getImagesPromise = function() {
  101. return new Promise(function(resolve, reject) {
  102. if(plus.networkinfo.getCurrentType() == plus.networkinfo.CONNECTION_NONE) {
  103. mui.toast("您的网络有点问题哦,请检查网络无误后重试~");
  104. throw new Error("无网络连接");
  105. }
  106. var uploadImgUrl = getCompressImg();
  107. if(uploadImgUrl) {
  108. setTimeout(function() {
  109. uploadImg(uploadImgUrl, function(uploadObj) {
  110. var res = JSON.parse(uploadObj.responseText);
  111. resolve(res);
  112. });
  113. }, 1000);
  114. } else {
  115. // 没有附件
  116. resolve({urls: null})
  117. }
  118. });
  119. },
  120. // 自动识别医保卡图片
  121. autoRecSSCImagePromise = function(imgPath) {
  122. // var ocrReqUrl = "http://192.168.131.109:3001/ocr";
  123. //recUrl = "http://192.168.131.132:3000/ocr/result?credit=";
  124. console.log(ocrReqUrl);
  125. return new Promise(function(resolve, reject) {
  126. var task = plus.uploader.createUpload(ocrReqUrl, {
  127. method: "post",
  128. timeout: 20,
  129. retry: 0
  130. }, function( t , status) {
  131. if (status == 200) {
  132. //fileHttpUrl = JSON.parse(t.responseText).urls;
  133. //resolve(JSON.parse(t.responseText));
  134. resolve(JSON.parse(t.responseText));
  135. } else {
  136. if(plus.networkinfo.getCurrentType() != plus.networkinfo.CONNECTION_NONE) {
  137. mui.confirm("对不起,识别失败,请确认图片是否符合以下要求:\n ①医保卡边框需在照片内;\n ②医保卡边框未损坏;\n ③图片清晰。", "提示", ["手工录入", "重新扫描"], function(e) {
  138. if(e.index == 1) {
  139. $scanSSCInfo.trigger("tap");
  140. }
  141. })
  142. } else {
  143. mui.toast("您的网络有点问题哦,请检查网络无误后重试~");
  144. }
  145. resolve(false);
  146. }
  147. });
  148. task.addFile(imgPath, {key:"file"})
  149. task.start();
  150. })
  151. .then(function(data) {
  152. if (data===false) {
  153. return data;
  154. }
  155. // 医保卡图片识别数据
  156. if(data) {
  157. $nameInput.val(data["姓名"]);
  158. $idcardInput.val(data["身份证"]);
  159. $sscInput.val(data["卡号"]);
  160. }
  161. if( !$nameInput.val().trim() || !validName($nameInput.val(),false)
  162. || !$idcardInput.val().trim() || !validIdCard($idcardInput.val(),false)
  163. || !$sscInput.val().trim() || !validSSC($sscInput.val(),false)
  164. ) {
  165. mui.confirm("对不起,识别信息不完整,请确认图片是否符合以下要求:\n ①医保卡边框需在照片内;\n ②医保卡边框未损坏;\n ③图片清晰。", "", ["手工录入", "重新扫描"], function(e) {
  166. if(e.index == 1) {
  167. $scanSSCInfo.trigger("tap");
  168. }
  169. })
  170. }
  171. return data;
  172. });
  173. },
  174. // 获取表单数据
  175. getInputs = function() {
  176. var data = {
  177. name: $nameInput.val().trim(), // 姓名
  178. unencIdcard: $idcardInput.val().trim(), // 未加密的身份证
  179. ssc: $sscInput.val().trim().toUpperCase(), // 医保卡号
  180. medicareNumber: $medicareNumberInput.val().trim(), // 医疗保险号
  181. mobile: $mobileInput.val().trim(), // 手机号码
  182. emerMoblie: $emerMoblieInput.val().trim(), // 应急人联系电话
  183. countryCode:$committee.attr('data-code'),//居委会
  184. images: null// 附件
  185. };
  186. // 加密后的身份证
  187. data.idcard = RSAUtils.encryStr(baseEnv.encryKey, data.unencIdcard);
  188. return data;
  189. },
  190. // 必输验证
  191. validRequired = function(data) {
  192. var fieldsStr = "name,idcard,ssc,countryCode,medicareNumber",
  193. fieldMap = {
  194. name: "姓名",idcard:"身份证",ssc:"医保卡号",countryCode:"居委会",medicareNumber: "医疗保险号"
  195. },
  196. fields = fieldsStr.split(","),
  197. invalidField;
  198. // 某个字段为""、null、undefined,则该字段不能通过必输校验
  199. invalidField = _.find(fields,function(key) {
  200. return !data[key]&&data[key]!==0;
  201. });
  202. if(invalidField) {
  203. mui.toast(fieldMap[invalidField]+'不能为空');
  204. return false;
  205. } else {
  206. return true;
  207. }
  208. },
  209. // 校验姓名格式
  210. validName = function(idcard,isshow) {
  211. var nameReg = /^[\u4E00-\u9FA5]{2,}$/;
  212. if(!idcard) return ;
  213. if(!nameReg.test(idcard)) {
  214. $nameInput.css("color","red");
  215. if(isshow!=false){
  216. mui.toast("请填写有效姓名");
  217. }
  218. return false;
  219. }
  220. $nameInput.css("color","");
  221. return true;
  222. },
  223. // 校验身份证号格式
  224. validIdCard = function(idcard,isshow) {
  225. var idCardReg = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
  226. if(!idcard) return ;
  227. if(idcard.length == 15) {
  228. idCardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
  229. }
  230. if(!idCardReg.test(idcard)) {
  231. $idcardInput.css("color","red")
  232. if(isshow!=false){
  233. mui.toast("请填写有效身份证号");
  234. }
  235. return false;
  236. }
  237. $idcardInput.css("color","");
  238. return true;
  239. },
  240. // 校验医保卡号格式
  241. validSSC = function(ssc,isshow) {
  242. //var sscReg = /^[a-zA-Z0-9]+$/;
  243. var sscReg = /^([a-zA-Z]{1}[a-zA-Z0-9]{8}|[0-9]{12})$/;
  244. if(!ssc) return ;
  245. if(!sscReg.test(ssc)) {
  246. $sscInput.css("color","red")
  247. if(isshow!=false){
  248. mui.toast("请填写有效的医保卡卡号");
  249. }
  250. return false;
  251. }
  252. $sscInput.css("color","");
  253. return true;
  254. },
  255. // 校验手机号格式
  256. validMobile = function(mobile) {
  257. var mobileReg = /^[1][3578][0-9]{9}$/;
  258. if(!mobile) return ;
  259. if(!mobileReg.test(mobile)) {
  260. $mobileInput.css("color","red");
  261. mui.toast("请填写有效的手机号码");
  262. return false;
  263. }
  264. $mobileInput.css("color","");
  265. return true;
  266. },
  267. // 校验联系人电话
  268. validEmerMobile = function(mobile) {
  269. var mobileReg = /^[1][3578][0-9]{9}$/;
  270. if(!mobile) return ;
  271. if(!mobileReg.test(mobile)) {
  272. $emerMoblieInput.css("color","red");
  273. mui.toast("请填写有效的联系人电话");
  274. return false;
  275. }
  276. $emerMoblieInput.css("color","");
  277. return true;
  278. },
  279. // 输入格式验证
  280. validFormat = function(data) {
  281. return validName(data.name)
  282. &&validIdCard(data.unencIdcard)
  283. && validSSC(data.ssc)
  284. && (!data.mobile || validMobile(data.mobile))
  285. && (!data.emerMoblie || validEmerMobile(data.emerMoblie));
  286. },
  287. // 检查姓名、身份证号、医保卡号是否一致
  288. checkInfoConsistency = function(infoConsistencyRes) {
  289. if(infoConsistencyRes.status == 200) {
  290. return true;
  291. } else {
  292. mui.toast(infoConsistencyRes.msg);
  293. return false;
  294. }
  295. },
  296. // 判断其是否已注册
  297. checkRegistered = function(res) {
  298. // 当signStatus=1或3时才有这个字段,不为空表示这个身份证患者已注册
  299. var isRegistered = res.data.patient;
  300. if(res.status == 200 ) {
  301. if(isRegistered && isRegistered!==undefined) {
  302. return true;
  303. }
  304. return false;
  305. } else {
  306. mui.toast(res.msg);
  307. return false;
  308. }
  309. },
  310. //// 检查手机号是否已签约
  311. //checkMobileSignedStatus = function(checkRes) {
  312. // if(checkRes.status==200) {
  313. // if(checkRes.data.islive == "false") {
  314. // dialog({
  315. // content: "该手机号已签约!",
  316. // ok: function() {
  317. // $mobileInput.val("");
  318. // }
  319. // }).showModal();
  320. // return false;
  321. // } else {
  322. // return true;
  323. // }
  324. // } else {
  325. // mui.toast(checkRes.msg);
  326. // // $mobileInput.val("");
  327. // return false;
  328. // }
  329. //},
  330. // 手机号是否未被注册使用
  331. checkMobileIsNotUsed = function (res) {
  332. // if(res.status==200) {
  333. // return true;
  334. // }
  335. // mui.toast("该手机号已被注册!");
  336. return true;
  337. },
  338. // 检查是否已签约家庭医生
  339. checkSignedFamilyDoctor = function(res) {
  340. if(res.status == 200) {
  341. // signStatus: 0-->病人未注册或三师跟家庭签约都没有,1-->有三师签约,2-->有签约家庭医生
  342. if(res.data.signStatus==2){
  343. mui.toast("病人已申请过家庭签约!");
  344. return false;
  345. } else {
  346. return true;
  347. }
  348. } else {
  349. mui.toast(res.msg);
  350. return false;
  351. }
  352. },
  353. // 检查是否签约三师
  354. checkSignedSanshi = function(signedData) {
  355. // signStatus: 0-->病人未注册或三师跟家庭签约都没有,1-->有三师签约,2-->有签约家庭医生
  356. var signStatus = signedData.signStatus;
  357. return signStatus==1;
  358. },
  359. // 检查三师签约中全科医生是否在当前医生所在社区
  360. checkSanshiComnunity = function(loginerData,signedData) {
  361. // 三师中全科医生所在社区主编码(截取前8位,后两位是服务站)
  362. var sanShiHospital = signedData.hospital.slice(0,8),
  363. // 该医生(登录者)所在社区主编码(截取前8位,后两位是服务站)
  364. hospital = loginerData.hospital.slice(0,8);
  365. return sanShiHospital == hospital;
  366. },
  367. // 与数据库校验
  368. validInputByDBPromise = function(data) {
  369. var reqs = [
  370. {url: "doctor/family_contract/patient_sanshi_signinfo",data: {idCard: data.unencIdcard}},
  371. //检查姓名、身份证号、医保卡号是否一致
  372. {url:'doctor/validatePatient',data:{
  373. name: data.name, // 姓名
  374. idcard: data.unencIdcard, // 未加密的身份证
  375. ssc: data.ssc // 医保卡号
  376. }}];
  377. if(data.mobile) {
  378. // 检查手机号是否签约
  379. reqs.push({url: "doctor/family_contract/checkMoblie",data:{mobile: data.mobile}},{url: "doctor/patient_group/checkMobile",data:{mobile: data.mobile}})
  380. }
  381. return getReqPromises(reqs).then(function(res) {
  382. var checkSignedFamilyDoctorRes = res[0],
  383. infoConsistencyRes = res[1],
  384. checkRes = res[2],
  385. mobileIsUsedRes = res[3];
  386. return checkSignedFamilyDoctor(checkSignedFamilyDoctorRes)
  387. && (function(){
  388. // 如果已经签约三师,并且三师签约中全科医生不在当前医生所在社区,则不允许其进行代理签约
  389. /*
  390. if(checkSignedSanshi(checkSignedFamilyDoctorRes.data)&&!checkSanshiComnunity(loginerInfo.docInfo, checkSignedFamilyDoctorRes.data)) {
  391. mui.toast("居民已签约三师,不可与其签约");
  392. return false;
  393. }*/
  394. return true;
  395. })()
  396. &&checkInfoConsistency(infoConsistencyRes)
  397. &&(function(){
  398. // 签约居民已注册,且有填写手机号
  399. if(checkRegistered(checkSignedFamilyDoctorRes) && data.mobile.trim()) {
  400. // 注册时用的手机号
  401. var signedMobile = $.trim(checkSignedFamilyDoctorRes.data.patient.mobile);
  402. // 填写的手机手机号与注册时的不一致
  403. if(signedMobile && signedMobile != data.mobile.trim()) {
  404. mui.toast("所填手机号与居民注册时使用的手机号不一致!");
  405. return false;
  406. }
  407. return true;
  408. } else {
  409. if(!data.mobile)
  410. return true;
  411. return checkMobileIsNotUsed(mobileIsUsedRes);
  412. }
  413. })()
  414. //&&checkMobileSignedStatus(checkRes);
  415. });
  416. },
  417. // 所有输入验证
  418. validInputsPromise = function() {
  419. // 表单数据
  420. var data = getInputs();
  421. return Promise.resolve()
  422. .then(function() {
  423. if(!validRequired(data)) throw new Error("必输校验失败");
  424. })
  425. .then(function() {
  426. if(!validFormat(data)) throw new Error("格式校验失败");
  427. })
  428. .then(function() {
  429. // TODO 接口抛错,暂时关闭数据库验证
  430. // return validInputByDBPromise(data);
  431. return true
  432. })
  433. .then(function(flag) {
  434. if(!flag) throw new Error("数据有效性校验失败");
  435. })
  436. .then(function() {
  437. // 所有校验成功
  438. $infoList.find('input').css("color","");
  439. return data;
  440. });
  441. },
  442. bindEvents = function() {
  443. //填充信息
  444. if(self.kind == 1){//建档跳过来
  445. $nameInput.val(self.name)
  446. $idcardInput.val(self.idCard)
  447. $committee.val(self.countryName?self.countryName:'')
  448. $committee.attr('data-code',self.countryCode?self.countryCode:'')
  449. $sscInput.val(self.ssc?self.ssc:'')
  450. $mobileInput.val(self.mobile?self.mobile:'')
  451. }
  452. //选择居委会
  453. selectCommittee()
  454. // 扫描医保卡
  455. $scanSSCInfo.on('tap', function() {
  456. getAutoRecCompressImageLocalPath(function(imgPath) {
  457. plus.nativeUI.showWaiting();
  458. autoRecSSCImagePromise(imgPath).then(function(res) {
  459. if(!res) throw new Error("图片识别失败");
  460. plus.nativeUI.closeWaiting();
  461. $('#auto_scan_ssc_photo').remove();
  462. $imgArea.find('li.add').before('<li id="auto_scan_ssc_photo"><img src="'+ imgPath +'" alt="图片" /></li>');
  463. $scanSSCInfo.hide();
  464. $rescanSSCInfo.show();
  465. }).catch(function(e){
  466. plus.nativeUI.closeWaiting();
  467. console && console.error(e);
  468. });
  469. });
  470. });
  471. $rescanSSCInfo.on('tap', function() {
  472. $scanSSCInfo.trigger("tap");
  473. });
  474. // 添加附件
  475. $imgArea.on('tap', '.add', function() {
  476. showActionSheet($imgArea[0], this);
  477. });
  478. // 下一步
  479. $nextStep.on('tap', function() {
  480. plus.nativeUI.showWaiting();
  481. validInputsPromise().then(function(data) {
  482. // 上传附件,并获取存储的URL,返回新的Promise对象
  483. return getImagesPromise().then(function(res) {
  484. if(res) {
  485. data.images = res.urls
  486. return data;
  487. }
  488. });
  489. }).then(function(data) {
  490. plus.nativeUI.closeWaiting();
  491. var view = plus.webview.getWebviewById("dailiqianyue-next");
  492. var createNew = false;
  493. if(view){ // 如果页面已经缓存
  494. view.close();
  495. createNew = true;
  496. }
  497. if(data) {
  498. mui.openWindow({
  499. url: "dailiqianyue-next.html",
  500. id:"dailiqianyue-next",
  501. // 是否重新创建页面webview,防止页面缓存
  502. // createNew: createNew,
  503. // 跳转页面传参
  504. extras: {
  505. accessData:data, // 表单数据
  506. docInfo: loginerInfo.docInfo // 登录者信息
  507. },
  508. });
  509. }
  510. }).catch(function(e) {
  511. plus.nativeUI.closeWaiting();
  512. console && console.error(e);
  513. });
  514. });
  515. // 获取焦点时恢复输入的字体颜色
  516. $infoList.on('focus','input',function() {
  517. $(this).css("color","");
  518. });
  519. $idcardInput.on('blur',function() {
  520. validIdCard($(this).val().trim());
  521. });
  522. $sscInput.on('blur',function() {
  523. validSSC($(this).val().trim());
  524. });
  525. $mobileInput.on('blur',function() {
  526. validMobile($(this).val().trim());
  527. });
  528. $emerMoblieInput.on('blur',function() {
  529. validEmerMobile($(this).val().trim());
  530. });
  531. // 删除图片
  532. mui(".add-img").on("tap", ".icon-del", function() {
  533. var oli = this.parentElement;
  534. var oul = this.parentElement.parentElement;
  535. oul.removeChild(oli);
  536. });
  537. };
  538. // 页面业务处理流程开始
  539. new Promise(function(resolve, reject) {
  540. mui.init({
  541. beforeback: function() {
  542. if($('.imgzoom-pack').css("display")!=="none"){
  543. $('.imgzoom-x').trigger('click');
  544. return false;
  545. }
  546. }
  547. });
  548. mui.plusReady(function() {
  549. // plus已经准备好,可以往下执行
  550. mui.back = function(){
  551. var self = plus.webview.currentWebview();
  552. if(self.opener().id == 'jiandangxiangqing'){
  553. self.close()
  554. }else{
  555. backToPage(self);
  556. }
  557. }
  558. resolve(true);
  559. });
  560. }).then(function() {
  561. // TODO 防止因为其它ajax error导致存在isLoginOut标识,所有请求回调无法执行的问题
  562. window.localStorage.removeItem("isLoginOut");
  563. // 获取基础环境信息
  564. return getBaseEnvPromise().then(function(env) {
  565. baseEnv = env;
  566. }).then(function() {
  567. //如果前一个页面有带上患者的姓名和身份证号,则填充相关数据
  568. self = plus.webview.currentWebview();
  569. var name = self.name,
  570. idcard = self.idcard;
  571. $nameInput.val(name); // 姓名
  572. $idcardInput.val(idcard); // 未加密的身份证
  573. // 获取登录医生信息
  574. loginerInfo = getLoginerInfo();
  575. //图片缩放
  576. scaleRefresh(".upload-img");
  577. // 绑定页面事件
  578. bindEvents();
  579. })
  580. }).catch(function(e) {
  581. plus.nativeUI.closeWaiting();
  582. console && console.error(e);
  583. });
  584. var closeList = [];
  585. function backToPage(wv){
  586. if(wv.id == "home2.html"){
  587. var self = plus.webview.currentWebview();
  588. wv.show();
  589. mui.later(function(){
  590. for(i=0; i<closeList.length; i++){
  591. closeList[i].close('none');
  592. }
  593. self.close('none');
  594. }, 500);
  595. return false;
  596. }else{
  597. var opener = wv.opener();
  598. if(opener.id != "home2.html"){
  599. closeList.push(opener);
  600. }
  601. backToPage(opener);
  602. }
  603. }