From 948b46e7c9bf456cc60a98c47a71c5ddf9193e9b Mon Sep 17 00:00:00 2001 From: moyayu <1623253835@qq.com> Date: Fri, 24 Apr 2026 17:48:12 +0800 Subject: [PATCH] This merge bundles multiple fixes and UX improvements across decoration, routing/path picker behavior, i18n, goods/category management, coupon detail filtering, and system config pages. --- .../2026-04-20-coupon-mobile-erp-tip.md | 19 +++++++ ...026-04-21-sale-category-platform-column.md | 12 +++++ ...6-04-21-self-products-sync-confirm-text.md | 16 ++++++ .../2026-04-23-goodsCard-decorate.md | 19 +++++++ .../2026-04-23-sale-category-show-front.md | 11 ++++ .cursor/commit-summary/2026-04-23-summary.md | 20 +++++++ .cursor/commit-summary/last-summary.md | 13 ++--- .gitignore | 1 + src/components/sp-decorate/index.vue | 26 +++++++-- .../sp-picker/pickers/picker-path.vue | 15 ++---- src/i18n/locales/ar.json | 6 ++- src/i18n/locales/en.json | 6 ++- src/i18n/locales/zh-CN.json | 6 ++- src/view/decorate/comps/configsetting.js | 1 + src/view/decorate/index.vue | 39 +++++++++----- .../decorate/wgts/wgt_goodsCard/config.js | 17 ++++-- .../decorate/wgts/wgt_goodsCard/index.vue | 53 +++++++++---------- src/view/goods/saleCategory.vue | 6 +-- src/view/mall/goods/physical/list.vue | 2 +- src/view/member/cardticket/detail/receive.vue | 24 ++++++++- src/view/member/cardticket/detail/used.vue | 24 ++++++++- src/view/pc/pctemplate/index.vue | 20 ++++--- .../settings/systemConfig/jstSetting.vue | 7 +++ .../settings/systemConfig/wdtSetting.vue | 7 +++ 24 files changed, 282 insertions(+), 88 deletions(-) create mode 100644 .cursor/commit-summary/2026-04-20-coupon-mobile-erp-tip.md create mode 100644 .cursor/commit-summary/2026-04-21-sale-category-platform-column.md create mode 100644 .cursor/commit-summary/2026-04-21-self-products-sync-confirm-text.md create mode 100644 .cursor/commit-summary/2026-04-23-goodsCard-decorate.md create mode 100644 .cursor/commit-summary/2026-04-23-sale-category-show-front.md create mode 100644 .cursor/commit-summary/2026-04-23-summary.md diff --git a/.cursor/commit-summary/2026-04-20-coupon-mobile-erp-tip.md b/.cursor/commit-summary/2026-04-20-coupon-mobile-erp-tip.md new file mode 100644 index 0000000..0886929 --- /dev/null +++ b/.cursor/commit-summary/2026-04-20-coupon-mobile-erp-tip.md @@ -0,0 +1,19 @@ +## 本次变更总结 + +**时间**: 2026-04-20 + +**涉及文件**: +- `src/view/member/cardticket/detail/receive.vue` (修改) +- `src/view/member/cardticket/detail/used.vue` (修改) +- `src/views/settings/systemConfig/wdtSetting.vue` (修改) +- `src/views/settings/systemConfig/jstSetting.vue` (修改) +- `src/i18n/locales/zh-CN.json` (修改) +- `src/i18n/locales/en.json` (修改) +- `src/i18n/locales/ar.json` (修改) + +**主要改动**: +- 优惠券管理「查看优惠券数据」两个子列表新增手机号查询能力,支持输入手机号后搜索、回车搜索和清空后重查。 +- 旺店通与聚水潭系统配置页顶部新增服务商模式提示,采用 `SpPlatformTip` 方式展示并与现有页面风格对齐。 +- 补充三语文案键 `59579ae2.c5d4d8` 与 `20f6ad88.c5d4d8`,用于两处服务商提示文案。 + +**一句话概括**: feat: 优惠券数据列表支持手机号查询并补充 ERP 服务商提示 diff --git a/.cursor/commit-summary/2026-04-21-sale-category-platform-column.md b/.cursor/commit-summary/2026-04-21-sale-category-platform-column.md new file mode 100644 index 0000000..1509b20 --- /dev/null +++ b/.cursor/commit-summary/2026-04-21-sale-category-platform-column.md @@ -0,0 +1,12 @@ +## 本次变更总结 + +**时间**: 2026-04-21 + +**涉及文件**: +- `src/view/goods/saleCategory.vue` (修改) + +**主要改动**: +- 在销售分类列表中移除平台端限制条件,原本仅非平台端显示的操作列改为全端可见。 +- 通过删除 `v-if="!VERSION_PLATFORM()"`,让平台账号也能看到该列中的相关操作入口。 + +**一句话概括**: fix: 放开平台端销售分类列表操作列显示限制 diff --git a/.cursor/commit-summary/2026-04-21-self-products-sync-confirm-text.md b/.cursor/commit-summary/2026-04-21-self-products-sync-confirm-text.md new file mode 100644 index 0000000..76b3e50 --- /dev/null +++ b/.cursor/commit-summary/2026-04-21-self-products-sync-confirm-text.md @@ -0,0 +1,16 @@ +## 本次变更总结 + +**时间**: 2026-04-21 + +**涉及文件**: +- `src/view/mall/goods/physical/list.vue` (修改) +- `src/i18n/locales/zh-CN.json` (修改) +- `src/i18n/locales/en.json` (修改) +- `src/i18n/locales/ar.json` (修改) + +**主要改动**: +- 修复“商品管理 > 自营商品”中点击“同步至所有店铺”时确认弹窗文案错误(显示为“审核失败”)的问题。 +- 新增独立 i18n key `6f19b2ab.6b3d7e` 作为同步确认文案,避免复用冲突 key 导致串文案。 +- 同步补齐中/英/阿三语文案,并将确认框标题改为稳定的提示文案 key。 + +**一句话概括**: fix: 修复自营商品同步所有店铺时弹窗误显示审核失败 diff --git a/.cursor/commit-summary/2026-04-23-goodsCard-decorate.md b/.cursor/commit-summary/2026-04-23-goodsCard-decorate.md new file mode 100644 index 0000000..539782d --- /dev/null +++ b/.cursor/commit-summary/2026-04-23-goodsCard-decorate.md @@ -0,0 +1,19 @@ +## 本次变更总结 + +**时间**: 2026-04-23 + +**涉及文件**: +- `src/components/sp-decorate/index.vue` (修改) +- `src/view/decorate/index.vue` (修改) +- `src/view/decorate/comps/configsetting.js` (修改) +- `src/view/decorate/wgts/wgt_goodsCard/config.js` (修改) +- `src/view/decorate/wgts/wgt_goodsCard/index.vue` (修改) + +**主要改动**: +- **落库名与组件名对齐**:`goodsCard` 挂件 Vue `name` 改为 `goodsCard`,与 `config.name` 一致,避免与商城 `Goods` 混淆;保存/预览通过 `findWidgetForPersistedName` 用 `config.name` 解析挂件。 +- **装修保存与回显**:`SpDecorate`、`decorate/index` 的 `onSave` / `onSaveTemplate` 等改为按 `persistedName` 查找挂件并调用 `transformOut`,场景 `1005` 下旧数据 `goods` 兼容映射到 `goodsCard`。 +- **商品卡片配置**:`transformIn`/`transformOut` 接入 `transformInBase`、`createTransformOutBase`,正确读写外边距/内边距及内外背景;移除误标为「组件间距」的 `padded` 开关项。 +- **商品卡片 UI**:去掉标题区与 `padded` 相关样式;卡片块用 `getInnerStyle` + 默认白底与圆角;列表项信息区改为纵向 flex 布局。 +- **全局样式注入**:`configsetting` 为 `goodsCard` 增加与 `goods` 相同的内边距(`innerPadding`)自动配置。 + +**一句话概括**: fix: 软文商品卡片 goodsCard 落库解析、样式转换与预览保存一致 diff --git a/.cursor/commit-summary/2026-04-23-sale-category-show-front.md b/.cursor/commit-summary/2026-04-23-sale-category-show-front.md new file mode 100644 index 0000000..c6919b5 --- /dev/null +++ b/.cursor/commit-summary/2026-04-23-sale-category-show-front.md @@ -0,0 +1,11 @@ +## 本次变更总结 + +**时间**: 2026-04-23 + +**涉及文件**: +- `src/view/goods/saleCategory.vue` (修改) + +**主要改动**: +- 销售分类编辑表单中「前台是否显示」(`is_show_front`) 表单项去掉 `isShow: () => !this.VERSION_PLATFORM()`,**平台版**下也会展示该开关,与标准版一致可配置。 + +**一句话概括**: fix: 销售分类「前台是否显示」在平台版不再隐藏 diff --git a/.cursor/commit-summary/2026-04-23-summary.md b/.cursor/commit-summary/2026-04-23-summary.md new file mode 100644 index 0000000..a799420 --- /dev/null +++ b/.cursor/commit-summary/2026-04-23-summary.md @@ -0,0 +1,20 @@ +## 本次变更总结 + +**时间**: 2026-04-23 + +**涉及文件**: +- `src/components/sp-picker/pickers/picker-path.vue` (修改) +- `src/components/sp-decorate/index.vue` (修改) +- `src/view/decorate/index.vue` (修改) +- `src/view/decorate/wgts/wgt_goodsCard/config.js` (修改) +- `src/i18n/locales/zh-CN.json` (修改) +- `src/i18n/locales/en.json` (修改) +- `src/i18n/locales/ar.json` (修改) + +**主要改动**: +- **设置路径弹窗**:移除「文章」Tab 及 `PickerArticle`;历史 `tab === 'article'` 时打开弹窗默认切到「商品」。 +- **软文装修预览**:`SpDecorate` 增加 `findWidgetForPersistedName`,scene 1005 下旧数据 `name: goods` 映射为 `GoodsCard` 挂件。 +- **商品卡片挂件**:`config.name` 由 `goods` 改为 `goodsCard`,与商城商品列表挂件区分;装修左侧分类 `functionalNames` 增加 `goodsCard`。 +- **文案**:商城商品挂件 `8865eba5.9897d8` 改为「商品列表」等;新增 `8f58e7cb.d4e5f6`「商品卡片(正文)」三语(若 `wgt_goodsCard` 已改用该 key 则用于展示名)。 + +**一句话概括**: feat: 路径弹窗下线文章;软文商品卡片与商品列表区分及 i18n diff --git a/.cursor/commit-summary/last-summary.md b/.cursor/commit-summary/last-summary.md index 844e7c3..dc3e825 100644 --- a/.cursor/commit-summary/last-summary.md +++ b/.cursor/commit-summary/last-summary.md @@ -1,12 +1,7 @@ -## 本次变更总结 +## 最近一次变更(2026-04-23) -**时间**: 2026-04-16 +**一句话概括**: fix: 软文商品卡片 goodsCard 落库解析、样式转换与预览保存一致 -**涉及文件**: -- `src/i18n/locales/zh-CN.json`、`en.json`、`ar.json` +**要点**: `findWidgetForPersistedName` 统一按 `config.name` 找挂件;`goodsCard` 组件名与 transform 对齐;内层样式走 `getInnerStyle`;去掉「组件间距」开关与标题区 UI。 -**主要改动**: -- `223cc8af.e366cc` → 切换语言(及 en/ar 对应译文)。 -- `d81d8932.4f2c29` → 设置路径(路径选择器标题,三语与语义对齐)。 - -**一句话概括**: i18n: 路径弹窗标题恢复为设置路径;链接项 223cc8af 改为切换语言 +详见: `.cursor/commit-summary/2026-04-23-goodsCard-decorate.md` diff --git a/.gitignore b/.gitignore index 1ab903f..85ad0ab 100755 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ release.* AGENTS.md openspec/ dist/ +.cursor/commit-summary/ diff --git a/src/components/sp-decorate/index.vue b/src/components/sp-decorate/index.vue index df2af51..4fd9152 100755 --- a/src/components/sp-decorate/index.vue +++ b/src/components/sp-decorate/index.vue @@ -133,10 +133,26 @@ export default { this.registerWgts() }, methods: { + findWidgetForPersistedName(persistedName) { + const key = String(persistedName || '').toLowerCase() + if (!key || !this.widgets.length) return null + let w = this.widgets.find((item) => (item.name || '').toLowerCase() === key) + if (w) return w + w = this.widgets.find((item) => String(item.config?.name || '').toLowerCase() === key) + if (w) return w + if (String(this.scene) === '1005' && key === 'goods') { + return ( + this.widgets.find((item) => String(item.config?.name || '').toLowerCase() === 'goodscard') || + this.widgets.find((item) => (item.name || '').toLowerCase() === 'goods') || + null + ) + } + return null + }, getWgtsValue(val) { const filterWidget = [] val.forEach((k) => { - const wgt = this.widgets.find((item) => item.name.toLowerCase() == k.name.toLowerCase()) + const wgt = this.findWidgetForPersistedName(k.name) if (wgt) { const wgtInitParams = this.cloneDefaultField(wgt) const params = wgt.config.transformIn(k) @@ -175,10 +191,10 @@ export default { }, onSave(data) { const result = data.map((item) => { - const { transformOut } = this.widgets.find( - (wgt) => wgt.name.toLowerCase() == item.name.toLowerCase() - )?.config - return transformOut(item) + // item.name 为 config.name(如 goodsCard),与 Vue 组件名(如 Goods)可能不一致,需与 getWgtsValue 相同解析 + const wgt = this.findWidgetForPersistedName(item.name) + const { transformOut } = wgt?.config || {} + return transformOut ? transformOut(item) : item }) this.$emit('input', result) this.$emit('change', result) // 导购货架,传change事件,为了点击保存直接调接口,页面不需要加保存按钮 diff --git a/src/components/sp-picker/pickers/picker-path.vue b/src/components/sp-picker/pickers/picker-path.vue index ad34555..f047c90 100755 --- a/src/components/sp-picker/pickers/picker-path.vue +++ b/src/components/sp-picker/pickers/picker-path.vue @@ -62,9 +62,6 @@ - - - @@ -118,7 +115,6 @@ import PickerGoods from './picker-goods' import PickerSaleCategory from './picker-saleCategory' import PickerCategory from './picker-category' import PickerTag from './picker-tag' -import PickerArticle from './picker-article' import PickerPlanting from './picker-planting' import PickerLink from './picker-link' import PickerMarketing from './picker-marketing' @@ -143,7 +139,6 @@ export default { PickerSaleCategory, PickerCategory, PickerTag, - PickerArticle, PickerPlanting, PickerLink, PickerMarketing, @@ -172,9 +167,11 @@ export default { }, data() { const { tab } = this.value + // 已下线「文章」路径;历史数据若仍为 article,打开弹窗时落到默认 tab + const safeTab = tab === 'article' ? 'goods' : tab return { pathValue: null, - tabValue: tab || 'goods' + tabValue: safeTab || 'goods' } }, methods: { @@ -229,12 +226,6 @@ export default { title: 'tag_name' }) }, - article: () => { - return pickBy(data, { - id: 'article_id', - title: 'title' - }) - }, planting: () => { return pickBy(data, { id: 'article_id', diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index 3c7412b..0314aaf 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json @@ -4839,6 +4839,7 @@ "59579ae2.be5fbb": "حفظ", "59579ae2.53c3dd": "تفعيل", "59579ae2.3b1083": "تم الحفظ بنجاح", + "59579ae2.c5d4d8": "وضع واجهة مزود الخدمة، يُرجى التواصل مع ShopeX لاستكمال إعداد الربط", "fea687f2.be5fbb": "حفظ", "fea687f2.aea08c": "بيان خصوصية متجر PC", "fea687f2.ae004d": "بيان خصوصية متجر H5", @@ -7672,6 +7673,7 @@ "d41d8cd9.s3t4u5": "قيد المراجعة", "d41d8cd9.v6w7x8": "تمت الموافقة", "d41d8cd9.y9z0a1": "فشلت المراجعة", + "6f19b2ab.6b3d7e": "هل تريد مزامنة جميع المنتجات إلى المتاجر؟", "d41d8cd9.b2c3d4": "رسوم شحن مخصصة", "d41d8cd9.e5f6g7": "تمت الإضافة إلى قائمة التنفيذ، يرجى التحميل من الإعدادات - قائمة التصدير", "d41d8cd9.f8g9h0": "وقت الرد:", @@ -12070,9 +12072,10 @@ "62d2fa27.351201": "لون الزر", "62d2fa27.4d775d": "عرض", "62d2fa27.dce537": "إخفاء", - "8865eba5.9897d8": "سلع", + "8865eba5.9897d8": "قائمة المنتجات", "8f58e7cb.4707ba": "تباعد المكونات", "8f58e7cb.43d1e2": "اختر السلع", + "8f58e7cb.d4e5f6": "بطاقة منتج (نص المقال)", "bfabc536.319337": "إضافة مباشرة إلى السلة", "bfabc536.390037": "النمط", "bfabc536.412d79": "اثنان في الصف", @@ -21268,6 +21271,7 @@ "20f6ad88.4a1c90": "تفويض", "20f6ad88.53c3dd": "ما إذا كان مفعلاً", "20f6ad88.3b1083": "تم الحفظ بنجاح", + "20f6ad88.c5d4d8": "وضع واجهة مزود الخدمة، يُرجى التواصل مع ShopeX لاستكمال إعداد الربط", "20f6ad88.20a495": "تم النسخ بنجاح", "caf9668f.626669": "مفتاح خدمة موقع Tencent:", "caf9668f.e4f07d": "وحدة تحكم خدمة موقع Tencent", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 7074d43..2797fcb 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -4839,6 +4839,7 @@ "59579ae2.be5fbb": "Save", "59579ae2.53c3dd": "Enable", "59579ae2.3b1083": "Saved successfully", + "59579ae2.c5d4d8": "Service provider API mode, contact ShopeX for binding configuration", "fea687f2.be5fbb": "Save", "fea687f2.aea08c": "PC store privacy statement", "fea687f2.ae004d": "H5 store privacy statement", @@ -7672,6 +7673,7 @@ "d41d8cd9.s3t4u5": "Under review", "d41d8cd9.v6w7x8": "Review passed", "d41d8cd9.y9z0a1": "Review failed", + "6f19b2ab.6b3d7e": "Sync all products to stores?", "d41d8cd9.b2c3d4": "Custom shipping fee", "d41d8cd9.e5f6g7": "Added to execution queue, please download in Settings - Export list", "d41d8cd9.f8g9h0": "Reply time:", @@ -12070,9 +12072,10 @@ "62d2fa27.351201": "Button color", "62d2fa27.4d775d": "Display", "62d2fa27.dce537": "Hide", - "8865eba5.9897d8": "Goods", + "8865eba5.9897d8": "Goods list", "8f58e7cb.4707ba": "Component Spacing", "8f58e7cb.43d1e2": "Select goods", + "8f58e7cb.d4e5f6": "Product card (article body)", "bfabc536.319337": "Direct Add to Cart", "bfabc536.390037": "Style", "bfabc536.412d79": "Two per Row", @@ -21270,6 +21273,7 @@ "20f6ad88.4a1c90": "Authorize", "20f6ad88.53c3dd": "Whether enabled", "20f6ad88.3b1083": "Saved successfully", + "20f6ad88.c5d4d8": "Service provider API mode, contact ShopeX for binding configuration", "20f6ad88.20a495": "Copy successfully", "caf9668f.626669": "Tencent Location Service Key:", "caf9668f.e4f07d": "Tencent Location Service Console", diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index ef27955..746a842 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -4796,6 +4796,7 @@ "59579ae2.be5fbb": "保存", "59579ae2.53c3dd": "是否启用", "59579ae2.3b1083": "保存成功", + "59579ae2.c5d4d8": "服务商接口模式,需联系商派,配合绑定配置", "fea687f2.be5fbb": "保存", "fea687f2.aea08c": "PC商城隐私声明", "fea687f2.ae004d": "H5商城隐私声明", @@ -7697,6 +7698,7 @@ "d41d8cd9.s3t4u5": "提示", "d41d8cd9.v6w7x8": "所有商品, 是否继续?", "d41d8cd9.y9z0a1": "是否将所有商品的都同步至店铺?", + "6f19b2ab.6b3d7e": "是否将所有商品同步至店铺?", "d41d8cd9.b2c3d4": "确认是否批量提交?", "d41d8cd9.e5f6g7": "已加入执行队列,请在设置-导出列表中下载", "d41d8cd9.h8i9j0": "导出失败", @@ -12168,9 +12170,10 @@ "62d2fa27.351201": "按钮颜色", "62d2fa27.4d775d": "显示", "62d2fa27.dce537": "隐藏", - "8865eba5.9897d8": "商品", + "8865eba5.9897d8": "商品列表", "8f58e7cb.4707ba": "组件间距", "8f58e7cb.43d1e2": "选择商品", + "8f58e7cb.d4e5f6": "商品卡片(正文)", "bfabc536.319337": "直接加购", "bfabc536.390037": "样式", "bfabc536.412d79": "一行两个", @@ -21472,6 +21475,7 @@ "20f6ad88.4a1c90": "去授权", "20f6ad88.53c3dd": "是否启用", "20f6ad88.3b1083": "保存成功", + "20f6ad88.c5d4d8": "服务商接口模式,需联系商派,配合绑定配置", "20f6ad88.20a495": "复制成功", "caf9668f.626669": "腾讯位置服务Key获取路径:", "caf9668f.e4f07d": "腾讯位置服务控制台", diff --git a/src/view/decorate/comps/configsetting.js b/src/view/decorate/comps/configsetting.js index 5b22d36..3253384 100644 --- a/src/view/decorate/comps/configsetting.js +++ b/src/view/decorate/comps/configsetting.js @@ -79,6 +79,7 @@ function processConfig(config) { 'ranking', 'hotranking', 'goods', + 'goodsCard', 'shop', 'couponCard', 'classify', diff --git a/src/view/decorate/index.vue b/src/view/decorate/index.vue index 0c12948..b842978 100755 --- a/src/view/decorate/index.vue +++ b/src/view/decorate/index.vue @@ -265,7 +265,8 @@ export default { 'Group', 'hotranking', 'Ranking', - 'goods' + 'goods', + 'goodsCard' ] // 专用挂件:订单导航 const dedicatedNames = ['OrderNavigation'] @@ -354,19 +355,32 @@ export default { }) }, resetDecorateTheme() {}, + // 落库 name 多为 config.name(如 goodsCard),与 Vue 组件名(如 Goods)可能不一致 + findWidgetForPersistedName(persistedName) { + const key = String(persistedName || '').toLowerCase() + if (!key || !this.widgets.length) return null + let w = this.widgets.find((item) => (item.name || '').toLowerCase() === key) + if (w) return w + w = this.widgets.find((item) => String(item.config?.name || '').toLowerCase() === key) + if (w) return w + if (String(this.localScene) === '1005' && key === 'goods') { + return ( + this.widgets.find((item) => String(item.config?.name || '').toLowerCase() === 'goodscard') || + this.widgets.find((item) => (item.name || '').toLowerCase() === 'goods') || + null + ) + } + return null + }, // 用 widgets 中注册的组件名(如 LocationModule)渲染,避免 config.name(如 locationModule)与 Vue 注册名大小写不一致导致预览不显示 getComponentName(item) { if (!item?.name || !this.widgets.length) return item?.name || '' - const w = this.widgets.find( - (wgt) => (wgt.name || '').toLowerCase() === (item.name || '').toLowerCase() - ) + const w = this.findWidgetForPersistedName(item.name) return w ? w.name : item.name }, getComponentAttr(item) { if (!item) return { wgtName: '', config: {} } - const wgt = this.widgets.find((wgt) => { - return wgt.name?.toLowerCase() == item.name?.toLowerCase() - }) + const wgt = this.findWidgetForPersistedName(item.name) if (!wgt) return { wgtName: item.wgtName || item.name || '', ...(item.config || {}) } return { wgtName: wgt.wgtName, @@ -470,7 +484,7 @@ export default { list.forEach((li) => { // 是否存在挂件 - const wgt = this.widgets.find((item) => item.name?.toLowerCase() == li.name?.toLowerCase()) + const wgt = this.findWidgetForPersistedName(li.name) if (wgt) { // console.log('getTemplateDetial wgt:', wgt) const wgtInitParams = this.cloneDefaultField(wgt) @@ -575,7 +589,7 @@ export default { // 是否为有效挂件(在 widgets 中注册且可渲染) isValidContentComp(c) { if (!c || typeof c !== 'object' || !c.name) return false - return this.widgets.some((w) => (w.name || '').toLowerCase() === (c.name || '').toLowerCase()) + return !!this.findWidgetForPersistedName(c.name) }, // 检查是否可以添加挂件(互斥逻辑:店铺字母列表、整屏滑动 与其余挂件互斥) canAddWgt(wgtName) { @@ -640,10 +654,9 @@ export default { return } const data = this.contentComps.map((item) => { - const { transformOut } = this.widgets.find( - (wgt) => wgt.name?.toLowerCase() == item.name?.toLowerCase() - )?.config - return transformOut(item, this.widgets) + const wgt = this.findWidgetForPersistedName(item.name) + const { transformOut } = wgt?.config || {} + return transformOut ? transformOut(item, this.widgets) : item }) data.unshift(this.headerAttr.transformOut(this.headerData, this.widgets)) const { id } = this.$route.query diff --git a/src/view/decorate/wgts/wgt_goodsCard/config.js b/src/view/decorate/wgts/wgt_goodsCard/config.js index a04253d..6037c8d 100755 --- a/src/view/decorate/wgts/wgt_goodsCard/config.js +++ b/src/view/decorate/wgts/wgt_goodsCard/config.js @@ -5,11 +5,11 @@ import { pickBy } from '@/utils' import { i18n } from '@/i18n' import AttrGoods from './attr-goods' +import { transformInBase, createTransformOutBase } from '../../comps/transform-utils' const config = { - name: 'goods', + name: 'goodsCard', setting: [ - { label: i18n.t('8f58e7cb.4707ba'), key: 'padded', component: 'switch', value: true }, { label: i18n.t('8f58e7cb.43d1e2'), key: 'data', @@ -21,10 +21,11 @@ const config = { ], transformIn: (v) => { const { name, base, data, track, tagsType, meber_tags, no_meber_tags } = v + const transformedBase = transformInBase(base || {}, ['outerMargin', 'innerPadding']) return { id: v?.id, name, - ...base, + ...transformedBase, data, track, tags: { @@ -39,12 +40,20 @@ const config = { id: 'id', name: 'name', base: (v) => { - return pickBy(v, { + const styleBase = createTransformOutBase( + ['outerMargin', 'innerPadding', 'outerBackground', 'innerBackground'], + ['outerMargin', 'innerPadding'] + )(v) + const contentBase = pickBy(v, { title: 'title', subtitle: 'subtitle', padded: 'padded', proportion: 'proportion' }) + return { + ...styleBase, + ...contentBase + } }, data: 'data', track: 'track', diff --git a/src/view/decorate/wgts/wgt_goodsCard/index.vue b/src/view/decorate/wgts/wgt_goodsCard/index.vue index 54bf54d..bf072c2 100755 --- a/src/view/decorate/wgts/wgt_goodsCard/index.vue +++ b/src/view/decorate/wgts/wgt_goodsCard/index.vue @@ -5,37 +5,21 @@ + diff --git a/src/view/member/cardticket/detail/used.vue b/src/view/member/cardticket/detail/used.vue index 7efa9be..9d8d794 100755 --- a/src/view/member/cardticket/detail/used.vue +++ b/src/view/member/cardticket/detail/used.vue @@ -5,6 +5,17 @@