123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- import { getPreSettlementDetail, creatOrder } from './service';
- import history from '../../utils/history';
- import { tradeResult } from '../../service/common';
- Component({
- data: {
- preSettlementDetail: {},
- // 预结算详情内容
- inpatientId: '',
- // 住院记录id
- useMedicare: false,
- // 使用医保结算,如果使用医保结算需要医保电子凭证授权进行预结算
- payAuthNo: '',
- // 医保线上支付授权编码
- repay: '' // 是true为补交,false是退款
- },
- didMount() {
- // 获取参数住院IDhospitalDistrictId
- const optionsValue = JSON.parse(JSON.stringify(this.$page.data.query));
- const {
- inpatientId,
- medicareAble,
- payAuthNo,
- repay
- } = optionsValue;
- console.log(repay);
- this.setData({
- inpatientId,
- payAuthNo,
- useMedicare: medicareAble,
- repay
- }, () => {
- // 获取预结算详情内容
- this.getPreSettlementDetailInfo();
- });
- },
- methods: {
- /**
- * 获取预结算详情内容
- */
- async getPreSettlementDetailInfo() {
- const {
- inpatientId
- } = this.data;
- const params = {
- inpatientId
- };
- const preSettlementDetail = await getPreSettlementDetail(params);
- this.setData({
- preSettlementDetail
- });
- },
- /**
- * 立即结算 - 获取交易号/唤起收银台参数
- */
- async onImmediateSettlement() {
- const {
- inpatientId,
- useMedicare,
- payAuthNo
- } = this.data;
- const params = {
- inpatientId,
- useMedicare,
- payAuthNo
- };
- const resData = await creatOrder(params);
- const {
- orderStr,
- status
- } = resData || {}; // 如果生成订单失败,toast提示
- if (status === 'SUCCESS') {
- // 无须支付/有退款
- const settlementType = 'supportMedicalPreSettlement';
- history.push({
- query: {
- settlementType,
- inpatientId
- },
- title: '出院结算',
- pageType: 'discharge-settlement'
- });
- }
- if (status === 'WAIT_BUYER_PAY') {
- // 医保需支付
- // 医保需支付
- if (!orderStr) {
- my.showToast({
- type: 'fail',
- content: '生成结算订单失败!',
- duration: 2000
- });
- return;
- } // 如果生成订单成功,唤起支付(预授权orderStr)
- my.tradePay({
- orderStr,
- success: async res => {
- // const { resultCode } = res;
- // // 支付成功, 跳转至出院结算结果页
- // if (resultCode === '9000') {
- // // 跳转类型 supportMedicalPreSettlement - 支持医保,预结算-补交
- // const settlementType = 'supportMedicalPreSettlement';
- // history.push({
- // query: {
- // settlementType,
- // inpatientId,
- // },
- // title: '出院结算',
- // pageType: 'discharge-settlement',
- // });
- // return;
- // }
- // 4000 订单处理失败
- // 6001 用途中途取消支付
- // 6002 网络链接出错
- if (res.resultCode === '4000' || res.resultCode === '6002' || res.resultCode === '6001') {
- // 支付失败
- my.showToast({
- type: 'fail',
- content: res.memo || '订单支付失败'
- });
- } else {
- // 其他情况调用接口确认
- const payRes = await tradeResult({
- tradeNo: resData.tradeNo,
- resultCode: res.resultCode
- });
- if (payRes.status === 'TRADE_SUCCESS') {
- // 跳转类型 supportMedicalPreSettlement - 支持医保,预结算-补交
- const settlementType = 'supportMedicalPreSettlement';
- history.push({
- query: {
- settlementType,
- inpatientId
- },
- title: '出院结算',
- pageType: 'discharge-settlement'
- });
- } else {
- my.showToast({
- type: 'fail',
- content: res.memo || '订单支付失败'
- });
- }
- }
- }
- });
- }
- }
- }
- });
|