select_doctor.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. // 基本信息(包括userAgent、上个页面传递的数据)
  2. var baseInfo = null,
  3. // 基础环境信息(包括当前webview)
  4. baseEnv = null;
  5. var hasTnvite;
  6. var members = {};
  7. var isConsulted = false;
  8. var $tabs = $(".tab-hd"),
  9. $teamListWrapper = $("#team_doctor_list_wrap"),
  10. $famousListWrapper = $("#famous_doctor_list_wrap"),
  11. $zhuankeListWrapper = $("#zhuanke_list_wrap"),
  12. $teamDoctorList = $("#team_doctor_list"),
  13. $famousList = $("#famous_list"),
  14. $zhuankeList = $("#zhuanke_list"),
  15. // 搜索无结果时显示
  16. $teamNoResultWrap = $('#team_no_result_wrap'),
  17. $famouNoResultWrap = $('#famous_no_result_wrap'),
  18. $zhuankeNoResultWrap = $('#zhuanke_no_result_wrap'),
  19. $zhuankeSearchBar = $('#zhuanke_searchbar');
  20. // iscroll 滚动条实例
  21. var t_iscroller, //团队
  22. f_iscroller, //名医
  23. z_iscroller, //专科
  24. //当前选中tab
  25. curType,
  26. //保存页面数据
  27. teamDoctorObj,
  28. famousObj,
  29. zhuankeObj,
  30. f_lastPage = false,
  31. z_lastPage = false;
  32. var self;
  33. // 获取基本信息(包括userAgent、上个页面传递的数据)
  34. var getBaseInfoPromise = function() {
  35. self = plus.webview.currentWebview();
  36. // 登录的相关信息
  37. var userAgent = plus && JSON.parse(plus.storage.getItem("userAgent"))
  38. return {
  39. userAgent: userAgent,
  40. // 上一个页面传递的数据
  41. accessData: baseEnv.webview.accessData
  42. }
  43. },
  44. // 获取基础环境信息
  45. getBaseEnvPromise = function () {
  46. var env = {
  47. webview: plus&&plus.webview.currentWebview()
  48. };
  49. return Promise.resolve().then(function(res) {
  50. return env;
  51. });
  52. },
  53. //初始化
  54. initPage = function(){
  55. var self = plus.webview.currentWebview();
  56. var type = curType || self.type || 0;
  57. initTeamInfo(1);
  58. // $tabs.find(".sanp-flex").eq(type).click();
  59. //获得求助医生列表
  60. getGroupDoctors();
  61. },
  62. /*获得求助医生列表*/
  63. getGroupDoctors = function(){
  64. var url = "/doctor/consult/forHelpDocs",
  65. params = {consult: baseInfo.accessData.consultCode};
  66. getReqPromise(url, params).then(function(datas) {
  67. if(datas.status==200){
  68. members = datas.data;
  69. for(var k in members){
  70. isConsulted = true;
  71. break;
  72. }
  73. } else {
  74. mui.toast("程序开了点小差, 请稍后重试!");
  75. throw new Error("查询求助过的医生列表失败");
  76. }
  77. }).catch(function(e){
  78. console && console.error(e);
  79. });
  80. },
  81. /*团队医生处理*/
  82. initTeamInfo = function(curPage){
  83. var url = "/doctor/family_contract/consult_doctors",
  84. params = {sessionId : self.sessionId}; //不分页
  85. getReqPromise(url, params).then(function(res) {
  86. if(!t_iscroller) {
  87. t_iscroller = $teamListWrapper.initScroll({pullDown: false, pullUp: false});
  88. }
  89. if(!res.data || !res.data.teamDoctors.length) {
  90. $teamListWrapper.hide();
  91. $teamNoResultWrap.show();
  92. $('.posater-oper').eq(0).show();
  93. } else {
  94. $teamNoResultWrap.hide();
  95. $teamListWrapper.show();
  96. $('.posater-oper').eq(0).show();
  97. teamDoctorObj = res;
  98. //获得责任医生信息
  99. if(res.hasOwnProperty("dutyDoctor")){
  100. var tempList = [];
  101. tempList.push(res.dutyDoctor);
  102. var html = template('doctor_li_tmpl', {list : tempList});
  103. $teamDoctorList.append('<p class="c-f14 mt10 c-909090">责任医生</p>'+html);
  104. }
  105. var p = '<p class="c-f14 mt10 c-909090">团队内其他医生</p>';
  106. var html = template('doctor_li_tmpl',{list : res.data.teamDoctors});
  107. $teamDoctorList.append(p+html);
  108. }
  109. t_iscroller.refresh();
  110. plus.nativeUI.closeWaiting();
  111. }).catch(function(e){
  112. mui.toast(e.msg);
  113. });
  114. },
  115. /*名医处理*/
  116. initFamousInfo = function(curPage){
  117. // TODO 示例示例搜索参数
  118. // id: 上次搜索结果列表最后一条记录id,type:1(1:名医,0:非名医,key:搜素关键字,pagesize:每页条数
  119. var url = "doctor/consult/famousDoctorList",
  120. params = { type:1,page:curPage,pagesize:15};
  121. getReqPromise(url,params).then(function(res){
  122. if(!f_iscroller) {
  123. f_iscroller = $famousListWrapper.initScroll({pullDownAction: function(){
  124. initFamousInfo(1);
  125. },pullUp: false});
  126. }
  127. if(!res.list || !res.list.length) {
  128. f_lastPage = true;
  129. $famousListWrapper.hide();
  130. $famouNoResultWrap.show();
  131. } else {
  132. famousObj = res;
  133. $famouNoResultWrap.hide();
  134. $famousListWrapper.show();
  135. appendMembers({list: _.map(res.list,function(o) {
  136. if(members[o.code]){
  137. o.asked = true;
  138. }
  139. return o;
  140. })}, 'doctor_li_tmpl','famous_list',true);
  141. }
  142. f_iscroller.refresh();
  143. plus.nativeUI.closeWaiting();
  144. }).catch(function(e) {
  145. mui.toast(e.msg);
  146. });
  147. },
  148. /*专科医生处理*/
  149. initZhuankeInfo = function(curPage){
  150. var url = "/doctor/hospitals_list",
  151. params = { city:CITY_CODE,type:1,page:curPage,pagesize:15};
  152. getReqPromise(url,params).then(function(res){
  153. if(!z_iscroller) {
  154. z_iscroller = initScroller($zhuankeListWrapper,url,
  155. function() { // 传递分页参数
  156. return $.extend({},params,{page:curPage+1});
  157. },
  158. //下拉刷新处理
  159. function(){
  160. initZhuankeInfo(1);
  161. },
  162. function(data) {
  163. if(data.data && data.data.length) {
  164. curPage++;
  165. }
  166. if(data.data.length < 15){
  167. z_lastPage = true;
  168. }
  169. appendMembers(data, 'hospital_li_tmpl','zhuanke_list',false);
  170. z_iscroller.refresh();
  171. }, z_lastPage);
  172. }
  173. if(!res.data || !res.data.length) {
  174. $zhuankeListWrapper.hide();
  175. $zhuankeSearchBar.hide();
  176. $zhuankeNoResultWrap.show();
  177. } else {
  178. zhuankeObj = res;
  179. $zhuankeNoResultWrap.hide();
  180. $zhuankeSearchBar.show();
  181. $zhuankeListWrapper.show();
  182. appendMembers(res, 'hospital_li_tmpl','zhuanke_list',true);
  183. }
  184. z_iscroller.refresh();
  185. plus.nativeUI.closeWaiting();
  186. }).catch(function(e) {
  187. mui.toast(e.msg);
  188. });
  189. },
  190. // 滚动条分页实例初始化
  191. initScroller = function($el,url,getData,pullDownAction,pullUpAction,is_lastPage) {
  192. var scroller = $el.initScroll({pullDownAction: function(){
  193. if(pullDownAction && $.isFunction(pullDownAction)) {
  194. pullDownAction();
  195. }
  196. },pullUpAction: function() {
  197. if(!is_lastPage){
  198. var data = getData();
  199. getReqPromise(url,data).then(function(data) {
  200. if(pullUpAction && $.isFunction(pullUpAction)) {
  201. pullUpAction(data);
  202. updatePullUpText(scroller,data.list);
  203. }
  204. })
  205. }else{
  206. updatePullUpText(scroller,[]);
  207. return false;
  208. }
  209. }});
  210. return scroller;
  211. },
  212. // 更新分页上拉加载的提示文本
  213. updatePullUpText= function(scroller,list) {
  214. var $wrap = $(scroller.wrapper),
  215. $pullupLabel = $wrap.find('.pullUpLabel');
  216. if(!list || !list.length) {
  217. // $wrap.find(".pullUp").hide();
  218. $pullupLabel.text('没有更多');
  219. } else if(list.length<15){
  220. // $wrap.find(".pullUp").hide();
  221. $pullupLabel.text('没有更多');
  222. }else {
  223. $pullupLabel.text('上拉加载更多');
  224. }
  225. scroller.on('refresh',function() {
  226. if(!list || !list.length) {
  227. // $wrap.find(".pullUp").hide();
  228. $pullupLabel.text('没有更多');
  229. } else if(list.length<15){
  230. // $wrap.find(".pullUp").hide();
  231. $pullupLabel.text('没有更多');
  232. } else {
  233. $pullupLabel.text('上拉加载更多');
  234. }
  235. });
  236. },
  237. appendMembers = function(data, tmplId, ulId, isRefresh){
  238. var html = template(tmplId, data);
  239. if(isRefresh){
  240. $('#'+ulId).empty().html(html);
  241. } else{
  242. $('#'+ulId).append(html);
  243. }
  244. },
  245. //绑定事件
  246. bindEvents = function(){
  247. $tabs.on('click', '.sanp-flex', function(){
  248. $tabs.find(".sanp-flex").removeClass("curr");
  249. $(this).addClass("curr");
  250. curType = $(this).index();
  251. plus.nativeUI.showWaiting("加载中,请稍候...");
  252. $(".posater-oper").hide().eq(curType).show();
  253. switch (curType) {
  254. case 0:
  255. if (teamDoctorObj) {
  256. plus.nativeUI.closeWaiting();
  257. } else {
  258. initTeamInfo(1);
  259. }
  260. break;
  261. case 1:
  262. if (famousObj) {
  263. plus.nativeUI.closeWaiting();
  264. } else {
  265. initFamousInfo(1);
  266. }
  267. break;
  268. case 2:
  269. if (zhuankeObj) {
  270. plus.nativeUI.closeWaiting();
  271. } else {
  272. initZhuankeInfo(1);
  273. }
  274. break;
  275. }
  276. });
  277. $zhuankeList.on('click', 'li', function(){
  278. mui.openWindow({
  279. url:"hospital_dept.html",
  280. id: "hospital_dept",
  281. extras: {
  282. accessData:{
  283. hospitalId: $(this).attr("data-code"),
  284. consultCode: self.consultInfo.consult,
  285. patient: self.consultInfo.patient
  286. },
  287. aa: self.aa,
  288. members: members,
  289. consultInfo: self.consultInfo,
  290. isConsulted: isConsulted
  291. }
  292. });
  293. });
  294. $zhuankeSearchBar.on('click', 'input', function(){
  295. mui.openWindow({
  296. url:"search_doctor.html",
  297. id:"search_doctor",
  298. extras: {
  299. accessData:{
  300. consultCode: self.consultInfo.consult,
  301. patient: self.consultInfo.patient
  302. },
  303. aa: self.aa,
  304. members: members,
  305. consultInfo: self.consultInfo,
  306. isConsulted: isConsulted
  307. }
  308. });
  309. });
  310. $("#cy_btn").on('click',function(){
  311. mui.openWindow({
  312. url:"changyong_doctor.html",
  313. id:"changyong_doctor",
  314. extras: {
  315. openId: self.opener().id,
  316. type: 2,
  317. aa: self.aa,
  318. members: members,
  319. consultInfo: self.consultInfo,
  320. isConsulted: isConsulted
  321. }
  322. });
  323. });
  324. };
  325. // 页面业务处理流程开始
  326. new Promise(function(resolve, reject) {
  327. // TODO 临时放开
  328. //resolve(true);
  329. mui.plusReady(function() {
  330. // plus已经准备好,可以往下执行
  331. resolve(true);
  332. });
  333. }).then(function() {
  334. plus.nativeUI.showWaiting();
  335. // 获取基础环境信息
  336. return getBaseEnvPromise().then(function(env) {
  337. baseEnv = env;
  338. }).then(function() {
  339. // 获取登录医生信息
  340. baseInfo = getBaseInfoPromise();
  341. initPage();
  342. //绑定页面事件
  343. bindEvents();
  344. plus.nativeUI.closeWaiting();
  345. })
  346. }).catch(function(e) {
  347. plus.nativeUI.closeWaiting();
  348. console && console.error(e);
  349. });
  350. template.helper("setHosPhoto", function(p) {
  351. if(!p || p == ""){
  352. return '../images/hospital_default.png';
  353. }
  354. return getImgUrl(p);
  355. });