doctor-homepage.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. // TODO 医生示例数据
  2. var doctorData = null;
  3. // TODO 临时构造plus对象,使得能够在浏览器中进行调试
  4. //var plus = null;
  5. // 基本信息(包括userAgent、上个页面传递的数据)
  6. var baseInfo = null,
  7. // 基础环境信息(包括当前webview)
  8. baseEnv = null;
  9. // 医生code
  10. var doctorCode = "";
  11. var $baseInfoWrapper = $('#base_info_wrap'),
  12. $mingyiRoleWrapper = $('[data-role="mingyi"]'),
  13. $qitaRoleWrapper = $('[data-role="qitayisheng"]'),
  14. $cycworktime = $('.cycworktime');
  15. // 获取基本信息(包括userAgent、上个页面传递的数据)
  16. var getBaseInfoPromise = function() {
  17. // 登录的相关信息
  18. var userAgent = plus && JSON.parse(plus.storage.getItem("userAgent"))
  19. return {
  20. userAgent: userAgent,
  21. // 上一个页面传递的数据
  22. accessData: baseEnv.webview.accessData
  23. }
  24. },
  25. // 获取基础环境信息
  26. getBaseEnvPromise = function () {
  27. var webview = plus.webview.currentWebview();
  28. var env = {
  29. webview: webview,
  30. // 点击“返回”的webveiw的id(由上一个页面传递)
  31. backTo: webview.backTo
  32. };
  33. return Promise.resolve().then(function(res) {
  34. return env;
  35. });
  36. },
  37. getBeginTime = function (w) {
  38. var morning = (w.morning === "1")?true:false,
  39. afternoon = (w.afternoon === "1")?true:false,
  40. night = (w.night === "1")?true:false,
  41. beginTime = "8:30";
  42. if(morning) {
  43. beginTime = w.morningBegin;
  44. }else if(afternoon) {
  45. beginTime = w.afternoonBegin;
  46. } else if (night) {
  47. beginTime = w.nightBegin;
  48. }
  49. return beginTime;
  50. },
  51. getEndTime = function (w) {
  52. var morning = (w.morning === "1")?true:false,
  53. afternoon = (w.afternoon === "1")?true:false,
  54. night = (w.night === "1")?true:false,
  55. endTime = "18:00";
  56. if(night) {
  57. endTime = w.nightEnd;
  58. }else if(afternoon) {
  59. endTime = w.afternoonEnd;
  60. } else if (morning) {
  61. endTime = w.morningEnd;
  62. }
  63. return endTime;
  64. },
  65. geWorktime = function(workTime,workWeeks) {
  66. if(!workWeeks || !workWeeks.length) return ;
  67. return _.chain(workWeeks).filter(function(w) {
  68. // 过滤morning、afternoon、night其中有值为"1"表示有设置
  69. return (w.morning=="1"||w.afternoon=="1"||w.night=="1")
  70. }).map(function(w) {
  71. return $.extend({},workTime, w);
  72. }).value();
  73. },
  74. getWorktimeScheduling = function(){
  75. getReqPromise("doctor/work_scheduling/doctor_worktime",{doctor: doctorCode})
  76. .then(function(res) {
  77. if(res.status == 200) {
  78. var workTime = res.data.workTime,
  79. workWeeks = res.data.workWeeks,
  80. weeks = geWorktime(workTime, workWeeks);
  81. setWorktimeTable(weeks);
  82. } else {
  83. mui.toast(res.msg);
  84. }
  85. });
  86. },
  87. setWorktimeTableCell = function(data) {
  88. var $tr = $cycworktime.find('tr[data-fl="'+data.wid+'"]'),
  89. $time = $tr.find('td[data-type=1]'),
  90. $num = $tr.find('td[data-type=2]');
  91. $time.text(data.beginTime+"~"+data.endTime);
  92. $num.text(data.famousConsultTimes+"次")
  93. },
  94. setWorktimeTable = function(weeks) {
  95. _.each(weeks,function(w){
  96. setWorktimeTableCell({
  97. wid: w.week,
  98. beginTime: getBeginTime(w),
  99. endTime: getEndTime(w),
  100. famousConsultTimes: w.famousConsultTimes
  101. });
  102. });
  103. },
  104. showBaseInfo = function(){
  105. var url = server+"/doctor/baseinfo";
  106. var data={code:doctorCode};
  107. getReqPromise(url,data).then(function(res) {
  108. // TODO 示例后台返回医生数据
  109. //res = doctorData;
  110. doctorData = res;
  111. if(res.status == 200) {
  112. return res.data;
  113. } else {
  114. mui.toast(res.msg);
  115. return null;
  116. }
  117. }).then(function(data) {
  118. if(data) {
  119. var html = template("base_info_tmpl", data);
  120. $baseInfoWrapper.html(html);
  121. if(data.isFamous){// TODO 如果是进入的角色是名医
  122. $mingyiRoleWrapper.show();
  123. getWorktimeScheduling();
  124. }
  125. else// TODO 如果是进入的角色是其他医生
  126. {
  127. $qitaRoleWrapper.show();
  128. }
  129. }
  130. }).catch(function(e) {
  131. console && console.error(e);
  132. });
  133. },
  134. // 点击“设置名医”按钮的处理
  135. setMingyi = function() {
  136. // TODO 示例医生姓名数据
  137. var doctorName = doctorData.data.name;
  138. mui.confirm("是否确认将"+doctorName+"设置为名医?", "提示", ["取消", "确认"], function(e) {
  139. if(e.index == 0){
  140. // 点击“取消”处理
  141. } else {
  142. // 点击“确认”处理
  143. var url = server + "/doctor/setFamous";
  144. var params = {'doctorCode':doctorCode,'status':'1'};
  145. getReqPromise(url,params).then(function(res){
  146. if(res.status == 200) {
  147. mui.toast("设置名医成功");
  148. baseEnv.webview.reload(true);
  149. } else {
  150. mui.toast("设置名医失败");
  151. console && console.error(res);
  152. }
  153. }).catch(function(e){
  154. console && console.error(e);
  155. });
  156. }
  157. });
  158. },
  159. // 点击“取消名医”按钮的处理
  160. cancelMingyi = function() {
  161. // TODO 示例医生姓名数据
  162. var doctorName = doctorData.data.name;
  163. mui.confirm("取消名医后,该医生无法提供名医咨询服务,是否确认取消?", "", ["不了,谢谢","确认取消" ], function(e) {
  164. if(e.index == 0){
  165. // 点击“不了,谢谢”处理
  166. } else {
  167. // 点击“确认取消”处理
  168. // 点击“确认”处理
  169. var url = server + "/doctor/setFamous";
  170. var params = {'doctorCode':doctorCode,'status':'0'};
  171. getReqPromise(url,params).then(function(res){
  172. if(res.status == 200) {
  173. mui.toast("取消名医成功");
  174. baseEnv.webview.reload(true);
  175. } else {
  176. mui.toast("取消名医失败");
  177. console && console.error(res);
  178. }
  179. }).catch(function(e){
  180. console && console.error(e);
  181. });
  182. }
  183. });
  184. }
  185. // 绑定页面事件
  186. bindEvents = function () {
  187. };
  188. // 页面业务处理流程开始
  189. new Promise(function(resolve, reject) {
  190. // TODO 临时放开
  191. // resolve(true);
  192. mui.plusReady(function() {
  193. var old_back = mui.back;
  194. // mui.back = backToWebviewById('admin.html');
  195. // mui.back = function() {
  196. // var myglWebview = plus.webview.getWebviewById("mingyiguanli");
  197. // if(myglWebview) {
  198. // mui.fire(myglWebview,"refreshPage");
  199. // }
  200. // old_back();
  201. // }
  202. mui.back = backToWebviewById('admin.html');
  203. // plus已经准备好,可以往下执行
  204. resolve(true);
  205. });
  206. }).then(function() {
  207. // 获取基础环境信息
  208. return getBaseEnvPromise().then(function(env) {
  209. baseEnv = env;
  210. if(baseEnv.backTo) {
  211. backToWebviewById(baseEnv.backTo);
  212. }
  213. }).then(function() {
  214. // 获取登录医生信息
  215. baseInfo = getBaseInfoPromise();
  216. doctorCode = baseInfo.accessData.doctor;
  217. // 显示医生基本信息
  218. showBaseInfo();
  219. // 绑定页面事件
  220. bindEvents();
  221. })
  222. }).catch(function(e) {
  223. plus.nativeUI.closeWaiting();
  224. console && console.error(e);
  225. });
  226. template.helper("setPhoto", function(p) {
  227. return getImgUrl(p);
  228. });