【More Than Coding】我又来了,打印升级,用Solo基于Vue Print Designer二开实现拖拽控件就已经绑定字段,后续用户自己实现模板设计

1.摘要:

使用 SOLO 对基于 Vue Print Designer的 Vue3 打印设计器项目进行二开,实现拖拽控件时就已经绑定好字段

2.背景:

我是一名前端开发,之前基于hiprint封装打印插件 【More Than Coding】用 SOLO 封装打印插件,成功让leader为我点赞👍 但是新的场景中几十个打印模板,业务希望能够自己拖拽设计,也能够所见即所得,于是字段绑定就得生成控件时完成。Solo寻求解决方案

3.实践过程:

  1. 规划任务

  2. 按规划的任务生成项目(此时solo会问你几个问题:技术栈选择,需不需要后端生成PDF等,按需选择就行)

  3. 验证执行计划的产物,发现问题继续让SOLO修复

4.成果展示:
原版:

现版:


1 个赞

"字段拖入自动绑定"的实现思路

这是你需求中最关键的一点,实现方案如下:

Plain Text

数据源定义:
{
  "fields": [
    { "key": "productName", "label": "品名", "type": "text" },
    { "key": "barcode",     "label": "条码", "type": "barcode" },
    { "key": "qrCode",      "label": "二维码", "type": "qrcode" },
    { "key": "price",       "label": "价格", "type": "number" },
    { "key": "image",       "label": "图片", "type": "image" }
  ]
}

拖拽流程:
1. 用户从「字段面板」拖出 "品名" 字段
2. 拖入画布时,根据 field.type 自动选择控件类型:
   - text/number → 文本控件
   - barcode → 条形码控件
   - qrcode → 二维码控件
   - image → 图片控件
3. 自动设置控件的绑定属性:
   {
     "type": "text",
     "field": "productName",     ← 自动绑定
     "title": "品名",             ← 自动设置标题
     "options": { ... }
   }
4. 画布渲染时显示绑定标识(如 "品名: {{productName}}")
2 个赞

2 个赞

让它运行项目,我要做测试,果然还是要踩坑的


继续用Solo把我从坑里揪出来,分析后的原因
// 修改前(问题代码)
const resolvedText = computed(() => {
const variable = props.element.variable || “”;
if (store.isExporting && variable) {
// … 导出时用 testData 替换
}
return props.element.variable || props.element.content; // ← variable 优先,content 被忽略
});

// 修改后(修复代码)
const resolvedText = computed(() => {
const variable = props.element.variable || “”;
const content = props.element.content || “”;
if (store.isExporting && variable) {
// … 导出时用 testData 替换(逻辑不变)
}
return content; // ← 设计模式始终显示 content,variable 仅在导出时生效
});

2 个赞

好了,我先去找leader汇报去了,等我消息家人们

2 个赞

兄弟实际开发效果如何

2 个赞

这种自动绑字段的思路挺巧,不过实际拖多了会不会控件和字段对不上?我自己试过类似的,有时候改个字段名满盘都得调,有点烦。

1 个赞

情况比较复杂,leader并不care,业务不会自己去画的,最终还是得开发介入估计。用是肯定可以用,只是现在没投入实际中

1 个赞

控件和字段对不上不至于,最核心的问题是有些字段需要前端特殊处理。最理想的是开发完全不需要介入对接后端接口

1 个赞