以为是响应式对象丢失导致数据没有回显
背景:之前ruoyi生成的vue2代码,
<el-form ref=“form”,后面我改成vue3的写法,没有实例化form,
在vue3中是需要定义const form= ref();
导致点击了修改后,页面弹框显示出来,数据没有回显。
一直在怀疑是reactive的响应丢失了,还是toRefs的问题。
找了好久,终于排除出问题所在。
<!-- 添加或修改商品管理对话框 --><el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body><el-form ref="goodsFormRef" :model="form" :rules="rules" label-width="80px"><el-form-item label="商品名称" prop="name"><el-input v-model="form.name" placeholder="请输入商品名称" /></el-form-item><el-form-item label="商品图片地址" prop="image"><image-upload v-model="form.image"/></el-form-item><el-form-item label="商品编号" prop="number"><el-input v-model="form.goodsNum" placeholder="请输入商品编号" /></el-form-item><!-- <el-form-item label="单位名称" prop="unitName">--><!-- <el-input v-model="form.unitName" placeholder="请输入单位名称" />--><!-- </el-form-item>--><el-form-item label="商品分类" prop="categoryId"><!-- <el-input v-model="form.categoryId" placeholder="请输入商品分类ID" />--><treeselect :options="categoryTree" placeholder="请选择上级菜单" v-model="form.categoryId" style="width: 230px;"/></el-form-item><!-- <el-form-item label="条码" prop="barCode">--><!-- <el-input v-model="form.barCode" placeholder="请输入条码" />--><!-- </el-form-item>--><el-form-item label="备注" prop="remark"><el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /></el-form-item><!-- <el-form-item label="衣长/裙长/裤长" prop="length">--><!-- <el-input v-model="form.length" placeholder="请输入衣长/裙长/裤长" />--><!-- </el-form-item>--><!-- <el-form-item label="高度/袖长" prop="height">--><!-- <el-input v-model="form.height" placeholder="请输入高度/袖长" />--><!-- </el-form-item>--><!-- <el-form-item label="宽度/胸阔(围)" prop="width">--><!-- <el-input v-model="form.width" placeholder="请输入宽度/胸阔(围)" />--><!-- </el-form-item>--><!-- <el-form-item label="肩阔" prop="width1">--><!-- <el-input v-model="form.width1" placeholder="请输入肩阔" />--><!-- </el-form-item>--><!-- <el-form-item label="腰阔" prop="width2">--><!-- <el-input v-model="form.width2" placeholder="请输入腰阔" />--><!-- </el-form-item>--><!-- <el-form-item label="臀阔" prop="width3">--><!-- <el-input v-model="form.width3" placeholder="请输入臀阔" />--><!-- </el-form-item>--><!-- <el-form-item label="重量" prop="weight">--><!-- <el-input v-model="form.weight" placeholder="请输入重量" />--><!-- </el-form-item>--><!-- <el-form-item label="0启用 1禁用" prop="disable">--><!-- <el-input v-model="form.disable" placeholder="请输入0启用 1禁用" />--><!-- </el-form-item>--><!-- <el-form-item label="保质期" prop="period">--><!-- <el-input v-model="form.period" placeholder="请输入保质期" />--><!-- </el-form-item>--><el-form-item label="预计采购价格" prop="purPrice"><el-input v-model="form.purPrice" placeholder="请输入预计采购价格" /></el-form-item><el-form-item label="建议批发价" prop="wholePrice"><el-input v-model="form.wholePrice" placeholder="请输入建议批发价" /></el-form-item><el-form-item label="建议零售价" prop="retailPrice"><el-input v-model="form.retailPrice" placeholder="请输入建议零售价" /></el-form-item><!-- <el-form-item label="单位成本" prop="unitCost">--><!-- <el-input v-model="form.unitCost" placeholder="请输入单位成本" />--><!-- </el-form-item>--><el-form-item label="供应商" prop="supplierId"><!-- <el-input v-model="form.supplierId" placeholder="请输入供应商id" />--><el-select v-model="form.supplierId" filterable placeholder="请选择供应商名称"><el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id"></el-option></el-select></el-form-item><el-form-item label="状态" prop="status"><el-select v-model="form.status" placeholder="状态"><el-option label="销售中" :value="1"></el-option><el-option label="已下架" :value="2"></el-option></el-select></el-form-item><!-- <el-form-item label="品牌" prop="brandId">--><!-- <el-input v-model="form.brandId" placeholder="请输入品牌id" />--><!-- </el-form-item>--><!-- <el-form-item label="属性1:季节" prop="attr1">--><!-- <el-input v-model="form.attr1" placeholder="请输入属性1:季节" />--><!-- </el-form-item>--><!-- <el-form-item label="属性2:分类" prop="attr2">--><!-- <el-input v-model="form.attr2" placeholder="请输入属性2:分类" />--><!-- </el-form-item>--><!-- <el-form-item label="属性3:风格" prop="attr3">--><!-- <el-input v-model="form.attr3" placeholder="请输入属性3:风格" />--><!-- </el-form-item>--><!-- <el-form-item label="属性4:年份" prop="attr4">--><!-- <el-input v-model="form.attr4" placeholder="请输入属性4:年份" />--><!-- </el-form-item>--><!-- <el-form-item label="属性5:面料" prop="attr5">--><!-- <el-input v-model="form.attr5" placeholder="请输入属性5:面料" />--><!-- </el-form-item>--><!-- <el-form-item label="外链url" prop="linkUrl">--><!-- <el-input v-model="form.linkUrl" type="textarea" placeholder="请输入内容" />--><!-- </el-form-item>--><!-- <el-form-item label="最低库存" prop="lowQty">--><!-- <el-input v-model="form.lowQty" placeholder="请输入最低库存" />--><!-- </el-form-item>--><!-- <el-form-item label="最高库存" prop="highQty">--><!-- <el-input v-model="form.highQty" placeholder="请输入最高库存" />--><!-- </el-form-item>--></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog>
<script setup name="Goods" lang="ts">
import { ref, onMounted } from 'vue'
const goodsFormRef = ref<ElFormInstance>();
const initFormData: GoodsForm = {id: undefined,name: undefined,image: undefined,outerErpGoodsId: undefined,goodsNum: undefined,unitName: undefined,categoryId: undefined,barCode: undefined,remark: undefined,status: undefined,length: undefined,height: undefined,width: undefined,width1: undefined,width2: undefined,width3: undefined,weight: undefined,disable: undefined,period: undefined,purPrice: undefined,wholePrice: undefined,retailPrice: undefined,unitCost: undefined,supplierId: undefined,brandId: undefined,attr1: undefined,attr2: undefined,attr3: undefined,attr4: undefined,attr5: undefined,linkUrl: undefined,lowQty: undefined,highQty: undefined,province: undefined,city: undefined,town: undefined,synchronousId: undefined,declareCnName: undefined,declareEnName: undefined,declarePrice: undefined,declarePriceUnit: undefined,productBrand: undefined,manufacturer: undefined,customsCode: undefined,specificationModel: undefined,productAttribute: undefined,productLength: undefined,productWidth: undefined,productHeight: undefined,productWeight: undefined,purLink: undefined,purLink2: undefined,supplierId2: undefined,purPrice2: undefined
}
const data = reactive<PageData<GoodsForm, GoodsQuery>>({form: {...initFormData},queryParams: {pageNum: 1,pageSize: 10,name: undefined,image: undefined,outerErpGoodsId: undefined,goodsNum: undefined,unitName: undefined,categoryId: undefined,barCode: undefined,status: undefined,length: undefined,height: undefined,width: undefined,width1: undefined,width2: undefined,width3: undefined,weight: undefined,disable: undefined,period: undefined,purPrice: undefined,wholePrice: undefined,retailPrice: undefined,unitCost: undefined,supplierId: undefined,brandId: undefined,attr1: undefined,attr2: undefined,attr3: undefined,attr4: undefined,attr5: undefined,linkUrl: undefined,lowQty: undefined,highQty: undefined,province: undefined,city: undefined,town: undefined,synchronousId: undefined,declareCnName: undefined,declareEnName: undefined,declarePrice: undefined,declarePriceUnit: undefined,productBrand: undefined,manufacturer: undefined,customsCode: undefined,specificationModel: undefined,productAttribute: undefined,productLength: undefined,productWidth: undefined,productHeight: undefined,productWeight: undefined,purLink: undefined,purLink2: undefined,supplierId2: undefined,purPrice2: undefined,params: {}},rules: {id: [{ required: true, message: "主键id不能为空", trigger: "blur" }],name: [{ required: true, message: "商品名称不能为空", trigger: "blur" }],image: [{ required: true, message: "商品图片地址不能为空", trigger: "blur" }],outerErpGoodsId: [{ required: true, message: "商品唯一ID不能为空", trigger: "blur" }],goodsNum: [{ required: true, message: "商品编号不能为空", trigger: "blur" }],unitName: [{ required: true, message: "申报单位不能为空", trigger: "blur" }],categoryId: [{ required: true, message: "商品分类ID不能为空", trigger: "blur" }],barCode: [{ required: true, message: "条码不能为空", trigger: "blur" }],remark: [{ required: true, message: "备注不能为空", trigger: "blur" }],status: [{ required: true, message: "状态1销售中2已下架不能为空", trigger: "change" }],length: [{ required: true, message: "衣长/裙长/裤长不能为空", trigger: "blur" }],height: [{ required: true, message: "高度/袖长不能为空", trigger: "blur" }],width: [{ required: true, message: "宽度/胸阔(围)不能为空", trigger: "blur" }],width1: [{ required: true, message: "肩阔不能为空", trigger: "blur" }],width2: [{ required: true, message: "腰阔不能为空", trigger: "blur" }],width3: [{ required: true, message: "臀阔不能为空", trigger: "blur" }],weight: [{ required: true, message: "重量不能为空", trigger: "blur" }],disable: [{ required: true, message: "0启用 1禁用不能为空", trigger: "blur" }],period: [{ required: true, message: "保质期不能为空", trigger: "blur" }],purPrice: [{ required: true, message: "预计采购价格不能为空", trigger: "blur" }],wholePrice: [{ required: true, message: "建议批发价不能为空", trigger: "blur" }],retailPrice: [{ required: true, message: "建议零售价不能为空", trigger: "blur" }],unitCost: [{ required: true, message: "单位成本不能为空", trigger: "blur" }],supplierId: [{ required: true, message: "供应商id不能为空", trigger: "blur" }],brandId: [{ required: true, message: "品牌id不能为空", trigger: "blur" }],attr1: [{ required: true, message: "属性1:季节不能为空", trigger: "blur" }],attr2: [{ required: true, message: "属性2:分类不能为空", trigger: "blur" }],attr3: [{ required: true, message: "属性3:风格不能为空", trigger: "blur" }],attr4: [{ required: true, message: "属性4:年份不能为空", trigger: "blur" }],attr5: [{ required: true, message: "属性5:面料不能为空", trigger: "blur" }],linkUrl: [{ required: true, message: "外链url不能为空", trigger: "blur" }],lowQty: [{ required: true, message: "最低库存不能为空", trigger: "blur" }],highQty: [{ required: true, message: "最高库存不能为空", trigger: "blur" }],province: [{ required: true, message: "发货地省不能为空", trigger: "blur" }],city: [{ required: true, message: "发货地市不能为空", trigger: "blur" }],town: [{ required: true, message: "发货地区不能为空", trigger: "blur" }],synchronousId: [{ required: true, message: "同步编号不能为空", trigger: "blur" }],declareCnName: [{ required: true, message: "申报中文名不能为空", trigger: "blur" }],declareEnName: [{ required: true, message: "申报英文名不能为空", trigger: "blur" }],declarePrice: [{ required: true, message: "申报价格不能为空", trigger: "blur" }],declarePriceUnit: [{ required: true, message: "申报价格单位:日元,美元不能为空", trigger: "blur" }],productBrand: [{ required: true, message: "产品品牌不能为空", trigger: "blur" }],manufacturer: [{ required: true, message: "制造商不能为空", trigger: "blur" }],customsCode: [{ required: true, message: "海关编码不能为空", trigger: "blur" }],specificationModel: [{ required: true, message: "规格型号不能为空", trigger: "blur" }],productAttribute: [{ required: true, message: "产品属性:如普货,含电池不能为空", trigger: "blur" }],productLength: [{ required: true, message: "产品尺寸:长不能为空", trigger: "blur" }],productWidth: [{ required: true, message: "产品尺寸:宽不能为空", trigger: "blur" }],productHeight: [{ required: true, message: "产品尺寸:高不能为空", trigger: "blur" }],productWeight: [{ required: true, message: "产品重量不能为空", trigger: "blur" }],purLink: [{ required: true, message: "采购链接不能为空", trigger: "blur" }],purLink2: [{ required: true, message: "采购链接2不能为空", trigger: "blur" }],supplierId2: [{ required: true, message: "备选供应商不能为空", trigger: "blur" }],purPrice2: [{ required: true, message: "采购价2不能为空", trigger: "blur" }]}
});const { queryParams, form, rules } = toRefs(data);/** 表单重置 */
const reset = () => {form.value = {...initFormData};goodsFormRef.value?.resetFields();
}/** 修改按钮操作 */
const handleUpdate = async (row?: GoodsVO) => {reset();const _id = row?.id || ids.value[0]const res = await getGoods(_id);Object.assign(form.value, res.data);dialog.visible = true;dialog.title = "修改OMS商品";}
数据就回显出来了

相关文章:
以为是响应式对象丢失导致数据没有回显
背景:之前ruoyi生成的vue2代码, <el-form ref“form”,后面我改成vue3的写法,没有实例化form, 在vue3中是需要定义const form ref(); 导致点击了修改后,页面弹框显示出来,数据没有回显。 一直…...
来 Gitcode 免费体验 DeepSeek 蒸馏模型,开启 AI 探索新旅程
在 AI 技术飞速发展的时代,你是否也怀揣着对前沿科技的无限好奇与探索欲望?然而,昂贵的模型体验费用和复杂的操作流程,是不是让你一次次望而却步?现在,这些都不再是问题!DeepSeek 蒸馏模型现已强…...
2.Mkdocs配置说明(mkdocs.yml)【最新版】
官方文件:Changing the colors - Material for MkDocs 建议详细学习一下上面的官方网站↑↑↑ 我把我目前的配置文件mkdocs.yml代码写在下面👇🏻 #[Info] site_name: Mkdocs教程 #your site name 显示在左上角 site_url: http://wcowin.wo…...
云轴科技ZStack+海光DCU:率先推出DeepSeek私有化部署方案
针对日益强劲的AI推理需求和企业级AI应用私有化部署场景(Private AI),云轴科技ZStack联合海光信息,共同推动ZStack智塔全面支持DeepSeek V3/R1/Janus Pro系列模型,基于海光DCU实现高性能适配,为企业提供安全…...
扩增子分析|零模型2——基于βNTI的微生物随机性和确定性装配过程(箱线图和柱状图R中实现)
一、引言 我们之前发布的周集中老师团队零模型R中实战案例:扩增子分析|基于零模型的群落确定性和随机性构建过程——R实战_bmntd-CSDN博客。在文末只输出了一个.csv 表格。并没有提供绘图的方法,有小伙伴问如何在R中一键成图呢?还真可以&…...
专题:剑指offer
链表 JZ6 从尾到头打印链表 思路:先顺序输出到栈里面 然后再以此从栈顶弹出即可 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ #include …...
DeepSeek 部署过程中的问题
文章目录 DeepSeek 部署过程中的问题一、部署扩展:docker 部署 DS1.1 部署1.2 可视化 二、问题三、GPU 设置3.1 ollama GPU 的支持情况3.2 更新 GPU 驱动3.3 安装 cuda3.4 下载 cuDNN3.5 配置环境变量 四、测试 DeepSeek 部署过程中的问题 Windows 中 利用 ollama 来…...
DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 Ollama 🦋 下载 Ollama🦋 选择模型🦋 运行模型🦋 使用 && 测试 二:🔥 Chat…...
应急场景中的数据融合与对齐
1. 概述 在应急管理中,快速、准确地掌握现场状况、实时监控灾情并进行决策至关重要。各类数据(如卫星影像、无人机图像、激光雷达点云、地理信息系统(GIS)数据、传感器数据、社交媒体信息、移动终端数据等)具有来源广泛、格式多样、时空特性不同等特点。如何将这些异构数…...
手机上运行AI大模型(Deepseek等)
最近deepseek的大火,让大家掀起新一波的本地部署运行大模型的热潮,特别是deepseek有蒸馏的小参数量版本,电脑上就相当方便了,直接ollamaopen-webui这种类似的组合就可以轻松地实现,只要硬件,如显存…...
Mellanox网卡信息查看
1、查看Mellanox网卡的SN(序列号)和PN mstvpd 04:00.0或者lspci -s 04:00.0 -vvv来自https://enterprise-support.nvidia.com/s/article/MLNX2-117-2532kn 2、查看Mellanox网卡驱动、固件版本 ethtool -i ens6np0...
【漫画机器学习】083.安斯库姆四重奏(Anscombe‘s quartet)
安斯库姆四重奏(Anscombes Quartet) 1. 什么是安斯库姆四重奏? 安斯库姆四重奏(Anscombes Quartet)是一组由统计学家弗朗西斯安斯库姆(Francis Anscombe) 在 1973 年 提出的 四组数据集。它们…...
TCP | RFC793
注:本文为 “ RFC793” 相关文章合辑。 RFC793-TCP 中文翻译 编码那些事儿已于 2022-07-14 16:02:16 修改 简介 翻译自: RFC 793 - Transmission Control Protocol https://datatracker.ietf.org/doc/html/rfc793 TCP 是一个高可靠的主机到主机之间…...
2025蓝桥杯JAVA编程题练习Day2
1.大衣构造字符串 问题描述 已知对于一个由小写字母构成的字符串,每次操作可以选择一个索引,将该索引处的字符用三个相同的字符副本替换。 现有一长度为 NN 的字符串 UU,请帮助大衣构造一个最小长度的字符串 SS,使得经过任意次…...
《解锁GANs黑科技:打造影视游戏的逼真3D模型》
在游戏与影视制作领域,逼真的3D模型是构建沉浸式虚拟世界的关键要素。从游戏中栩栩如生的角色形象,到影视里震撼人心的宏大场景,高品质3D模型的重要性不言而喻。随着人工智能技术的飞速发展,生成对抗网络(GANs…...
es match 可查 而 term 查不到 问题分析
es 匹配逻辑 根本:es 的匹配是基于token 的。检索的query和目标字段在token 层级上有交集才能检索成功。对同样的文本,使用不同的分词器,所得token 不同。es 默认的analyzer(分词器)是standard模式,即按字切分。 基本上…...
【OpenCV实战】基于 OpenCV 的多尺度与模板匹配目标跟踪设计与实现
文章目录 基于 OpenCV 的模板匹配目标跟踪设计与实现1. 摘要2. 系统概述3. 系统原理3.1 模板匹配的基本原理3.2 多尺度匹配 4. 逻辑流程4.1 系统初始化4.2 主循环4.3 逻辑流程图 5. 关键代码解析5.1 鼠标回调函数5.2 多尺度模板匹配 6. 系统优势与不足6.1 优势6.2 不足 7. 总结…...
将有序数组转换为二叉搜索树(力扣108)
这道题需要在递归的同时使用双指针。先找到一个区间的中间值,当作子树的父节点,再递归该中间值的左区间和右区间,用于生成该父节点的左子树和右子树。这就是此题的递归逻辑。而双指针就体现在每一层递归都要使用左指针和右指针来找到中间值。…...
开放式TCP/IP通信
一、1200和1200之间的开放式TCP/IP通讯 第一步:组态1214CPU,勾选时钟存储器 第二步:防护与安全里面连接机制勾选允许PUT/GET访问 第三步:添加PLC 第四步:点击网络试图,选中网口,把两个PLC连接起…...
S4 HANA (递延所得税传输)Deferred Tax Transfer - S_AC0_52000644
本文主要介绍在S4 HANA OP中S4 HANA (递延所得税传输)Deferred Tax Transfer - S_AC0_52000644的后台配置及前台操作。具体请参照如下内容: 目录 Deferred Tax Transfer - S_AC0_52000644 1. 后台配置 1.1 Business Transaction Events激活- FIBF 2. 前台操作 …...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
