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

3.2 KiB
Raw Blame History

aliChoice(速卖通全托管)配方 — 差最后一步,下一轮从「物流属性」接着做

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

已经打通的(alc_try1.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)
  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>
  • 它带一个 icon_edit2 link 的编辑入口 → 点开大概率是「物流属性」弹窗/抽屉
  • SKU 行里有 logisticAttrListJson / logisticAttrList 两个字段空着,应该就是它要填的
  • 下一步:点那个 icon_edit2,dump 弹窗结构(很可能要按类目选物流渠道/时效)

另一个未验证项:4 个规格组都是 0 选项

smtChoiceSkuAttrStore.formState.skuAttrs 有 4 组: Ships From(200007763) / Color(14) / Number of Pcs(200116262) / Bulk Buy(200483263), 但 options 都是 0(值在 _options 或要异步加载),DOM 里能看到值(卡其色/粉红/6Pc/Set…)。 未验证变种值是否必须选——先解物流属性,再看保存是否又冒出新的一层。

本轮顺手修好的共享 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('中国') 过滤