index.js 4.2 KB

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