index.js 4.9 KB

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