[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fteam-documents\u002F16":3,"knowledge-related-\u002Fknowledge\u002Fteam-documents\u002F16":915,"knowledge-series-\u002Fknowledge\u002Fteam-documents\u002F16":941},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":15,"pinned":16,"draft":16,"body":17,"seo":911,"stem":912,"id":913,"extension":914},"\u002Fknowledge\u002Fteam-documents\u002F16","在线协作表格接入实践","业务场景是“测量数据在线协作编辑”：","团队文档",[12,13,14],"team","table","upload","2023-10-27",false,{"type":18,"value":19,"toc":897},"minimark",[20,23,27,30,40,43,46,64,67,70,73,78,374,378,381,555,565,594,598,605,647,649,652,671,674,754,757,836,839,882,885,893],[21,22,8],"h1",{"id":8},[24,25,26],"h2",{"id":26},"背景",[28,29,9],"p",{},[31,32,33,37],"ul",{},[34,35,36],"li",{},"旧流程：下载 Excel -> 本地修改 -> 重新上传；",[34,38,39],{},"新流程：在线多人协作编辑 -> 直接保存提交。",[28,41,42],{},"目标是减少文件流转成本，提升协作效率和数据时效性。",[24,44,45],{"id":45},"技术方案",[28,47,48,49,53,54,57,58],{},"本次采用第三方在线文档能力 ",[50,51,52],"code",{},"WPS WebOffice"," 实现。",[55,56],"br",{},"\n接入文档： ",[59,60,52],"a",{"href":61,"rel":62},"https:\u002F\u002Fsolution.wps.cn\u002Fdocs\u002F?source=navbar",[63],"nofollow",[28,65,66],{},"由于该能力涉及服务端接口（如文档标识、鉴权 token、回调能力等），需要前后端协同落地。仅前端无法独立完成完整链路。",[68,69],"hr",{},[24,71,72],{"id":72},"前端接入流程",[74,75,77],"h3",{"id":76},"_1-初始化实例","1. 初始化实例",[79,80,85],"pre",{"className":81,"code":82,"language":83,"meta":84,"style":84},"language-ts shiki shiki-themes material-theme-lighter github-light github-dark","const wpsInstance = ref();\n\nwpsInstance.value = WebOfficeSDK.init({\n  \u002F\u002F 文档类型：表格\n  officeType: WebOfficeSDK.OfficeType.Spreadsheet,\n  \u002F\u002F 应用 ID\n  appId: \"\",\n  \u002F\u002F 文档 ID（通常由后端返回）\n  fileId: \"\",\n  \u002F\u002F 用户鉴权 token（可使用业务 token）\n  token: \"\",\n  \u002F\u002F 挂载容器，默认 body\n  mount: \"#excel-container\",\n  \u002F\u002F 隐藏右下角帮助按钮\n  commandBars: [\n    {\n      cmbId: \"FloatQuickHelp\",\n      attributes: {\n        visible: false,\n        enable: false,\n      },\n    },\n  ],\n});\n","ts","",[50,86,87,116,123,152,159,184,190,204,210,222,228,240,246,266,272,283,289,306,317,331,343,349,355,363],{"__ignoreMap":84},[88,89,92,96,100,104,108,112],"span",{"class":90,"line":91},"line",1,[88,93,95],{"class":94},"sbsja","const",[88,97,99],{"class":98},"s_hVV"," wpsInstance",[88,101,103],{"class":102},"smGrS"," =",[88,105,107],{"class":106},"sGLFI"," ref",[88,109,111],{"class":110},"su5hD","()",[88,113,115],{"class":114},"sP7_E",";\n",[88,117,119],{"class":90,"line":118},2,[88,120,122],{"emptyLinePlaceholder":121},true,"\n",[88,124,126,129,132,135,138,141,143,146,149],{"class":90,"line":125},3,[88,127,128],{"class":110},"wpsInstance",[88,130,131],{"class":114},".",[88,133,134],{"class":110},"value ",[88,136,137],{"class":102},"=",[88,139,140],{"class":110}," WebOfficeSDK",[88,142,131],{"class":114},[88,144,145],{"class":106},"init",[88,147,148],{"class":110},"(",[88,150,151],{"class":114},"{\n",[88,153,155],{"class":90,"line":154},4,[88,156,158],{"class":157},"sutJx","  \u002F\u002F 文档类型：表格\n",[88,160,162,166,169,171,173,176,178,181],{"class":90,"line":161},5,[88,163,165],{"class":164},"skxfh","  officeType",[88,167,168],{"class":114},":",[88,170,140],{"class":110},[88,172,131],{"class":114},[88,174,175],{"class":110},"OfficeType",[88,177,131],{"class":114},[88,179,180],{"class":110},"Spreadsheet",[88,182,183],{"class":114},",\n",[88,185,187],{"class":90,"line":186},6,[88,188,189],{"class":157},"  \u002F\u002F 应用 ID\n",[88,191,193,196,198,202],{"class":90,"line":192},7,[88,194,195],{"class":164},"  appId",[88,197,168],{"class":114},[88,199,201],{"class":200},"sjJ54"," \"\"",[88,203,183],{"class":114},[88,205,207],{"class":90,"line":206},8,[88,208,209],{"class":157},"  \u002F\u002F 文档 ID（通常由后端返回）\n",[88,211,213,216,218,220],{"class":90,"line":212},9,[88,214,215],{"class":164},"  fileId",[88,217,168],{"class":114},[88,219,201],{"class":200},[88,221,183],{"class":114},[88,223,225],{"class":90,"line":224},10,[88,226,227],{"class":157},"  \u002F\u002F 用户鉴权 token（可使用业务 token）\n",[88,229,231,234,236,238],{"class":90,"line":230},11,[88,232,233],{"class":164},"  token",[88,235,168],{"class":114},[88,237,201],{"class":200},[88,239,183],{"class":114},[88,241,243],{"class":90,"line":242},12,[88,244,245],{"class":157},"  \u002F\u002F 挂载容器，默认 body\n",[88,247,249,252,254,257,261,264],{"class":90,"line":248},13,[88,250,251],{"class":164},"  mount",[88,253,168],{"class":114},[88,255,256],{"class":200}," \"",[88,258,260],{"class":259},"s_sjI","#excel-container",[88,262,263],{"class":200},"\"",[88,265,183],{"class":114},[88,267,269],{"class":90,"line":268},14,[88,270,271],{"class":157},"  \u002F\u002F 隐藏右下角帮助按钮\n",[88,273,275,278,280],{"class":90,"line":274},15,[88,276,277],{"class":164},"  commandBars",[88,279,168],{"class":114},[88,281,282],{"class":110}," [\n",[88,284,286],{"class":90,"line":285},16,[88,287,288],{"class":114},"    {\n",[88,290,292,295,297,299,302,304],{"class":90,"line":291},17,[88,293,294],{"class":164},"      cmbId",[88,296,168],{"class":114},[88,298,256],{"class":200},[88,300,301],{"class":259},"FloatQuickHelp",[88,303,263],{"class":200},[88,305,183],{"class":114},[88,307,309,312,314],{"class":90,"line":308},18,[88,310,311],{"class":164},"      attributes",[88,313,168],{"class":114},[88,315,316],{"class":114}," {\n",[88,318,320,323,325,329],{"class":90,"line":319},19,[88,321,322],{"class":164},"        visible",[88,324,168],{"class":114},[88,326,328],{"class":327},"syTEX"," false",[88,330,183],{"class":114},[88,332,334,337,339,341],{"class":90,"line":333},20,[88,335,336],{"class":164},"        enable",[88,338,168],{"class":114},[88,340,328],{"class":327},[88,342,183],{"class":114},[88,344,346],{"class":90,"line":345},21,[88,347,348],{"class":114},"      },\n",[88,350,352],{"class":90,"line":351},22,[88,353,354],{"class":114},"    },\n",[88,356,358,361],{"class":90,"line":357},23,[88,359,360],{"class":110},"  ]",[88,362,183],{"class":114},[88,364,366,369,372],{"class":90,"line":365},24,[88,367,368],{"class":114},"}",[88,370,371],{"class":110},")",[88,373,115],{"class":114},[74,375,377],{"id":376},"_2-监听文档事件","2. 监听文档事件",[28,379,380],{},"初始化后建议监听关键事件，确认文档打开状态和编辑状态：",[79,382,384],{"className":81,"code":383,"language":83,"meta":84,"style":84},"wpsInstance.value.ApiEvent.AddApiEventListener(\"fileOpen\", (data) => {\n  \u002F\u002F data.data 为 true 表示文件打开成功\n  if (data.data) {\n    \u002F\u002F ...\n  }\n});\n\nwpsInstance.value.ApiEvent.AddApiEventListener(\"fileStatus\", (data) => {\n  \u002F\u002F 监听文件状态变化（编辑、保存等）\n  console.log(\"文件状态变化：\", data);\n});\n",[50,385,386,431,436,455,460,465,473,477,514,519,547],{"__ignoreMap":84},[88,387,388,390,392,395,397,400,402,405,407,409,412,414,417,420,424,426,429],{"class":90,"line":91},[88,389,128],{"class":110},[88,391,131],{"class":114},[88,393,394],{"class":110},"value",[88,396,131],{"class":114},[88,398,399],{"class":110},"ApiEvent",[88,401,131],{"class":114},[88,403,404],{"class":106},"AddApiEventListener",[88,406,148],{"class":110},[88,408,263],{"class":200},[88,410,411],{"class":259},"fileOpen",[88,413,263],{"class":200},[88,415,416],{"class":114},",",[88,418,419],{"class":114}," (",[88,421,423],{"class":422},"s99_P","data",[88,425,371],{"class":114},[88,427,428],{"class":94}," =>",[88,430,316],{"class":114},[88,432,433],{"class":90,"line":118},[88,434,435],{"class":157},"  \u002F\u002F data.data 为 true 表示文件打开成功\n",[88,437,438,442,444,446,448,450,453],{"class":90,"line":125},[88,439,441],{"class":440},"sVHd0","  if",[88,443,419],{"class":164},[88,445,423],{"class":110},[88,447,131],{"class":114},[88,449,423],{"class":110},[88,451,452],{"class":164},") ",[88,454,151],{"class":114},[88,456,457],{"class":90,"line":154},[88,458,459],{"class":157},"    \u002F\u002F ...\n",[88,461,462],{"class":90,"line":161},[88,463,464],{"class":114},"  }\n",[88,466,467,469,471],{"class":90,"line":186},[88,468,368],{"class":114},[88,470,371],{"class":110},[88,472,115],{"class":114},[88,474,475],{"class":90,"line":192},[88,476,122],{"emptyLinePlaceholder":121},[88,478,479,481,483,485,487,489,491,493,495,497,500,502,504,506,508,510,512],{"class":90,"line":206},[88,480,128],{"class":110},[88,482,131],{"class":114},[88,484,394],{"class":110},[88,486,131],{"class":114},[88,488,399],{"class":110},[88,490,131],{"class":114},[88,492,404],{"class":106},[88,494,148],{"class":110},[88,496,263],{"class":200},[88,498,499],{"class":259},"fileStatus",[88,501,263],{"class":200},[88,503,416],{"class":114},[88,505,419],{"class":114},[88,507,423],{"class":422},[88,509,371],{"class":114},[88,511,428],{"class":94},[88,513,316],{"class":114},[88,515,516],{"class":90,"line":212},[88,517,518],{"class":157},"  \u002F\u002F 监听文件状态变化（编辑、保存等）\n",[88,520,521,524,526,529,531,533,536,538,540,543,545],{"class":90,"line":224},[88,522,523],{"class":110},"  console",[88,525,131],{"class":114},[88,527,528],{"class":106},"log",[88,530,148],{"class":164},[88,532,263],{"class":200},[88,534,535],{"class":259},"文件状态变化：",[88,537,263],{"class":200},[88,539,416],{"class":114},[88,541,542],{"class":110}," data",[88,544,371],{"class":164},[88,546,115],{"class":114},[88,548,549,551,553],{"class":90,"line":230},[88,550,368],{"class":114},[88,552,371],{"class":110},[88,554,115],{"class":114},[556,557,558],"blockquote",{},[28,559,560,561,564],{},"事件监听建议在 ",[50,562,563],{},"ready"," 之前注册，避免错过初始化阶段事件。",[79,566,568],{"className":81,"code":567,"language":83,"meta":84,"style":84},"\u002F\u002F ... 先注册监听\nawait wpsInstance.value.ready();\n",[50,569,570,575],{"__ignoreMap":84},[88,571,572],{"class":90,"line":91},[88,573,574],{"class":157},"\u002F\u002F ... 先注册监听\n",[88,576,577,580,582,584,586,588,590,592],{"class":90,"line":118},[88,578,579],{"class":440},"await",[88,581,99],{"class":110},[88,583,131],{"class":114},[88,585,394],{"class":110},[88,587,131],{"class":114},[88,589,563],{"class":106},[88,591,111],{"class":110},[88,593,115],{"class":114},[74,595,597],{"id":596},"_3-执行保存","3. 执行保存",[28,599,600,601,604],{},"除快捷键 ",[50,602,603],{},"Ctrl + S"," 外，可提供业务保存按钮，统一触发保存逻辑：",[79,606,608],{"className":81,"code":607,"language":83,"meta":84,"style":84},"const result = await wpsInstance.value.save();\n\u002F\u002F 返回结果字段可参考：\n\u002F\u002F https:\u002F\u002Fsolution.wps.cn\u002Fdocs\u002Fweb\u002Finstance.html#save\n",[50,609,610,637,642],{"__ignoreMap":84},[88,611,612,614,617,619,622,624,626,628,630,633,635],{"class":90,"line":91},[88,613,95],{"class":94},[88,615,616],{"class":98}," result",[88,618,103],{"class":102},[88,620,621],{"class":440}," await",[88,623,99],{"class":110},[88,625,131],{"class":114},[88,627,394],{"class":110},[88,629,131],{"class":114},[88,631,632],{"class":106},"save",[88,634,111],{"class":110},[88,636,115],{"class":114},[88,638,639],{"class":90,"line":118},[88,640,641],{"class":157},"\u002F\u002F 返回结果字段可参考：\n",[88,643,644],{"class":90,"line":125},[88,645,646],{"class":157},"\u002F\u002F https:\u002F\u002Fsolution.wps.cn\u002Fdocs\u002Fweb\u002Finstance.html#save\n",[68,648],{},[24,650,651],{"id":651},"落地注意事项",[31,653,654,657,668],{},[34,655,656],{},"若出现预览\u002F编辑异常，通常需要先确认后端鉴权与文档接口是否正常；",[34,658,659,660,662,663,662,665,667],{},"前端需对 ",[50,661,563],{},"、",[50,664,411],{},[50,666,632],{}," 结果做状态提示，避免用户误判；",[34,669,670],{},"建议增加保存成功\u002F失败埋点，便于后续稳定性分析。",[24,672,673],{"id":673},"前后端协作分工",[13,675,676,692],{},[677,678,679],"thead",{},[680,681,682,686,689],"tr",{},[683,684,685],"th",{},"环节",[683,687,688],{},"前端职责",[683,690,691],{},"后端职责",[693,694,695,710,721,732,743],"tbody",{},[680,696,697,701,704],{},[698,699,700],"td",{},"文档创建",[698,702,703],{},"触发创建入口（如「新建测量表」按钮）",[698,705,706,707],{},"调用 WPS 开放平台接口创建文档，返回 ",[50,708,709],{},"fileId",[680,711,712,715,718],{},[698,713,714],{},"鉴权",[698,716,717],{},"携带业务 token 发起初始化",[698,719,720],{},"生成\u002F校验 WebOffice 所需的鉴权 token",[680,722,723,726,729],{},[698,724,725],{},"权限控制",[698,727,728],{},"根据业务角色决定是否展示编辑入口",[698,730,731],{},"在文档权限层面控制只读\u002F可编辑范围，避免仅靠前端隐藏按钮",[680,733,734,737,740],{},[698,735,736],{},"保存回调",[698,738,739],{},"触发保存、展示保存状态",[698,741,742],{},"接收 WPS 保存回调（如有），落库或同步业务状态",[680,744,745,748,751],{},[698,746,747],{},"异常兜底",[698,749,750],{},"展示统一的异常提示与重试入口",[698,752,753],{},"记录接口异常日志，便于排查签名\u002F权限问题",[24,755,756],{"id":756},"常见问题排查",[13,758,759,772],{},[677,760,761],{},[680,762,763,766,769],{},[683,764,765],{},"现象",[683,767,768],{},"可能原因",[683,770,771],{},"排查方向",[693,773,774,797,808,825],{},[680,775,776,782,794],{},[698,777,778,779,781],{},"容器空白，",[50,780,411],{}," 未触发",[698,783,784,787,788,787,790,793],{},[50,785,786],{},"appId","\u002F",[50,789,709],{},[50,791,792],{},"token"," 任一参数无效",[698,795,796],{},"检查初始化参数是否与后端返回值一致，浏览器控制台是否有跨域或鉴权报错",[680,798,799,802,805],{},[698,800,801],{},"打开后无法编辑",[698,803,804],{},"文档权限被后端设置为只读",[698,806,807],{},"与后端确认当前用户在文档层面的权限配置",[680,809,810,813,818],{},[698,811,812],{},"保存无响应或报错",[698,814,815,817],{},[50,816,792],{}," 过期，或网络中断",[698,819,820,821,824],{},"检查 ",[50,822,823],{},"save()"," 返回结果与错误信息，必要时刷新 token 后重试",[680,826,827,830,833],{},[698,828,829],{},"多人编辑时看不到对方变更",[698,831,832],{},"依赖 WPS 协同能力是否正确启用",[698,834,835],{},"确认接入的文档类型与套餐是否支持多人实时协同",[24,837,838],{"id":838},"回归检查清单",[31,840,843,852,858,867,876],{"className":841},[842],"contains-task-list",[34,844,847,851],{"className":845},[846],"task-list-item",[848,849],"input",{"disabled":121,"type":850},"checkbox"," 新建文档、打开已有文档两条路径均可正常加载出表格内容；",[34,853,855,857],{"className":854},[846],[848,856],{"disabled":121,"type":850}," 多人同时打开同一文档编辑，变更可以实时同步展示；",[34,859,861,863,864,866],{"className":860},[846],[848,862],{"disabled":121,"type":850}," 手动点击保存按钮与 ",[50,865,603],{}," 快捷键均可正常触发保存并给出成功提示；",[34,868,870,872,873,875],{"className":869},[846],[848,871],{"disabled":121,"type":850}," 网络异常\u002F",[50,874,792],{}," 过期场景下，页面有明确的错误提示而非静默失败；",[34,877,879,881],{"className":878},[846],[848,880],{"disabled":121,"type":850}," 只读权限用户打开文档时，编辑相关操作被正确禁用。",[24,883,884],{"id":884},"相关链接",[31,886,887],{},[34,888,889],{},[59,890,892],{"href":891},"\u002Fknowledge\u002Fteam-documents\u002F17","支付中转页面升级实践",[894,895,896],"style",{},"html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .syTEX, html code.shiki .syTEX{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}",{"title":84,"searchDepth":118,"depth":118,"links":898},[899,900,901,906,907,908,909,910],{"id":26,"depth":118,"text":26},{"id":45,"depth":118,"text":45},{"id":72,"depth":118,"text":72,"children":902},[903,904,905],{"id":76,"depth":125,"text":77},{"id":376,"depth":125,"text":377},{"id":596,"depth":125,"text":597},{"id":651,"depth":118,"text":651},{"id":673,"depth":118,"text":673},{"id":756,"depth":118,"text":756},{"id":838,"depth":118,"text":838},{"id":884,"depth":118,"text":884},{"title":8,"description":9},"knowledge\u002Fteam-documents\u002F16","knowledge\u002Fknowledge\u002Fteam-documents\u002F16.md","md",{"items":916},[917,921,925,929,933,937],{"path":918,"title":919,"description":920,"category":10,"score":212},"\u002Fknowledge\u002Fteam-documents\u002F19","GridView 宫格加载渲染优化","系统首页 GridView 宫格模块接口耗时不高，但首次进入总耗时接近 22s。复盘耗时分层定位过程、代码层面的瓶颈（约 2000 行、100 个 tab 重复节点）、优化手段与最终指标对比。",{"path":922,"title":923,"description":924,"category":10,"score":212},"\u002Fknowledge\u002Fteam-documents\u002F13","新商家系统性能优化实践","商家系统新版本上线后，团队持续针对构建效率与用户体验做了一轮系统性优化。本文记录核心方案与落地结果，供后续版本复用。",{"path":926,"title":927,"description":928,"category":10,"score":212},"\u002Fknowledge\u002Fteam-documents\u002F04","老系统升级与兼容改造实践","公司原有业务系统采用 Node + jQuery 架构，长期运行后暴露出典型遗留系统问题：",{"path":930,"title":931,"description":932,"category":10,"score":212},"\u002Fknowledge\u002Fteam-documents\u002F21","vxe-table 行 Hover 联动高亮","近期需求是双表格联动高亮：",{"path":934,"title":935,"description":936,"category":10,"score":212},"\u002Fknowledge\u002Fteam-documents\u002F01","执行价格弹窗：表头 \u002F 表体合并与可配置表格","业务需要在「执行价格」类弹窗中展示多块价格配置（基础、颜色、规格、行业等）。每块区域具备：",{"path":938,"title":939,"description":940,"category":10,"score":212},"\u002Fknowledge\u002Fteam-documents\u002F11","系统下单（重复单提示框）异常复盘","下单流程中重复单提示弹窗出现「闪烁后消失」或「未正常展示」的异常。复盘时间线、影响范围、根因（弹层无差别 closeAll）、修复方案与回归检查项，避免风控提示被误关闭。",{"series":942,"title":943,"items":944,"index":274,"prev":1016,"next":1017},"team-documents","team documents",[945,947,951,955,957,961,965,969,973,977,981,983,987,989,993,997,998,1000,1004,1006,1010,1012],{"path":934,"title":935,"date":946,"pinned":16},"2024-07-27",{"path":948,"title":949,"date":950,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F02","防篡改水印","2024-01-09",{"path":952,"title":953,"date":954,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F03","键盘弹起导致底部被顶起问题（H5 适配）","2024-09-17",{"path":926,"title":927,"date":956,"pinned":16},"2024-12-12",{"path":958,"title":959,"date":960,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F05","内部插件 \u002F 工具库开发实践","2021-08-19",{"path":962,"title":963,"date":964,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F06","企业微信与小程序工单问题","2025-10-01",{"path":966,"title":967,"date":968,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F07","企业微信群工具打开缓慢原因分析","2020-04-12",{"path":970,"title":971,"date":972,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F08","属性排序需求","2024-06-16",{"path":974,"title":975,"date":976,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F09","同业主重复单提醒规则","2020-06-07",{"path":978,"title":979,"date":980,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F10","图片上传前的自定义水印实践","2021-06-10",{"path":938,"title":939,"date":982,"pinned":16},"2023-11-21",{"path":984,"title":985,"date":986,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F12","系统自动更新说明","2025-05-26",{"path":922,"title":923,"date":988,"pinned":16},"2025-04-08",{"path":990,"title":991,"date":992,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F14","选项卡切换与 Loading 状态封装","2019-11-03",{"path":994,"title":995,"date":996,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F15","移动端返回事件触发两次问题复盘","2021-03-09",{"path":7,"title":8,"date":15,"pinned":16},{"path":891,"title":892,"date":999,"pinned":16},"2022-10-15",{"path":1001,"title":1002,"date":1003,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F18","中英文输入法下搜索触发冲突复盘","2024-09-01",{"path":918,"title":919,"date":1005,"pinned":16},"2026-03-17",{"path":1007,"title":1008,"date":1009,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F20","H5 GPS 定位问题说明","2023-08-31",{"path":930,"title":931,"date":1011,"pinned":16},"2024-08-31",{"path":1013,"title":1014,"date":1015,"pinned":16},"\u002Fknowledge\u002Fteam-documents\u002F22","企业微信 uni-app H5：OAuth 回退白屏与列表缓存","2023-08-17",{"path":994,"title":995,"date":996,"pinned":16},{"path":891,"title":892,"date":999,"pinned":16}]