docs: annotate product configuration and quote lifecycles

This commit is contained in:
cieanyau committed 2026-11-06 00:29:13 +08:00
1 parent 3a53d2e58f
commit 60827b8bfb
7 files changed
+75

No files matched your search

+9
View File
@@ -1,4 +1,5 @@
<script>
/** 魔方物理服务器订购:型号、线路和操作系统决定周期与报价,支持型号选配和购物车编辑。 */
import "~/assets/styles/ConfigDiskCard.Dx9IqqQ_.css";
import "~/assets/styles/PromoCodeField.qFEkB6Hm.css";
import "~/assets/styles/ProductCustomFields.B2QMnPil.css";
@@ -51,6 +52,7 @@ import { r as cart_edit_r } from "~/lib/cart-edit.js";
import ConfigDiskCard from "~/components/config/ConfigDiskCard.vue";
import slider from "primevue/slider";
function z(e, t = {}, n = `mf_dcim`, r = {}) {
// 商品库存与型号同步库存可能同时生效;可购数量取所有有效限制中的最小值。
let i = useApi(),
s = r.edit,
l = ref(!s),
@@ -194,6 +196,7 @@ function z(e, t = {}, n = `mf_dcim`, r = {}) {
: ``;
};
function ue() {
// 报价和提交共用前置校验,型号/线路/镜像与正整数数量缺一不可。
if (!j.value || !ne.value || !D.value.image_id)
throw Error(`请选择型号、线路和操作系统`);
if (!Number.isInteger(C.value) || C.value < 1)
@@ -201,6 +204,7 @@ function z(e, t = {}, n = `mf_dcim`, r = {}) {
if (!ie.value) throw Error(`所选型号库存不足,请减少数量或选择其他型号`);
}
async function de(e) {
// 网络档位来自线路详情;回填购物车时验证旧档位仍合法,不静默替用户换配置。
let t = D.value.line_id;
if (ce.value) return !0;
(!W || W.id !== t) &&
@@ -258,6 +262,7 @@ function z(e, t = {}, n = `mf_dcim`, r = {}) {
};
}
function pe(e) {
// 回填期间 H 暂停“切换型号即清空选配”的 watch,防止用户原有选配被初始化误删。
let t =
e.config_options &&
typeof e.config_options == `object` &&
@@ -300,6 +305,7 @@ function z(e, t = {}, n = `mf_dcim`, r = {}) {
for (let e of k.value) O.value[e.id] = String(a[e.id] ?? ``);
}
async function me(t) {
// 报价响应必须同时匹配配置代次、请求序号和快照,且金额必须为有效非负数。
if (!l.value) return;
let n = ++se,
r = F.value;
@@ -330,6 +336,7 @@ function z(e, t = {}, n = `mf_dcim`, r = {}) {
}
}
async function he() {
// 型号/网络变化先重新确定可售周期,再报价;无可购周期不能继续显示旧报价。
let e = ++z;
(K(), (x.value = ``), (b.value = !0));
try {
@@ -442,6 +449,7 @@ function z(e, t = {}, n = `mf_dcim`, r = {}) {
}
}
async function ve(t) {
// 最终提交前调用 validate_settle,再检查配置未变化;正在提交的状态阻止重复下单。
if (s && t !== `cart`) throw Error(`请先保存配置,再返回购物车结算`);
if (E.value) throw Error(`正在提交,请勿重复操作`);
if ((ue(), product_fields_i(k.value, O.value), !G.value))
@@ -820,6 +828,7 @@ var B = {
: []),
]);
async function xt(e) {
// 如配置了服务条款链接,必须先同意;即时购买发 settled,编辑成功返回购物车。
if (st.value) {
((it.value = e), (at.value = ``), (ot.value = ``));
try {