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.
227 lines
4.6 KiB
227 lines
4.6 KiB
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 |
|
}, |
|
}); |
|
} |
|
}
|
|
|