docs: annotate product configuration and quote lifecycles
This commit is contained in:
1 parent
3a53d2e58f
commit
60827b8bfb
7 files changed
+75
No files matched your search
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user