index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. import { payDetail } from "./service";
  2. import { tradePay } from "../../utils/tradePay";
  3. import history from "../../utils/history";
  4. import { reportApi, reportCmPV_YL } from "../../utils/cloudMonitorHelper";
  5. import { getSubscribeAuth } from "../../../../core/utils/ywtService";
  6. Component({
  7. props: {},
  8. data: {
  9. order: {
  10. orderItems: [
  11. // {
  12. // itemName: '项目名称',
  13. // itemNum: 2,
  14. // amount: 999.99,
  15. // },
  16. ],
  17. depName: "",
  18. outTradeNo: "",
  19. tradeNo: "",
  20. type: null,
  21. // 1-挂号费订单 2-充值订单 3-诊间缴费订单
  22. userName: "",
  23. cardNum: "",
  24. amount: 0,
  25. createTime: "",
  26. payTime: "",
  27. payType: null,
  28. // 1-自费 2-医保 3-其他
  29. status: null,
  30. // 0-待支付 1-已支付 9-已取消
  31. medicareBinded: false,
  32. idNum: "",
  33. customInfo: "",
  34. payDetails: "",
  35. payDate: "",
  36. doctorName: "",
  37. reportRemind: "",
  38. checkRemind: "",
  39. medicineRemind: "",
  40. refundRemind: "",
  41. receiptRemind: "",
  42. },
  43. // 订单项
  44. fromItem: [
  45. {
  46. label: "就诊人",
  47. key: "name",
  48. },
  49. {
  50. label: "就诊卡号",
  51. key: "hisPatientId",
  52. },
  53. {
  54. label: "就诊科室",
  55. key: "deptName",
  56. },
  57. {
  58. label: "医生",
  59. key: "doctorName",
  60. },
  61. // {
  62. // label: "费用日期",
  63. // key: "payDate",
  64. // },
  65. // {
  66. // label: "支付单号",
  67. // key: "outTradeNo",
  68. // },
  69. {
  70. label: "开单时间",
  71. key: "prescribeDate",
  72. },
  73. // {
  74. // label: "付款时间",
  75. // key: "payTime",
  76. // },
  77. ],
  78. medicareExpand: false,
  79. expand: false,
  80. medicare: {
  81. total: 0,
  82. own: 0,
  83. detail: {},
  84. },
  85. checkRemind: {},
  86. },
  87. didMount() {
  88. this.payDetail(this.$page.data.query);
  89. /* 服务办结,门诊缴费 */
  90. reportApi("门诊缴费");
  91. /* 服务预警,门诊缴费 */
  92. reportCmPV_YL({
  93. title: "门诊缴费",
  94. });
  95. },
  96. methods: {
  97. saveSubscribe(ref) {
  98. this.subscribe = ref;
  99. },
  100. payDetail(send) {
  101. const { orderItems } = send;
  102. const status0OrderItems = JSON.parse(
  103. decodeURIComponent(orderItems || "")
  104. );
  105. delete send["orderItems"];
  106. payDetail(send).then((data) => {
  107. const payDetails = JSON.parse(data.payDetails || "{}");
  108. const detail = payDetails["医保支付"] || {};
  109. let total = 0;
  110. Object.entries(detail).forEach(([k, v]) => {
  111. detail[k] = numFix(v);
  112. total += v * 1;
  113. });
  114. this.setData({
  115. order: Object.assign({}, this.data.order, data, {
  116. orderItems: data.orderItems ? data.orderItems : status0OrderItems,
  117. }),
  118. medicare: {
  119. total: numFix(total),
  120. own: numFix(payDetails["自费支付金额"]) || "0.00",
  121. detail,
  122. },
  123. checkRemind: JSON.parse(data.checkRemind || "{}"),
  124. });
  125. });
  126. },
  127. // 查看更多
  128. openForm() {
  129. this.setData({
  130. expand: !this.data.expand,
  131. });
  132. },
  133. medicareExpand() {
  134. this.setData({
  135. medicareExpand: !this.data.medicareExpand,
  136. });
  137. },
  138. // 发起支付
  139. async onPay(e) {
  140. const { medicareBinded = false } = e.target.dataset;
  141. const { order: oreder } = this.data;
  142. try {
  143. my.showLoading();
  144. // 获取授权
  145. await getSubscribeAuth();
  146. if (oreder.type === 1) {
  147. await tradePay(
  148. {
  149. type: oreder.type,
  150. idNum: oreder.outTradeNo,
  151. depName: oreder.depName,
  152. },
  153. {
  154. tradeType: "Appointment",
  155. }
  156. );
  157. } else if (oreder.type === 2) {
  158. // 充值
  159. await tradePay(
  160. {
  161. type: oreder.type,
  162. idNum: oreder.outTradeNo,
  163. amount: oreder.amount,
  164. },
  165. {
  166. tradeType: "Appointment",
  167. }
  168. );
  169. } else {
  170. // 门诊订单
  171. const {
  172. hisPatientId,
  173. age,
  174. sex,
  175. orderId,
  176. hisOrderNo,
  177. amount,
  178. deptName,
  179. doctorName,
  180. doctorCode,
  181. total,
  182. hisClinicCode,
  183. name,
  184. prescribeDate,
  185. } = oreder;
  186. await tradePay(
  187. {
  188. useBalance: !medicareBinded,
  189. useMedicare: medicareBinded,
  190. outTradeNo: oreder.outTradeNo,
  191. hisPatientId,
  192. age,
  193. sex,
  194. orderId,
  195. hisOrderNo,
  196. amount,
  197. deptName,
  198. doctorName,
  199. doctorCode,
  200. total,
  201. hisClinicCode,
  202. name,
  203. prescribeDate,
  204. },
  205. {
  206. tradeType: "Outpatient",
  207. }
  208. );
  209. }
  210. } catch (error) {
  211. } finally {
  212. my.hideLoading();
  213. }
  214. // 支付成功刷新页面
  215. this.payDetail(this.$page.data.query); // 支付成功以后,发起消息订阅
  216. // this.subscribe.subscribeMessage();
  217. },
  218. hrefTo() {
  219. my.ap.navigateToAlipayPage({
  220. path: "alipays://platformapi/startapp?appId=77700284&page=pages/medical/index?chInfo=YY_xiaochengxu",
  221. });
  222. },
  223. toH5(e) {
  224. const { url } = e.target.dataset;
  225. history.toH5(url);
  226. },
  227. },
  228. });
  229. function numFix(val) {
  230. const num = val * 1;
  231. return num.toFixed(2);
  232. }