diff --git a/src/components/pay.vue b/src/components/pay.vue
index 6b0a0ef..9f54b4d 100644
--- a/src/components/pay.vue
+++ b/src/components/pay.vue
@@ -2,6 +2,7 @@
import { ref, watch, nextTick } from "vue";
import { orderCreateApi, orderStatusApi, orderPayApi } from "@/api/store.js";
import { ElMessage } from "element-plus";
+import { audioplay } from "@/utils/audio.js";
const drawer = ref(false);
const active = ref(1);
@@ -39,7 +40,7 @@ const emit = defineEmits(["paySuccess"]);
const reLoad = ref(false);
-let timeout = 0; //刷新间隔
+let timecount = 0; //刷新间隔
const order_id = ref("");
// 支付
@@ -57,18 +58,28 @@ const handleEnter = () => {
source: 300,
})
.then((res) => {
- if (res.status==200&& res.message=='支付成功') {
+ if (res.status == 200 && res.message == "支付成功") {
drawer.value = false;
ElMessage({
message: res.message,
type: "success",
});
+ audioplay(res.data.message);
beforeClose();
} else {
- order_id.value = res.data.group_order_id;
- count.value = 0;
- timeout = 0;
- getOrderStatus(res.data.group_order_sn);
+ if (!res.data.group_order_sn) {
+ order_id.value = res.data.result.order_id;
+ loading.value = false;
+ return ElMessage({
+ message: res.message,
+ type: "error",
+ });
+ } else {
+ order_id.value = res.data.group_order_id;
+ count.value = 0;
+ timecount = 0;
+ getOrderStatus(res.data.group_order_sn);
+ }
}
})
.catch((err) => {
@@ -85,17 +96,18 @@ const orderPay = (id) => {
auth_code: input.value,
})
.then((res) => {
- if (res.data.status == "success") {
+ if (res.status == 200 && res.message == "支付成功") {
drawer.value = false;
ElMessage({
message: res.message,
type: "success",
});
+ audioplay(res.data.message);
beforeClose();
} else {
order_id.value = res.data.group_order_id;
count.value = 0;
- timeout = 0;
+ timecount = 0;
getOrderStatus(res.data.group_order_sn);
}
})
@@ -111,7 +123,7 @@ const orderPay = (id) => {
const count = ref(0); // 累计请求3次, 如果3次都失败, 则只能重新支付
const getOrderStatus = (id) => {
count.value++;
- timeout+=5000;
+ timecount += 5000;
orderStatusApi({
order_sn: id,
})
@@ -121,6 +133,7 @@ const getOrderStatus = (id) => {
message: res.message,
type: "success",
});
+ audioplay(res.data.message);
beforeClose();
} else {
ElMessage({
@@ -138,7 +151,7 @@ const getOrderStatus = (id) => {
if (reLoad.value && count.value < 3)
setTimeout(() => {
getOrderStatus(id);
- }, timeout);
+ }, 15000 - timecount > 0 ? 15000 - timecount : 0);
else {
input.value = "";
loading.value = false;
@@ -163,7 +176,7 @@ const loading = ref(false);
defineExpose({
drawer,
setForm,
- setRePay
+ setRePay,
});
diff --git a/src/utils/audio.js b/src/utils/audio.js
new file mode 100644
index 0000000..8dbdce3
--- /dev/null
+++ b/src/utils/audio.js
@@ -0,0 +1,5 @@
+
+export const audioplay = (text) => {
+ let ssu = new window.SpeechSynthesisUtterance(text);
+ window.speechSynthesis.speak(ssu);
+}
\ No newline at end of file
diff --git a/src/views/order/index.vue b/src/views/order/index.vue
index 154d0ce..f714567 100644
--- a/src/views/order/index.vue
+++ b/src/views/order/index.vue
@@ -5,6 +5,7 @@ import {
groupOrderListApi,
orderStatusApi,
orderLadingApi,
+ cartListApi
} from "@/api/store.js";
import { useUserStore } from "@/store/user.js";
import pay from "@/components/pay.vue";
@@ -39,6 +40,17 @@ const getOrderList = () => {
getOrderList();
+
+const cartCount = ref(0);
+const getCartList = () => {
+ cartListApi({
+ source: 300,
+ }).then((res) => {
+ cartCount.value = res.data.list?.length;
+ });
+};
+getCartList();
+
const changeTabPosition = (e) => {
where.value.page = 1;
getOrderList();
@@ -182,10 +194,11 @@ const goHome = ()=>{
提单前请清空购物车, 避免提单的商品与购物车商品混合, 请确保购物车内无数据后再进行提单