Просмотр исходного кода

增强图像渲染功能与数据处理

- 在 generateImagesRender.js 中添加调试信息以输出 JSON 数据和文本占位符,改进文本处理逻辑以支持新的文本类型。
- 更新 goods5.json,新增多个自定义字段以丰富产品信息。
- 在 index.vue 中更换画布数据源为 canvas1.json,以支持新的画布配置。
kongwenhao 2 дней назад
Родитель
Сommit
53590f370b

+ 1 - 0
electron/preload/debug.log

@@ -0,0 +1 @@
+[1222/171611.956:ERROR:third_party\crashpad\crashpad\util\win\registration_protocol_win.cc:108] CreateFile: 系统找不到指定的文件。 (0x2)

Разница между файлами не показана из-за своего большого размера
+ 4 - 0
frontend/src/views/components/marketingEdit/canvas1.json


+ 11 - 8
frontend/src/views/components/marketingEdit/generateImagesRender.js

@@ -352,6 +352,7 @@ export async function renderImagesByPlans(plans, canvasList, skus) {
       } catch (e) {
         return resolve(null)
       }
+      console.log('====== json ====', json)
 
       const width = Number(canvasItem.width) || 395
       const height = Number(canvasItem.height) || 600
@@ -497,18 +498,19 @@ export async function renderImagesByPlans(plans, canvasList, skus) {
         }
 
         // 2) 处理文字占位(data-type = text)
-        const textPlaceholders = objs.filter((o) => o && o['data-type'] === 'text')
+        const textPlaceholders = objs.filter((o) => o && (o['data-type'] === 'text' || o['type'] === "textbox") &&  o['text'] )
+        console.log('=====textPlaceholders========', textPlaceholders)
 
         if (textPlaceholders.length) {
           // 通用的 key -> 文本 映射函数,
           const mapKeyToText = (sku, key, defaultVal) => {
             if (!sku) return defaultVal
             let textVal = defaultVal || ''
-            if (key === '颜色') {
-              textVal = sku.color || textVal
-            } else if (key === '货号') {
-              textVal = sku.sku || textVal
-            }
+            // if (key === '颜色') {
+            //   textVal = sku.color || textVal
+            // } else if (key === '货号') {
+            //   textVal = sku.sku || textVal
+            // }
             // 兜底:去 raw 里找同名字段(支持 卖点 / 使用场景 / 其他自定义字段)
             if ((!textVal || textVal === defaultVal) && sku.raw && sku.raw[key] != null) {
               textVal = sku.raw[key]
@@ -526,7 +528,7 @@ export async function renderImagesByPlans(plans, canvasList, skus) {
             // - 如果该 slot 没有对应货号(usedSkus[slotIndex] 为 null),则隐藏该文字层
             const keyCounter = {}
             textPlaceholders.forEach((obj) => {
-              const key = obj['data-key']
+              const key = obj['text']
               if (!key) return
               const idxForKey = keyCounter[key] || 0
               keyCounter[key] = idxForKey + 1
@@ -550,7 +552,7 @@ export async function renderImagesByPlans(plans, canvasList, skus) {
             const sku = usedSkus[0]
             if (sku) {
               textPlaceholders.forEach((obj) => {
-                const key = obj['data-key']
+                const key = obj['text']
                 if (!key) return
                 const origin = obj['data-value'] || ''
                 const textVal = mapKeyToText(sku, key, origin)
@@ -706,6 +708,7 @@ export async function renderImagesByPlans(plans, canvasList, skus) {
  * }>>}
  */
 export async function generateAllStyleImageBundles(canvasList, goodsList) {
+  console.log("====canvasList====" , canvasList)
   const bundles = []
 
   // 工具:把若干 dataURL 竖向拼接为一张长图

+ 5 - 1
frontend/src/views/components/marketingEdit/goods5.json

@@ -12,7 +12,11 @@
           "鞋底": "C:\\Users\\Administrator\\Desktop\\img\\AQG1411283KT\\AQG1411283(4).png",
           "内里": "C:\\Users\\Administrator\\Desktop\\img\\AQG1411283KT\\AQG1411283(5).png"
         },
-        "设计理念": "优先使用柔软透气的天然皮革(如头层牛皮、猪皮),并搭配记忆棉鞋垫、透气内里等科技材料,提升穿着体验。"
+        "设计理念": "优先使用柔软透气的天然皮革(如头层牛皮、猪皮),并搭配记忆棉鞋垫、透气内里等科技材料,提升穿着体验。",
+        "我是标题": "我是标题哈哈",
+        "自定义标题": "自定义标题哈哈",
+        "我是颜色": "我是颜色哈哈"
+
       }
 
     ]

+ 2 - 1
frontend/src/views/components/marketingEdit/index.vue

@@ -19,6 +19,7 @@ import goods2 from './goods2.json'
 import goods4 from './goods4.json'
 import goods5 from './goods5.json'
 import canvas from './canvas.json'
+import canvas1 from './canvas1.json'
 import { buildRenderPlans, normalizeGoods } from './generateImagesPlan'
 import { renderImagesByPlans, generateAllStyleImageBundles } from './generateImagesRender'
 
@@ -543,7 +544,7 @@ export default {
         JSON.parse(JSON.stringify(goods5))
       ]
         
-       const canvasJson = JSON.parse(JSON.stringify(canvas))
+       const canvasJson = JSON.parse(JSON.stringify(canvas1))
 
        // 2. 针对每个款号,生成所有画布图片 + 组合长图(在内存中生成 dataURL)
        const bundles = await generateAllStyleImageBundles(canvasJson, goodsData)

Некоторые файлы не были показаны из-за большого количества измененных файлов