aliChoice 跑通并开始批量:物流属性(保存两遍)+CKEditor 描述;配方与批量脚本入库

This commit is contained in:
admin9webs committed 2026-09-20 21:40:42 +08:00
1 parent 924ca86fdc
commit 0466698490
5 files changed
+363 -10

No files matched your search

+28 -9
View File
@@ -1,21 +1,21 @@
# aliChoice(速卖通全托管)配方 — 差最后一步,下一轮从「物流属性」接着做
# aliChoice(速卖通全托管)配方 — **已跑通**(批量进行中)
路由:`https://www.dianxiaomi.com/web/smtChoice/add` 列表:`/web/smtChoice/{draft=采集箱, offline=待发布}`
## 已经打通的(`alc_try1.mjs`,一条完整填到最后一步)
## 已经打通的(批量脚本 `alcbatch.mjs`,单条已验证保存成功)
1. **店铺**:`店铺名称` 下拉(实测 2 家:`XYZ Store` / `UniStyle Bag Store`),取第一家 → `shopId=4393191`
2. **备货类型**:下拉 `国内履约` / `海外备货` → 取第一个(→ `productType='1'`)
3. **类目**:`选择分类` 弹窗 → 用 `sh_build.selectCategory(c, cat_kw, cat_kw)`(与 SHEIN/Temu 同一套)
4. **标题** → `smtChoiceAddBasicStore.formState.subject`(⚠️ **不是 Joom 的 `name`**)
5. **主图** → `smtChoiceAddProductStore.formState.mainImage[]`(吃 `{url,imgUrl,name,width,height}`)
6. **PC端描述** → `smtChoiceAddStore.describeInfoData.detail`(DOM 里是个 `TEXTAREA`)
6. **PC端描述** → `smtChoiceAddStore.describeInfoData.detail` + **CKEditor setData**(见下)
7. **SKU 行** → `smtChoiceSkuDataStore.formState.skuDataList[]`
字段:`skuPrice / skuCode / scItemBarCode / packageWeight / packageLength / packageWidth /
packageHeight / logisticAttrListJson / logisticAttrList / imageList`
8. **必填类目属性**(品牌 / 高关注化学品 / 产地)→ `fillRequiredSelects()` 现已能自动填
(产地会输「中国」过滤后选 `中国大陆`)
## ⛔ 当前唯一卡点:「请选择物流属性」
## ✅ 「请选择物流属性」已解(保存两遍)
保存时钩子给 `MYJ.error: 校验失败`,DOM 里是一个**没有 label** 的报错块:
```html
@@ -25,15 +25,34 @@
</div>
```
- 它带一个 `icon_edit2 link` 的编辑入口 → 点开大概率是「物流属性」弹窗/抽屉
- SKU 行里有 `logisticAttrListJson` / `logisticAttrList` 两个字段空着,应该就是它要填的
- 下一步:点那个 `icon_edit2`,dump 弹窗结构(很可能要按类目选物流渠道/时效)
解法(**保存两遍**):
1. 先点一次保存 → 报错块出现
2. 点报错块里的 `i.icon_edit2` → 弹出「修改物流属性」modal(20 个复选框,按大类分组:
禁运 / 普货 / 纯电 / 强磁 / 特货(液体·粉末·膏体·其他) / 特敏 / 内电(8 种电池) / 外电 / 弱磁)
3. 勾 **普货** → 点「确定」→ 再点保存 → `您的产品已保存到「待发布」`
## 另一个未验证项:4 个规格组都是 0 选项
对应 SKU 行的 `logisticAttrListJson` / `logisticAttrList` 两个字段。
## ✅ PC端描述是 CKEditor,写 textarea 没用
DOM 里那个 `TEXTAREA` 是 `display:none` 的藏匿字段,真实控件是 **CKEditor**
(aria-label「所见即所得编辑器, cked…」)。两种赋值方式,实测都写上才稳:
```js
// 1) 给编辑器实例 setData(本例 window.CKEDITOR.instances 有 2 个实例)
Object.values(window.CKEDITOR.instances).forEach(x => x.setData(html));
// 2) 同时写 store
pinia._s.get('smtChoiceAddStore').$state.describeInfoData.detail = html;
```
## 另一个未验证项:4 个规格组都是 0 选项## 另一个未验证项:4 个规格组都是 0 选项
`smtChoiceSkuAttrStore.formState.skuAttrs` 有 4 组:
`Ships From(200007763) / Color(14) / Number of Pcs(200116262) / Bulk Buy(200483263)`,
但 `options` 都是 0(值在 `_options` 或要异步加载),DOM 里能看到值(卡其色/粉红/6Pc/Set…)。
**未验证变种值是否必须选**——先解物流属性,再看保存是否又冒出新的一层。
**实测:不选变种值也能保存成功**(保存链路里没有因为变种报错),所以批量里先不选。
## 单条顺序(批量脚本里的固定顺序)
`店铺 → 备货类型 → 类目 → 标题/主图/SKU行 → 必填属性(品牌/高关注化学品/产地) → PC端描述(CKEditor)
→ 保存① → 物流属性(普货) → 保存② → 待发布`
## 本轮顺手修好的共享 bug(`shein建品/sh_build.mjs` 的 `fillRequiredSelects`)
之前它在 aliChoice 上**一个必填属性都填不上**,三个原因,都已修: