Files
dianxiaomi-crossborder-play…/alichoice建品/RECIPE.md
T

4.2 KiB
Raw Blame History

aliChoice(速卖通全托管)配方 — 已跑通(批量进行中)

路由:https://www.dianxiaomi.com/web/smtChoice/add 列表:/web/smtChoice/{draft=采集箱, offline=待发布}

已经打通的(批量脚本 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 + CKEditor setData(见下)
  7. SKU 行 → smtChoiceSkuDataStore.formState.skuDataList[] 字段:skuPrice / skuCode / scItemBarCode / packageWeight / packageLength / packageWidth / packageHeight / logisticAttrListJson / logisticAttrList / imageList
  8. 必填类目属性(品牌 / 高关注化学品 / 产地)→ fillRequiredSelects() 现已能自动填 (产地会输「中国」过滤后选 中国大陆)

✅ 「请选择物流属性」已解(保存两遍)

保存时钩子给 MYJ.error: 校验失败,DOM 里是一个没有 label 的报错块:

<div class="ant-form-item-has-error">
  <span></span><i class="iconfont icon_edit2 link ml-4"></i>
  <div class="text-red-500 font-size-12 mr-[20px]">请选择物流属性</div>
</div>

解法(保存两遍):

  1. 先点一次保存 → 报错块出现
  2. 点报错块里的 i.icon_edit2 → 弹出「修改物流属性」modal(20 个复选框,按大类分组: 禁运 / 普货 / 纯电 / 强磁 / 特货(液体·粉末·膏体·其他) / 特敏 / 内电(8 种电池) / 外电 / 弱磁)
  3. 勾 普货 → 点「确定」→ 再点保存 → 您的产品已保存到「待发布」

对应 SKU 行的 logisticAttrListJson / logisticAttrList 两个字段。

✅ PC端描述是 CKEditor,写 textarea 没用

DOM 里那个 TEXTAREA 是 display:none 的藏匿字段,真实控件是 CKEditor (aria-label「所见即所得编辑器, cked…」)。两种赋值方式,实测都写上才稳:

// 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 上一个必填属性都填不上,三个原因,都已修:

  1. select 分支的必填判断只看 label.ant-form-item-required,而速卖通系的属性是 .attr-label.required(label 上还常带 * 前缀)→ 现在三种标记都认
  2. 容器项「产品属性」本身也带 *,会被当成一个字段去点 → 现在跳过含嵌套 .ant-form-item 的项
  3. 点开下拉后按 .pop() 取最后一个可见下拉,容易读到上一个字段残留的列表 (曾把化学物列表当国家列表)→ 现在①每次点前先 Esc ②按与点击点的距离挑下拉 ③产地/Origin 先 Input.insertText('中国') 过滤