index.js 4.1 KB

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