prescription-consulting.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. var request = getRequest(),
  2. sessionId = request.sessionId,
  3. patiCode,
  4. consultCode,
  5. prescriptionStatus,
  6. page = 1,
  7. members = [];
  8. var docInfo = window.localStorage.getItem("docInfo");
  9. docInfo = JSON.parse(docInfo);
  10. $(function(){
  11. //续方咨询的sessionId 格式 居民code+咨询code+咨询类型( 8 )
  12. patiCode = sessionId.split("_")[0];
  13. consultCode = sessionId.split("_")[1];
  14. getConsultStatus();
  15. //获得会话参与人员
  16. consultingAPI.getMembers(sessionId).then(function(res){
  17. members = res;
  18. getMessage(true);
  19. })
  20. getPrescriptionInfo();
  21. getPatientServiceType(); //获得患者的标签类型
  22. connectSocket();
  23. bindEvents();
  24. })
  25. function getConsultStatus(){
  26. var params = {consult: consultCode};
  27. consultingAPI.getConsultStatus({data: params}).then(function(res){
  28. if(res.status == 200){
  29. //咨询状态(0进行中,1已完成,-1患者取消,-2超时未响应自动关闭)
  30. if(res.data == 0) { //咨询未结束
  31. } else { //咨询已结束
  32. $('.info-panel').html('咨询求助已结束');
  33. $('.send-btn').addClass("disabled");
  34. $("#file_head").attr("disabled", true);
  35. }
  36. }else{
  37. }
  38. });
  39. }
  40. function getMessage(isInit){
  41. var params = {
  42. page: page,
  43. pagesize: 10,
  44. end_msg_id: '',
  45. start_msg_id: '',
  46. user: docInfo.code,
  47. session_id: sessionId,
  48. content_type: '',
  49. isoffset: ''
  50. }
  51. consultingAPI.getMessages(sessionId, {data: params}).then(function(res){
  52. var list = res;
  53. if (list && list.length > 0) {
  54. id = list[list.length - 1].id;
  55. var html = '',
  56. length = list.length;
  57. for (var j = list.length-1; j >= 0; j--) {
  58. var reply = list[j];
  59. html += formatMsg(reply);
  60. }
  61. if(isInit){
  62. $("#talkBox").append(html);
  63. $("#talkBox").slimScroll({
  64. height: '100%',
  65. width: '100%',
  66. alwaysVisible: true,
  67. start : 'bottom',
  68. }).bind('slimscroll', function(e, pos) {
  69. if(pos == 'top'){
  70. if(length == 10){
  71. page++;
  72. getMessage();
  73. }
  74. }
  75. });
  76. }else{
  77. $("#talkBox").prepend(html);
  78. $("#talkBox").slimScroll();
  79. }
  80. $(".fancybox").fancybox({openEffect:"none",closeEffect:"none"});
  81. plyr.setup();
  82. }
  83. });
  84. }
  85. function formatMsg(reply){
  86. try{
  87. reply = JSON.parse(reply);
  88. }catch(e){
  89. console.log(reply);
  90. }
  91. console.log(reply);
  92. var isSelf = (reply.sender_id==docInfo.code) ? true : false;
  93. var isSystem = reply.sender_id == 'system';
  94. var html = '';
  95. if(reply.content_type == 7 || reply.content_type == 10){
  96. var content = reply.content;
  97. if(isSystem){
  98. content = '居民24小时内未回复,系统自动结束咨询';
  99. }
  100. html = template('sys_msg_tmp', {content: content});
  101. }else{
  102. var member;
  103. for(var i=0; i<members.length; i++){
  104. if(reply.sender_id == members[i].id){
  105. member = members[i];
  106. break;
  107. }
  108. }
  109. var img = member.avatar;
  110. if((img.indexOf('http') == -1) && (img.indexOf("https") == -1)){
  111. img = member.is_patient ? 'img/p-default.png' : 'img/d-male.png';
  112. }
  113. var content = '';
  114. try{
  115. content = JSON.parse(reply.content);
  116. }catch(e){
  117. if(reply.content_type == 12){ //视频文件
  118. var arr = reply.content.split(",");
  119. content = {};
  120. content.img = arr[0];
  121. content.path = arr[1];
  122. content.time = arr[2];
  123. }else{
  124. content = reply.content;
  125. }
  126. }
  127. var obj = {
  128. isSelf: isSelf,
  129. time: new Date(reply.timestamp).format('yyyy-MM-dd HH:mm:ss'),
  130. type: reply.content_type,
  131. name: member.name,
  132. img: img,
  133. content: content
  134. };
  135. html = template('msg_tmp', obj);
  136. }
  137. return html;
  138. }
  139. function getPrescriptionInfo(){
  140. var params = { consult: consultCode};
  141. consultingAPI.getPrescriptionInfo({data: params}).then(function(res){
  142. if(res.status == 200){
  143. var html = template('prescriptionInfo_tmp', res.data);
  144. prescriptionStatus = res.data.status;
  145. var statusName = getStatusName(res.data.status);
  146. $(".status-btn").text(statusName);
  147. $("#prescriptionInfo").empty().append(html);
  148. $("#prescriptionInfo").slimscroll({
  149. height: 'calc(100% - 60px)',
  150. width: '100%'
  151. });
  152. }else{
  153. toastr && toastr.warning(res.msg);
  154. }
  155. });
  156. }
  157. function getPatientServiceType(){
  158. var params = {patient: patiCode};
  159. consultingAPI.getPatientServiceType({data: params}).then(function(res){
  160. if(res.status == 200){
  161. //slowDiseasePatient: 0 //0表示没有慢病服务类型,1表示有
  162. if(res.data.slowDiseasePatient == 0){
  163. $(".diseaseInfo").html("此居民未被标注【慢病】相关标签,请在i健康APP上核实");
  164. }else{
  165. var disease = "";
  166. for(var i=0; i<res.data.signFamilyServer.length; i++){
  167. var item = res.data.signFamilyServer[i];
  168. if(i>0){
  169. disease += ','+item.name;
  170. }else{
  171. disease += item.name;
  172. }
  173. }
  174. $(".diseaseInfo").text("该居民为"+disease+"患者");
  175. }
  176. }else{
  177. toastr && toastr.warning(res.msg);
  178. }
  179. });
  180. }
  181. function connectSocket(){
  182. jQuery.getScript(APIService.socketUrl+"/socket.io/socket.io.js").done(function() {
  183. var socket = io.connect(APIService.socketUrl );
  184. socket.emit('login', {
  185. userId: docInfo.code,
  186. password: docInfo.code,
  187. sessionId: sessionId,
  188. clientType: "doctor"
  189. });
  190. socket.on('message', function (data) {
  191. console.log(data);
  192. var html = formatMsg(data);
  193. $("#talkBox").append(html);
  194. $("#talkBox").slimscroll();
  195. });
  196. socket.on('error', function (data) {
  197. console.log(data)
  198. });
  199. socket.on('ack', function (data) {
  200. });
  201. }).fail(function() {
  202. // dialog({contentType:'tipsbox', skin:'bk-popup' ,bottom:true, content:"医生实时对话连接失败!"}).show();
  203. });
  204. }
  205. function sendMessage(contentType, content){
  206. var params = {
  207. sender_id: docInfo.code,
  208. sender_name: docInfo.name,
  209. content_type: contentType,
  210. content: content,
  211. view: 0
  212. };
  213. consultingAPI.sendMessage(sessionId, {data: params}).then(function(res){
  214. console.log(res);
  215. // var html = "";
  216. // for(var i=0; i<res.messages.length; i++){
  217. // var reply = res.messages[i];
  218. // console.log(reply);
  219. // html += formatMsg(reply);
  220. // }
  221. // $("#talkBox").append(html);
  222. // $("#talkBox").slimscroll({
  223. // scrollTo: this.height
  224. // });
  225. });
  226. }
  227. //结束咨询
  228. function finish(){
  229. //判断续方状态,如果未审核,则不可以结束咨询
  230. if(prescriptionStatus > 0 && prescriptionStatus < 21){
  231. dialog({
  232. content:'续方申请未审核,不能结束咨询',
  233. width: 460,
  234. okValue:'我知道了',
  235. ok: function() {
  236. return;
  237. }
  238. }).width(320).showModal();
  239. return false;
  240. }
  241. dialog({
  242. content:'结束咨询后,居民及所有医生均无法再次回复,是否确认继续结束?',
  243. width: '460px',
  244. okValue:'继续结束',
  245. ok: function() {
  246. var params = {consult: consultCode};
  247. consultingAPI.finishConsult({data: params}).then(function(res){
  248. if(res.status == 200) {
  249. var content = docInfo.name+'结束了咨询',
  250. html = template('sys_msg_tmp', {content: content});
  251. $("#talkBox").append(html);
  252. $("#talkBox").slimScroll();
  253. $('.info-panel').html("咨询求助已结束");
  254. $(".send-btn").addClass("disabled");
  255. $("#file_head").attr("disabled", true);
  256. toastr.success("已结束咨询");
  257. } else {
  258. toastr.error(res.msg);
  259. }
  260. })
  261. },
  262. cancelValue: '我再看看',
  263. cancel: function(){}
  264. }).showModal();
  265. }
  266. function bindEvents(){
  267. $(".send-btn").on('click', function(){
  268. var $this = $(this);
  269. if($this.hasClass("disabled")){
  270. return false;
  271. }else{
  272. var text = $.trim($("#input_content").text());
  273. if(text.length == 0){
  274. toastr.options = {
  275. "positionClass": "toast-top-center",
  276. }
  277. toastr.warning('发送内容不能为空');
  278. return false;
  279. }else{
  280. sendMessage(1, text);
  281. $("#input_content").text('');
  282. var obj = {
  283. content: text,
  284. content_type: '1',
  285. sender_id: docInfo.code,
  286. timestamp: new Date().getTime()
  287. }
  288. var html = formatMsg(obj);
  289. $("#talkBox").append(html);
  290. $("#talkBox").slimscroll({
  291. scrollTo: this.height + 80
  292. });
  293. }
  294. }
  295. });
  296. $("#file_head").on('change', function(){
  297. var file = this.files[0];
  298. //先上传图片去服务器,然后再发送消息
  299. var fd=new FormData();
  300. fd.append("action", "UploadVMKImagePath");
  301. fd.append("file", file); //加入文件对象
  302. fd.append("type", '2');
  303. var ajaxObj = {
  304. data: fd,
  305. cache: false,
  306. processData: false,
  307. contentType: false
  308. }
  309. consultingAPI.uploadImage(ajaxObj).then(function(res){
  310. if(res.status == 200){
  311. sendMessage(2, res.urls);
  312. var obj = {
  313. content: res.urls,
  314. content_type: '2',
  315. sender_id: docInfo.code,
  316. timestamp: new Date().getTime()
  317. }
  318. var html = formatMsg(obj);
  319. $("#talkBox").append(html);
  320. $("#talkBox").slimscroll({
  321. scrollTo: this.height + 80
  322. });
  323. }else{
  324. }
  325. });
  326. })
  327. }