index.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. import { payHistory } from "./service";
  2. import history from "../../utils/history";
  3. import { tradePay } from "../../utils/tradePay";
  4. import { reportCmPV_YL } from "../../utils/cloudMonitorHelper";
  5. import { getSubscribeAuth } from "../../../../core/utils/ywtService";
  6. Component({
  7. props: {},
  8. data: {
  9. empty: true,
  10. clinicCard: {},
  11. filterParams: {
  12. type: "9",
  13. cardNum: "",
  14. endTime: "",
  15. startTime: "",
  16. medicCards: [],
  17. timeShow: false,
  18. },
  19. /* 赛选项目 */
  20. typeOptions: [],
  21. statusOptions: [
  22. {
  23. value: "0",
  24. label: "待支付",
  25. },
  26. {
  27. value: "1",
  28. label: "已支付",
  29. },
  30. ],
  31. showAll: false,
  32. showTimeSelector: true,
  33. defaultLabel: "待支付",
  34. defaultName: "待支付",
  35. defaultStatus: "待支付",
  36. },
  37. didMount() {
  38. /* 服务预警,缴费记录查询 */
  39. reportCmPV_YL({
  40. title: "缴费记录查询",
  41. });
  42. },
  43. onInit() {},
  44. methods: {
  45. onFilterHandel(filters) {
  46. if (!this.hisPatientId) return;
  47. this.filters = filters;
  48. this.scrollRef.refresh();
  49. },
  50. saveRef(ref) {
  51. this.scrollRef = ref;
  52. },
  53. saveSubscribe(ref) {
  54. this.subscribe = ref;
  55. },
  56. getTimeChange(startTime, endTime) {
  57. if (!startTime || !endTime) {
  58. return true;
  59. }
  60. const time1 = Date.parse(startTime);
  61. const time2 = Date.parse(endTime);
  62. const timeDiff = time2 - time1;
  63. const duration = 15 * 24 * 60 * 60 * 1000;
  64. return timeDiff < 0 || timeDiff > duration;
  65. },
  66. onService(page) {
  67. const { status, startTime, endTime } = this.filters || {};
  68. if (!this.hisPatientId) return;
  69. if (status && status === "1") {
  70. if (!startTime || this.getTimeChange(startTime, endTime)) {
  71. my.showToast({
  72. type: "fail",
  73. content: "请选择15天以内的时间",
  74. duration: 1500,
  75. });
  76. }
  77. }
  78. return payHistory({
  79. ...this.filters,
  80. status: status || "0",
  81. ...page,
  82. hisPatientId: this.hisPatientId,
  83. });
  84. },
  85. onAutoFilter(patient) {
  86. if (patient) {
  87. this.hisPatientId = patient.hisPatientId;
  88. this.scrollRef.refresh();
  89. }
  90. },
  91. // 进入详情
  92. toDetail(e) {
  93. const {
  94. item: {
  95. type,
  96. outTradeNo,
  97. status,
  98. tradeNo,
  99. invoiceNo,
  100. hisPatientId,
  101. date,
  102. depName,
  103. amount,
  104. name,
  105. age,
  106. sex,
  107. prescribeDate,
  108. hisOrderNo,
  109. doctorName,
  110. doctorCode,
  111. total,
  112. hisClinicCode,
  113. deptName,
  114. },
  115. } = e.target.dataset;
  116. history.push({
  117. title: "缴费详情",
  118. query: {
  119. type: type || 0,
  120. outTradeNo,
  121. status,
  122. tradeNo,
  123. invoiceNo,
  124. hisPatientId,
  125. date,
  126. depName,
  127. amount,
  128. name,
  129. age,
  130. sex,
  131. prescribeDate,
  132. hisOrderNo,
  133. doctorName,
  134. doctorCode,
  135. total,
  136. hisClinicCode,
  137. deptName,
  138. },
  139. pageType: "hospital-payment-detail",
  140. });
  141. },
  142. // 付款
  143. async onPayment(e) {
  144. const { medicareBinded = false, item } = e.target.dataset; // 同意订阅消息后发起支付
  145. try {
  146. my.showLoading();
  147. // 获取智能消息推送授权
  148. await getSubscribeAuth();
  149. // 挂号
  150. if (item.type === 1) {
  151. await tradePay(
  152. {
  153. type: item.type,
  154. idNum: item.outTradeNo,
  155. depName: item.depName,
  156. },
  157. {
  158. tradeType: "Appointment",
  159. }
  160. );
  161. } else if (item.type === 2) {
  162. // 充值
  163. await tradePay(
  164. {
  165. type: item.type,
  166. idNum: item.outTradeNo,
  167. amount: item.amount,
  168. },
  169. {
  170. tradeType: "Appointment",
  171. }
  172. );
  173. } else {
  174. // 门诊订单
  175. await tradePay(
  176. {
  177. useBalance: !medicareBinded,
  178. useMedicare: medicareBinded,
  179. outTradeNo: item.outTradeNo,
  180. ...item,
  181. },
  182. {
  183. tradeType: "Outpatient",
  184. }
  185. );
  186. }
  187. } catch (error) {
  188. } finally {
  189. my.hideLoading();
  190. }
  191. // 支付成功去订单详情页
  192. this.toDetail({
  193. target: {
  194. dataset: {
  195. outTradeNo: item.outTradeNo,
  196. type: item.type ? item.type : 0,
  197. ...item,
  198. },
  199. },
  200. }); // 发起消息订阅
  201. // this.subscribe.subscribeMessage();
  202. },
  203. },
  204. });