8 lines
7.7 KiB
Java
8 lines
7.7 KiB
Java
var k=(h,p,s)=>new Promise((_,u)=>{var g=o=>{try{r(s.next(o))}catch(a){u(a)}},b=o=>{try{r(s.throw(o))}catch(a){u(a)}},r=o=>o.done?_(o.value):Promise.resolve(o.value).then(g,b);r((s=s.apply(h,p)).next())});import{d as B,ah as m,aC as x,as as y,aF as i,k as t,au as e,G as n,u as I,f as S,av as f,ar as z,aD as E,F as V}from"./vue-vendor-C7Zq48Yl.js";import{P as N}from"./index-C57gqG5N.js";import{u as T}from"./index-BgJbdjPf.js";import{u as F,d as J}from"./index-BI6CMai0.js";import R from"./BasicTable-DfLkrEeh.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./useContentHeight-BUFNkYs_.js";import"./useWindowSizeFn-PRZSD86C.js";import"./vxe-table-vendor-B88kchpX.js";import"./useContentViewHeight-BO9bTdue.js";import"./usePageContext-l-f4bNz7.js";import"./injectionKey-DPVn4AgL.js";import"./componentMap-BBZeqR-K.js";import"./useFormItem-BdW6EoZe.js";import"./index-Du0A3ksf.js";import"./BasicModal-0sAdFEk_.js";import"./ModalHeader-keHdAHWH.js";import"./useTimeout-DDl4l82I.js";import"./index-DeEq83Ov.js";import"./index-pxs5MULf.js";import"./index-BgYCgfME.js";import"./index-f8O7TghW.js";import"./useIntersectionObserver-BMxdTqP3.js";import"./download-UE0L9Rfp.js";import"./base64Conver-24EVOS6V.js";import"./index-CIBZG4nR.js";import"./index-BhQEwnQQ.js";import"./useCountdown-DqnNWBp6.js";import"./useFormItemSingle-BbRhswfn.js";import"./JSelectUser-B71zikzw.js";import"./props-DAezUTeZ.js";import"./JSelectBiz-CnEaVMUF.js";import"./JAddInput-D6qcyZjQ.js";import"./areaDataUtil-CbYCy3Ig.js";import"./index-CNkz_PUv.js";import"./index-CUdllngZ.js";import"./bem-EhXRi4nW.js";import"./props-D4vdsy3J.js";import"./useContextMenu-Cwx1lIOK.js";import"./depart.api-DeMNV8zW.js";import"./TreeIcon-DE4jdeZV.js";import"./JSelectDept-DRDVeruW.js";import"./JPopup-Bva6u6tk.js";import"./usePopBiz-CG0vVpgI.js";import"./useMethods-DVip17X8.js";import"./index-Dg4HCEvo.js";import"./JEllipsis-DqRFTSm0.js";import"./JUpload-Cz9HN61B.js";import"./index-MGIrEF-A.js";import"./index-MREkPhsT.js";import"./index-Di-j2gt4.js";import"./BasicForm-BJnSRkIE.js";import"./useForm-BZtHZyx2.js";import"./JAreaLinkage-BeRUFHSB.js";import"./JCodeEditor-CLVZA7Uj.js";import"./htmlmixed-NhwyF9-q.js";import"./vue-CgbRSACy.js";/* empty css */import"./EasyCronInput-7xfJ3nBh.js";const $={class:"p-4"},j={class:"test-result-json"},D=B({__name:"EditableCellIdTest",setup(h){const{createMessage:p}=F(),s=S({title:"📊 测试结果(点击对号后显示)",bgColor:"#909399",hasId:!1,idValue:null,fields:[],recordJson:"暂无数据,请编辑单元格并点击对号",conclusion:"等待测试..."}),_=[{title:"姓名",dataIndex:"name",width:150,edit:!0,editComponent:"Input"},{title:"年龄",dataIndex:"age",width:120,edit:!0,editComponent:"InputNumber"},{title:"邮箱",dataIndex:"email",width:200,edit:!0,editComponent:"Input"},{title:"地址",dataIndex:"address",width:200,edit:!0,editComponent:"Input"}],u=[{id:1,name:"张三",age:25,email:"zhangsan@example.com",address:"北京市朝阳区"},{id:2,name:"李四",age:30,email:"lisi@example.com",address:"上海市浦东新区"},{id:3,name:"王五",age:28,email:"wangwu@example.com",address:"广州市天河区"}],[g]=T({rowKey:"id",columns:_,dataSource:u,pagination:!1,showIndexColumn:!0,canResize:!1});function b(w){return k(this,arguments,function*({record:r,index:o,key:a,value:d}){const l="id"in r,c=Object.keys(r);return s.value={title:l?"✅ 测试通过":"❌ 测试失败 - 发现 Bug!",bgColor:l?"#67C23A":"#F56C6C",hasId:l,idValue:r.id||null,fields:c,recordJson:JSON.stringify(r,null,2),conclusion:l?`✅ record 中包含 id 字段(值为 ${r.id}),可以正常更新数据`:`❌ Bug 确认:record 中缺少 id 字段!只包含 ${c.join(", ")}。这会导致无法执行数据更新操作。`},l?(p.success(`✅ 测试通过:获取到 id=${r.id}`),!0):(p.error("❌ 测试失败:record 中缺少 id 字段!这就是 Issue #8924 描述的问题。"),!1)})}return(r,o)=>{const a=m("a-alert"),d=m("a-card"),w=m("a-tag"),l=m("a-descriptions-item"),c=m("a-descriptions"),C=m("a-space");return y(),x(I(N),{title:"EditableCell ID字段测试 (Issue #8924)"},{default:i(()=>[t(a,{message:"🧪 测试目的:验证 beforeEditSubmit 是否会过滤掉 id 字段",description:"请编辑任意单元格并点击对号,查看下方的测试结果。如果 record 中没有 id 字段,说明问题存在。",type:"warning","show-icon":"",class:"mb-4"}),e("div",$,[t(d,{title:"🔬 测试场景1:id 字段不在 columns 中(最常见场景)",class:"mb-4"},{default:i(()=>[t(a,{message:"⚠️ 核心测试:id 在数据中,但不在 columns 中显示",description:"这是最常见的场景:主键字段通常不需要在表格中显示,但在更新数据时必须使用。",type:"info","show-icon":"",class:"mb-3"}),t(C,{direction:"vertical",style:{width:"100%"}},{default:i(()=>[t(d,{size:"small",title:"📋 测试数据说明",bordered:!1},{default:i(()=>[...o[0]||(o[0]=[e("p",null,[e("strong",null,"数据源包含:"),n("id, name, age, email, address")],-1),e("p",null,[e("strong",null,"Columns 显示:"),n("name, age, email, address(⚠️ 没有 id 列)")],-1),e("p",null,[e("strong",null,"rowKey 配置:"),n("'id'")],-1)])]),_:1}),t(I(R),{onRegister:I(g),beforeEditSubmit:b},null,8,["onRegister"]),t(d,{size:"small",title:s.value.title,bordered:!1,headStyle:{backgroundColor:s.value.bgColor,color:"white"}},{default:i(()=>[t(c,{bordered:"",column:1,size:"small"},{default:i(()=>[t(l,{label:"是否包含 id"},{default:i(()=>[t(w,{color:s.value.hasId?"success":"error"},{default:i(()=>[n(f(s.value.hasId?"✅ 包含":"❌ 不包含")+" "+f(s.value.hasId?`(id=${s.value.idValue})`:""),1)]),_:1},8,["color"])]),_:1}),t(l,{label:"record 包含的字段"},{default:i(()=>[(y(!0),z(V,null,E(s.value.fields,v=>(y(),x(w,{key:v,color:"blue"},{default:i(()=>[n(f(v),1)]),_:2},1024))),128))]),_:1}),t(l,{label:"完整 record 内容"},{default:i(()=>[e("pre",j,f(s.value.recordJson),1)]),_:1}),t(l,{label:"测试结论"},{default:i(()=>[t(a,{message:s.value.conclusion,type:s.value.hasId?"success":"error","show-icon":""},null,8,["message","type"])]),_:1})]),_:1})]),_:1},8,["title","headStyle"])]),_:1})]),_:1}),t(d,{title:"💡 测试说明",class:"mb-4"},{default:i(()=>[t(C,{direction:"vertical",style:{width:"100%"}},{default:i(()=>[t(a,{message:"如何进行测试?",description:`1. 点击上方表格任意单元格进行编辑\r
|
||
2. 修改内容后点击对号 ✓ 提交\r
|
||
3. 查看测试结果,观察 record 是否包含 id 字段`,type:"info","show-icon":""}),t(a,{message:"预期结果",type:"success","show-icon":""},{description:i(()=>[...o[1]||(o[1]=[e("p",null,[e("strong",null,"如果代码正常:")],-1),e("p",null,"✅ record 应该包含 id 字段",-1),e("p",null,"✅ 可以使用 record.id 进行数据更新",-1),e("p",null,"✅ 控制台显示绿色成功消息",-1)])]),_:1}),t(a,{message:"Bug 症状(Issue #8924)",type:"error","show-icon":""},{description:i(()=>[...o[2]||(o[2]=[e("p",null,[e("strong",null,"如果存在 Bug:")],-1),e("p",null,"❌ record 中没有 id 字段",-1),e("p",null,"❌ record 只包含 columns 中定义的字段(name, age, email, address)",-1),e("p",null,"❌ 无法执行数据更新操作",-1),e("p",null,"❌ 控制台显示红色错误消息",-1)])]),_:1}),t(d,{size:"small",title:"🔍 原因分析",bordered:!1},{default:i(()=>[...o[3]||(o[3]=[e("p",null,[n("原代码使用 "),e("code",null,"pick(record, keys)"),n(" 过滤字段:")],-1),e("pre",{class:"code-block"},`const keys = columns.map(c => c.dataIndex).filter(f => !!f);
|
||
// keys = ['name', 'age', 'email', 'address'] // ⚠️ 没有 id
|
||
|
||
record: pick(record, keys)
|
||
// 只保留 keys 中的字段,id 被过滤掉了`,-1)])]),_:1})]),_:1})]),_:1})])]),_:1})}}}),Le=J(D,[["__scopeId","data-v-9d9177b2"]]);export{Le as default};
|