doctor-list.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. (function() {
  2. Vue.component('doctor-list', {
  3. template: '<div class="ui-col-1 ml15 bgc-fff c-border p20">\
  4. <div class="c-f16 c-323232 mb20">医生列表</div>\
  5. <div class="ui-grid c-border p10 pb0 mt10" v-for="(doc, index) in doctorList">\
  6. <div class="ui-col-0 mr10">\
  7. <img v-bind:src="doc.photoUri" width="70" height="70" class="c-images-cycle">\
  8. </div>\
  9. <div class="ui-col-1 div-doctor-info">\
  10. <p>\
  11. <span class="c-f16 c-323232 c-bold mr10">{{doc.doctorName}}</span>\
  12. <span class="c-f14 c-323232 mr10">{{doc.lczcName}}</span>\
  13. <span class="c-f14 c-909090">{{doc.standardDeptName}}</span>\
  14. </p>\
  15. <p class="c-f14 c-909090">{{currentHosName}}</p>\
  16. <p class="c-f14 text-ellipsis">\
  17. <span class="c-909090">擅长:</span>\
  18. <span class="c-909090" v-bind:title="doc.skill">{{doc.skill}}</span>\
  19. </p>\
  20. </div>\
  21. <div class="ui-col-1 div-doctor-section" v-for="(arrange, aindex) in arrangeList" v-if="index==aindex">\
  22. <div class="div-left-btn c-hide" @click="preClick" v-show="leftBtn"></div>\
  23. <ul class="doctor-ul">\
  24. <li v-for="(arrg, arrIndex) in arrange" @click="goToDoctorPage(doc.doctorSn, arrg.arrangeID)">\
  25. <div class="div-doctor-item" :class="getColorClass(arrg.numberStatus,arrg.arrangeStatus)">\
  26. <div class="mt5">{{arrg.registerDate}}</div>\
  27. <div class="mt5">{{arrg.timeName}}</div>\
  28. <div class="div-doctor-type bgc-0ad8c8" v-if="arrg.numberStatus==1">预约</div>\
  29. <div class="div-doctor-type bgc-d1d1d1" v-if="arrg.numberStatus==2">已满</div>\
  30. <div class="div-doctor-type bgc-f0a65f" v-if="arrg.arrangeStatus==2">放号提醒</div>\
  31. <div class="div-doctor-type bgc-ff8787" v-if="arrg.arrangeStatus==4">停诊</div>\
  32. </div>\
  33. </li>\
  34. </ul>\
  35. <div class="div-right-active-btn" v-show="rightBtn" @click="nextClick" v-if="arrangeList[aindex].length>4"></div>\
  36. </div>\
  37. </div>\
  38. <div id="page" class="page_div fr"></div>\
  39. </div>',
  40. props: ["info"],
  41. data: function() {
  42. return {
  43. isInit: true,
  44. currentHospitalId: "",
  45. currentHosName: "",
  46. pageIndex: 1,
  47. pageSize: 10,
  48. totalPage: 0,
  49. hosDeptId: "",
  50. doctorList: [],
  51. arrangeList:[],
  52. leftBtn:false,
  53. rightBtn:false,
  54. }
  55. },
  56. mounted: function() {
  57. var vm = this;
  58. setTimeout(function() {
  59. vm.currentHospitalId = JSON.parse(vm.info).hospitalId;
  60. vm.currentHosName = JSON.parse(vm.info).hosName;
  61. vm.getDoctorList();
  62. }, 50);
  63. },
  64. methods: {
  65. getColorClass:function(numberStatus,arrangeStatus){
  66. var classZ="";
  67. if(numberStatus==1){
  68. classZ = "border-0ad8c8 c-0ad8c8";
  69. }else if(numberStatus==2){
  70. classZ = "border-d1d1d1 c-d1d1d1";
  71. }else if(arrangeStatus==2){
  72. classZ = "border-ff8787 c-ff8787";
  73. }else if(arrangeStatus==4){
  74. classZ = "border-f0a65f c-f0a65f";
  75. }
  76. return classZ;
  77. },
  78. //获取医生列表
  79. getDoctorList: function() {
  80. var vm = this;
  81. var params = {
  82. pageIndex: vm.pageIndex,
  83. pageSize: vm.pageSize,
  84. hospitalId: vm.currentHospitalId,
  85. hosDeptId: vm.hosDeptId
  86. }
  87. appointmentAPI.querySimpleDoctorList(params).then(function(res) {
  88. if(res.successFlg && res.obj.Code == "10000") {
  89. vm.doctorList = res.obj.Result;
  90. //获取医生排班数据
  91. vm.getArrangeWater(vm.doctorList);
  92. if(vm.isInit) {
  93. vm.totalPage = Math.ceil(res.obj.Total / vm.pageSize);
  94. //分页初始化
  95. $("#page").paging({
  96. pageNo: 1,
  97. totalPage: vm.totalPage,
  98. totalSize: res.obj.Total,
  99. callback: function(num) {
  100. vm.pageIndex = num; //回调的页数
  101. getDoctorList(vm);
  102. }
  103. })
  104. vm.isInit = false;
  105. }
  106. }
  107. })
  108. },
  109. //获取医生排班数据
  110. getArrangeWater: function(doctorData) {
  111. var vm = this,
  112. reqPromise = [];
  113. _.map(doctorData, function(data) {
  114. var params = {
  115. pageIndex: vm.pageIndex,
  116. pageSize: vm.pageSize,
  117. hospitalId: vm.currentHospitalId,
  118. hosDeptId: vm.hosDeptId,
  119. doctorSn: data.doctorSn, //医生编号
  120. registerDate: "" //就诊日期
  121. }
  122. reqPromise.push(appointmentAPI.queryGhtArrangeWater(params));
  123. })
  124. Promise.all(reqPromise).then(function(datas) {
  125. _.map(datas, function(data) {
  126. if(data.successFlg && data.obj.Code == "10000") {
  127. vm.arrangeList.push(data.obj.Result);
  128. }
  129. })
  130. vm.arrangeList = _.map(vm.arrangeList, function(data) {
  131. _.map(data, function(item) {
  132. item.registerDate = item.registerDate.substring(5,10).replace("-","/");
  133. item.timeName = item.timeId==1?"上午":item.timeId==2?"下午":"晚上";
  134. })
  135. return data;
  136. })
  137. $(".doctor-ul li:lt(4)").hide()
  138. });
  139. },
  140. preClick:function(){
  141. },
  142. nextClick:function(){
  143. $(event.target).prev().find("li:lt(4)").hide();
  144. },
  145. //跳转去医生号源页面
  146. goToDoctorPage: function(doctorSn, arrangeID){
  147. window.location.href = "select-time.html?doctorSn="+Base64.encode(doctorSn)+"&arrangeID="+arrangeID;
  148. }
  149. }
  150. });
  151. })()