You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

228 lines
4.6 KiB

3 years ago
import {
cancelOrder,
takeOrder,
delOrder,
payOrder,
getSubscribeTemplate
} from "@/api/order";
import dialog from "@/utils/dialog";
import {
weappPay
} from "@/libs/wechat";
import {
_router
} from '@/utils'
export function cancelOrderHandle(orderId) {
return new Promise((resolve, reject) => {
uni.showModal({
title: '提示',
content: '确认取消该订单?',
success(res) {
if (res.confirm) {
cancelOrder(orderId)
.then(res => {
uni.showToast({
title: '取消成功',
icon: 'success',
duration: 2000
});
resolve(res);
})
.catch(err => {
uni.showToast({
title: '取消失败',
icon: 'none',
duration: 2000
});
reject(err);
});
} else if (res.cancel) {}
}
})
});
}
export function takeOrderHandle(orderId) {
return new Promise((resolve, reject) => {
takeOrder(orderId)
.then(res => {
uni.showToast({
title: '收货成功',
icon: 'success',
duration: 2000
});
resolve(res);
})
.catch(err => {
uni.showToast({
title: '收货失败',
icon: 'none',
duration: 2000
});
reject(err);
});
});
}
export function delOrderHandle(orderId) {
return new Promise((resolve, reject) => {
dialog.confirm({
mes: "确认删除该订单?",
opts() {
delOrder(orderId)
.then(res => {
uni.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
});
resolve(res);
})
.catch(err => {
uni.showToast({
title: '删除失败',
icon: 'none',
duration: 2000
});
reject(err);
});
}
});
});
}
// 使用订单号进行支付
export async function payOrderHandle(orderId, type, from) {
return new Promise((resolve, reject) => {
uni.showLoading({
title: "支付中",
mask: true
});
payOrder(orderId, type, from)
.then(async res => {
console.log(res)
await handleOrderPayResults(res.data, type)
resolve()
})
.catch(err => {
reject()
uni.hideLoading()
uni.showToast({
title: err.msg || err.response.data.msg || err.response.data.message || '订单支付失败',
icon: "none",
duration: 2000,
});
});
});
}
// 处理调用支付接口的逻辑
// @type create(创建订单)||pay(支付订单)
export function handleOrderPayResults(data, type, payType) {
return new Promise((resolve, reject) => {
uni.hideLoading()
switch (data.status) {
// 订单号已存在
case "ORDER_EXIST":
resolve()
break;
// 取消支付
case "EXTEND_ORDER":
uni.showToast({
title: data.msg,
icon: "none",
duration: 2000,
});
resolve()
goOrderDetails(data.result.orderId, type)
break;
case "PAY_DEFICIENCY":
break;
// 支付出错
case "PAY_ERROR":
uni.showToast({
title: data.msg,
icon: "none",
duration: 2000,
});
reject()
goOrderDetails(data.result.orderId, type)
break;
// 未传递支付环境
case "SUCCESS":
uni.showToast({
title: data.msg || data.payMsg,
icon: "none",
duration: 2000,
});
resolve()
goOrderDetails(data.result.orderId, type)
break;
// H5支付
case "WECHAT_H5_PAY":
goOrderDetails(data.result.orderId, type)
console.log(data)
setTimeout(() => {
resolve()
// #ifdef H5
// "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx15171343713577e9f3a418b0865ef90000&package=2547890641"
// location.href = data.result.jsConfig.mweb_url;
// #endif
}, 100);
break;
// 小程序支付
case "WECHAT_PAY":
weappPay(data.result.jsConfig).finally(() => {
resolve()
goOrderDetails(data.result.orderId, type)
}).then(res => {
// #ifdef MP-WEIXIN
subscribeMessage()
// #endif
})
break;
// APP支付
case "WECHAT_APP_PAY":
weappPay(data.result.jsConfig).finally(() => {
resolve()
goOrderDetails(data.result.orderId, type)
})
break;
}
})
}
export function subscribeMessage() {
// 调用订阅
console.log('调用订阅')
getSubscribeTemplate()
.then(res => {
uni.requestSubscribeMessage({
tmplIds: res.data,
success(res) {
console.log(res)
},
fail(error) {
console.log(error)
}
})
})
.catch(err => {});
}
export function goOrderDetails(id, type) {
// 创建订单时跳转到详情
if (type == 'create') {
console.log(_router)
_router.replace({
path: "/pages/order/OrderDetails/index",
query: {
id
},
});
}
}