pagesPatientFn.ts 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /**
  2. * 页面公用逻辑函数
  3. */
  4. import { common } from '@/utils';
  5. import * as record from '@/pagesPatient/service/record/index';
  6. import getState from './getState';
  7. import { useIsToAuthPage, useGetDefaultMember } from '@/uni-app-base/hook';
  8. const app = getApp();
  9. export default {
  10. /**
  11. * 搜索科室、医生 历史医生 科室医生列表点击 进入clinic页面时的路径处理
  12. * page为 yyghClinicMsg 跳转到挂号页(需要判断有无就诊人)
  13. * page为 yyghDoctorList 跳转到医生列表页 (点击搜索科室时)
  14. * 从医生列表进入时 selectedIndex参数有值 需要带入挂号页
  15. * selectedIndex有值时必须传serviceId
  16. */
  17. async handleRouter(e: any, page: string, serviceId: string, selectedIndex?: any) {
  18. let item = e.currentTarget ? e.currentTarget.dataset.item : e;
  19. app.globalData.queryBean = item;
  20. let url = `/pagesPatient/st1/business/yygh/${page}/${page}?serviceId=${serviceId || 0}`;
  21. if (selectedIndex != undefined) {
  22. url = url + `&selectedIndex=${selectedIndex}`;
  23. }
  24. if (page == 'yyghClinicMsg') {
  25. /**跳转到挂号页面 需要判断就诊人 和公众号授权*/
  26. if (useIsToAuthPage()) {
  27. return;
  28. }
  29. // 获取当前设置的患者信息 判断是否可以无卡预约 取不同的值允许无卡预约或者默认就诊人信息 否者获取就诊卡信息,如当前默认就诊人无就诊卡,跳转选卡界面
  30. let lastOperatorResp = await useGetDefaultMember({
  31. cardType: app.globalData.withoutCard ? '' : '1',
  32. url: url,
  33. isKeepPage: true,
  34. });
  35. // 判断返回的操作人为null 代表跳转选择界面了
  36. if (lastOperatorResp === null) return;
  37. if (common.isEmpty(lastOperatorResp)) {
  38. app.globalData.toUrl = url; //保存添加成功后跳转地址
  39. app.globalData.cardType = app.globalData.withoutCard ? '' : '1'; //保存添加成功,要查询的默认人信息
  40. url = `/pagesPersonal/st1/business/patientManagement/addMember/addMember`;
  41. }
  42. }
  43. common.goToUrl(url);
  44. },
  45. /**
  46. * 判断是否有待支付订单
  47. */
  48. async hasOrderToBePaid(serviceId: string) {
  49. let queryData = {
  50. BeginDate: common.dateFormat(new Date(Date.now() - (30 * 24 * 60 * 60 * 1000))).formatYear, //开始时间
  51. EndDate: common.dateFormat(new Date(Date.now() + (24 * 60 * 60 * 1000))).formatYear, //结束时间加一天
  52. MemberId: app.globalData.currentUser && app.globalData.currentUser.memberId,
  53. Store: {
  54. cardEncryptionStore: app.globalData.currentUser.encryptionStore || '',
  55. baseMemberEncryptionStore: app.globalData.currentUser.baseMemberEncryptionStore
  56. },
  57. BizState: '0',
  58. OverState: '0',
  59. PayState: '0',
  60. ServiceId: serviceId,
  61. CardNo: '',
  62. CardType: '',
  63. Page: {
  64. PIndex: 0,
  65. PSize: 10
  66. }
  67. };
  68. let listResp = await record.orderListLocal(queryData);
  69. listResp = (listResp || []).filter((item: any) => item.IsOnlinePay == '1');
  70. if (!common.isEmpty(listResp)) {
  71. /**默认跳转预约挂号 预约挂号查询时传入0和009 与case判断不符 默认为预约记录路径*/
  72. let url = `/pagesPatient/st1/business/pay/payMent/payMent?orderId=${listResp[0].OrderId}`;
  73. switch (serviceId) {
  74. /**门诊住院充值 */
  75. case '006':
  76. case '007':
  77. url = `/pagesPatient/st1/business/record/topUpRecord/topUpRecord?serviceId=${serviceId}`;
  78. break;
  79. /**门诊结算 */
  80. case '011':
  81. case '008':
  82. url = `/pagesPatient/st1/business/record/settlementRecord/settlementRecord`;
  83. break;
  84. }
  85. common.showModal(`您当前存在待支付订单,请前往订单管理中进行处理,谢谢您的合作!`, () => {
  86. common.goToUrl(url);
  87. }, { cancelText: '取消' });
  88. return true;
  89. }
  90. return false;
  91. },
  92. /**
  93. * 获取订单列表
  94. * serviceId
  95. * pIndex 默认查询第0页
  96. */
  97. async orderListLocal(queryData: any) {
  98. let listResp = await record.orderListLocal(queryData);
  99. let showNoData = true;
  100. let list: any[] = [];
  101. if (!common.isEmpty(listResp)) {
  102. listResp.map((item: any) => {
  103. // 获取转换后转态
  104. item.StateObj = getState.getOrderStateName(item.ServiceId, item.IsOnlinePay, item.PayState, item.BizState, item.OverState);
  105. if (!common.isEmpty(item.OrderMemo)) {
  106. item.OrderMemo = JSON.parse(item.OrderMemo);
  107. item.OrderMemo.formatWeek = common.dateFormat(new Date(item.OrderMemo.RegDate)).week;
  108. }
  109. });
  110. }
  111. // 预约记录过滤已锁号
  112. listResp = (listResp || []).filter((item: any) => item && item.StateObj.stateName != '已锁号');
  113. if (!common.isEmpty(listResp)) {
  114. list = listResp;
  115. showNoData = false;
  116. }
  117. return {
  118. list,
  119. showNoData
  120. };
  121. },
  122. /**
  123. * 取消订单
  124. */
  125. cancelOrder(item: any, callback: any) {
  126. /**取消订单 */
  127. common.showModal('是否确定取消该订单?', async () => {
  128. let orderCancelData = {
  129. OperatorName: item.OperatorName,
  130. OperatorId: item.OperatorId,
  131. OrderId: item.OrderId
  132. };
  133. let resp = await record.orderCancel(orderCancelData, item.ServiceId);
  134. if (!common.isEmpty(resp)) {
  135. /**取消成功 */
  136. common.showModal('订单已取消', callback, {
  137. confirmText: '好的'
  138. });
  139. }
  140. }, {
  141. cancelText: '取消',
  142. confirmText: '确定'
  143. });
  144. }
  145. };