49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
import { ref } from "vue";
|
|
function t(t) {
|
|
let n = ref(!1),
|
|
r = ref(!1),
|
|
i = ref(!1),
|
|
a = ref(``),
|
|
o = 0;
|
|
function s() {
|
|
(o++, (n.value = !1), (r.value = !1), (i.value = !1), (a.value = ``));
|
|
}
|
|
async function c(e) {
|
|
let s = ++o;
|
|
((n.value = !0), (r.value = !1), (i.value = !1), (a.value = ``));
|
|
try {
|
|
let n = await t(e);
|
|
if (s !== o) return;
|
|
if (
|
|
!n ||
|
|
typeof n != `object` ||
|
|
!(`allowed` in n) ||
|
|
typeof n.allowed != `boolean` ||
|
|
!(`message` in n) ||
|
|
typeof n.message != `string`
|
|
)
|
|
throw Error(`限购检查暂时不可用,请重试`);
|
|
((i.value = n.allowed),
|
|
(a.value = n.allowed
|
|
? ``
|
|
: n.message || `此商品已达到购买限制,请调整数量后重试`));
|
|
} catch (e) {
|
|
s === o &&
|
|
(a.value =
|
|
(e instanceof Error ? e.message : ``) ||
|
|
`限购检查暂时不可用,请重试`);
|
|
} finally {
|
|
s === o && ((n.value = !1), (r.value = !0));
|
|
}
|
|
}
|
|
return {
|
|
pending: n,
|
|
checked: r,
|
|
allowed: i,
|
|
message: a,
|
|
check: c,
|
|
reset: s,
|
|
};
|
|
}
|
|
export { t };
|