xuanzekeshi.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. // TODO 社区列表示例数据
  2. //var data = {"msg":"查询成功","list":[{"code":"3502050100","name":"内科"},{"code":"3502050101","name":"儿科"},{"code":"3502050200","name":"妇科"},{"code":"3502050300","name":"肿瘤科"},{"code":"3502050301","name":"五官科"},{"code":"3502050302","name":"消化内科"}],"status":200};
  3. // TODO 临时构造plus对象,使得能够在浏览器中进行调试
  4. //var plus = null;
  5. // 基本信息(包括userAgent、上个页面传递的数据)
  6. var baseInfo = null,
  7. // 基础环境信息(包括当前webview)
  8. baseEnv = null;
  9. var $orgTab = $('#org_tab'),
  10. $keshiWrapper = $('#keshi_wrapper'),
  11. $keshiList = $('#keshi_list'),
  12. // 搜索输入框
  13. $searchbarInput = $('.searchbar input'),
  14. // 搜索无结果时显示
  15. $noResultWrap = $('#no_result_wrap');
  16. // 分页查询最后一条记录Id
  17. var lastId = 0,
  18. // iscroll 滚动条实例
  19. iscroller;
  20. // 获取基本信息(包括userAgent、上个页面传递的数据)
  21. var getBaseInfoPromise = function() {
  22. // 登录的相关信息
  23. var userAgent = plus && JSON.parse(plus.storage.getItem("userAgent"))
  24. return {
  25. userAgent: userAgent,
  26. // 上一个页面传递的数据
  27. accessData: baseEnv.webview.accessData
  28. }
  29. },
  30. // 获取基础环境信息
  31. getBaseEnvPromise = function () {
  32. var env = {
  33. webview: plus&&plus.webview.currentWebview()
  34. };
  35. return Promise.resolve().then(function(res) {
  36. return env;
  37. });
  38. },
  39. // 初始化科室列表
  40. initKeshiList = function(data) {
  41. var html = template("keshi_li_tmpl", {list: data.list})
  42. $keshiList.append(html);
  43. },
  44. // 分页查询列表
  45. searchByPaging = function () {
  46. plus.nativeUI.showWaiting();
  47. // TODO 示例示例搜索参数
  48. // id: 上次搜索结果列表最后一条记录id,hospital:机构标识,pagesize:每页条数
  49. var url = "doctor/findDeptByHsoptail",
  50. hospital = baseInfo.accessData && baseInfo.accessData.hospital,
  51. params = { id:0, hospital: hospital,pagesize:15 };
  52. getReqPromise(url,params).then(function(res){
  53. if(res.status == 200) {
  54. var data = res;
  55. lastId = getLastId(data);
  56. if(!iscroller) {
  57. iscroller = initScroller($keshiWrapper,url,
  58. function() { // 传递分页参数
  59. return $.extend({},params,{id:lastId});
  60. },function(data) {
  61. initKeshiList(data);
  62. iscroller.refresh();
  63. });
  64. }
  65. if(!data.list || !data.list.length) {
  66. $keshiWrapper.hide();
  67. $noResultWrap.show();
  68. } else {
  69. if(data.list.length<15){
  70. $('.pullUp').hide();
  71. }
  72. $noResultWrap.hide();
  73. $keshiWrapper.show();
  74. initKeshiList(data);
  75. }
  76. iscroller.refresh();
  77. } else {
  78. mui.toast(res.msg);
  79. }
  80. plus.nativeUI.closeWaiting();
  81. }).catch(function(e) {
  82. plus.nativeUI.closeWaiting()
  83. console && console.error(e);
  84. });
  85. },
  86. // 滚动条分页实例初始化
  87. initScroller = function($el,url,getData,pullUpAction) {
  88. var scroller = $el.initScroll({pullDown: false,pullUpAction: function() {
  89. var data = getData();
  90. getReqPromise(url,data).then(function(data) {
  91. if(pullUpAction && $.isFunction(pullUpAction)) {
  92. pullUpAction(data);
  93. }
  94. updatePullUpText(scroller,data.list);
  95. })
  96. }});
  97. return scroller;
  98. },
  99. // 获取分页搜索返回的最后一条记录的id
  100. getLastId = function(data) {
  101. var lastObj = data.list && data.list.length && data.list[data.list.length-1];
  102. // 最后一条记录
  103. if(lastObj) {
  104. return lastObj.id;
  105. } else {
  106. return null
  107. }
  108. },
  109. // 更新分页上拉加载的提示文本
  110. updatePullUpText= function(scroller,list) {
  111. var $wrap = $(scroller.wrapper),
  112. $pullupLabel = $wrap.find('.pullUpLabel');
  113. if(!list || !list.length) {
  114. $pullupLabel.text('没有更多');
  115. } else if(list.length==15){
  116. $pullupLabel.text('上拉加载更多');
  117. }else{
  118. $wrap.find('.pullUp').hide();
  119. }
  120. scroller.on('refresh',function() {
  121. if(!list || !list.length) {
  122. $pullupLabel.text('没有更多');
  123. } else if(list.length==15){
  124. $pullupLabel.text('上拉加载更多');
  125. }
  126. if(list.length<15){
  127. $wrap.find('.pullUp').hide();
  128. }
  129. });
  130. },
  131. // 绑定页面事件
  132. bindEvents = function () {
  133. $searchbarInput.on('click',function() {
  134. var toWebview = plus.webview.getWebviewById("sousuojigouyisheng");
  135. var createNew = !!toWebview;
  136. createNew && toWebview.close();
  137. mui.openWindow({
  138. url:"sousuojigouyisheng.html",
  139. id:"sousuojigouyisheng",
  140. createNew: true
  141. });
  142. //toWebview = plus.webview.getWebviewById("sousuojigouyisheng");
  143. //mui.fire(toWebview,"focusSearchInput");
  144. });
  145. $keshiList.on('tap','li',function() {
  146. var code = $(this).attr('data-code');
  147. openWebview("xuanzeyisheng.html",{
  148. accessData: {
  149. dept: code
  150. }
  151. })
  152. });
  153. };
  154. // 页面业务处理流程开始
  155. new Promise(function(resolve, reject) {
  156. // TODO 临时放开
  157. //resolve(true);
  158. mui.plusReady(function() {
  159. // plus已经准备好,可以往下执行
  160. resolve(true);
  161. });
  162. }).then(function() {
  163. // 获取基础环境信息
  164. return getBaseEnvPromise().then(function(env) {
  165. baseEnv = env;
  166. }).then(function() {
  167. // 获取登录医生信息
  168. baseInfo = getBaseInfoPromise();
  169. searchByPaging();
  170. // 绑定页面事件
  171. bindEvents();
  172. })
  173. }).catch(function(e) {
  174. plus.nativeUI.closeWaiting();
  175. console && console.error(e);
  176. });