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>
|
||||
/** 通用 idcsmart 商品配置:支持高级联动、多选、可重复数量项、级联树和操作系统分组。 */
|
||||
import "~/assets/styles/ConfigDiskCard.Dx9IqqQ_.css";
|
||||
import "~/assets/styles/PromoCodeField.qFEkB6Hm.css";
|
||||
import "~/assets/styles/ProductCustomFields.B2QMnPil.css";
|
||||
@@ -59,6 +60,7 @@ var ce = {
|
||||
"36:month": `triennially`,
|
||||
};
|
||||
function R(e, t = {}) {
|
||||
// 业务状态按普通配置 u、级联 d、重复数量 p 分开存储,再按现有后端契约组装。
|
||||
let n = useApi(),
|
||||
r = t.edit,
|
||||
a = ref(!r),
|
||||
@@ -104,6 +106,7 @@ function R(e, t = {}) {
|
||||
E = computed(() => T.value.options),
|
||||
D = !1;
|
||||
function ee() {
|
||||
// 高级规则可能修正多个关联值;D 防止同步深度 watch 在回写时递归执行同一轮规则。
|
||||
if (D) return;
|
||||
if (T.value.error) throw Error(T.value.error);
|
||||
let e = T.value.form;
|
||||
@@ -201,6 +204,7 @@ function R(e, t = {}) {
|
||||
return e.subs?.[0]?.id;
|
||||
}
|
||||
function ue() {
|
||||
// 只初始化可显示配置,按字段类型选择默认值;免费/一次性/后付费周期使用协议关键字。
|
||||
let e = l.value;
|
||||
if (!e) return;
|
||||
let t = {};
|
||||
@@ -294,6 +298,7 @@ function R(e, t = {}) {
|
||||
: ((p.value[String(e)] = n.filter((e, n) => n !== t)), H(), !0);
|
||||
}
|
||||
function B() {
|
||||
// 可重复数量项必须按数组提交,普通项保持原值类型,不能把所有配置都转换成字符串。
|
||||
let e = {};
|
||||
for (let t of l.value?.configoptions ?? []) {
|
||||
let n = u.value[String(t.id)];
|
||||
@@ -425,6 +430,7 @@ function R(e, t = {}) {
|
||||
for (let e of g.value) m.value[e.id] = String(f[e.id] ?? ``);
|
||||
}
|
||||
async function H() {
|
||||
// 先应用高级规则,再请求报价;请求序号与输入快照共同防止旧报价覆盖新配置。
|
||||
if ((L(), F || !a.value || !l.value || !z.value)) return;
|
||||
try {
|
||||
ee();
|
||||
@@ -470,6 +476,7 @@ function R(e, t = {}) {
|
||||
}
|
||||
}
|
||||
async function ve() {
|
||||
// 重读商品配置后初始化默认值、校验并回填购物车,最终才开放报价与提交。
|
||||
a.value = !1;
|
||||
let i = ++re,
|
||||
o = () => !F && i === re;
|
||||
@@ -510,6 +517,7 @@ function R(e, t = {}) {
|
||||
return U(e).find((e) => e.name === t)?.versions ?? [];
|
||||
}
|
||||
function U(e) {
|
||||
// 将供应商不同写法的系统名称归入显示分组,版本 ID 去重但仍保留原 ID 提交。
|
||||
let t = [
|
||||
[/^cent\s*os(?=$|[\s\d._-])/i, `CentOS`],
|
||||
[/^debian(?=$|[\s\d._-])/i, `Debian`],
|
||||
@@ -544,6 +552,7 @@ function R(e, t = {}) {
|
||||
return [...n.values()];
|
||||
}
|
||||
async function be() {
|
||||
// 加购/编辑前确认报价与自定义字段;级联项按 item_id + quantity 独立提交。
|
||||
(R(), ge());
|
||||
let t = {
|
||||
product_id: e,
|
||||
@@ -873,6 +882,7 @@ var le = {
|
||||
};
|
||||
}
|
||||
function $(e) {
|
||||
// 只有能无歧义解析容量/单位的存储选项才转换成容量控件,其余保留显式选项选择。
|
||||
if (
|
||||
e.option_type === `quantity` ||
|
||||
e.option_type === `quantity_range`
|
||||
|
||||
Reference in new issue
Block a user