.playwright-mcp/page-2026-08-28T07-29-23-803Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T07-29-42-173Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,104 @@ - generic [ref=e7]: - complementary [ref=e9]: - generic [ref=e10]: - generic [ref=e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=e19] - generic [ref=e20]: æµè¯å ¬å¸åå - menu [ref=e23]: - menuitem "é¦é¡µ" [ref=e24] [cursor=pointer] - listitem [ref=e28]: - generic [ref=e29] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=e37]: - generic [ref=e38] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=e46]: - generic [ref=e47] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=e341]: - menuitem "æ¹æ¬¡ç产管ç" [ref=e342] [cursor=pointer] - menuitem "èµç 管ç" [ref=e347] [cursor=pointer] - menuitem "æçç 管ç" [ref=e353] [cursor=pointer] - menuitem "产线维æ¤" [ref=e360] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=e367] [cursor=pointer] - listitem [ref=e53]: - generic [ref=e54] [cursor=pointer]: è´¨é管ç - listitem [ref=e60]: - generic [ref=e61] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=e68] [cursor=pointer] - generic [ref=e73]: - generic [ref=e74]: - banner [ref=e75]: - button [ref=e76] [cursor=pointer] - button [ref=e79] [cursor=pointer] - navigation "breadcrumb" [ref=e84]: - list [ref=e85]: - listitem [ref=e86]: - link "é¦é¡µ" [disabled] [ref=e87] - generic [ref=e91]: - generic [ref=e93] [cursor=pointer]: - generic [ref=e97]: æç´¢ - generic [ref=e98]: Ctrl K - button [ref=e100] [cursor=pointer] - button "dark" [ref=e105] [cursor=pointer] - button [ref=e114] [cursor=pointer] - button [ref=e120] [cursor=pointer] - button [ref=e122] [cursor=pointer] - button [ref=e128] [cursor=pointer]: - button [ref=e130] - button "å·¥ä½å°" [ref=e134] [cursor=pointer] - button "çå" [ref=e137] [cursor=pointer] - generic [ref=e144]: - generic [ref=e145]: é¦é¡µ - generic [ref=e163]: - button [ref=e164] [cursor=pointer] - generic [ref=e171] [cursor=pointer] - generic [ref=e175] [cursor=pointer] - main [ref=e182]: - generic [ref=e185]: - generic [ref=e186]: - generic [ref=e193] [cursor=pointer]: - generic [ref=e194]: åç§æ»æ° - generic [ref=e195]: "1" - generic [ref=e203] [cursor=pointer]: - generic [ref=e204]: MES åç§ - generic [ref=e205]: "0" - generic [ref=e213] [cursor=pointer]: - generic [ref=e214]: åç§åç±» - generic [ref=e215]: "1" - generic [ref=e223] [cursor=pointer]: - generic [ref=e224]: 计éåä½ - generic [ref=e225]: "1" - generic [ref=e227]: - generic [ref=e234] [cursor=pointer]: - generic [ref=e235]: 产线 - generic [ref=e236]: "1" - generic [ref=e244] [cursor=pointer]: - generic [ref=e245]: çäº§æ¹æ¬¡ - generic [ref=e246]: "2" - generic [ref=e254] [cursor=pointer]: - generic [ref=e255]: è¢ç - generic [ref=e256]: 1,101 - generic [ref=e264] [cursor=pointer]: - generic [ref=e265]: æçç - generic [ref=e266]: "10" - generic [ref=e268]: - generic [ref=e272]: - generic [ref=e273]: è¢ç çæè¶å¿ - generic [ref=e275]: - generic [ref=e276] [cursor=pointer]: - generic [ref=e277]: - radio "è¿ 7 天" [checked] - generic [ref=e278]: è¿ 7 天 - generic [ref=e279] [cursor=pointer]: - generic [ref=e280]: - radio "è¿ 30 天" - generic [ref=e281]: è¿ 30 天 - generic [ref=e284]: æ¹æ¬¡ç¶æåå¸ - generic [ref=e291]: è¢ç ç¶æåå¸ - generic [ref=e298]: - generic [ref=e299]: å¿«æ·å ¥å£ - generic [ref=e303]: - generic [ref=e304]: åç§ç®¡ç - generic [ref=e309]: åç§åç±» - generic [ref=e314]: æ¹æ¬¡ç产 - generic [ref=e319]: èµç 管ç .playwright-mcp/page-2026-08-28T07-30-00-661Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,110 @@ - generic [ref=e7]: - complementary [ref=e9]: - generic [ref=e10]: - generic [ref=e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=e19] - generic [ref=e20]: æµè¯å ¬å¸åå - menu [ref=e23]: - menuitem "é¦é¡µ" [ref=e24] [cursor=pointer] - listitem [ref=e28]: - generic [ref=e29] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=e37]: - generic [ref=e38] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=e46]: - generic [ref=e47] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=e341]: - menuitem "æ¹æ¬¡ç产管ç" [active] [ref=e342] [cursor=pointer] - menuitem "èµç 管ç" [ref=e347] [cursor=pointer] - menuitem "æçç 管ç" [ref=e353] [cursor=pointer] - menuitem "产线维æ¤" [ref=e360] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=e367] [cursor=pointer] - listitem [ref=e53]: - generic [ref=e54] [cursor=pointer]: è´¨é管ç - listitem [ref=e60]: - generic [ref=e61] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=e68] [cursor=pointer] - generic [ref=e73]: - generic [ref=e74]: - banner [ref=e75]: - button [ref=e76] [cursor=pointer] - button [ref=e79] [cursor=pointer] - navigation "breadcrumb" [ref=e84]: - list [ref=e85]: - listitem [ref=e412]: - link "ä¸è¢ä¸ç 管ç" [ref=e413] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=e417] - listitem [ref=e420]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=e421] - generic [ref=e91]: - generic [ref=e93] [cursor=pointer]: - generic [ref=e97]: æç´¢ - generic [ref=e98]: Ctrl K - button [ref=e100] [cursor=pointer] - button "dark" [ref=e105] [cursor=pointer] - button [ref=e114] [cursor=pointer] - button [ref=e120] [cursor=pointer] - button [ref=e122] [cursor=pointer] - button [ref=e128] [cursor=pointer]: - button [ref=e130] - button "å·¥ä½å°" [ref=e134] [cursor=pointer] - button "çå" [ref=e137] [cursor=pointer] - generic [ref=e144]: - generic [ref=e149]: - generic [ref=e150] [cursor=pointer]: é¦é¡µ - generic [ref=e428] [cursor=pointer]: æ¹æ¬¡ç产管ç - generic [ref=e163]: - button [ref=e164] [cursor=pointer] - generic [ref=e171] [cursor=pointer] - generic [ref=e175] [cursor=pointer] - main [ref=e182]: - generic [ref=e185]: - generic [ref=e186]: - generic [ref=e193] [cursor=pointer]: - generic [ref=e194]: åç§æ»æ° - generic [ref=e195]: "1" - generic [ref=e203] [cursor=pointer]: - generic [ref=e204]: MES åç§ - generic [ref=e205]: "0" - generic [ref=e213] [cursor=pointer]: - generic [ref=e214]: åç§åç±» - generic [ref=e215]: "1" - generic [ref=e223] [cursor=pointer]: - generic [ref=e224]: 计éåä½ - generic [ref=e225]: "1" - generic [ref=e227]: - generic [ref=e234] [cursor=pointer]: - generic [ref=e235]: 产线 - generic [ref=e236]: "1" - generic [ref=e244] [cursor=pointer]: - generic [ref=e245]: çäº§æ¹æ¬¡ - generic [ref=e246]: "2" - generic [ref=e254] [cursor=pointer]: - generic [ref=e255]: è¢ç - generic [ref=e256]: 1,101 - generic [ref=e264] [cursor=pointer]: - generic [ref=e265]: æçç - generic [ref=e266]: "10" - generic [ref=e268]: - generic [ref=e272]: - generic [ref=e273]: è¢ç çæè¶å¿ - generic [ref=e275]: - generic [ref=e276] [cursor=pointer]: - generic [ref=e277]: - radio "è¿ 7 天" [checked] - generic [ref=e278]: è¿ 7 天 - generic [ref=e279] [cursor=pointer]: - generic [ref=e280]: - radio "è¿ 30 天" - generic [ref=e281]: è¿ 30 天 - generic [ref=e284]: æ¹æ¬¡ç¶æåå¸ - generic [ref=e291]: è¢ç ç¶æåå¸ - generic [ref=e298]: - generic [ref=e299]: å¿«æ·å ¥å£ - generic [ref=e303]: - generic [ref=e304]: åç§ç®¡ç - generic [ref=e309]: åç§åç±» - generic [ref=e314]: æ¹æ¬¡ç产 - generic [ref=e319]: èµç 管ç .playwright-mcp/page-2026-08-28T07-30-23-438Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,214 @@ - generic [ref=e7]: - complementary [ref=e9]: - generic [ref=e10]: - generic [ref=e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=e19] - generic [ref=e20]: æµè¯å ¬å¸åå - menu [ref=e23]: - menuitem "é¦é¡µ" [ref=e24] [cursor=pointer] - listitem [ref=e28]: - generic [ref=e29] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=e37]: - generic [ref=e38] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=e46]: - generic [ref=e47] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=e341]: - menuitem "æ¹æ¬¡ç产管ç" [ref=e342] [cursor=pointer] - menuitem "èµç 管ç" [ref=e347] [cursor=pointer] - menuitem "æçç 管ç" [ref=e353] [cursor=pointer] - menuitem "产线维æ¤" [ref=e360] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=e367] [cursor=pointer] - listitem [ref=e53]: - generic [ref=e54] [cursor=pointer]: è´¨é管ç - listitem [ref=e60]: - generic [ref=e61] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=e68] [cursor=pointer] - generic [ref=e73]: - generic [ref=e74]: - banner [ref=e75]: - button [ref=e76] [cursor=pointer] - button [ref=e79] [cursor=pointer] - navigation "breadcrumb" [ref=e84]: - list [ref=e85]: - listitem [ref=e412]: - link "ä¸è¢ä¸ç 管ç" [ref=e413] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=e417] - listitem [ref=e420]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=e421] - generic [ref=e91]: - generic [ref=e93] [cursor=pointer]: - generic [ref=e97]: æç´¢ - generic [ref=e98]: Ctrl K - button [ref=e100] [cursor=pointer] - button "dark" [ref=e105] [cursor=pointer] - button [ref=e114] [cursor=pointer] - button [ref=e120] [cursor=pointer] - button [ref=e122] [cursor=pointer] - button [ref=e128] [cursor=pointer]: - button [ref=e130] - button "å·¥ä½å°" [ref=e134] [cursor=pointer] - button "çå" [ref=e137] [cursor=pointer] - generic [ref=e144]: - generic [ref=e149]: - generic [ref=e150] [cursor=pointer]: é¦é¡µ - generic [ref=e428] [cursor=pointer]: æ¹æ¬¡ç产管ç - generic [ref=e163]: - button [ref=e164] [cursor=pointer] - generic [ref=e171] [cursor=pointer] - generic [ref=e175] [cursor=pointer] - main [ref=e182]: - generic [ref=e448]: - generic [ref=e453]: - generic [ref=e454]: - generic [ref=e455]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=e461]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=e463]: - generic [ref=e464]: åç§ - textbox "è¯·éæ©åç§" [ref=e471] - generic [ref=e477]: - generic [ref=e478]: 产线ç¼ç - textbox "产线ç¼ç " [ref=e484]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=e486]: - generic [ref=e487]: 产线åç§° - textbox "产线åç§°" [ref=e493]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=e495]: - generic [ref=e496]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=e503] - generic [ref=e509]: - generic [ref=e510]: æ¹æ¬¡ç¶æ - generic [ref=e516] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=e518] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=e519]: - generic [ref=e520]: çäº§æ¥æ - generic [ref=e525]: - textbox "çäº§æ¥æ" [ref=e527]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=e529]: - img "swap-right" [ref=e530] - textbox "ç»ææ¶é´" [ref=e534] - generic: - img "calendar" - generic [ref=e535]: - generic [ref=e536]: å建æ¶é´ - generic [ref=e541]: - textbox "å建æ¶é´" [ref=e543]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=e545]: - img "swap-right" [ref=e546] - textbox "ç»ææ¶é´" [ref=e550] - generic: - img "calendar" - generic [ref=e551]: - button "é ç½®" [ref=e552] [cursor=pointer] - button "æ ç´¢" [ref=e554] [cursor=pointer] - generic [ref=e556] [cursor=pointer]: æ¶èµ· - generic [ref=e563]: - generic [ref=e565]: - generic [ref=e566]: çäº§æ¹æ¬¡å表 - generic [ref=e570]: - generic [ref=e572]: - button "é¢çæäºç»´ç " [active] [ref=e574] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [ref=e579] [cursor=pointer] - button "æ«ç 追溯" [ref=e584] [cursor=pointer] - button "导åº" [ref=e591] [cursor=pointer] - button "î" [ref=e597] [cursor=pointer] - generic [ref=e599]: - button "î©" [ref=e600] [cursor=pointer] - button "î" [ref=e602] [cursor=pointer] - button "î" [ref=e604] [cursor=pointer] - generic [ref=e611]: - generic [ref=e612]: - table [ref=e616]: - rowgroup [ref=e631]: - row [ref=e632]: - columnheader "åç§ç¼ç " [ref=e633] - columnheader "åç§åç§°" [ref=e638] - columnheader "产线ç¼ç " [ref=e643] - columnheader "产线åç§°" [ref=e648] - columnheader "çäº§æ¥æ" [ref=e653] - columnheader "è®¡åæ°é" [ref=e658] - columnheader "责任人" [ref=e663] - columnheader "è¢ç æ°é" [ref=e668] - columnheader "æçç æ°é" [ref=e673] - columnheader "æ¹æ¬¡ç¶æ" [ref=e678] - columnheader "å建æ¶é´" [ref=e683] - table [ref=e691]: - rowgroup [ref=e706]: - row [ref=e707]: - cell "ITEM_20260819003" [ref=e708] - cell "æµè¯" [ref=e712] - cell "two" [ref=e716] - cell "产线äº" [ref=e720] - cell "2026-08-21 13:39:56" [ref=e724] - cell "100" [ref=e728] - cell "çè" [ref=e732] - cell "0" [ref=e736] - cell "0" [ref=e740] - cell "è稿" [ref=e744] - cell "2026-08-21 13:40:10" [ref=e748] - row [ref=e752]: - cell "ITEM_20260819003" [ref=e753] - cell "æµè¯" [ref=e757] - cell "two" [ref=e761] - cell "产线äº" [ref=e765] - cell "2026-08-19 10:48:02" [ref=e769] - cell "10000" [ref=e773] - cell "è¶ çº§ç®¡çå" [ref=e777] - cell "100" [ref=e781] - cell "10" [ref=e785] - cell "已宿" [ref=e789] - cell "2026-08-19 10:48:22" [ref=e793] - generic: - generic [ref=e797]: - table [ref=e800]: - rowgroup [ref=e815]: - row [ref=e816]: - columnheader "æ¹æ¬¡å·" [ref=e817] - table [ref=e824]: - rowgroup [ref=e827]: - row [ref=e828]: - cell [ref=e829]: - button "PC20260821twoITEM_001" [ref=e832] [cursor=pointer] - row [ref=e834]: - cell [ref=e835]: - button "PC20260819twoITEM_001" [ref=e838] [cursor=pointer] - generic [ref=e840]: - table [ref=e843]: - rowgroup [ref=e858]: - row [ref=e859]: - columnheader "æä½" [ref=e860] - table [ref=e867]: - rowgroup [ref=e870]: - row [ref=e871]: - cell [ref=e872]: - generic [ref=e875]: - generic [ref=e876]: - button "æ¥çäºç»´ç " [ref=e878] [cursor=pointer] - button "ä¿®æ¹" [ref=e881] [cursor=pointer] - button "å é¤" [ref=e888] [cursor=pointer] - button "æ´å¤" [ref=e892] [cursor=pointer] - row [ref=e898]: - cell [ref=e899]: - generic [ref=e902]: - button "æ¥çäºç»´ç " [ref=e905] [cursor=pointer] - button "æ´å¤" [ref=e907] [cursor=pointer] - generic [ref=e919]: - generic [ref=e920]: å ± 2 æ¡è®°å½ - generic [ref=e922] [cursor=pointer]: - generic "20æ¡/页" [ref=e923]: - textbox "è¯·éæ©" [ref=e924]: 20æ¡/页 - generic [ref=e925]: î£ - button "ï" [ref=e928] - button "î¥" [ref=e930] - button "î" [ref=e932] - button "1" [ref=e935] [cursor=pointer] - button "î" [ref=e936] - button "î¦" [ref=e938] - button "î" [ref=e940] .playwright-mcp/page-2026-08-28T07-33-08-854Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T07-33-35-681Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,212 @@ - generic [ref=f1e7]: - complementary [ref=f1e9]: - generic [ref=f1e10]: - generic [ref=f1e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f1e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f1e19] - generic [ref=f1e20]: æµè¯å ¬å¸åå - menu [ref=f1e23]: - menuitem "é¦é¡µ" [ref=f1e24] [cursor=pointer] - listitem [ref=f1e29]: - generic [ref=f1e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f1e38]: - generic [ref=f1e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f1e47]: - generic [ref=f1e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f1e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f1e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f1e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f1e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f1e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f1e80] [cursor=pointer] - listitem [ref=f1e85]: - generic [ref=f1e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f1e92]: - generic [ref=f1e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f1e100] [cursor=pointer] - generic [ref=f1e105]: - generic [ref=f1e106]: - banner [ref=f1e107]: - button [ref=f1e108] [cursor=pointer] - button [ref=f1e111] [cursor=pointer] - navigation "breadcrumb" [ref=f1e116]: - list [ref=f1e117]: - listitem [ref=f1e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f1e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f1e123] - listitem [ref=f1e126]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=f1e127] - generic [ref=f1e132]: - generic [ref=f1e134] [cursor=pointer]: - generic [ref=f1e138]: æç´¢ - generic [ref=f1e139]: Ctrl K - button [ref=f1e141] [cursor=pointer] - button "dark" [ref=f1e146] [cursor=pointer] - button [ref=f1e155] [cursor=pointer] - button [ref=f1e161] [cursor=pointer] - button [ref=f1e164] [cursor=pointer] - button [ref=f1e170] [cursor=pointer]: - button [ref=f1e172] - button "å·¥ä½å°" [ref=f1e176] [cursor=pointer] - button "çå" [ref=f1e180] [cursor=pointer] - generic [ref=f1e187]: - generic [ref=f1e188]: æ¹æ¬¡ç产管ç - generic [ref=f1e207]: - button [ref=f1e208] [cursor=pointer] - generic [ref=f1e215] [cursor=pointer] - generic [ref=f1e219] [cursor=pointer] - main [ref=f1e226]: - generic [ref=f1e231]: - generic [ref=f1e236]: - generic [ref=f1e237]: - generic [ref=f1e238]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f1e244]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f1e246]: - generic [ref=f1e247]: åç§ - textbox "è¯·éæ©åç§" [ref=f1e254] - generic [ref=f1e260]: - generic [ref=f1e261]: 产线ç¼ç - textbox "产线ç¼ç " [ref=f1e267]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=f1e269]: - generic [ref=f1e270]: 产线åç§° - textbox "产线åç§°" [ref=f1e276]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=f1e278]: - generic [ref=f1e279]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f1e286] - generic [ref=f1e292]: - generic [ref=f1e293]: æ¹æ¬¡ç¶æ - generic [ref=f1e299] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=f1e301] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=f1e302]: - generic [ref=f1e303]: çäº§æ¥æ - generic [ref=f1e308]: - textbox "çäº§æ¥æ" [ref=f1e310]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f1e312]: - img "swap-right" [ref=f1e313] - textbox "ç»ææ¶é´" [ref=f1e317] - generic: - img "calendar" - generic [ref=f1e318]: - generic [ref=f1e319]: å建æ¶é´ - generic [ref=f1e324]: - textbox "å建æ¶é´" [ref=f1e326]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f1e328]: - img "swap-right" [ref=f1e329] - textbox "ç»ææ¶é´" [ref=f1e333] - generic: - img "calendar" - generic [ref=f1e334]: - button "é ç½®" [ref=f1e335] [cursor=pointer] - button "æ ç´¢" [ref=f1e337] [cursor=pointer] - generic [ref=f1e339] [cursor=pointer]: æ¶èµ· - generic [ref=f1e346]: - generic [ref=f1e348]: - generic [ref=f1e349]: çäº§æ¹æ¬¡å表 - generic [ref=f1e353]: - generic [ref=f1e355]: - button "é¢çæäºç»´ç " [active] [ref=f1e357] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [ref=f1e362] [cursor=pointer] - button "æ«ç 追溯" [ref=f1e367] [cursor=pointer] - button "导åº" [ref=f1e374] [cursor=pointer] - button "î" [ref=f1e380] [cursor=pointer] - generic [ref=f1e382]: - button "î©" [ref=f1e383] [cursor=pointer] - button "î" [ref=f1e385] [cursor=pointer] - button "î" [ref=f1e387] [cursor=pointer] - generic [ref=f1e394]: - generic [ref=f1e395]: - table [ref=f1e399]: - rowgroup [ref=f1e414]: - row [ref=f1e415]: - columnheader "åç§ç¼ç " [ref=f1e416] - columnheader "åç§åç§°" [ref=f1e421] - columnheader "产线ç¼ç " [ref=f1e426] - columnheader "产线åç§°" [ref=f1e431] - columnheader "çäº§æ¥æ" [ref=f1e436] - columnheader "è®¡åæ°é" [ref=f1e441] - columnheader "责任人" [ref=f1e446] - columnheader "è¢ç æ°é" [ref=f1e451] - columnheader "æçç æ°é" [ref=f1e456] - columnheader "æ¹æ¬¡ç¶æ" [ref=f1e461] - columnheader "å建æ¶é´" [ref=f1e466] - table [ref=f1e474]: - rowgroup [ref=f1e489]: - row [ref=f1e490]: - cell "ITEM_20260819003" [ref=f1e491] - cell "æµè¯" [ref=f1e495] - cell "two" [ref=f1e499] - cell "产线äº" [ref=f1e503] - cell "2026-08-21 13:39:56" [ref=f1e507] - cell "100" [ref=f1e511] - cell "çè" [ref=f1e515] - cell "0" [ref=f1e519] - cell "0" [ref=f1e523] - cell "è稿" [ref=f1e527] - cell "2026-08-21 13:40:10" [ref=f1e531] - row [ref=f1e535]: - cell "ITEM_20260819003" [ref=f1e536] - cell "æµè¯" [ref=f1e540] - cell "two" [ref=f1e544] - cell "产线äº" [ref=f1e548] - cell "2026-08-19 10:48:02" [ref=f1e552] - cell "10000" [ref=f1e556] - cell "è¶ çº§ç®¡çå" [ref=f1e560] - cell "100" [ref=f1e564] - cell "10" [ref=f1e568] - cell "已宿" [ref=f1e572] - cell "2026-08-19 10:48:22" [ref=f1e576] - generic: - generic [ref=f1e580]: - table [ref=f1e583]: - rowgroup [ref=f1e598]: - row [ref=f1e599]: - columnheader "æ¹æ¬¡å·" [ref=f1e600] - table [ref=f1e607]: - rowgroup [ref=f1e610]: - row [ref=f1e611]: - cell [ref=f1e612]: - button "PC20260821twoITEM_001" [ref=f1e615] [cursor=pointer] - row [ref=f1e617]: - cell [ref=f1e618]: - button "PC20260819twoITEM_001" [ref=f1e621] [cursor=pointer] - generic [ref=f1e623]: - table [ref=f1e626]: - rowgroup [ref=f1e641]: - row [ref=f1e642]: - columnheader "æä½" [ref=f1e643] - table [ref=f1e650]: - rowgroup [ref=f1e653]: - row [ref=f1e654]: - cell [ref=f1e655]: - generic [ref=f1e658]: - generic [ref=f1e659]: - button "æ¥çäºç»´ç " [ref=f1e661] [cursor=pointer] - button "ä¿®æ¹" [ref=f1e664] [cursor=pointer] - button "å é¤" [ref=f1e671] [cursor=pointer] - button "æ´å¤" [ref=f1e675] [cursor=pointer] - row [ref=f1e681]: - cell [ref=f1e682]: - generic [ref=f1e685]: - button "æ¥çäºç»´ç " [ref=f1e688] [cursor=pointer] - button "æ´å¤" [ref=f1e690] [cursor=pointer] - generic [ref=f1e702]: - generic [ref=f1e703]: å ± 2 æ¡è®°å½ - generic [ref=f1e705] [cursor=pointer]: - generic "20æ¡/页" [ref=f1e706]: - textbox "è¯·éæ©" [ref=f1e707]: 20æ¡/页 - generic [ref=f1e708]: î£ - button "ï" [ref=f1e711] - button "î¥" [ref=f1e713] - button "î" [ref=f1e715] - button "1" [ref=f1e718] [cursor=pointer] - button "î" [ref=f1e719] - button "î¦" [ref=f1e721] - button "î" [ref=f1e723] .playwright-mcp/page-2026-08-28T07-41-21-761Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T07-41-44-827Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,212 @@ - generic [ref=f3e4]: - complementary [ref=f3e6]: - generic [ref=f3e7]: - generic [ref=f3e8] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f3e13] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f3e16] - generic [ref=f3e17]: æµè¯å ¬å¸åå - menu [ref=f3e20]: - menuitem "é¦é¡µ" [ref=f3e21] [cursor=pointer] - listitem [ref=f3e26]: - generic [ref=f3e27] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f3e35]: - generic [ref=f3e36] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f3e44]: - generic [ref=f3e45] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f3e51]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f3e52] [cursor=pointer] - menuitem "èµç 管ç" [ref=f3e57] [cursor=pointer] - menuitem "æçç 管ç" [ref=f3e63] [cursor=pointer] - menuitem "产线维æ¤" [ref=f3e70] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f3e77] [cursor=pointer] - listitem [ref=f3e82]: - generic [ref=f3e83] [cursor=pointer]: è´¨é管ç - listitem [ref=f3e89]: - generic [ref=f3e90] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f3e97] [cursor=pointer] - generic [ref=f3e102]: - generic [ref=f3e103]: - banner [ref=f3e104]: - button [ref=f3e105] [cursor=pointer] - button [ref=f3e108] [cursor=pointer] - navigation "breadcrumb" [ref=f3e113]: - list [ref=f3e114]: - listitem [ref=f3e115]: - link "ä¸è¢ä¸ç 管ç" [ref=f3e116] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f3e120] - listitem [ref=f3e123]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=f3e124] - generic [ref=f3e129]: - generic [ref=f3e131] [cursor=pointer]: - generic [ref=f3e135]: æç´¢ - generic [ref=f3e136]: Ctrl K - button [ref=f3e138] [cursor=pointer] - button "dark" [ref=f3e143] [cursor=pointer] - button [ref=f3e152] [cursor=pointer] - button [ref=f3e158] [cursor=pointer] - button [ref=f3e161] [cursor=pointer] - button [ref=f3e167] [cursor=pointer]: - button [ref=f3e169] - button "å·¥ä½å°" [ref=f3e173] [cursor=pointer] - button "çå" [ref=f3e177] [cursor=pointer] - generic [ref=f3e184]: - generic [ref=f3e185]: æ¹æ¬¡ç产管ç - generic [ref=f3e204]: - button [ref=f3e205] [cursor=pointer] - generic [ref=f3e212] [cursor=pointer] - generic [ref=f3e216] [cursor=pointer] - main [ref=f3e223]: - generic [ref=f3e228]: - generic [ref=f3e233]: - generic [ref=f3e234]: - generic [ref=f3e235]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f3e241]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f3e243]: - generic [ref=f3e244]: åç§ - textbox "è¯·éæ©åç§" [ref=f3e251] - generic [ref=f3e257]: - generic [ref=f3e258]: 产线ç¼ç - textbox "产线ç¼ç " [ref=f3e264]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=f3e266]: - generic [ref=f3e267]: 产线åç§° - textbox "产线åç§°" [ref=f3e273]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=f3e275]: - generic [ref=f3e276]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f3e283] - generic [ref=f3e289]: - generic [ref=f3e290]: æ¹æ¬¡ç¶æ - generic [ref=f3e296] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=f3e298] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=f3e299]: - generic [ref=f3e300]: çäº§æ¥æ - generic [ref=f3e305]: - textbox "çäº§æ¥æ" [ref=f3e307]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f3e309]: - img "swap-right" [ref=f3e310] - textbox "ç»ææ¶é´" [ref=f3e314] - generic: - img "calendar" - generic [ref=f3e315]: - generic [ref=f3e316]: å建æ¶é´ - generic [ref=f3e321]: - textbox "å建æ¶é´" [ref=f3e323]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f3e325]: - img "swap-right" [ref=f3e326] - textbox "ç»ææ¶é´" [ref=f3e330] - generic: - img "calendar" - generic [ref=f3e331]: - button "é ç½®" [ref=f3e332] [cursor=pointer] - button "æ ç´¢" [ref=f3e334] [cursor=pointer] - generic [ref=f3e336] [cursor=pointer]: æ¶èµ· - generic [ref=f3e343]: - generic [ref=f3e345]: - generic [ref=f3e346]: çäº§æ¹æ¬¡å表 - generic [ref=f3e350]: - generic [ref=f3e352]: - button "é¢çæäºç»´ç " [active] [ref=f3e354] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [ref=f3e359] [cursor=pointer] - button "æ«ç 追溯" [ref=f3e364] [cursor=pointer] - button "导åº" [ref=f3e371] [cursor=pointer] - button "î" [ref=f3e377] [cursor=pointer] - generic [ref=f3e379]: - button "î©" [ref=f3e380] [cursor=pointer] - button "î" [ref=f3e382] [cursor=pointer] - button "î" [ref=f3e384] [cursor=pointer] - generic [ref=f3e391]: - generic [ref=f3e392]: - table [ref=f3e396]: - rowgroup [ref=f3e411]: - row [ref=f3e412]: - columnheader "åç§ç¼ç " [ref=f3e413] - columnheader "åç§åç§°" [ref=f3e418] - columnheader "产线ç¼ç " [ref=f3e423] - columnheader "产线åç§°" [ref=f3e428] - columnheader "çäº§æ¥æ" [ref=f3e433] - columnheader "è®¡åæ°é" [ref=f3e438] - columnheader "责任人" [ref=f3e443] - columnheader "è¢ç æ°é" [ref=f3e448] - columnheader "æçç æ°é" [ref=f3e453] - columnheader "æ¹æ¬¡ç¶æ" [ref=f3e458] - columnheader "å建æ¶é´" [ref=f3e463] - table [ref=f3e471]: - rowgroup [ref=f3e486]: - row [ref=f3e487]: - cell "ITEM_20260819003" [ref=f3e488] - cell "æµè¯" [ref=f3e492] - cell "two" [ref=f3e496] - cell "产线äº" [ref=f3e500] - cell "2026-08-21 13:39:56" [ref=f3e504] - cell "100" [ref=f3e508] - cell "çè" [ref=f3e512] - cell "0" [ref=f3e516] - cell "0" [ref=f3e520] - cell "è稿" [ref=f3e524] - cell "2026-08-21 13:40:10" [ref=f3e528] - row [ref=f3e532]: - cell "ITEM_20260819003" [ref=f3e533] - cell "æµè¯" [ref=f3e537] - cell "two" [ref=f3e541] - cell "产线äº" [ref=f3e545] - cell "2026-08-19 10:48:02" [ref=f3e549] - cell "10000" [ref=f3e553] - cell "è¶ çº§ç®¡çå" [ref=f3e557] - cell "100" [ref=f3e561] - cell "10" [ref=f3e565] - cell "已宿" [ref=f3e569] - cell "2026-08-19 10:48:22" [ref=f3e573] - generic: - generic [ref=f3e577]: - table [ref=f3e580]: - rowgroup [ref=f3e595]: - row [ref=f3e596]: - columnheader "æ¹æ¬¡å·" [ref=f3e597] - table [ref=f3e604]: - rowgroup [ref=f3e607]: - row [ref=f3e608]: - cell [ref=f3e609]: - button "PC20260821twoITEM_001" [ref=f3e612] [cursor=pointer] - row [ref=f3e614]: - cell [ref=f3e615]: - button "PC20260819twoITEM_001" [ref=f3e618] [cursor=pointer] - generic [ref=f3e620]: - table [ref=f3e623]: - rowgroup [ref=f3e638]: - row [ref=f3e639]: - columnheader "æä½" [ref=f3e640] - table [ref=f3e647]: - rowgroup [ref=f3e650]: - row [ref=f3e651]: - cell [ref=f3e652]: - generic [ref=f3e655]: - generic [ref=f3e656]: - button "æ¥çäºç»´ç " [ref=f3e658] [cursor=pointer] - button "ä¿®æ¹" [ref=f3e661] [cursor=pointer] - button "å é¤" [ref=f3e668] [cursor=pointer] - button "æ´å¤" [ref=f3e672] [cursor=pointer] - row [ref=f3e678]: - cell [ref=f3e679]: - generic [ref=f3e682]: - button "æ¥çäºç»´ç " [ref=f3e685] [cursor=pointer] - button "æ´å¤" [ref=f3e687] [cursor=pointer] - generic [ref=f3e699]: - generic [ref=f3e700]: å ± 2 æ¡è®°å½ - generic [ref=f3e702] [cursor=pointer]: - generic "20æ¡/页" [ref=f3e703]: - textbox "è¯·éæ©" [ref=f3e704]: 20æ¡/页 - generic [ref=f3e705]: î£ - button "ï" [ref=f3e708] - button "î¥" [ref=f3e710] - button "î" [ref=f3e712] - button "1" [ref=f3e715] [cursor=pointer] - button "î" [ref=f3e716] - button "î¦" [ref=f3e718] - button "î" [ref=f3e720] .playwright-mcp/page-2026-08-28T07-42-08-037Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,285 @@ - generic [ref=f3e1]: - generic [ref=f3e4]: - complementary [ref=f3e6]: - generic [ref=f3e7]: - generic [ref=f3e8] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f3e13] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f3e16] - generic [ref=f3e17]: æµè¯å ¬å¸åå - menu [ref=f3e20]: - menuitem "é¦é¡µ" [ref=f3e21] [cursor=pointer] - listitem [ref=f3e26]: - generic [ref=f3e27] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f3e35]: - generic [ref=f3e36] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f3e44]: - generic [ref=f3e45] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f3e51]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f3e52] [cursor=pointer] - menuitem "èµç 管ç" [ref=f3e57] [cursor=pointer] - menuitem "æçç 管ç" [ref=f3e63] [cursor=pointer] - menuitem "产线维æ¤" [ref=f3e70] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f3e77] [cursor=pointer] - listitem [ref=f3e82]: - generic [ref=f3e83] [cursor=pointer]: è´¨é管ç - listitem [ref=f3e89]: - generic [ref=f3e90] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f3e97] [cursor=pointer] - generic [ref=f3e102]: - generic [ref=f3e103]: - banner [ref=f3e104]: - button [ref=f3e105] [cursor=pointer] - button [ref=f3e108] [cursor=pointer] - navigation "breadcrumb" [ref=f3e113]: - list [ref=f3e114]: - listitem [ref=f3e115]: - link "ä¸è¢ä¸ç 管ç" [ref=f3e116] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f3e120] - listitem [ref=f3e123]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=f3e124] - generic [ref=f3e129]: - generic [ref=f3e131] [cursor=pointer]: - generic [ref=f3e135]: æç´¢ - generic [ref=f3e136]: Ctrl K - button [ref=f3e138] [cursor=pointer] - button "dark" [ref=f3e143] [cursor=pointer] - button [ref=f3e152] [cursor=pointer] - button [ref=f3e158] [cursor=pointer] - button [ref=f3e161] [cursor=pointer] - button [ref=f3e167] [cursor=pointer]: - button [ref=f3e169] - button "å·¥ä½å°" [ref=f3e173] [cursor=pointer] - button "çå" [ref=f3e177] [cursor=pointer] - generic [ref=f3e184]: - generic [ref=f3e185]: æ¹æ¬¡ç产管ç - generic [ref=f3e204]: - button [ref=f3e205] [cursor=pointer] - generic [ref=f3e212] [cursor=pointer] - generic [ref=f3e216] [cursor=pointer] - main [ref=f3e223]: - generic [ref=f3e228]: - generic [ref=f3e233]: - generic [ref=f3e234]: - generic [ref=f3e235]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f3e241]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f3e243]: - generic [ref=f3e244]: åç§ - textbox "è¯·éæ©åç§" [ref=f3e251] - generic [ref=f3e257]: - generic [ref=f3e258]: 产线ç¼ç - textbox "产线ç¼ç " [ref=f3e264]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=f3e266]: - generic [ref=f3e267]: 产线åç§° - textbox "产线åç§°" [ref=f3e273]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=f3e275]: - generic [ref=f3e276]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f3e283] - generic [ref=f3e289]: - generic [ref=f3e290]: æ¹æ¬¡ç¶æ - generic [ref=f3e296] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=f3e298] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=f3e299]: - generic [ref=f3e300]: çäº§æ¥æ - generic [ref=f3e305]: - textbox "çäº§æ¥æ" [ref=f3e307]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f3e309]: - img "swap-right" [ref=f3e310] - textbox "ç»ææ¶é´" [ref=f3e314] - generic: - img "calendar" - generic [ref=f3e315]: - generic [ref=f3e316]: å建æ¶é´ - generic [ref=f3e321]: - textbox "å建æ¶é´" [ref=f3e323]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f3e325]: - img "swap-right" [ref=f3e326] - textbox "ç»ææ¶é´" [ref=f3e330] - generic: - img "calendar" - generic [ref=f3e331]: - button "é ç½®" [ref=f3e332] [cursor=pointer] - button "æ ç´¢" [ref=f3e334] [cursor=pointer] - generic [ref=f3e336] [cursor=pointer]: æ¶èµ· - generic [ref=f3e343]: - generic [ref=f3e345]: - generic [ref=f3e346]: çäº§æ¹æ¬¡å表 - generic [ref=f3e350]: - generic [ref=f3e352]: - button "é¢çæäºç»´ç " [ref=f3e354] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [active] [ref=f3e359] [cursor=pointer] - button "æ«ç 追溯" [ref=f3e364] [cursor=pointer] - button "导åº" [ref=f3e371] [cursor=pointer] - button "î" [ref=f3e377] [cursor=pointer] - generic [ref=f3e379]: - button "î©" [ref=f3e380] [cursor=pointer] - button "î" [ref=f3e382] [cursor=pointer] - button "î" [ref=f3e384] [cursor=pointer] - generic [ref=f3e391]: - generic [ref=f3e392]: - table [ref=f3e396]: - rowgroup [ref=f3e411]: - row [ref=f3e412]: - columnheader "åç§ç¼ç " [ref=f3e413] - columnheader "åç§åç§°" [ref=f3e418] - columnheader "产线ç¼ç " [ref=f3e423] - columnheader "产线åç§°" [ref=f3e428] - columnheader "çäº§æ¥æ" [ref=f3e433] - columnheader "è®¡åæ°é" [ref=f3e438] - columnheader "责任人" [ref=f3e443] - columnheader "è¢ç æ°é" [ref=f3e448] - columnheader "æçç æ°é" [ref=f3e453] - columnheader "æ¹æ¬¡ç¶æ" [ref=f3e458] - columnheader "å建æ¶é´" [ref=f3e463] - table [ref=f3e471]: - rowgroup [ref=f3e486]: - row [ref=f3e487]: - cell "ITEM_20260819003" [ref=f3e488] - cell "æµè¯" [ref=f3e492] - cell "two" [ref=f3e496] - cell "产线äº" [ref=f3e500] - cell "2026-08-21 13:39:56" [ref=f3e504] - cell "100" [ref=f3e508] - cell "çè" [ref=f3e512] - cell "0" [ref=f3e516] - cell "0" [ref=f3e520] - cell "è稿" [ref=f3e524] - cell "2026-08-21 13:40:10" [ref=f3e528] - row [ref=f3e532]: - cell "ITEM_20260819003" [ref=f3e533] - cell "æµè¯" [ref=f3e537] - cell "two" [ref=f3e541] - cell "产线äº" [ref=f3e545] - cell "2026-08-19 10:48:02" [ref=f3e549] - cell "10000" [ref=f3e553] - cell "è¶ çº§ç®¡çå" [ref=f3e557] - cell "100" [ref=f3e561] - cell "10" [ref=f3e565] - cell "已宿" [ref=f3e569] - cell "2026-08-19 10:48:22" [ref=f3e573] - generic: - generic [ref=f3e577]: - table [ref=f3e580]: - rowgroup [ref=f3e595]: - row [ref=f3e596]: - columnheader "æ¹æ¬¡å·" [ref=f3e597] - table [ref=f3e604]: - rowgroup [ref=f3e607]: - row [ref=f3e608]: - cell [ref=f3e609]: - button "PC20260821twoITEM_001" [ref=f3e612] [cursor=pointer] - row [ref=f3e614]: - cell [ref=f3e615]: - button "PC20260819twoITEM_001" [ref=f3e618] [cursor=pointer] - generic [ref=f3e620]: - table [ref=f3e623]: - rowgroup [ref=f3e638]: - row [ref=f3e639]: - columnheader "æä½" [ref=f3e640] - table [ref=f3e647]: - rowgroup [ref=f3e650]: - row [ref=f3e651]: - cell [ref=f3e652]: - generic [ref=f3e655]: - generic [ref=f3e656]: - button "æ¥çäºç»´ç " [ref=f3e658] [cursor=pointer] - button "ä¿®æ¹" [ref=f3e661] [cursor=pointer] - button "å é¤" [ref=f3e668] [cursor=pointer] - button "æ´å¤" [ref=f3e672] [cursor=pointer] - row [ref=f3e678]: - cell [ref=f3e679]: - generic [ref=f3e682]: - button "æ¥çäºç»´ç " [ref=f3e685] [cursor=pointer] - button "æ´å¤" [ref=f3e687] [cursor=pointer] - generic [ref=f3e699]: - generic [ref=f3e700]: å ± 2 æ¡è®°å½ - generic [ref=f3e702] [cursor=pointer]: - generic "20æ¡/页" [ref=f3e703]: - textbox "è¯·éæ©" [ref=f3e704]: 20æ¡/页 - generic [ref=f3e705]: î£ - button "ï" [ref=f3e708] - button "î¥" [ref=f3e710] - button "î" [ref=f3e712] - button "1" [ref=f3e715] [cursor=pointer] - button "î" [ref=f3e716] - button "î¦" [ref=f3e718] - button "î" [ref=f3e720] - dialog [ref=f3e723]: - heading "æ°å¢çäº§æ¹æ¬¡" [level=2] [ref=f3e725] - generic [ref=f3e727]: - generic [ref=f3e729]: - generic [ref=f3e730]: - generic [ref=f3e731]: - generic [ref=f3e732]: "*" - text: å è£ è¢å - generic [ref=f3e738] [cursor=pointer]: - combobox "* å è£ è¢å" [ref=f3e740] - generic: è¯·éæ©å è£ è¢å - generic [ref=f3e741]: - generic [ref=f3e742]: - generic [ref=f3e743]: "*" - text: åç§ - textbox "è¯·éæ©åç§ï¼äº§ååç§ï¼" [ref=f3e750] - generic [ref=f3e756]: - generic [ref=f3e757]: - generic [ref=f3e758]: "*" - text: 产线 - generic [ref=f3e764]: - combobox "* 产线" [ref=f3e766] - generic: è¯·éæ©äº§çº¿ - generic [ref=f3e767]: - generic [ref=f3e768]: - generic [ref=f3e769]: "*" - text: çäº§æ¥æ - generic [ref=f3e775]: - textbox "* çäº§æ¥æ" [ref=f3e776]: - /placeholder: è¯·éæ©çäº§æ¥æ - generic: - img "calendar" - generic [ref=f3e777]: - generic [ref=f3e778]: è®¡åæ°é - generic [ref=f3e783]: - generic [ref=f3e784]: - button "Increase Value" [ref=f3e785] [cursor=pointer]: - img "up" [ref=f3e786] - button "Decrease Value" [ref=f3e789] [cursor=pointer]: - img "down" [ref=f3e790] - spinbutton "è®¡åæ°é" [ref=f3e794] - generic [ref=f3e795]: - generic [ref=f3e796]: - generic [ref=f3e797]: "*" - text: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f3e804] - generic [ref=f3e810]: - generic [ref=f3e811]: 夿³¨ - textbox "夿³¨" [ref=f3e816]: - /placeholder: 请è¾å ¥å¤æ³¨ - generic [ref=f3e817]: - generic [ref=f3e818]: - generic [ref=f3e819]: ç产人åé ç½® - button "æ·»å 人å" [ref=f3e820] [cursor=pointer] - generic [ref=f3e828]: - generic [ref=f3e832]: - table [ref=f3e836]: - rowgroup [ref=f3e842]: - row [ref=f3e843]: - columnheader "ç产人å" [ref=f3e844] - columnheader "å²ä½ç±»å" [ref=f3e849] - columnheader "夿³¨" [ref=f3e854] - columnheader "æä½" [ref=f3e859] - generic [ref=f3e865]: - table: - rowgroup - generic: ææ æ°æ® - button [ref=f3e875] [cursor=pointer] - generic [ref=f3e885]: - button "ç¡® 认" [ref=f3e886] [cursor=pointer] - button "å æ¶" [ref=f3e889] [cursor=pointer] - button [ref=f3e891] [cursor=pointer] .playwright-mcp/page-2026-08-28T07-48-07-459Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T07-48-24-872Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,236 @@ - generic [ref=f4e4]: - generic [ref=f4e7]: - complementary [ref=f4e9]: - generic [ref=f4e10]: - generic [ref=f4e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f4e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f4e19] - generic [ref=f4e20]: æµè¯å ¬å¸åå - menu [ref=f4e23]: - menuitem "é¦é¡µ" [ref=f4e24] [cursor=pointer] - listitem [ref=f4e29]: - generic [ref=f4e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f4e38]: - generic [ref=f4e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f4e47]: - generic [ref=f4e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f4e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f4e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f4e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f4e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f4e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f4e80] [cursor=pointer] - listitem [ref=f4e85]: - generic [ref=f4e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f4e92]: - generic [ref=f4e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f4e100] [cursor=pointer] - generic [ref=f4e105]: - generic [ref=f4e106]: - banner [ref=f4e107]: - button [ref=f4e108] [cursor=pointer] - button [ref=f4e111] [cursor=pointer] - navigation "breadcrumb" [ref=f4e116]: - list [ref=f4e117]: - listitem [ref=f4e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f4e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f4e123] - listitem [ref=f4e126]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=f4e127] - generic [ref=f4e132]: - generic [ref=f4e134] [cursor=pointer]: - generic [ref=f4e138]: æç´¢ - generic [ref=f4e139]: Ctrl K - button [ref=f4e141] [cursor=pointer] - button "dark" [ref=f4e146] [cursor=pointer] - button [ref=f4e155] [cursor=pointer] - button [ref=f4e161] [cursor=pointer] - button [ref=f4e164] [cursor=pointer] - button [ref=f4e170] [cursor=pointer]: - button [ref=f4e172] - button "å·¥ä½å°" [ref=f4e176] [cursor=pointer] - button "çå" [ref=f4e180] [cursor=pointer] - generic [ref=f4e187]: - generic [ref=f4e188]: æ¹æ¬¡ç产管ç - generic [ref=f4e207]: - button [ref=f4e208] [cursor=pointer] - generic [ref=f4e215] [cursor=pointer] - generic [ref=f4e219] [cursor=pointer] - main [ref=f4e226]: - generic [ref=f4e231]: - generic [ref=f4e236]: - generic [ref=f4e237]: - generic [ref=f4e238]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f4e244]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f4e246]: - generic [ref=f4e247]: åç§ - textbox "è¯·éæ©åç§" [ref=f4e254] - generic [ref=f4e260]: - generic [ref=f4e261]: 产线ç¼ç - textbox "产线ç¼ç " [ref=f4e267]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=f4e269]: - generic [ref=f4e270]: 产线åç§° - textbox "产线åç§°" [ref=f4e276]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=f4e278]: - generic [ref=f4e279]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f4e286] - generic [ref=f4e292]: - generic [ref=f4e293]: æ¹æ¬¡ç¶æ - generic [ref=f4e299] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=f4e301] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=f4e302]: - generic [ref=f4e303]: çäº§æ¥æ - generic [ref=f4e308]: - textbox "çäº§æ¥æ" [ref=f4e310]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f4e312]: - img "swap-right" [ref=f4e313] - textbox "ç»ææ¶é´" [ref=f4e317] - generic: - img "calendar" - generic [ref=f4e318]: - generic [ref=f4e319]: å建æ¶é´ - generic [ref=f4e324]: - textbox "å建æ¶é´" [ref=f4e326]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f4e328]: - img "swap-right" [ref=f4e329] - textbox "ç»ææ¶é´" [ref=f4e333] - generic: - img "calendar" - generic [ref=f4e334]: - button "é ç½®" [ref=f4e335] [cursor=pointer] - button "æ ç´¢" [ref=f4e337] [cursor=pointer] - generic [ref=f4e339] [cursor=pointer]: æ¶èµ· - generic [ref=f4e346]: - generic [ref=f4e348]: - generic [ref=f4e349]: çäº§æ¹æ¬¡å表 - generic [ref=f4e353]: - generic [ref=f4e355]: - button "é¢çæäºç»´ç " [active] [ref=f4e357] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [ref=f4e362] [cursor=pointer] - button "æ«ç 追溯" [ref=f4e367] [cursor=pointer] - button "导åº" [ref=f4e374] [cursor=pointer] - button "î" [ref=f4e380] [cursor=pointer] - generic [ref=f4e382]: - button "î©" [ref=f4e383] [cursor=pointer] - button "î" [ref=f4e385] [cursor=pointer] - button "î" [ref=f4e387] [cursor=pointer] - generic [ref=f4e394]: - generic [ref=f4e395]: - table [ref=f4e399]: - rowgroup [ref=f4e414]: - row [ref=f4e415]: - columnheader "åç§ç¼ç " [ref=f4e416] - columnheader "åç§åç§°" [ref=f4e421] - columnheader "产线ç¼ç " [ref=f4e426] - columnheader "产线åç§°" [ref=f4e431] - columnheader "çäº§æ¥æ" [ref=f4e436] - columnheader "è®¡åæ°é" [ref=f4e441] - columnheader "责任人" [ref=f4e446] - columnheader "è¢ç æ°é" [ref=f4e451] - columnheader "æçç æ°é" [ref=f4e456] - columnheader "æ¹æ¬¡ç¶æ" [ref=f4e461] - columnheader "å建æ¶é´" [ref=f4e466] - table [ref=f4e474]: - rowgroup [ref=f4e489]: - row [ref=f4e490]: - cell "ITEM_20260819003" [ref=f4e491] - cell "æµè¯" [ref=f4e495] - cell "two" [ref=f4e499] - cell "产线äº" [ref=f4e503] - cell "2026-08-21 13:39:56" [ref=f4e507] - cell "100" [ref=f4e511] - cell "çè" [ref=f4e515] - cell "0" [ref=f4e519] - cell "0" [ref=f4e523] - cell "è稿" [ref=f4e527] - cell "2026-08-21 13:40:10" [ref=f4e531] - row [ref=f4e535]: - cell "ITEM_20260819003" [ref=f4e536] - cell "æµè¯" [ref=f4e540] - cell "two" [ref=f4e544] - cell "产线äº" [ref=f4e548] - cell "2026-08-19 10:48:02" [ref=f4e552] - cell "10000" [ref=f4e556] - cell "è¶ çº§ç®¡çå" [ref=f4e560] - cell "100" [ref=f4e564] - cell "10" [ref=f4e568] - cell "已宿" [ref=f4e572] - cell "2026-08-19 10:48:22" [ref=f4e576] - generic: - generic [ref=f4e580]: - table [ref=f4e583]: - rowgroup [ref=f4e598]: - row [ref=f4e599]: - columnheader "æ¹æ¬¡å·" [ref=f4e600] - table [ref=f4e607]: - rowgroup [ref=f4e610]: - row [ref=f4e611]: - cell [ref=f4e612]: - button "PC20260821twoITEM_001" [ref=f4e615] [cursor=pointer] - row [ref=f4e617]: - cell [ref=f4e618]: - button "PC20260819twoITEM_001" [ref=f4e621] [cursor=pointer] - generic [ref=f4e623]: - table [ref=f4e626]: - rowgroup [ref=f4e641]: - row [ref=f4e642]: - columnheader "æä½" [ref=f4e643] - table [ref=f4e650]: - rowgroup [ref=f4e653]: - row [ref=f4e654]: - cell [ref=f4e655]: - generic [ref=f4e658]: - generic [ref=f4e659]: - button "æ¥çäºç»´ç " [ref=f4e661] [cursor=pointer] - button "ä¿®æ¹" [ref=f4e664] [cursor=pointer] - button "å é¤" [ref=f4e671] [cursor=pointer] - button "æ´å¤" [ref=f4e675] [cursor=pointer] - row [ref=f4e681]: - cell [ref=f4e682]: - generic [ref=f4e685]: - button "æ¥çäºç»´ç " [ref=f4e688] [cursor=pointer] - button "æ´å¤" [ref=f4e690] [cursor=pointer] - generic [ref=f4e702]: - generic [ref=f4e703]: å ± 2 æ¡è®°å½ - generic [ref=f4e705] [cursor=pointer]: - generic "20æ¡/页" [ref=f4e706]: - textbox "è¯·éæ©" [ref=f4e707]: 20æ¡/页 - generic [ref=f4e708]: î£ - button "ï" [ref=f4e711] - button "î¥" [ref=f4e713] - button "î" [ref=f4e715] - button "1" [ref=f4e718] [cursor=pointer] - button "î" [ref=f4e719] - button "î¦" [ref=f4e721] - button "î" [ref=f4e723] - dialog [ref=f4e726]: - heading "é¢çææ¹æ¬¡äºç»´ç " [level=2] [ref=f4e728] - generic [ref=f4e732]: - generic [ref=f4e733]: - generic [ref=f4e734]: - generic [ref=f4e735]: "*" - text: çæä¸ªæ° - generic [ref=f4e740]: - generic [ref=f4e741]: - button "Increase Value" [ref=f4e742] [cursor=pointer]: - img "up" [ref=f4e743] - button "Decrease Value" [ref=f4e746] [cursor=pointer]: - img "down" [ref=f4e747] - spinbutton "* çæä¸ªæ°" [ref=f4e751] - generic [ref=f4e752]: - generic [ref=f4e753]: 夿³¨ - textbox "夿³¨" [ref=f4e758]: - /placeholder: 请è¾å ¥å¤æ³¨ - button [ref=f4e759] [cursor=pointer] - generic [ref=f4e769]: - button "å æ¶" [ref=f4e770] [cursor=pointer] - button "ç¡® 认" [ref=f4e772] [cursor=pointer] - button [ref=f4e774] [cursor=pointer] .playwright-mcp/page-2026-08-28T07-48-51-155Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,239 @@ - generic [ref=f4e4]: - generic [ref=f4e7]: - complementary [ref=f4e9]: - generic [ref=f4e10]: - generic [ref=f4e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f4e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f4e19] - generic [ref=f4e20]: æµè¯å ¬å¸åå - menu [ref=f4e23]: - menuitem "é¦é¡µ" [ref=f4e24] [cursor=pointer] - listitem [ref=f4e29]: - generic [ref=f4e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f4e38]: - generic [ref=f4e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f4e47]: - generic [ref=f4e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f4e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f4e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f4e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f4e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f4e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f4e80] [cursor=pointer] - listitem [ref=f4e85]: - generic [ref=f4e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f4e92]: - generic [ref=f4e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f4e100] [cursor=pointer] - generic [ref=f4e105]: - generic [ref=f4e106]: - banner [ref=f4e107]: - button [ref=f4e108] [cursor=pointer] - button [ref=f4e111] [cursor=pointer] - navigation "breadcrumb" [ref=f4e116]: - list [ref=f4e117]: - listitem [ref=f4e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f4e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f4e123] - listitem [ref=f4e126]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=f4e127] - generic [ref=f4e132]: - generic [ref=f4e134] [cursor=pointer]: - generic [ref=f4e138]: æç´¢ - generic [ref=f4e139]: Ctrl K - button [ref=f4e141] [cursor=pointer] - button "dark" [ref=f4e146] [cursor=pointer] - button [ref=f4e155] [cursor=pointer] - button [ref=f4e161] [cursor=pointer] - button [ref=f4e164] [cursor=pointer] - button [ref=f4e170] [cursor=pointer]: - button [ref=f4e172] - button "å·¥ä½å°" [ref=f4e176] [cursor=pointer] - button "çå" [ref=f4e180] [cursor=pointer] - generic [ref=f4e187]: - generic [ref=f4e188]: æ¹æ¬¡ç产管ç - generic [ref=f4e207]: - button [ref=f4e208] [cursor=pointer] - generic [ref=f4e215] [cursor=pointer] - generic [ref=f4e219] [cursor=pointer] - main [ref=f4e226]: - generic [ref=f4e231]: - generic [ref=f4e236]: - generic [ref=f4e237]: - generic [ref=f4e238]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f4e244]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f4e246]: - generic [ref=f4e247]: åç§ - textbox "è¯·éæ©åç§" [ref=f4e254] - generic [ref=f4e260]: - generic [ref=f4e261]: 产线ç¼ç - textbox "产线ç¼ç " [ref=f4e267]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=f4e269]: - generic [ref=f4e270]: 产线åç§° - textbox "产线åç§°" [ref=f4e276]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=f4e278]: - generic [ref=f4e279]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f4e286] - generic [ref=f4e292]: - generic [ref=f4e293]: æ¹æ¬¡ç¶æ - generic [ref=f4e299] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=f4e301] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=f4e302]: - generic [ref=f4e303]: çäº§æ¥æ - generic [ref=f4e308]: - textbox "çäº§æ¥æ" [ref=f4e310]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f4e312]: - img "swap-right" [ref=f4e313] - textbox "ç»ææ¶é´" [ref=f4e317] - generic: - img "calendar" - generic [ref=f4e318]: - generic [ref=f4e319]: å建æ¶é´ - generic [ref=f4e324]: - textbox "å建æ¶é´" [ref=f4e326]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f4e328]: - img "swap-right" [ref=f4e329] - textbox "ç»ææ¶é´" [ref=f4e333] - generic: - img "calendar" - generic [ref=f4e334]: - button "é ç½®" [ref=f4e335] [cursor=pointer] - button "æ ç´¢" [ref=f4e337] [cursor=pointer] - generic [ref=f4e339] [cursor=pointer]: æ¶èµ· - generic [ref=f4e346]: - generic [ref=f4e348]: - generic [ref=f4e349]: çäº§æ¹æ¬¡å表 - generic [ref=f4e353]: - generic [ref=f4e355]: - button "é¢çæäºç»´ç " [ref=f4e357] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [ref=f4e362] [cursor=pointer] - button "æ«ç 追溯" [ref=f4e367] [cursor=pointer] - button "导åº" [ref=f4e374] [cursor=pointer] - button "î" [ref=f4e380] [cursor=pointer] - generic [ref=f4e382]: - button "î©" [ref=f4e383] [cursor=pointer] - button "î" [ref=f4e385] [cursor=pointer] - button "î" [ref=f4e387] [cursor=pointer] - generic [ref=f4e394]: - generic [ref=f4e395]: - table [ref=f4e399]: - rowgroup [ref=f4e414]: - row [ref=f4e415]: - columnheader "åç§ç¼ç " [ref=f4e416] - columnheader "åç§åç§°" [ref=f4e421] - columnheader "产线ç¼ç " [ref=f4e426] - columnheader "产线åç§°" [ref=f4e431] - columnheader "çäº§æ¥æ" [ref=f4e436] - columnheader "è®¡åæ°é" [ref=f4e441] - columnheader "责任人" [ref=f4e446] - columnheader "è¢ç æ°é" [ref=f4e451] - columnheader "æçç æ°é" [ref=f4e456] - columnheader "æ¹æ¬¡ç¶æ" [ref=f4e461] - columnheader "å建æ¶é´" [ref=f4e466] - table [ref=f4e474]: - rowgroup [ref=f4e489]: - row [ref=f4e490]: - cell "ITEM_20260819003" [ref=f4e491] - cell "æµè¯" [ref=f4e495] - cell "two" [ref=f4e499] - cell "产线äº" [ref=f4e503] - cell "2026-08-21 13:39:56" [ref=f4e507] - cell "100" [ref=f4e511] - cell "çè" [ref=f4e515] - cell "0" [ref=f4e519] - cell "0" [ref=f4e523] - cell "è稿" [ref=f4e527] - cell "2026-08-21 13:40:10" [ref=f4e531] - row [ref=f4e535]: - cell "ITEM_20260819003" [ref=f4e536] - cell "æµè¯" [ref=f4e540] - cell "two" [ref=f4e544] - cell "产线äº" [ref=f4e548] - cell "2026-08-19 10:48:02" [ref=f4e552] - cell "10000" [ref=f4e556] - cell "è¶ çº§ç®¡çå" [ref=f4e560] - cell "100" [ref=f4e564] - cell "10" [ref=f4e568] - cell "已宿" [ref=f4e572] - cell "2026-08-19 10:48:22" [ref=f4e576] - generic: - generic [ref=f4e580]: - table [ref=f4e583]: - rowgroup [ref=f4e598]: - row [ref=f4e599]: - columnheader "æ¹æ¬¡å·" [ref=f4e600] - table [ref=f4e607]: - rowgroup [ref=f4e610]: - row [ref=f4e611]: - cell [ref=f4e612]: - button "PC20260821twoITEM_001" [ref=f4e615] [cursor=pointer] - row [ref=f4e617]: - cell [ref=f4e618]: - button "PC20260819twoITEM_001" [ref=f4e621] [cursor=pointer] - generic [ref=f4e623]: - table [ref=f4e626]: - rowgroup [ref=f4e641]: - row [ref=f4e642]: - columnheader "æä½" [ref=f4e643] - table [ref=f4e650]: - rowgroup [ref=f4e653]: - row [ref=f4e654]: - cell [ref=f4e655]: - generic [ref=f4e658]: - generic [ref=f4e659]: - button "æ¥çäºç»´ç " [ref=f4e661] [cursor=pointer] - button "ä¿®æ¹" [ref=f4e664] [cursor=pointer] - button "å é¤" [ref=f4e671] [cursor=pointer] - button "æ´å¤" [ref=f4e675] [cursor=pointer] - row [ref=f4e681]: - cell [ref=f4e682]: - generic [ref=f4e685]: - button "æ¥çäºç»´ç " [ref=f4e688] [cursor=pointer] - button "æ´å¤" [ref=f4e690] [cursor=pointer] - generic [ref=f4e702]: - generic [ref=f4e703]: å ± 2 æ¡è®°å½ - generic [ref=f4e705] [cursor=pointer]: - generic "20æ¡/页" [ref=f4e706]: - textbox "è¯·éæ©" [ref=f4e707]: 20æ¡/页 - generic [ref=f4e708]: î£ - button "ï" [ref=f4e711] - button "î¥" [ref=f4e713] - button "î" [ref=f4e715] - button "1" [ref=f4e718] [cursor=pointer] - button "î" [ref=f4e719] - button "î¦" [ref=f4e721] - button "î" [ref=f4e723] - generic [ref=f4e779]: - img "close-circle" [ref=f4e780] - text: 请æ±å°åä¸åå¨:admin-api/mes/pro/batch/pre-generate - dialog [ref=f4e726]: - heading "é¢çææ¹æ¬¡äºç»´ç " [level=2] [ref=f4e728] - generic [ref=f4e732]: - generic [ref=f4e733]: - generic [ref=f4e734]: - generic [ref=f4e735]: "*" - text: çæä¸ªæ° - generic [ref=f4e740]: - generic [ref=f4e741]: - button "Increase Value" [ref=f4e742] [cursor=pointer]: - img "up" [ref=f4e743] - button "Decrease Value" [ref=f4e746] [cursor=pointer]: - img "down" [ref=f4e747] - spinbutton "* çæä¸ªæ°" [ref=f4e751]: "3" - generic [ref=f4e752]: - generic [ref=f4e753]: 夿³¨ - textbox "夿³¨" [ref=f4e758]: - /placeholder: 请è¾å ¥å¤æ³¨ - button [ref=f4e759] [cursor=pointer] - generic [ref=f4e769]: - button "å æ¶" [ref=f4e770] [cursor=pointer] - button "ç¡® 认" [active] [ref=f4e772] [cursor=pointer] - button [ref=f4e774] [cursor=pointer] .playwright-mcp/page-2026-08-28T07-49-26-431Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,236 @@ - generic [ref=f4e4]: - generic [ref=f4e7]: - complementary [ref=f4e9]: - generic [ref=f4e10]: - generic [ref=f4e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f4e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f4e19] - generic [ref=f4e20]: æµè¯å ¬å¸åå - menu [ref=f4e23]: - menuitem "é¦é¡µ" [ref=f4e24] [cursor=pointer] - listitem [ref=f4e29]: - generic [ref=f4e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f4e38]: - generic [ref=f4e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f4e47]: - generic [ref=f4e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f4e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f4e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f4e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f4e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f4e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f4e80] [cursor=pointer] - listitem [ref=f4e85]: - generic [ref=f4e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f4e92]: - generic [ref=f4e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f4e100] [cursor=pointer] - generic [ref=f4e105]: - generic [ref=f4e106]: - banner [ref=f4e107]: - button [ref=f4e108] [cursor=pointer] - button [ref=f4e111] [cursor=pointer] - navigation "breadcrumb" [ref=f4e116]: - list [ref=f4e117]: - listitem [ref=f4e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f4e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f4e123] - listitem [ref=f4e126]: - link "æ¹æ¬¡ç产管ç" [disabled] [ref=f4e127] - generic [ref=f4e132]: - generic [ref=f4e134] [cursor=pointer]: - generic [ref=f4e138]: æç´¢ - generic [ref=f4e139]: Ctrl K - button [ref=f4e141] [cursor=pointer] - button "dark" [ref=f4e146] [cursor=pointer] - button [ref=f4e155] [cursor=pointer] - button [ref=f4e161] [cursor=pointer] - button [ref=f4e164] [cursor=pointer] - button [ref=f4e170] [cursor=pointer]: - button [ref=f4e172] - button "å·¥ä½å°" [ref=f4e176] [cursor=pointer] - button "çå" [ref=f4e180] [cursor=pointer] - generic [ref=f4e187]: - generic [ref=f4e188]: æ¹æ¬¡ç产管ç - generic [ref=f4e207]: - button [ref=f4e208] [cursor=pointer] - generic [ref=f4e215] [cursor=pointer] - generic [ref=f4e219] [cursor=pointer] - main [ref=f4e226]: - generic [ref=f4e231]: - generic [ref=f4e236]: - generic [ref=f4e237]: - generic [ref=f4e238]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f4e244]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f4e246]: - generic [ref=f4e247]: åç§ - textbox "è¯·éæ©åç§" [ref=f4e254] - generic [ref=f4e260]: - generic [ref=f4e261]: 产线ç¼ç - textbox "产线ç¼ç " [ref=f4e267]: - /placeholder: 请è¾å ¥äº§çº¿ç¼ç - generic [ref=f4e269]: - generic [ref=f4e270]: 产线åç§° - textbox "产线åç§°" [ref=f4e276]: - /placeholder: 请è¾å ¥äº§çº¿åç§° - generic [ref=f4e278]: - generic [ref=f4e279]: 责任人 - textbox "è¯·éæ©è´£ä»»äºº" [ref=f4e286] - generic [ref=f4e292]: - generic [ref=f4e293]: æ¹æ¬¡ç¶æ - generic [ref=f4e299] [cursor=pointer]: - combobox "æ¹æ¬¡ç¶æ" [ref=f4e301] - generic: è¯·éæ©æ¹æ¬¡ç¶æ - generic [ref=f4e302]: - generic [ref=f4e303]: çäº§æ¥æ - generic [ref=f4e308]: - textbox "çäº§æ¥æ" [ref=f4e310]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f4e312]: - img "swap-right" [ref=f4e313] - textbox "ç»ææ¶é´" [ref=f4e317] - generic: - img "calendar" - generic [ref=f4e318]: - generic [ref=f4e319]: å建æ¶é´ - generic [ref=f4e324]: - textbox "å建æ¶é´" [ref=f4e326]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f4e328]: - img "swap-right" [ref=f4e329] - textbox "ç»ææ¶é´" [ref=f4e333] - generic: - img "calendar" - generic [ref=f4e334]: - button "é ç½®" [ref=f4e335] [cursor=pointer] - button "æ ç´¢" [ref=f4e337] [cursor=pointer] - generic [ref=f4e339] [cursor=pointer]: æ¶èµ· - generic [ref=f4e346]: - generic [ref=f4e348]: - generic [ref=f4e349]: çäº§æ¹æ¬¡å表 - generic [ref=f4e353]: - generic [ref=f4e355]: - button "é¢çæäºç»´ç " [ref=f4e357] [cursor=pointer] - button "æ°å¢æ¹æ¬¡" [ref=f4e362] [cursor=pointer] - button "æ«ç 追溯" [ref=f4e367] [cursor=pointer] - button "导åº" [ref=f4e374] [cursor=pointer] - button "î" [ref=f4e380] [cursor=pointer] - generic [ref=f4e382]: - button "î©" [ref=f4e383] [cursor=pointer] - button "î" [ref=f4e385] [cursor=pointer] - button "î" [ref=f4e387] [cursor=pointer] - generic [ref=f4e394]: - generic [ref=f4e395]: - table [ref=f4e399]: - rowgroup [ref=f4e414]: - row [ref=f4e415]: - columnheader "åç§ç¼ç " [ref=f4e416] - columnheader "åç§åç§°" [ref=f4e421] - columnheader "产线ç¼ç " [ref=f4e426] - columnheader "产线åç§°" [ref=f4e431] - columnheader "çäº§æ¥æ" [ref=f4e436] - columnheader "è®¡åæ°é" [ref=f4e441] - columnheader "责任人" [ref=f4e446] - columnheader "è¢ç æ°é" [ref=f4e451] - columnheader "æçç æ°é" [ref=f4e456] - columnheader "æ¹æ¬¡ç¶æ" [ref=f4e461] - columnheader "å建æ¶é´" [ref=f4e466] - table [ref=f4e474]: - rowgroup [ref=f4e489]: - row [ref=f4e490]: - cell "ITEM_20260819003" [ref=f4e491] - cell "æµè¯" [ref=f4e495] - cell "two" [ref=f4e499] - cell "产线äº" [ref=f4e503] - cell "2026-08-21 13:39:56" [ref=f4e507] - cell "100" [ref=f4e511] - cell "çè" [ref=f4e515] - cell "0" [ref=f4e519] - cell "0" [ref=f4e523] - cell "è稿" [ref=f4e527] - cell "2026-08-21 13:40:10" [ref=f4e531] - row [ref=f4e535]: - cell "ITEM_20260819003" [ref=f4e536] - cell "æµè¯" [ref=f4e540] - cell "two" [ref=f4e544] - cell "产线äº" [ref=f4e548] - cell "2026-08-19 10:48:02" [ref=f4e552] - cell "10000" [ref=f4e556] - cell "è¶ çº§ç®¡çå" [ref=f4e560] - cell "100" [ref=f4e564] - cell "10" [ref=f4e568] - cell "已宿" [ref=f4e572] - cell "2026-08-19 10:48:22" [ref=f4e576] - generic: - generic [ref=f4e580]: - table [ref=f4e583]: - rowgroup [ref=f4e598]: - row [ref=f4e599]: - columnheader "æ¹æ¬¡å·" [ref=f4e600] - table [ref=f4e607]: - rowgroup [ref=f4e610]: - row [ref=f4e611]: - cell [ref=f4e612]: - button "PC20260821twoITEM_001" [ref=f4e615] [cursor=pointer] - row [ref=f4e617]: - cell [ref=f4e618]: - button "PC20260819twoITEM_001" [ref=f4e621] [cursor=pointer] - generic [ref=f4e623]: - table [ref=f4e626]: - rowgroup [ref=f4e641]: - row [ref=f4e642]: - columnheader "æä½" [ref=f4e643] - table [ref=f4e650]: - rowgroup [ref=f4e653]: - row [ref=f4e654]: - cell [ref=f4e655]: - generic [ref=f4e658]: - generic [ref=f4e659]: - button "æ¥çäºç»´ç " [ref=f4e661] [cursor=pointer] - button "ä¿®æ¹" [ref=f4e664] [cursor=pointer] - button "å é¤" [ref=f4e671] [cursor=pointer] - button "æ´å¤" [ref=f4e675] [cursor=pointer] - row [ref=f4e681]: - cell [ref=f4e682]: - generic [ref=f4e685]: - button "æ¥çäºç»´ç " [ref=f4e688] [cursor=pointer] - button "æ´å¤" [ref=f4e690] [cursor=pointer] - generic [ref=f4e702]: - generic [ref=f4e703]: å ± 2 æ¡è®°å½ - generic [ref=f4e705] [cursor=pointer]: - generic "20æ¡/页" [ref=f4e706]: - textbox "è¯·éæ©" [ref=f4e707]: 20æ¡/页 - generic [ref=f4e708]: î£ - button "ï" [ref=f4e711] - button "î¥" [ref=f4e713] - button "î" [ref=f4e715] - button "1" [ref=f4e718] [cursor=pointer] - button "î" [ref=f4e719] - button "î¦" [ref=f4e721] - button "î" [ref=f4e723] - dialog [ref=f4e726]: - heading "é¢çææ¹æ¬¡äºç»´ç " [level=2] [ref=f4e728] - generic [ref=f4e732]: - generic [ref=f4e733]: - generic [ref=f4e734]: - generic [ref=f4e735]: "*" - text: çæä¸ªæ° - generic [ref=f4e740]: - generic [ref=f4e741]: - button "Increase Value" [ref=f4e742] [cursor=pointer]: - img "up" [ref=f4e743] - button "Decrease Value" [ref=f4e746] [cursor=pointer]: - img "down" [ref=f4e747] - spinbutton "* çæä¸ªæ°" [ref=f4e751]: "3" - generic [ref=f4e752]: - generic [ref=f4e753]: 夿³¨ - textbox "夿³¨" [ref=f4e758]: - /placeholder: 请è¾å ¥å¤æ³¨ - button [ref=f4e759] [cursor=pointer] - generic [ref=f4e769]: - button "å æ¶" [ref=f4e770] [cursor=pointer] - button "ç¡® 认" [active] [ref=f4e772] [cursor=pointer] - button [ref=f4e774] [cursor=pointer] .playwright-mcp/page-2026-08-28T08-59-32-379Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T08-59-49-723Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active] [ref=f7e1]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T09-00-00-757Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,104 @@ - generic [ref=f7e7]: - complementary [ref=f7e9]: - generic [ref=f7e10]: - generic [ref=f7e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f7e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f7e19] - generic [ref=f7e20]: æµè¯å ¬å¸åå - menu [ref=f7e23]: - menuitem "é¦é¡µ" [ref=f7e24] [cursor=pointer] - listitem [ref=f7e29]: - generic [ref=f7e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f7e38]: - generic [ref=f7e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f7e47]: - generic [ref=f7e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list: - menuitem "æ¹æ¬¡ç产管ç" [ref=f7e365] [cursor=pointer] - menuitem "èµç 管ç" [ref=f7e370] [cursor=pointer] - menuitem "æçç 管ç" [ref=f7e376] [cursor=pointer] - menuitem "产线维æ¤" [ref=f7e383] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f7e390] [cursor=pointer] - listitem [ref=f7e54]: - generic [ref=f7e55] [cursor=pointer]: è´¨é管ç - listitem [ref=f7e61]: - generic [ref=f7e62] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f7e69] [cursor=pointer] - generic [ref=f7e74]: - generic [ref=f7e75]: - banner [ref=f7e76]: - button [ref=f7e77] [cursor=pointer] - button [ref=f7e80] [cursor=pointer] - navigation "breadcrumb" [ref=f7e85]: - list [ref=f7e86]: - listitem [ref=f7e87]: - link "é¦é¡µ" [disabled] [ref=f7e88] - generic [ref=f7e93]: - generic [ref=f7e95] [cursor=pointer]: - generic [ref=f7e99]: æç´¢ - generic [ref=f7e100]: Ctrl K - button [ref=f7e102] [cursor=pointer] - button "dark" [ref=f7e107] [cursor=pointer] - button [ref=f7e116] [cursor=pointer] - button [ref=f7e122] [cursor=pointer] - button [ref=f7e125] [cursor=pointer] - button [ref=f7e131] [cursor=pointer]: - button [ref=f7e133] - button "å·¥ä½å°" [ref=f7e137] [cursor=pointer] - button "çå" [ref=f7e141] [cursor=pointer] - generic [ref=f7e148]: - generic [ref=f7e149]: é¦é¡µ - generic [ref=f7e168]: - button [ref=f7e169] [cursor=pointer] - generic [ref=f7e176] [cursor=pointer] - generic [ref=f7e180] [cursor=pointer] - main [ref=f7e187]: - generic [ref=f7e190]: - generic [ref=f7e191]: - generic [ref=f7e201] [cursor=pointer]: - generic [ref=f7e202]: åç§æ»æ° - generic [ref=f7e203]: "1" - generic [ref=f7e214] [cursor=pointer]: - generic [ref=f7e215]: MES åç§ - generic [ref=f7e216]: "0" - generic [ref=f7e227] [cursor=pointer]: - generic [ref=f7e228]: åç§åç±» - generic [ref=f7e229]: "1" - generic [ref=f7e238] [cursor=pointer]: - generic [ref=f7e239]: 计éåä½ - generic [ref=f7e240]: "1" - generic [ref=f7e242]: - generic [ref=f7e250] [cursor=pointer]: - generic [ref=f7e251]: 产线 - generic [ref=f7e252]: "1" - generic [ref=f7e264] [cursor=pointer]: - generic [ref=f7e265]: çäº§æ¹æ¬¡ - generic [ref=f7e266]: "102" - generic [ref=f7e275] [cursor=pointer]: - generic [ref=f7e276]: è¢ç - generic [ref=f7e277]: 1,101 - generic [ref=f7e288] [cursor=pointer]: - generic [ref=f7e289]: æçç - generic [ref=f7e290]: "11" - generic [ref=f7e292]: - generic [ref=f7e296]: - generic [ref=f7e297]: è¢ç çæè¶å¿ - generic [ref=f7e299]: - generic [ref=f7e300] [cursor=pointer]: - generic [ref=f7e301]: - radio "è¿ 7 天" [checked] - generic [ref=f7e302]: è¿ 7 天 - generic [ref=f7e303] [cursor=pointer]: - generic [ref=f7e304]: - radio "è¿ 30 天" - generic [ref=f7e305]: è¿ 30 天 - generic [ref=f7e310]: æ¹æ¬¡ç¶æåå¸ - generic [ref=f7e319]: è¢ç ç¶æåå¸ - generic [ref=f7e328]: - generic [ref=f7e329]: å¿«æ·å ¥å£ - generic [ref=f7e333]: - generic [ref=f7e334]: åç§ç®¡ç - generic [ref=f7e342]: åç§åç±» - generic [ref=f7e350]: æ¹æ¬¡ç产 - generic [ref=f7e359]: èµç 管ç .playwright-mcp/page-2026-08-28T09-00-15-736Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,110 @@ - generic [ref=f7e7]: - complementary [ref=f7e9]: - generic [ref=f7e10]: - generic [ref=f7e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f7e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f7e19] - generic [ref=f7e20]: æµè¯å ¬å¸åå - menu [ref=f7e23]: - menuitem "é¦é¡µ" [ref=f7e24] [cursor=pointer] - listitem [ref=f7e29]: - generic [ref=f7e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f7e38]: - generic [ref=f7e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f7e47]: - generic [ref=f7e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f7e395]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f7e365] [cursor=pointer] - menuitem "èµç 管ç" [ref=f7e370] [cursor=pointer] - menuitem "æçç 管ç" [active] [ref=f7e376] [cursor=pointer] - menuitem "产线维æ¤" [ref=f7e383] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f7e390] [cursor=pointer] - listitem [ref=f7e54]: - generic [ref=f7e55] [cursor=pointer]: è´¨é管ç - listitem [ref=f7e61]: - generic [ref=f7e62] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f7e69] [cursor=pointer] - generic [ref=f7e74]: - generic [ref=f7e75]: - banner [ref=f7e76]: - button [ref=f7e77] [cursor=pointer] - button [ref=f7e80] [cursor=pointer] - navigation "breadcrumb" [ref=f7e85]: - list [ref=f7e86]: - listitem [ref=f7e396]: - link "ä¸è¢ä¸ç 管ç" [ref=f7e397] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f7e401] - listitem [ref=f7e404]: - link "æçç 管ç" [disabled] [ref=f7e405] - generic [ref=f7e93]: - generic [ref=f7e95] [cursor=pointer]: - generic [ref=f7e99]: æç´¢ - generic [ref=f7e100]: Ctrl K - button [ref=f7e102] [cursor=pointer] - button "dark" [ref=f7e107] [cursor=pointer] - button [ref=f7e116] [cursor=pointer] - button [ref=f7e122] [cursor=pointer] - button [ref=f7e125] [cursor=pointer] - button [ref=f7e131] [cursor=pointer]: - button [ref=f7e133] - button "å·¥ä½å°" [ref=f7e137] [cursor=pointer] - button "çå" [ref=f7e141] [cursor=pointer] - generic [ref=f7e148]: - generic [ref=f7e153]: - generic [ref=f7e154] [cursor=pointer]: é¦é¡µ - generic [ref=f7e414] [cursor=pointer]: æçç 管ç - generic [ref=f7e168]: - button [ref=f7e169] [cursor=pointer] - generic [ref=f7e176] [cursor=pointer] - generic [ref=f7e180] [cursor=pointer] - main [ref=f7e187]: - generic [ref=f7e190]: - generic [ref=f7e191]: - generic [ref=f7e201] [cursor=pointer]: - generic [ref=f7e202]: åç§æ»æ° - generic [ref=f7e203]: "1" - generic [ref=f7e214] [cursor=pointer]: - generic [ref=f7e215]: MES åç§ - generic [ref=f7e216]: "0" - generic [ref=f7e227] [cursor=pointer]: - generic [ref=f7e228]: åç§åç±» - generic [ref=f7e229]: "1" - generic [ref=f7e238] [cursor=pointer]: - generic [ref=f7e239]: 计éåä½ - generic [ref=f7e240]: "1" - generic [ref=f7e242]: - generic [ref=f7e250] [cursor=pointer]: - generic [ref=f7e251]: 产线 - generic [ref=f7e252]: "1" - generic [ref=f7e264] [cursor=pointer]: - generic [ref=f7e265]: çäº§æ¹æ¬¡ - generic [ref=f7e266]: "102" - generic [ref=f7e275] [cursor=pointer]: - generic [ref=f7e276]: è¢ç - generic [ref=f7e277]: 1,101 - generic [ref=f7e288] [cursor=pointer]: - generic [ref=f7e289]: æçç - generic [ref=f7e290]: "11" - generic [ref=f7e292]: - generic [ref=f7e296]: - generic [ref=f7e297]: è¢ç çæè¶å¿ - generic [ref=f7e299]: - generic [ref=f7e300] [cursor=pointer]: - generic [ref=f7e301]: - radio "è¿ 7 天" [checked] - generic [ref=f7e302]: è¿ 7 天 - generic [ref=f7e303] [cursor=pointer]: - generic [ref=f7e304]: - radio "è¿ 30 天" - generic [ref=f7e305]: è¿ 30 天 - generic [ref=f7e310]: æ¹æ¬¡ç¶æåå¸ - generic [ref=f7e319]: è¢ç ç¶æåå¸ - generic [ref=f7e328]: - generic [ref=f7e329]: å¿«æ·å ¥å£ - generic [ref=f7e333]: - generic [ref=f7e334]: åç§ç®¡ç - generic [ref=f7e342]: åç§åç±» - generic [ref=f7e350]: æ¹æ¬¡ç产 - generic [ref=f7e359]: èµç 管ç .playwright-mcp/page-2026-08-28T09-02-56-093Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ - generic [active]: å·¥ä¸AIæºé å¹³å° .playwright-mcp/page-2026-08-28T09-03-07-573Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,336 @@ - generic [ref=f9e7]: - complementary [ref=f9e9]: - generic [ref=f9e10]: - generic [ref=f9e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f9e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f9e19] - generic [ref=f9e20]: æµè¯å ¬å¸åå - menu [ref=f9e23]: - menuitem "é¦é¡µ" [ref=f9e24] [cursor=pointer] - listitem [ref=f9e29]: - generic [ref=f9e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f9e38]: - generic [ref=f9e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f9e47]: - generic [ref=f9e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f9e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f9e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f9e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f9e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f9e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f9e80] [cursor=pointer] - listitem [ref=f9e85]: - generic [ref=f9e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f9e92]: - generic [ref=f9e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f9e100] [cursor=pointer] - generic [ref=f9e105]: - generic [ref=f9e106]: - banner [ref=f9e107]: - button [ref=f9e108] [cursor=pointer] - button [ref=f9e111] [cursor=pointer] - navigation "breadcrumb" [ref=f9e116]: - list [ref=f9e117]: - listitem [ref=f9e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f9e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f9e123] - listitem [ref=f9e126]: - link "æçç 管ç" [disabled] [ref=f9e127] - generic [ref=f9e134]: - generic [ref=f9e136] [cursor=pointer]: - generic [ref=f9e140]: æç´¢ - generic [ref=f9e141]: Ctrl K - button [ref=f9e143] [cursor=pointer] - button "dark" [ref=f9e148] [cursor=pointer] - button [ref=f9e157] [cursor=pointer] - button [ref=f9e163] [cursor=pointer] - button [ref=f9e166] [cursor=pointer] - button [ref=f9e172] [cursor=pointer]: - button [ref=f9e174] - button "å·¥ä½å°" [ref=f9e178] [cursor=pointer] - button "çå" [ref=f9e182] [cursor=pointer] - generic [ref=f9e189]: - generic [ref=f9e190]: æçç 管ç - generic [ref=f9e211]: - button [ref=f9e212] [cursor=pointer] - generic [ref=f9e219] [cursor=pointer] - generic [ref=f9e223] [cursor=pointer] - main [ref=f9e230]: - generic [ref=f9e235]: - generic [ref=f9e240]: - generic [ref=f9e241]: - generic [ref=f9e242]: æçç - textbox "æçç " [ref=f9e248]: - /placeholder: 请è¾å ¥æçç - generic [ref=f9e250]: - generic [ref=f9e251]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f9e257]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f9e259]: - generic [ref=f9e260]: æçç¶æ - generic [ref=f9e266] [cursor=pointer]: - combobox "æçç¶æ" [ref=f9e268] - generic: è¯·éæ©æçç¶æ - generic [ref=f9e269]: - generic [ref=f9e270]: å建æ¶é´ - generic [ref=f9e275]: - textbox "å建æ¶é´" [ref=f9e277]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f9e279]: - img "swap-right" [ref=f9e280] - textbox "ç»ææ¶é´" [ref=f9e284] - generic: - img "calendar" - generic [ref=f9e285]: - button "é ç½®" [ref=f9e286] [cursor=pointer] - button "æ ç´¢" [ref=f9e288] [cursor=pointer] - generic [ref=f9e290] [cursor=pointer]: æ¶èµ· - generic [ref=f9e297]: - generic [ref=f9e299]: - generic [ref=f9e300]: æçç å表 - generic [ref=f9e304]: - generic [ref=f9e306]: - button "é¢çæäºç»´ç " [ref=f9e308] [cursor=pointer] - button "ç»å®æ¹æ¬¡" [ref=f9e313] [cursor=pointer] - button "æ«ç 追溯" [ref=f9e320] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e327] [cursor=pointer] - button "导åº" [ref=f9e334] [cursor=pointer] - button "î" [ref=f9e340] [cursor=pointer] - generic [ref=f9e342]: - button "î©" [ref=f9e343] [cursor=pointer] - button "î" [ref=f9e345] [cursor=pointer] - button "î" [ref=f9e347] [cursor=pointer] - generic [ref=f9e354]: - generic [ref=f9e355]: - table [ref=f9e359]: - rowgroup [ref=f9e371]: - row [ref=f9e1147]: - columnheader "î£" [ref=f9e1148]: - generic "å ¨é/åæ¶" [ref=f9e378] [cursor=pointer]: î£ - columnheader "æçåºå·" [ref=f9e381] - columnheader "æ¹æ¬¡å·" [ref=f9e386] - columnheader "å¯è£ è¢æ°ï¼è¢/æçï¼" [ref=f9e391] - columnheader "å·²ç»è¢ç æ°é" [ref=f9e396] - columnheader "æçç¶æ" [ref=f9e401] - columnheader "夿³¨" [ref=f9e406] - columnheader "å建æ¶é´" [ref=f9e411] - table [ref=f9e419]: - rowgroup [ref=f9e431]: - row "î½ æªç»å®æ¹æ¬¡ 100 0 å¯ç¨ 2026-08-28 16:28:05" [ref=f9e1149]: - cell "î½" [ref=f9e1150] - cell [ref=f9e438] - cell "æªç»å®æ¹æ¬¡" [ref=f9e442] - cell "100" [ref=f9e446] - cell "0" [ref=f9e450] - cell "å¯ç¨" [ref=f9e454] - cell [ref=f9e458] - cell "2026-08-28 16:28:05" [ref=f9e462] - row "î§ 10 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e466]: - cell "î§" [ref=f9e467] - cell "10" [ref=f9e472] - cell "PC20260819twoITEM_001" [ref=f9e476] - cell "1000" [ref=f9e479] - cell "0" [ref=f9e483] - cell "å¯ç¨" [ref=f9e487] - cell [ref=f9e491] - cell "2026-08-19 10:53:29" [ref=f9e495] - row "î§ 9 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e499]: - cell "î§" [ref=f9e500] - cell "9" [ref=f9e505] - cell "PC20260819twoITEM_001" [ref=f9e509] - cell "1000" [ref=f9e512] - cell "0" [ref=f9e516] - cell "å¯ç¨" [ref=f9e520] - cell [ref=f9e524] - cell "2026-08-19 10:53:29" [ref=f9e528] - row "î§ 8 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e532]: - cell "î§" [ref=f9e533] - cell "8" [ref=f9e538] - cell "PC20260819twoITEM_001" [ref=f9e542] - cell "1000" [ref=f9e545] - cell "0" [ref=f9e549] - cell "å¯ç¨" [ref=f9e553] - cell [ref=f9e557] - cell "2026-08-19 10:53:29" [ref=f9e561] - row "î§ 7 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e565]: - cell "î§" [ref=f9e566] - cell "7" [ref=f9e571] - cell "PC20260819twoITEM_001" [ref=f9e575] - cell "1000" [ref=f9e578] - cell "0" [ref=f9e582] - cell "å¯ç¨" [ref=f9e586] - cell [ref=f9e590] - cell "2026-08-19 10:53:29" [ref=f9e594] - row "î§ 6 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e598]: - cell "î§" [ref=f9e599] - cell "6" [ref=f9e604] - cell "PC20260819twoITEM_001" [ref=f9e608] - cell "1000" [ref=f9e611] - cell "0" [ref=f9e615] - cell "å¯ç¨" [ref=f9e619] - cell [ref=f9e623] - cell "2026-08-19 10:53:29" [ref=f9e627] - row "î§ 5 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e631]: - cell "î§" [ref=f9e632] - cell "5" [ref=f9e637] - cell "PC20260819twoITEM_001" [ref=f9e641] - cell "1000" [ref=f9e644] - cell "0" [ref=f9e648] - cell "å¯ç¨" [ref=f9e652] - cell [ref=f9e656] - cell "2026-08-19 10:53:29" [ref=f9e660] - row "î§ 4 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e664]: - cell "î§" [ref=f9e665] - cell "4" [ref=f9e670] - cell "PC20260819twoITEM_001" [ref=f9e674] - cell "1000" [ref=f9e677] - cell "0" [ref=f9e681] - cell "å¯ç¨" [ref=f9e685] - cell [ref=f9e689] - cell "2026-08-19 10:53:29" [ref=f9e693] - row "î§ 3 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e697]: - cell "î§" [ref=f9e698] - cell "3" [ref=f9e703] - cell "PC20260819twoITEM_001" [ref=f9e707] - cell "1000" [ref=f9e710] - cell "0" [ref=f9e714] - cell "å¯ç¨" [ref=f9e718] - cell [ref=f9e722] - cell "2026-08-19 10:53:29" [ref=f9e726] - row "î§ 2 PC20260819twoITEM_001 1000 20 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e730]: - cell "î§" [ref=f9e731] - cell "2" [ref=f9e736] - cell "PC20260819twoITEM_001" [ref=f9e740] - cell "1000" [ref=f9e743] - cell "20" [ref=f9e747] - cell "å¯ç¨" [ref=f9e751] - cell [ref=f9e755] - cell "2026-08-19 10:53:29" [ref=f9e759] - row "î§ 1 PC20260819twoITEM_001 1000 40 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e763]: - cell "î§" [ref=f9e764] - cell "1" [ref=f9e769] - cell "PC20260819twoITEM_001" [ref=f9e773] - cell "1000" [ref=f9e776] - cell "40" [ref=f9e780] - cell "å¯ç¨" [ref=f9e784] - cell [ref=f9e788] - cell "2026-08-19 10:53:29" [ref=f9e792] - generic: - generic [ref=f9e796]: - table [ref=f9e799]: - rowgroup [ref=f9e811]: - row [ref=f9e812]: - columnheader "æçç " [ref=f9e813] - table [ref=f9e820]: - rowgroup [ref=f9e823]: - row [ref=f9e824]: - cell "PL-00000001 æªç»å®æ¹æ¬¡" [ref=f9e825]: - generic [ref=f9e827]: - text: PL-00000001 - generic [ref=f9e828]: æªç»å®æ¹æ¬¡ - row [ref=f9e829]: - cell "PC20260819twoITEM_001-P10" [ref=f9e830] - row [ref=f9e833]: - cell "PC20260819twoITEM_001-P09" [ref=f9e834] - row [ref=f9e837]: - cell "PC20260819twoITEM_001-P08" [ref=f9e838] - row [ref=f9e841]: - cell "PC20260819twoITEM_001-P07" [ref=f9e842] - row [ref=f9e845]: - cell "PC20260819twoITEM_001-P06" [ref=f9e846] - row [ref=f9e849]: - cell "PC20260819twoITEM_001-P05" [ref=f9e850] - row [ref=f9e853]: - cell "PC20260819twoITEM_001-P04" [ref=f9e854] - row [ref=f9e857]: - cell "PC20260819twoITEM_001-P03" [ref=f9e858] - row [ref=f9e861]: - cell "PC20260819twoITEM_001-P02" [ref=f9e862] - row [ref=f9e865]: - cell "PC20260819twoITEM_001-P01" [ref=f9e866] - generic [ref=f9e869]: - table [ref=f9e872]: - rowgroup [ref=f9e884]: - row [ref=f9e885]: - columnheader "æä½" [ref=f9e886] - table [ref=f9e893]: - rowgroup [ref=f9e896]: - row [ref=f9e897]: - cell [ref=f9e898]: - generic [ref=f9e902]: - button "æ¥çäºç»´ç " [ref=f9e904] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e907] [cursor=pointer] - button "å é¤" [ref=f9e914] [cursor=pointer] - row [ref=f9e918]: - cell [ref=f9e919]: - generic [ref=f9e923]: - button "æ¥çäºç»´ç " [ref=f9e925] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e928] [cursor=pointer] - button "å é¤" [ref=f9e935] [cursor=pointer] - row [ref=f9e939]: - cell [ref=f9e940]: - generic [ref=f9e944]: - button "æ¥çäºç»´ç " [ref=f9e946] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e949] [cursor=pointer] - button "å é¤" [ref=f9e956] [cursor=pointer] - row [ref=f9e960]: - cell [ref=f9e961]: - generic [ref=f9e965]: - button "æ¥çäºç»´ç " [ref=f9e967] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e970] [cursor=pointer] - button "å é¤" [ref=f9e977] [cursor=pointer] - row [ref=f9e981]: - cell [ref=f9e982]: - generic [ref=f9e986]: - button "æ¥çäºç»´ç " [ref=f9e988] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e991] [cursor=pointer] - button "å é¤" [ref=f9e998] [cursor=pointer] - row [ref=f9e1002]: - cell [ref=f9e1003]: - generic [ref=f9e1007]: - button "æ¥çäºç»´ç " [ref=f9e1009] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1012] [cursor=pointer] - button "å é¤" [ref=f9e1019] [cursor=pointer] - row [ref=f9e1023]: - cell [ref=f9e1024]: - generic [ref=f9e1028]: - button "æ¥çäºç»´ç " [ref=f9e1030] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1033] [cursor=pointer] - button "å é¤" [ref=f9e1040] [cursor=pointer] - row [ref=f9e1044]: - cell [ref=f9e1045]: - generic [ref=f9e1049]: - button "æ¥çäºç»´ç " [ref=f9e1051] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1054] [cursor=pointer] - button "å é¤" [ref=f9e1061] [cursor=pointer] - row [ref=f9e1065]: - cell [ref=f9e1066]: - generic [ref=f9e1070]: - button "æ¥çäºç»´ç " [ref=f9e1072] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1075] [cursor=pointer] - button "å é¤" [ref=f9e1082] [cursor=pointer] - row [ref=f9e1086]: - cell [ref=f9e1087]: - generic [ref=f9e1091]: - button "æ¥çäºç»´ç " [ref=f9e1093] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1096] [cursor=pointer] - row [ref=f9e1102]: - cell [ref=f9e1103]: - generic [ref=f9e1107]: - button "æ¥çäºç»´ç " [ref=f9e1109] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1112] [cursor=pointer] - generic [ref=f9e1124]: - generic [ref=f9e1125]: å ± 11 æ¡è®°å½ - generic [ref=f9e1127] [cursor=pointer]: - generic "20æ¡/页" [ref=f9e1128]: - textbox "è¯·éæ©" [ref=f9e1129]: 20æ¡/页 - generic [ref=f9e1130]: î£ - button "ï" [ref=f9e1133] - button "î¥" [ref=f9e1135] - button "î" [ref=f9e1137] - button "1" [ref=f9e1140] [cursor=pointer] - button "î" [ref=f9e1141] - button "î¦" [ref=f9e1143] - button "î" [ref=f9e1145] .playwright-mcp/page-2026-08-28T09-03-14-535Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,351 @@ - generic [ref=f9e4]: - generic [ref=f9e7]: - complementary [ref=f9e9]: - generic [ref=f9e10]: - generic [ref=f9e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f9e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f9e19] - generic [ref=f9e20]: æµè¯å ¬å¸åå - menu [ref=f9e23]: - menuitem "é¦é¡µ" [ref=f9e24] [cursor=pointer] - listitem [ref=f9e29]: - generic [ref=f9e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f9e38]: - generic [ref=f9e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f9e47]: - generic [ref=f9e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f9e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f9e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f9e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f9e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f9e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f9e80] [cursor=pointer] - listitem [ref=f9e85]: - generic [ref=f9e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f9e92]: - generic [ref=f9e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f9e100] [cursor=pointer] - generic [ref=f9e105]: - generic [ref=f9e106]: - banner [ref=f9e107]: - button [ref=f9e108] [cursor=pointer] - button [ref=f9e111] [cursor=pointer] - navigation "breadcrumb" [ref=f9e116]: - list [ref=f9e117]: - listitem [ref=f9e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f9e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f9e123] - listitem [ref=f9e126]: - link "æçç 管ç" [disabled] [ref=f9e127] - generic [ref=f9e134]: - generic [ref=f9e136] [cursor=pointer]: - generic [ref=f9e140]: æç´¢ - generic [ref=f9e141]: Ctrl K - button [ref=f9e143] [cursor=pointer] - button "dark" [ref=f9e148] [cursor=pointer] - button [ref=f9e157] [cursor=pointer] - button [ref=f9e163] [cursor=pointer] - button [ref=f9e166] [cursor=pointer] - button [ref=f9e172] [cursor=pointer]: - button [ref=f9e174] - button "å·¥ä½å°" [ref=f9e178] [cursor=pointer] - button "çå" [ref=f9e182] [cursor=pointer] - generic [ref=f9e189]: - generic [ref=f9e190]: æçç 管ç - generic [ref=f9e211]: - button [ref=f9e212] [cursor=pointer] - generic [ref=f9e219] [cursor=pointer] - generic [ref=f9e223] [cursor=pointer] - main [ref=f9e230]: - generic [ref=f9e235]: - generic [ref=f9e240]: - generic [ref=f9e241]: - generic [ref=f9e242]: æçç - textbox "æçç " [ref=f9e248]: - /placeholder: 请è¾å ¥æçç - generic [ref=f9e250]: - generic [ref=f9e251]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f9e257]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f9e259]: - generic [ref=f9e260]: æçç¶æ - generic [ref=f9e266] [cursor=pointer]: - combobox "æçç¶æ" [ref=f9e268] - generic: è¯·éæ©æçç¶æ - generic [ref=f9e269]: - generic [ref=f9e270]: å建æ¶é´ - generic [ref=f9e275]: - textbox "å建æ¶é´" [ref=f9e277]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f9e279]: - img "swap-right" [ref=f9e280] - textbox "ç»ææ¶é´" [ref=f9e284] - generic: - img "calendar" - generic [ref=f9e285]: - button "é ç½®" [ref=f9e286] [cursor=pointer] - button "æ ç´¢" [ref=f9e288] [cursor=pointer] - generic [ref=f9e290] [cursor=pointer]: æ¶èµ· - generic [ref=f9e297]: - generic [ref=f9e299]: - generic [ref=f9e300]: æçç å表 - generic [ref=f9e304]: - generic [ref=f9e306]: - button "é¢çæäºç»´ç " [ref=f9e308] [cursor=pointer] - button "ç»å®æ¹æ¬¡" [active] [ref=f9e313] [cursor=pointer] - button "æ«ç 追溯" [ref=f9e320] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e327] [cursor=pointer] - button "导åº" [ref=f9e334] [cursor=pointer] - button "î" [ref=f9e340] [cursor=pointer] - generic [ref=f9e342]: - button "î©" [ref=f9e343] [cursor=pointer] - button "î" [ref=f9e345] [cursor=pointer] - button "î" [ref=f9e347] [cursor=pointer] - generic [ref=f9e354]: - generic [ref=f9e355]: - table [ref=f9e359]: - rowgroup [ref=f9e371]: - row [ref=f9e1147]: - columnheader "î£" [ref=f9e1148]: - generic "å ¨é/åæ¶" [ref=f9e378] [cursor=pointer]: î£ - columnheader "æçåºå·" [ref=f9e381] - columnheader "æ¹æ¬¡å·" [ref=f9e386] - columnheader "å¯è£ è¢æ°ï¼è¢/æçï¼" [ref=f9e391] - columnheader "å·²ç»è¢ç æ°é" [ref=f9e396] - columnheader "æçç¶æ" [ref=f9e401] - columnheader "夿³¨" [ref=f9e406] - columnheader "å建æ¶é´" [ref=f9e411] - table [ref=f9e419]: - rowgroup [ref=f9e431]: - row "î½ æªç»å®æ¹æ¬¡ 100 0 å¯ç¨ 2026-08-28 16:28:05" [ref=f9e1149]: - cell "î½" [ref=f9e1150] - cell [ref=f9e438] - cell "æªç»å®æ¹æ¬¡" [ref=f9e442] - cell "100" [ref=f9e446] - cell "0" [ref=f9e450] - cell "å¯ç¨" [ref=f9e454] - cell [ref=f9e458] - cell "2026-08-28 16:28:05" [ref=f9e462] - row "î§ 10 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e466]: - cell "î§" [ref=f9e467] - cell "10" [ref=f9e472] - cell "PC20260819twoITEM_001" [ref=f9e476] - cell "1000" [ref=f9e479] - cell "0" [ref=f9e483] - cell "å¯ç¨" [ref=f9e487] - cell [ref=f9e491] - cell "2026-08-19 10:53:29" [ref=f9e495] - row "î§ 9 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e499]: - cell "î§" [ref=f9e500] - cell "9" [ref=f9e505] - cell "PC20260819twoITEM_001" [ref=f9e509] - cell "1000" [ref=f9e512] - cell "0" [ref=f9e516] - cell "å¯ç¨" [ref=f9e520] - cell [ref=f9e524] - cell "2026-08-19 10:53:29" [ref=f9e528] - row "î§ 8 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e532]: - cell "î§" [ref=f9e533] - cell "8" [ref=f9e538] - cell "PC20260819twoITEM_001" [ref=f9e542] - cell "1000" [ref=f9e545] - cell "0" [ref=f9e549] - cell "å¯ç¨" [ref=f9e553] - cell [ref=f9e557] - cell "2026-08-19 10:53:29" [ref=f9e561] - row "î§ 7 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e565]: - cell "î§" [ref=f9e566] - cell "7" [ref=f9e571] - cell "PC20260819twoITEM_001" [ref=f9e575] - cell "1000" [ref=f9e578] - cell "0" [ref=f9e582] - cell "å¯ç¨" [ref=f9e586] - cell [ref=f9e590] - cell "2026-08-19 10:53:29" [ref=f9e594] - row "î§ 6 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e598]: - cell "î§" [ref=f9e599] - cell "6" [ref=f9e604] - cell "PC20260819twoITEM_001" [ref=f9e608] - cell "1000" [ref=f9e611] - cell "0" [ref=f9e615] - cell "å¯ç¨" [ref=f9e619] - cell [ref=f9e623] - cell "2026-08-19 10:53:29" [ref=f9e627] - row "î§ 5 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e631]: - cell "î§" [ref=f9e632] - cell "5" [ref=f9e637] - cell "PC20260819twoITEM_001" [ref=f9e641] - cell "1000" [ref=f9e644] - cell "0" [ref=f9e648] - cell "å¯ç¨" [ref=f9e652] - cell [ref=f9e656] - cell "2026-08-19 10:53:29" [ref=f9e660] - row "î§ 4 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e664]: - cell "î§" [ref=f9e665] - cell "4" [ref=f9e670] - cell "PC20260819twoITEM_001" [ref=f9e674] - cell "1000" [ref=f9e677] - cell "0" [ref=f9e681] - cell "å¯ç¨" [ref=f9e685] - cell [ref=f9e689] - cell "2026-08-19 10:53:29" [ref=f9e693] - row "î§ 3 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e697]: - cell "î§" [ref=f9e698] - cell "3" [ref=f9e703] - cell "PC20260819twoITEM_001" [ref=f9e707] - cell "1000" [ref=f9e710] - cell "0" [ref=f9e714] - cell "å¯ç¨" [ref=f9e718] - cell [ref=f9e722] - cell "2026-08-19 10:53:29" [ref=f9e726] - row "î§ 2 PC20260819twoITEM_001 1000 20 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e730]: - cell "î§" [ref=f9e731] - cell "2" [ref=f9e736] - cell "PC20260819twoITEM_001" [ref=f9e740] - cell "1000" [ref=f9e743] - cell "20" [ref=f9e747] - cell "å¯ç¨" [ref=f9e751] - cell [ref=f9e755] - cell "2026-08-19 10:53:29" [ref=f9e759] - row "î§ 1 PC20260819twoITEM_001 1000 40 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e763]: - cell "î§" [ref=f9e764] - cell "1" [ref=f9e769] - cell "PC20260819twoITEM_001" [ref=f9e773] - cell "1000" [ref=f9e776] - cell "40" [ref=f9e780] - cell "å¯ç¨" [ref=f9e784] - cell [ref=f9e788] - cell "2026-08-19 10:53:29" [ref=f9e792] - generic: - generic [ref=f9e796]: - table [ref=f9e799]: - rowgroup [ref=f9e811]: - row [ref=f9e812]: - columnheader "æçç " [ref=f9e813] - table [ref=f9e820]: - rowgroup [ref=f9e823]: - row [ref=f9e824]: - cell "PL-00000001 æªç»å®æ¹æ¬¡" [ref=f9e825]: - generic [ref=f9e827]: - text: PL-00000001 - generic [ref=f9e828]: æªç»å®æ¹æ¬¡ - row [ref=f9e829]: - cell "PC20260819twoITEM_001-P10" [ref=f9e830] - row [ref=f9e833]: - cell "PC20260819twoITEM_001-P09" [ref=f9e834] - row [ref=f9e837]: - cell "PC20260819twoITEM_001-P08" [ref=f9e838] - row [ref=f9e841]: - cell "PC20260819twoITEM_001-P07" [ref=f9e842] - row [ref=f9e845]: - cell "PC20260819twoITEM_001-P06" [ref=f9e846] - row [ref=f9e849]: - cell "PC20260819twoITEM_001-P05" [ref=f9e850] - row [ref=f9e853]: - cell "PC20260819twoITEM_001-P04" [ref=f9e854] - row [ref=f9e857]: - cell "PC20260819twoITEM_001-P03" [ref=f9e858] - row [ref=f9e861]: - cell "PC20260819twoITEM_001-P02" [ref=f9e862] - row [ref=f9e865]: - cell "PC20260819twoITEM_001-P01" [ref=f9e866] - generic [ref=f9e869]: - table [ref=f9e872]: - rowgroup [ref=f9e884]: - row [ref=f9e885]: - columnheader "æä½" [ref=f9e886] - table [ref=f9e893]: - rowgroup [ref=f9e896]: - row [ref=f9e897]: - cell [ref=f9e898]: - generic [ref=f9e902]: - button "æ¥çäºç»´ç " [ref=f9e904] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e907] [cursor=pointer] - button "å é¤" [ref=f9e914] [cursor=pointer] - row [ref=f9e918]: - cell [ref=f9e919]: - generic [ref=f9e923]: - button "æ¥çäºç»´ç " [ref=f9e925] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e928] [cursor=pointer] - button "å é¤" [ref=f9e935] [cursor=pointer] - row [ref=f9e939]: - cell [ref=f9e940]: - generic [ref=f9e944]: - button "æ¥çäºç»´ç " [ref=f9e946] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e949] [cursor=pointer] - button "å é¤" [ref=f9e956] [cursor=pointer] - row [ref=f9e960]: - cell [ref=f9e961]: - generic [ref=f9e965]: - button "æ¥çäºç»´ç " [ref=f9e967] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e970] [cursor=pointer] - button "å é¤" [ref=f9e977] [cursor=pointer] - row [ref=f9e981]: - cell [ref=f9e982]: - generic [ref=f9e986]: - button "æ¥çäºç»´ç " [ref=f9e988] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e991] [cursor=pointer] - button "å é¤" [ref=f9e998] [cursor=pointer] - row [ref=f9e1002]: - cell [ref=f9e1003]: - generic [ref=f9e1007]: - button "æ¥çäºç»´ç " [ref=f9e1009] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1012] [cursor=pointer] - button "å é¤" [ref=f9e1019] [cursor=pointer] - row [ref=f9e1023]: - cell [ref=f9e1024]: - generic [ref=f9e1028]: - button "æ¥çäºç»´ç " [ref=f9e1030] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1033] [cursor=pointer] - button "å é¤" [ref=f9e1040] [cursor=pointer] - row [ref=f9e1044]: - cell [ref=f9e1045]: - generic [ref=f9e1049]: - button "æ¥çäºç»´ç " [ref=f9e1051] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1054] [cursor=pointer] - button "å é¤" [ref=f9e1061] [cursor=pointer] - row [ref=f9e1065]: - cell [ref=f9e1066]: - generic [ref=f9e1070]: - button "æ¥çäºç»´ç " [ref=f9e1072] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1075] [cursor=pointer] - button "å é¤" [ref=f9e1082] [cursor=pointer] - row [ref=f9e1086]: - cell [ref=f9e1087]: - generic [ref=f9e1091]: - button "æ¥çäºç»´ç " [ref=f9e1093] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1096] [cursor=pointer] - row [ref=f9e1102]: - cell [ref=f9e1103]: - generic [ref=f9e1107]: - button "æ¥çäºç»´ç " [ref=f9e1109] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1112] [cursor=pointer] - generic [ref=f9e1124]: - generic [ref=f9e1125]: å ± 11 æ¡è®°å½ - generic [ref=f9e1127] [cursor=pointer]: - generic "20æ¡/页" [ref=f9e1128]: - textbox "è¯·éæ©" [ref=f9e1129]: 20æ¡/页 - generic [ref=f9e1130]: î£ - button "ï" [ref=f9e1133] - button "î¥" [ref=f9e1135] - button "î" [ref=f9e1137] - button "1" [ref=f9e1140] [cursor=pointer] - button "î" [ref=f9e1141] - button "î¦" [ref=f9e1143] - button "î" [ref=f9e1145] - dialog [ref=f9e1152]: - heading "æçç ç»å®çäº§æ¹æ¬¡" [level=2] [ref=f9e1154] - generic [ref=f9e1159]: - generic [ref=f9e1160]: - generic [ref=f9e1161]: "*" - text: çäº§æ¹æ¬¡ - generic [ref=f9e1167]: - combobox "* çäº§æ¹æ¬¡" [ref=f9e1169] - generic: è¯·éæ©å·²è¡¥å½ä¸ç产ä¸çæ¹æ¬¡ - button [ref=f9e1170] [cursor=pointer] - generic [ref=f9e1180]: - button "å æ¶" [ref=f9e1181] [cursor=pointer] - button "ç¡® 认" [ref=f9e1183] [cursor=pointer] - button [ref=f9e1185] [cursor=pointer] .playwright-mcp/page-2026-08-28T09-04-30-577Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,354 @@ - generic [ref=f9e4]: - generic [ref=f9e7]: - complementary [ref=f9e9]: - generic [ref=f9e10]: - generic [ref=f9e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f9e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f9e19] - generic [ref=f9e20]: æµè¯å ¬å¸åå - menu [ref=f9e23]: - menuitem "é¦é¡µ" [ref=f9e24] [cursor=pointer] - listitem [ref=f9e29]: - generic [ref=f9e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f9e38]: - generic [ref=f9e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f9e47]: - generic [ref=f9e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f9e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f9e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f9e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f9e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f9e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f9e80] [cursor=pointer] - listitem [ref=f9e85]: - generic [ref=f9e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f9e92]: - generic [ref=f9e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f9e100] [cursor=pointer] - generic [ref=f9e105]: - generic [ref=f9e106]: - banner [ref=f9e107]: - button [ref=f9e108] [cursor=pointer] - button [ref=f9e111] [cursor=pointer] - navigation "breadcrumb" [ref=f9e116]: - list [ref=f9e117]: - listitem [ref=f9e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f9e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f9e123] - listitem [ref=f9e126]: - link "æçç 管ç" [disabled] [ref=f9e127] - generic [ref=f9e134]: - generic [ref=f9e136] [cursor=pointer]: - generic [ref=f9e140]: æç´¢ - generic [ref=f9e141]: Ctrl K - button [ref=f9e143] [cursor=pointer] - button "dark" [ref=f9e148] [cursor=pointer] - button [ref=f9e157] [cursor=pointer] - button [ref=f9e163] [cursor=pointer] - button [ref=f9e166] [cursor=pointer] - button [ref=f9e172] [cursor=pointer]: - button [ref=f9e174] - button "å·¥ä½å°" [ref=f9e178] [cursor=pointer] - button "çå" [ref=f9e182] [cursor=pointer] - generic [ref=f9e189]: - generic [ref=f9e190]: æçç 管ç - generic [ref=f9e211]: - button [ref=f9e212] [cursor=pointer] - generic [ref=f9e219] [cursor=pointer] - generic [ref=f9e223] [cursor=pointer] - main [ref=f9e230]: - generic [ref=f9e235]: - generic [ref=f9e240]: - generic [ref=f9e241]: - generic [ref=f9e242]: æçç - textbox "æçç " [ref=f9e248]: - /placeholder: 请è¾å ¥æçç - generic [ref=f9e250]: - generic [ref=f9e251]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f9e257]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f9e259]: - generic [ref=f9e260]: æçç¶æ - generic [ref=f9e266] [cursor=pointer]: - combobox "æçç¶æ" [ref=f9e268] - generic: è¯·éæ©æçç¶æ - generic [ref=f9e269]: - generic [ref=f9e270]: å建æ¶é´ - generic [ref=f9e275]: - textbox "å建æ¶é´" [ref=f9e277]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f9e279]: - img "swap-right" [ref=f9e280] - textbox "ç»ææ¶é´" [ref=f9e284] - generic: - img "calendar" - generic [ref=f9e285]: - button "é ç½®" [ref=f9e286] [cursor=pointer] - button "æ ç´¢" [ref=f9e288] [cursor=pointer] - generic [ref=f9e290] [cursor=pointer]: æ¶èµ· - generic [ref=f9e297]: - generic [ref=f9e299]: - generic [ref=f9e300]: æçç å表 - generic [ref=f9e304]: - generic [ref=f9e306]: - button "é¢çæäºç»´ç " [ref=f9e308] [cursor=pointer] - button "ç»å®æ¹æ¬¡" [ref=f9e313] [cursor=pointer] - button "æ«ç 追溯" [ref=f9e320] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e327] [cursor=pointer] - button "导åº" [ref=f9e334] [cursor=pointer] - button "î" [ref=f9e340] [cursor=pointer] - generic [ref=f9e342]: - button "î©" [ref=f9e343] [cursor=pointer] - button "î" [ref=f9e345] [cursor=pointer] - button "î" [ref=f9e347] [cursor=pointer] - generic [ref=f9e354]: - generic [ref=f9e355]: - table [ref=f9e359]: - rowgroup [ref=f9e371]: - row [ref=f9e1147]: - columnheader "î£" [ref=f9e1148]: - generic "å ¨é/åæ¶" [ref=f9e378] [cursor=pointer]: î£ - columnheader "æçåºå·" [ref=f9e381] - columnheader "æ¹æ¬¡å·" [ref=f9e386] - columnheader "å¯è£ è¢æ°ï¼è¢/æçï¼" [ref=f9e391] - columnheader "å·²ç»è¢ç æ°é" [ref=f9e396] - columnheader "æçç¶æ" [ref=f9e401] - columnheader "夿³¨" [ref=f9e406] - columnheader "å建æ¶é´" [ref=f9e411] - table [ref=f9e419]: - rowgroup [ref=f9e431]: - row "î½ æªç»å®æ¹æ¬¡ 100 0 å¯ç¨ 2026-08-28 16:28:05" [ref=f9e1149]: - cell "î½" [ref=f9e1150] - cell [ref=f9e438] - cell "æªç»å®æ¹æ¬¡" [ref=f9e442] - cell "100" [ref=f9e446] - cell "0" [ref=f9e450] - cell "å¯ç¨" [ref=f9e454] - cell [ref=f9e458] - cell "2026-08-28 16:28:05" [ref=f9e462] - row "î§ 10 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e466]: - cell "î§" [ref=f9e467] - cell "10" [ref=f9e472] - cell "PC20260819twoITEM_001" [ref=f9e476] - cell "1000" [ref=f9e479] - cell "0" [ref=f9e483] - cell "å¯ç¨" [ref=f9e487] - cell [ref=f9e491] - cell "2026-08-19 10:53:29" [ref=f9e495] - row "î§ 9 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e499]: - cell "î§" [ref=f9e500] - cell "9" [ref=f9e505] - cell "PC20260819twoITEM_001" [ref=f9e509] - cell "1000" [ref=f9e512] - cell "0" [ref=f9e516] - cell "å¯ç¨" [ref=f9e520] - cell [ref=f9e524] - cell "2026-08-19 10:53:29" [ref=f9e528] - row "î§ 8 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e532]: - cell "î§" [ref=f9e533] - cell "8" [ref=f9e538] - cell "PC20260819twoITEM_001" [ref=f9e542] - cell "1000" [ref=f9e545] - cell "0" [ref=f9e549] - cell "å¯ç¨" [ref=f9e553] - cell [ref=f9e557] - cell "2026-08-19 10:53:29" [ref=f9e561] - row "î§ 7 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e565]: - cell "î§" [ref=f9e566] - cell "7" [ref=f9e571] - cell "PC20260819twoITEM_001" [ref=f9e575] - cell "1000" [ref=f9e578] - cell "0" [ref=f9e582] - cell "å¯ç¨" [ref=f9e586] - cell [ref=f9e590] - cell "2026-08-19 10:53:29" [ref=f9e594] - row "î§ 6 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e598]: - cell "î§" [ref=f9e599] - cell "6" [ref=f9e604] - cell "PC20260819twoITEM_001" [ref=f9e608] - cell "1000" [ref=f9e611] - cell "0" [ref=f9e615] - cell "å¯ç¨" [ref=f9e619] - cell [ref=f9e623] - cell "2026-08-19 10:53:29" [ref=f9e627] - row "î§ 5 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e631]: - cell "î§" [ref=f9e632] - cell "5" [ref=f9e637] - cell "PC20260819twoITEM_001" [ref=f9e641] - cell "1000" [ref=f9e644] - cell "0" [ref=f9e648] - cell "å¯ç¨" [ref=f9e652] - cell [ref=f9e656] - cell "2026-08-19 10:53:29" [ref=f9e660] - row "î§ 4 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e664]: - cell "î§" [ref=f9e665] - cell "4" [ref=f9e670] - cell "PC20260819twoITEM_001" [ref=f9e674] - cell "1000" [ref=f9e677] - cell "0" [ref=f9e681] - cell "å¯ç¨" [ref=f9e685] - cell [ref=f9e689] - cell "2026-08-19 10:53:29" [ref=f9e693] - row "î§ 3 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e697]: - cell "î§" [ref=f9e698] - cell "3" [ref=f9e703] - cell "PC20260819twoITEM_001" [ref=f9e707] - cell "1000" [ref=f9e710] - cell "0" [ref=f9e714] - cell "å¯ç¨" [ref=f9e718] - cell [ref=f9e722] - cell "2026-08-19 10:53:29" [ref=f9e726] - row "î§ 2 PC20260819twoITEM_001 1000 20 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e730]: - cell "î§" [ref=f9e731] - cell "2" [ref=f9e736] - cell "PC20260819twoITEM_001" [ref=f9e740] - cell "1000" [ref=f9e743] - cell "20" [ref=f9e747] - cell "å¯ç¨" [ref=f9e751] - cell [ref=f9e755] - cell "2026-08-19 10:53:29" [ref=f9e759] - row "î§ 1 PC20260819twoITEM_001 1000 40 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e763]: - cell "î§" [ref=f9e764] - cell "1" [ref=f9e769] - cell "PC20260819twoITEM_001" [ref=f9e773] - cell "1000" [ref=f9e776] - cell "40" [ref=f9e780] - cell "å¯ç¨" [ref=f9e784] - cell [ref=f9e788] - cell "2026-08-19 10:53:29" [ref=f9e792] - generic: - generic [ref=f9e796]: - table [ref=f9e799]: - rowgroup [ref=f9e811]: - row [ref=f9e812]: - columnheader "æçç " [ref=f9e813] - table [ref=f9e820]: - rowgroup [ref=f9e823]: - row [ref=f9e824]: - cell "PL-00000001 æªç»å®æ¹æ¬¡" [ref=f9e825]: - generic [ref=f9e827]: - text: PL-00000001 - generic [ref=f9e828]: æªç»å®æ¹æ¬¡ - row [ref=f9e829]: - cell "PC20260819twoITEM_001-P10" [ref=f9e830] - row [ref=f9e833]: - cell "PC20260819twoITEM_001-P09" [ref=f9e834] - row [ref=f9e837]: - cell "PC20260819twoITEM_001-P08" [ref=f9e838] - row [ref=f9e841]: - cell "PC20260819twoITEM_001-P07" [ref=f9e842] - row [ref=f9e845]: - cell "PC20260819twoITEM_001-P06" [ref=f9e846] - row [ref=f9e849]: - cell "PC20260819twoITEM_001-P05" [ref=f9e850] - row [ref=f9e853]: - cell "PC20260819twoITEM_001-P04" [ref=f9e854] - row [ref=f9e857]: - cell "PC20260819twoITEM_001-P03" [ref=f9e858] - row [ref=f9e861]: - cell "PC20260819twoITEM_001-P02" [ref=f9e862] - row [ref=f9e865]: - cell "PC20260819twoITEM_001-P01" [ref=f9e866] - generic [ref=f9e869]: - table [ref=f9e872]: - rowgroup [ref=f9e884]: - row [ref=f9e885]: - columnheader "æä½" [ref=f9e886] - table [ref=f9e893]: - rowgroup [ref=f9e896]: - row [ref=f9e897]: - cell [ref=f9e898]: - generic [ref=f9e902]: - button "æ¥çäºç»´ç " [ref=f9e904] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e907] [cursor=pointer] - button "å é¤" [ref=f9e914] [cursor=pointer] - row [ref=f9e918]: - cell [ref=f9e919]: - generic [ref=f9e923]: - button "æ¥çäºç»´ç " [ref=f9e925] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e928] [cursor=pointer] - button "å é¤" [ref=f9e935] [cursor=pointer] - row [ref=f9e939]: - cell [ref=f9e940]: - generic [ref=f9e944]: - button "æ¥çäºç»´ç " [ref=f9e946] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e949] [cursor=pointer] - button "å é¤" [ref=f9e956] [cursor=pointer] - row [ref=f9e960]: - cell [ref=f9e961]: - generic [ref=f9e965]: - button "æ¥çäºç»´ç " [ref=f9e967] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e970] [cursor=pointer] - button "å é¤" [ref=f9e977] [cursor=pointer] - row [ref=f9e981]: - cell [ref=f9e982]: - generic [ref=f9e986]: - button "æ¥çäºç»´ç " [ref=f9e988] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e991] [cursor=pointer] - button "å é¤" [ref=f9e998] [cursor=pointer] - row [ref=f9e1002]: - cell [ref=f9e1003]: - generic [ref=f9e1007]: - button "æ¥çäºç»´ç " [ref=f9e1009] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1012] [cursor=pointer] - button "å é¤" [ref=f9e1019] [cursor=pointer] - row [ref=f9e1023]: - cell [ref=f9e1024]: - generic [ref=f9e1028]: - button "æ¥çäºç»´ç " [ref=f9e1030] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1033] [cursor=pointer] - button "å é¤" [ref=f9e1040] [cursor=pointer] - row [ref=f9e1044]: - cell [ref=f9e1045]: - generic [ref=f9e1049]: - button "æ¥çäºç»´ç " [ref=f9e1051] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1054] [cursor=pointer] - button "å é¤" [ref=f9e1061] [cursor=pointer] - row [ref=f9e1065]: - cell [ref=f9e1066]: - generic [ref=f9e1070]: - button "æ¥çäºç»´ç " [ref=f9e1072] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1075] [cursor=pointer] - button "å é¤" [ref=f9e1082] [cursor=pointer] - row [ref=f9e1086]: - cell [ref=f9e1087]: - generic [ref=f9e1091]: - button "æ¥çäºç»´ç " [ref=f9e1093] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1096] [cursor=pointer] - row [ref=f9e1102]: - cell [ref=f9e1103]: - generic [ref=f9e1107]: - button "æ¥çäºç»´ç " [ref=f9e1109] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1112] [cursor=pointer] - generic [ref=f9e1124]: - generic [ref=f9e1125]: å ± 11 æ¡è®°å½ - generic [ref=f9e1127] [cursor=pointer]: - generic "20æ¡/页" [ref=f9e1128]: - textbox "è¯·éæ©" [ref=f9e1129]: 20æ¡/页 - generic [ref=f9e1130]: î£ - button "ï" [ref=f9e1133] - button "î¥" [ref=f9e1135] - button "î" [ref=f9e1137] - button "1" [ref=f9e1140] [cursor=pointer] - button "î" [ref=f9e1141] - button "î¦" [ref=f9e1143] - button "î" [ref=f9e1145] - dialog [ref=f9e1152]: - heading "æçç ç»å®çäº§æ¹æ¬¡" [level=2] [ref=f9e1154] - generic [ref=f9e1159]: - generic [ref=f9e1160]: - generic [ref=f9e1161]: "*" - text: çäº§æ¹æ¬¡ - generic [ref=f9e1167]: - combobox "* çäº§æ¹æ¬¡" [expanded] [active] [ref=f9e1169]: - listbox: - option "PC20260828twoITEM_001": "102" - generic: è¯·éæ©å·²è¡¥å½ä¸ç产ä¸çæ¹æ¬¡ - button [ref=f9e1170] [cursor=pointer] - generic [ref=f9e1180]: - button "å æ¶" [ref=f9e1181] [cursor=pointer] - button "ç¡® 认" [ref=f9e1183] [cursor=pointer] - button [ref=f9e1185] [cursor=pointer] - generic "PC20260828twoITEM_001" [ref=f9e1195] [cursor=pointer] .playwright-mcp/page-2026-08-28T09-04-44-764Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,353 @@ - generic [ref=f9e4]: - generic [ref=f9e7]: - complementary [ref=f9e9]: - generic [ref=f9e10]: - generic [ref=f9e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f9e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f9e19] - generic [ref=f9e20]: æµè¯å ¬å¸åå - menu [ref=f9e23]: - menuitem "é¦é¡µ" [ref=f9e24] [cursor=pointer] - listitem [ref=f9e29]: - generic [ref=f9e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f9e38]: - generic [ref=f9e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f9e47]: - generic [ref=f9e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f9e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f9e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f9e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f9e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f9e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f9e80] [cursor=pointer] - listitem [ref=f9e85]: - generic [ref=f9e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f9e92]: - generic [ref=f9e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f9e100] [cursor=pointer] - generic [ref=f9e105]: - generic [ref=f9e106]: - banner [ref=f9e107]: - button [ref=f9e108] [cursor=pointer] - button [ref=f9e111] [cursor=pointer] - navigation "breadcrumb" [ref=f9e116]: - list [ref=f9e117]: - listitem [ref=f9e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f9e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f9e123] - listitem [ref=f9e126]: - link "æçç 管ç" [disabled] [ref=f9e127] - generic [ref=f9e134]: - generic [ref=f9e136] [cursor=pointer]: - generic [ref=f9e140]: æç´¢ - generic [ref=f9e141]: Ctrl K - button [ref=f9e143] [cursor=pointer] - button "dark" [ref=f9e148] [cursor=pointer] - button [ref=f9e157] [cursor=pointer] - button [ref=f9e163] [cursor=pointer] - button [ref=f9e166] [cursor=pointer] - button [ref=f9e172] [cursor=pointer]: - button [ref=f9e174] - button "å·¥ä½å°" [ref=f9e178] [cursor=pointer] - button "çå" [ref=f9e182] [cursor=pointer] - generic [ref=f9e189]: - generic [ref=f9e190]: æçç 管ç - generic [ref=f9e211]: - button [ref=f9e212] [cursor=pointer] - generic [ref=f9e219] [cursor=pointer] - generic [ref=f9e223] [cursor=pointer] - main [ref=f9e230]: - generic [ref=f9e235]: - generic [ref=f9e240]: - generic [ref=f9e241]: - generic [ref=f9e242]: æçç - textbox "æçç " [ref=f9e248]: - /placeholder: 请è¾å ¥æçç - generic [ref=f9e250]: - generic [ref=f9e251]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f9e257]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f9e259]: - generic [ref=f9e260]: æçç¶æ - generic [ref=f9e266] [cursor=pointer]: - combobox "æçç¶æ" [ref=f9e268] - generic: è¯·éæ©æçç¶æ - generic [ref=f9e269]: - generic [ref=f9e270]: å建æ¶é´ - generic [ref=f9e275]: - textbox "å建æ¶é´" [ref=f9e277]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f9e279]: - img "swap-right" [ref=f9e280] - textbox "ç»ææ¶é´" [ref=f9e284] - generic: - img "calendar" - generic [ref=f9e285]: - button "é ç½®" [ref=f9e286] [cursor=pointer] - button "æ ç´¢" [ref=f9e288] [cursor=pointer] - generic [ref=f9e290] [cursor=pointer]: æ¶èµ· - generic [ref=f9e297]: - generic [ref=f9e299]: - generic [ref=f9e300]: æçç å表 - generic [ref=f9e304]: - generic [ref=f9e306]: - button "é¢çæäºç»´ç " [ref=f9e308] [cursor=pointer] - button "ç»å®æ¹æ¬¡" [ref=f9e313] [cursor=pointer] - button "æ«ç 追溯" [ref=f9e320] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e327] [cursor=pointer] - button "导åº" [ref=f9e334] [cursor=pointer] - button "î" [ref=f9e340] [cursor=pointer] - generic [ref=f9e342]: - button "î©" [ref=f9e343] [cursor=pointer] - button "î" [ref=f9e345] [cursor=pointer] - button "î" [ref=f9e347] [cursor=pointer] - generic [ref=f9e354]: - generic [ref=f9e355]: - table [ref=f9e359]: - rowgroup [ref=f9e371]: - row [ref=f9e1147]: - columnheader "î£" [ref=f9e1148]: - generic "å ¨é/åæ¶" [ref=f9e378] [cursor=pointer]: î£ - columnheader "æçåºå·" [ref=f9e381] - columnheader "æ¹æ¬¡å·" [ref=f9e386] - columnheader "å¯è£ è¢æ°ï¼è¢/æçï¼" [ref=f9e391] - columnheader "å·²ç»è¢ç æ°é" [ref=f9e396] - columnheader "æçç¶æ" [ref=f9e401] - columnheader "夿³¨" [ref=f9e406] - columnheader "å建æ¶é´" [ref=f9e411] - table [ref=f9e419]: - rowgroup [ref=f9e431]: - row "î½ æªç»å®æ¹æ¬¡ 100 0 å¯ç¨ 2026-08-28 16:28:05" [ref=f9e1149]: - cell "î½" [ref=f9e1150] - cell [ref=f9e438] - cell "æªç»å®æ¹æ¬¡" [ref=f9e442] - cell "100" [ref=f9e446] - cell "0" [ref=f9e450] - cell "å¯ç¨" [ref=f9e454] - cell [ref=f9e458] - cell "2026-08-28 16:28:05" [ref=f9e462] - row "î§ 10 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e466]: - cell "î§" [ref=f9e467] - cell "10" [ref=f9e472] - cell "PC20260819twoITEM_001" [ref=f9e476] - cell "1000" [ref=f9e479] - cell "0" [ref=f9e483] - cell "å¯ç¨" [ref=f9e487] - cell [ref=f9e491] - cell "2026-08-19 10:53:29" [ref=f9e495] - row "î§ 9 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e499]: - cell "î§" [ref=f9e500] - cell "9" [ref=f9e505] - cell "PC20260819twoITEM_001" [ref=f9e509] - cell "1000" [ref=f9e512] - cell "0" [ref=f9e516] - cell "å¯ç¨" [ref=f9e520] - cell [ref=f9e524] - cell "2026-08-19 10:53:29" [ref=f9e528] - row "î§ 8 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e532]: - cell "î§" [ref=f9e533] - cell "8" [ref=f9e538] - cell "PC20260819twoITEM_001" [ref=f9e542] - cell "1000" [ref=f9e545] - cell "0" [ref=f9e549] - cell "å¯ç¨" [ref=f9e553] - cell [ref=f9e557] - cell "2026-08-19 10:53:29" [ref=f9e561] - row "î§ 7 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e565]: - cell "î§" [ref=f9e566] - cell "7" [ref=f9e571] - cell "PC20260819twoITEM_001" [ref=f9e575] - cell "1000" [ref=f9e578] - cell "0" [ref=f9e582] - cell "å¯ç¨" [ref=f9e586] - cell [ref=f9e590] - cell "2026-08-19 10:53:29" [ref=f9e594] - row "î§ 6 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e598]: - cell "î§" [ref=f9e599] - cell "6" [ref=f9e604] - cell "PC20260819twoITEM_001" [ref=f9e608] - cell "1000" [ref=f9e611] - cell "0" [ref=f9e615] - cell "å¯ç¨" [ref=f9e619] - cell [ref=f9e623] - cell "2026-08-19 10:53:29" [ref=f9e627] - row "î§ 5 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e631]: - cell "î§" [ref=f9e632] - cell "5" [ref=f9e637] - cell "PC20260819twoITEM_001" [ref=f9e641] - cell "1000" [ref=f9e644] - cell "0" [ref=f9e648] - cell "å¯ç¨" [ref=f9e652] - cell [ref=f9e656] - cell "2026-08-19 10:53:29" [ref=f9e660] - row "î§ 4 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e664]: - cell "î§" [ref=f9e665] - cell "4" [ref=f9e670] - cell "PC20260819twoITEM_001" [ref=f9e674] - cell "1000" [ref=f9e677] - cell "0" [ref=f9e681] - cell "å¯ç¨" [ref=f9e685] - cell [ref=f9e689] - cell "2026-08-19 10:53:29" [ref=f9e693] - row "î§ 3 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e697]: - cell "î§" [ref=f9e698] - cell "3" [ref=f9e703] - cell "PC20260819twoITEM_001" [ref=f9e707] - cell "1000" [ref=f9e710] - cell "0" [ref=f9e714] - cell "å¯ç¨" [ref=f9e718] - cell [ref=f9e722] - cell "2026-08-19 10:53:29" [ref=f9e726] - row "î§ 2 PC20260819twoITEM_001 1000 20 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e730]: - cell "î§" [ref=f9e731] - cell "2" [ref=f9e736] - cell "PC20260819twoITEM_001" [ref=f9e740] - cell "1000" [ref=f9e743] - cell "20" [ref=f9e747] - cell "å¯ç¨" [ref=f9e751] - cell [ref=f9e755] - cell "2026-08-19 10:53:29" [ref=f9e759] - row "î§ 1 PC20260819twoITEM_001 1000 40 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e763]: - cell "î§" [ref=f9e764] - cell "1" [ref=f9e769] - cell "PC20260819twoITEM_001" [ref=f9e773] - cell "1000" [ref=f9e776] - cell "40" [ref=f9e780] - cell "å¯ç¨" [ref=f9e784] - cell [ref=f9e788] - cell "2026-08-19 10:53:29" [ref=f9e792] - generic: - generic [ref=f9e796]: - table [ref=f9e799]: - rowgroup [ref=f9e811]: - row [ref=f9e812]: - columnheader "æçç " [ref=f9e813] - table [ref=f9e820]: - rowgroup [ref=f9e823]: - row [ref=f9e824]: - cell "PL-00000001 æªç»å®æ¹æ¬¡" [ref=f9e825]: - generic [ref=f9e827]: - text: PL-00000001 - generic [ref=f9e828]: æªç»å®æ¹æ¬¡ - row [ref=f9e829]: - cell "PC20260819twoITEM_001-P10" [ref=f9e830] - row [ref=f9e833]: - cell "PC20260819twoITEM_001-P09" [ref=f9e834] - row [ref=f9e837]: - cell "PC20260819twoITEM_001-P08" [ref=f9e838] - row [ref=f9e841]: - cell "PC20260819twoITEM_001-P07" [ref=f9e842] - row [ref=f9e845]: - cell "PC20260819twoITEM_001-P06" [ref=f9e846] - row [ref=f9e849]: - cell "PC20260819twoITEM_001-P05" [ref=f9e850] - row [ref=f9e853]: - cell "PC20260819twoITEM_001-P04" [ref=f9e854] - row [ref=f9e857]: - cell "PC20260819twoITEM_001-P03" [ref=f9e858] - row [ref=f9e861]: - cell "PC20260819twoITEM_001-P02" [ref=f9e862] - row [ref=f9e865]: - cell "PC20260819twoITEM_001-P01" [ref=f9e866] - generic [ref=f9e869]: - table [ref=f9e872]: - rowgroup [ref=f9e884]: - row [ref=f9e885]: - columnheader "æä½" [ref=f9e886] - table [ref=f9e893]: - rowgroup [ref=f9e896]: - row [ref=f9e897]: - cell [ref=f9e898]: - generic [ref=f9e902]: - button "æ¥çäºç»´ç " [ref=f9e904] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e907] [cursor=pointer] - button "å é¤" [ref=f9e914] [cursor=pointer] - row [ref=f9e918]: - cell [ref=f9e919]: - generic [ref=f9e923]: - button "æ¥çäºç»´ç " [ref=f9e925] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e928] [cursor=pointer] - button "å é¤" [ref=f9e935] [cursor=pointer] - row [ref=f9e939]: - cell [ref=f9e940]: - generic [ref=f9e944]: - button "æ¥çäºç»´ç " [ref=f9e946] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e949] [cursor=pointer] - button "å é¤" [ref=f9e956] [cursor=pointer] - row [ref=f9e960]: - cell [ref=f9e961]: - generic [ref=f9e965]: - button "æ¥çäºç»´ç " [ref=f9e967] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e970] [cursor=pointer] - button "å é¤" [ref=f9e977] [cursor=pointer] - row [ref=f9e981]: - cell [ref=f9e982]: - generic [ref=f9e986]: - button "æ¥çäºç»´ç " [ref=f9e988] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e991] [cursor=pointer] - button "å é¤" [ref=f9e998] [cursor=pointer] - row [ref=f9e1002]: - cell [ref=f9e1003]: - generic [ref=f9e1007]: - button "æ¥çäºç»´ç " [ref=f9e1009] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1012] [cursor=pointer] - button "å é¤" [ref=f9e1019] [cursor=pointer] - row [ref=f9e1023]: - cell [ref=f9e1024]: - generic [ref=f9e1028]: - button "æ¥çäºç»´ç " [ref=f9e1030] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1033] [cursor=pointer] - button "å é¤" [ref=f9e1040] [cursor=pointer] - row [ref=f9e1044]: - cell [ref=f9e1045]: - generic [ref=f9e1049]: - button "æ¥çäºç»´ç " [ref=f9e1051] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1054] [cursor=pointer] - button "å é¤" [ref=f9e1061] [cursor=pointer] - row [ref=f9e1065]: - cell [ref=f9e1066]: - generic [ref=f9e1070]: - button "æ¥çäºç»´ç " [ref=f9e1072] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1075] [cursor=pointer] - button "å é¤" [ref=f9e1082] [cursor=pointer] - row [ref=f9e1086]: - cell [ref=f9e1087]: - generic [ref=f9e1091]: - button "æ¥çäºç»´ç " [ref=f9e1093] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1096] [cursor=pointer] - row [ref=f9e1102]: - cell [ref=f9e1103]: - generic [ref=f9e1107]: - button "æ¥çäºç»´ç " [ref=f9e1109] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1112] [cursor=pointer] - generic [ref=f9e1124]: - generic [ref=f9e1125]: å ± 11 æ¡è®°å½ - generic [ref=f9e1127] [cursor=pointer]: - generic "20æ¡/页" [ref=f9e1128]: - textbox "è¯·éæ©" [ref=f9e1129]: 20æ¡/页 - generic [ref=f9e1130]: î£ - button "ï" [ref=f9e1133] - button "î¥" [ref=f9e1135] - button "î" [ref=f9e1137] - button "1" [ref=f9e1140] [cursor=pointer] - button "î" [ref=f9e1141] - button "î¦" [ref=f9e1143] - button "î" [ref=f9e1145] - dialog [ref=f9e1152]: - heading "æçç ç»å®çäº§æ¹æ¬¡" [level=2] [ref=f9e1154] - generic [ref=f9e1159]: - generic [ref=f9e1160]: - generic [ref=f9e1161]: "*" - text: çäº§æ¹æ¬¡ - generic [ref=f9e1166] [cursor=pointer]: - generic: PC20260828twoITEM_001 - generic [ref=f9e1167]: - combobox "* çäº§æ¹æ¬¡" [active] [ref=f9e1169] - generic "PC20260828twoITEM_001" [ref=f9e1197] - button [ref=f9e1170] [cursor=pointer] - generic [ref=f9e1180]: - button "å æ¶" [ref=f9e1181] [cursor=pointer] - button "ç¡® 认" [ref=f9e1183] [cursor=pointer] - button [ref=f9e1185] [cursor=pointer] .playwright-mcp/page-2026-08-28T09-04-52-568Z.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,337 @@ - generic [ref=f9e4]: - generic [ref=f9e7]: - complementary [ref=f9e9]: - generic [ref=f9e10]: - generic [ref=f9e11] [cursor=pointer] - link "æµè¯å ¬å¸åå æµè¯å ¬å¸åå" [ref=f9e16] [cursor=pointer]: - /url: javascript:void 0 - img "æµè¯å ¬å¸åå" [ref=f9e19] - generic [ref=f9e20]: æµè¯å ¬å¸åå - menu [ref=f9e23]: - menuitem "é¦é¡µ" [ref=f9e24] [cursor=pointer] - listitem [ref=f9e29]: - generic [ref=f9e30] [cursor=pointer]: åºç¡æ°æ® - listitem [ref=f9e38]: - generic [ref=f9e39] [cursor=pointer]: ä»å¨ç©æµ - listitem [ref=f9e47]: - generic [ref=f9e48] [cursor=pointer]: ä¸è¢ä¸ç 管ç - list [ref=f9e54]: - menuitem "æ¹æ¬¡ç产管ç" [ref=f9e55] [cursor=pointer] - menuitem "èµç 管ç" [ref=f9e60] [cursor=pointer] - menuitem "æçç 管ç" [ref=f9e66] [cursor=pointer] - menuitem "产线维æ¤" [ref=f9e73] [cursor=pointer] - menuitem "ç产线æ«ç å ¥åº" [ref=f9e80] [cursor=pointer] - listitem [ref=f9e85]: - generic [ref=f9e86] [cursor=pointer]: è´¨é管ç - listitem [ref=f9e92]: - generic [ref=f9e93] [cursor=pointer]: ç³»ç»ç®¡ç - generic [ref=f9e100] [cursor=pointer] - generic [ref=f9e105]: - generic [ref=f9e106]: - banner [ref=f9e107]: - button [ref=f9e108] [cursor=pointer] - button [ref=f9e111] [cursor=pointer] - navigation "breadcrumb" [ref=f9e116]: - list [ref=f9e117]: - listitem [ref=f9e118]: - link "ä¸è¢ä¸ç 管ç" [ref=f9e119] [cursor=pointer]: - /url: javascript:void 0 - listitem [ref=f9e123] - listitem [ref=f9e126]: - link "æçç 管ç" [disabled] [ref=f9e127] - generic [ref=f9e134]: - generic [ref=f9e136] [cursor=pointer]: - generic [ref=f9e140]: æç´¢ - generic [ref=f9e141]: Ctrl K - button [ref=f9e143] [cursor=pointer] - button "dark" [ref=f9e148] [cursor=pointer] - button [ref=f9e157] [cursor=pointer] - button [ref=f9e163] [cursor=pointer] - button [ref=f9e166] [cursor=pointer] - button [ref=f9e172] [cursor=pointer]: - button [ref=f9e174] - button "å·¥ä½å°" [ref=f9e178] [cursor=pointer] - button "çå" [ref=f9e182] [cursor=pointer] - generic [ref=f9e189]: - generic [ref=f9e190]: æçç 管ç - generic [ref=f9e211]: - button [ref=f9e212] [cursor=pointer] - generic [ref=f9e219] [cursor=pointer] - generic [ref=f9e223] [cursor=pointer] - main [ref=f9e230]: - generic [ref=f9e235]: - generic [ref=f9e240]: - generic [ref=f9e241]: - generic [ref=f9e242]: æçç - textbox "æçç " [ref=f9e248]: - /placeholder: 请è¾å ¥æçç - generic [ref=f9e250]: - generic [ref=f9e251]: æ¹æ¬¡å· - textbox "æ¹æ¬¡å·" [ref=f9e257]: - /placeholder: 请è¾å ¥æ¹æ¬¡å· - generic [ref=f9e259]: - generic [ref=f9e260]: æçç¶æ - generic [ref=f9e266] [cursor=pointer]: - combobox "æçç¶æ" [ref=f9e268] - generic: è¯·éæ©æçç¶æ - generic [ref=f9e269]: - generic [ref=f9e270]: å建æ¶é´ - generic [ref=f9e275]: - textbox "å建æ¶é´" [ref=f9e277]: - /placeholder: å¼å§æ¶é´ - generic "to" [ref=f9e279]: - img "swap-right" [ref=f9e280] - textbox "ç»ææ¶é´" [ref=f9e284] - generic: - img "calendar" - generic [ref=f9e285]: - button "é ç½®" [ref=f9e286] [cursor=pointer] - button "æ ç´¢" [ref=f9e288] [cursor=pointer] - generic [ref=f9e290] [cursor=pointer]: æ¶èµ· - generic [ref=f9e297]: - generic [ref=f9e299]: - generic [ref=f9e300]: æçç å表 - generic [ref=f9e304]: - generic [ref=f9e306]: - button "é¢çæäºç»´ç " [ref=f9e308] [cursor=pointer] - button "ç»å®æ¹æ¬¡" [active] [ref=f9e313] [cursor=pointer] - button "æ«ç 追溯" [ref=f9e320] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e327] [cursor=pointer] - button "导åº" [ref=f9e334] [cursor=pointer] - button "î" [ref=f9e340] [cursor=pointer] - generic [ref=f9e342]: - button "î©" [ref=f9e343] [cursor=pointer] - button "î" [ref=f9e345] [cursor=pointer] - button "î" [ref=f9e347] [cursor=pointer] - generic [ref=f9e354]: - generic [ref=f9e355]: - table [ref=f9e359]: - rowgroup [ref=f9e371]: - row [ref=f9e1147]: - columnheader "î£" [ref=f9e1148]: - generic "å ¨é/åæ¶" [ref=f9e378] [cursor=pointer]: î£ - columnheader "æçåºå·" [ref=f9e381] - columnheader "æ¹æ¬¡å·" [ref=f9e386] - columnheader "å¯è£ è¢æ°ï¼è¢/æçï¼" [ref=f9e391] - columnheader "å·²ç»è¢ç æ°é" [ref=f9e396] - columnheader "æçç¶æ" [ref=f9e401] - columnheader "夿³¨" [ref=f9e406] - columnheader "å建æ¶é´" [ref=f9e411] - table [ref=f9e419]: - rowgroup [ref=f9e431]: - row "î½ 1 PC20260828twoITEM_001 100 0 å¯ç¨ 2026-08-28 16:28:05" [ref=f9e1198]: - cell "î½" [ref=f9e1150] - cell "1" [ref=f9e1199] - cell "PC20260828twoITEM_001" [ref=f9e1200] - cell "100" [ref=f9e446] - cell "0" [ref=f9e450] - cell "å¯ç¨" [ref=f9e454] - cell [ref=f9e458] - cell "2026-08-28 16:28:05" [ref=f9e462] - row "î§ 10 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e466]: - cell "î§" [ref=f9e467] - cell "10" [ref=f9e472] - cell "PC20260819twoITEM_001" [ref=f9e476] - cell "1000" [ref=f9e479] - cell "0" [ref=f9e483] - cell "å¯ç¨" [ref=f9e487] - cell [ref=f9e491] - cell "2026-08-19 10:53:29" [ref=f9e495] - row "î§ 9 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e499]: - cell "î§" [ref=f9e500] - cell "9" [ref=f9e505] - cell "PC20260819twoITEM_001" [ref=f9e509] - cell "1000" [ref=f9e512] - cell "0" [ref=f9e516] - cell "å¯ç¨" [ref=f9e520] - cell [ref=f9e524] - cell "2026-08-19 10:53:29" [ref=f9e528] - row "î§ 8 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e532]: - cell "î§" [ref=f9e533] - cell "8" [ref=f9e538] - cell "PC20260819twoITEM_001" [ref=f9e542] - cell "1000" [ref=f9e545] - cell "0" [ref=f9e549] - cell "å¯ç¨" [ref=f9e553] - cell [ref=f9e557] - cell "2026-08-19 10:53:29" [ref=f9e561] - row "î§ 7 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e565]: - cell "î§" [ref=f9e566] - cell "7" [ref=f9e571] - cell "PC20260819twoITEM_001" [ref=f9e575] - cell "1000" [ref=f9e578] - cell "0" [ref=f9e582] - cell "å¯ç¨" [ref=f9e586] - cell [ref=f9e590] - cell "2026-08-19 10:53:29" [ref=f9e594] - row "î§ 6 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e598]: - cell "î§" [ref=f9e599] - cell "6" [ref=f9e604] - cell "PC20260819twoITEM_001" [ref=f9e608] - cell "1000" [ref=f9e611] - cell "0" [ref=f9e615] - cell "å¯ç¨" [ref=f9e619] - cell [ref=f9e623] - cell "2026-08-19 10:53:29" [ref=f9e627] - row "î§ 5 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e631]: - cell "î§" [ref=f9e632] - cell "5" [ref=f9e637] - cell "PC20260819twoITEM_001" [ref=f9e641] - cell "1000" [ref=f9e644] - cell "0" [ref=f9e648] - cell "å¯ç¨" [ref=f9e652] - cell [ref=f9e656] - cell "2026-08-19 10:53:29" [ref=f9e660] - row "î§ 4 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e664]: - cell "î§" [ref=f9e665] - cell "4" [ref=f9e670] - cell "PC20260819twoITEM_001" [ref=f9e674] - cell "1000" [ref=f9e677] - cell "0" [ref=f9e681] - cell "å¯ç¨" [ref=f9e685] - cell [ref=f9e689] - cell "2026-08-19 10:53:29" [ref=f9e693] - row "î§ 3 PC20260819twoITEM_001 1000 0 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e697]: - cell "î§" [ref=f9e698] - cell "3" [ref=f9e703] - cell "PC20260819twoITEM_001" [ref=f9e707] - cell "1000" [ref=f9e710] - cell "0" [ref=f9e714] - cell "å¯ç¨" [ref=f9e718] - cell [ref=f9e722] - cell "2026-08-19 10:53:29" [ref=f9e726] - row "î§ 2 PC20260819twoITEM_001 1000 20 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e730]: - cell "î§" [ref=f9e731] - cell "2" [ref=f9e736] - cell "PC20260819twoITEM_001" [ref=f9e740] - cell "1000" [ref=f9e743] - cell "20" [ref=f9e747] - cell "å¯ç¨" [ref=f9e751] - cell [ref=f9e755] - cell "2026-08-19 10:53:29" [ref=f9e759] - row "î§ 1 PC20260819twoITEM_001 1000 40 å¯ç¨ 2026-08-19 10:53:29" [ref=f9e763]: - cell "î§" [ref=f9e764] - cell "1" [ref=f9e769] - cell "PC20260819twoITEM_001" [ref=f9e773] - cell "1000" [ref=f9e776] - cell "40" [ref=f9e780] - cell "å¯ç¨" [ref=f9e784] - cell [ref=f9e788] - cell "2026-08-19 10:53:29" [ref=f9e792] - generic: - generic [ref=f9e796]: - table [ref=f9e799]: - rowgroup [ref=f9e811]: - row [ref=f9e812]: - columnheader "æçç " [ref=f9e813] - table [ref=f9e820]: - rowgroup [ref=f9e823]: - row [ref=f9e1201]: - cell "PC20260828twoITEM_001-P01" [ref=f9e1202] - row [ref=f9e829]: - cell "PC20260819twoITEM_001-P10" [ref=f9e830] - row [ref=f9e833]: - cell "PC20260819twoITEM_001-P09" [ref=f9e834] - row [ref=f9e837]: - cell "PC20260819twoITEM_001-P08" [ref=f9e838] - row [ref=f9e841]: - cell "PC20260819twoITEM_001-P07" [ref=f9e842] - row [ref=f9e845]: - cell "PC20260819twoITEM_001-P06" [ref=f9e846] - row [ref=f9e849]: - cell "PC20260819twoITEM_001-P05" [ref=f9e850] - row [ref=f9e853]: - cell "PC20260819twoITEM_001-P04" [ref=f9e854] - row [ref=f9e857]: - cell "PC20260819twoITEM_001-P03" [ref=f9e858] - row [ref=f9e861]: - cell "PC20260819twoITEM_001-P02" [ref=f9e862] - row [ref=f9e865]: - cell "PC20260819twoITEM_001-P01" [ref=f9e866] - generic [ref=f9e869]: - table [ref=f9e872]: - rowgroup [ref=f9e884]: - row [ref=f9e885]: - columnheader "æä½" [ref=f9e886] - table [ref=f9e893]: - rowgroup [ref=f9e896]: - row [ref=f9e897]: - cell [ref=f9e898]: - generic [ref=f9e902]: - button "æ¥çäºç»´ç " [ref=f9e904] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e907] [cursor=pointer] - button "å é¤" [ref=f9e914] [cursor=pointer] - row [ref=f9e918]: - cell [ref=f9e919]: - generic [ref=f9e923]: - button "æ¥çäºç»´ç " [ref=f9e925] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e928] [cursor=pointer] - button "å é¤" [ref=f9e935] [cursor=pointer] - row [ref=f9e939]: - cell [ref=f9e940]: - generic [ref=f9e944]: - button "æ¥çäºç»´ç " [ref=f9e946] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e949] [cursor=pointer] - button "å é¤" [ref=f9e956] [cursor=pointer] - row [ref=f9e960]: - cell [ref=f9e961]: - generic [ref=f9e965]: - button "æ¥çäºç»´ç " [ref=f9e967] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e970] [cursor=pointer] - button "å é¤" [ref=f9e977] [cursor=pointer] - row [ref=f9e981]: - cell [ref=f9e982]: - generic [ref=f9e986]: - button "æ¥çäºç»´ç " [ref=f9e988] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e991] [cursor=pointer] - button "å é¤" [ref=f9e998] [cursor=pointer] - row [ref=f9e1002]: - cell [ref=f9e1003]: - generic [ref=f9e1007]: - button "æ¥çäºç»´ç " [ref=f9e1009] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1012] [cursor=pointer] - button "å é¤" [ref=f9e1019] [cursor=pointer] - row [ref=f9e1023]: - cell [ref=f9e1024]: - generic [ref=f9e1028]: - button "æ¥çäºç»´ç " [ref=f9e1030] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1033] [cursor=pointer] - button "å é¤" [ref=f9e1040] [cursor=pointer] - row [ref=f9e1044]: - cell [ref=f9e1045]: - generic [ref=f9e1049]: - button "æ¥çäºç»´ç " [ref=f9e1051] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1054] [cursor=pointer] - button "å é¤" [ref=f9e1061] [cursor=pointer] - row [ref=f9e1065]: - cell [ref=f9e1066]: - generic [ref=f9e1070]: - button "æ¥çäºç»´ç " [ref=f9e1072] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1075] [cursor=pointer] - button "å é¤" [ref=f9e1082] [cursor=pointer] - row [ref=f9e1086]: - cell [ref=f9e1087]: - generic [ref=f9e1091]: - button "æ¥çäºç»´ç " [ref=f9e1093] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1096] [cursor=pointer] - row [ref=f9e1102]: - cell [ref=f9e1103]: - generic [ref=f9e1107]: - button "æ¥çäºç»´ç " [ref=f9e1109] [cursor=pointer] - button "导åºäºç»´ç " [ref=f9e1112] [cursor=pointer] - generic [ref=f9e1124]: - generic [ref=f9e1125]: å ± 11 æ¡è®°å½ - generic [ref=f9e1127] [cursor=pointer]: - generic "20æ¡/页" [ref=f9e1128]: - textbox "è¯·éæ©" [ref=f9e1129]: 20æ¡/页 - generic [ref=f9e1130]: î£ - button "ï" [ref=f9e1133] - button "î¥" [ref=f9e1135] - button "î" [ref=f9e1137] - button "1" [ref=f9e1140] [cursor=pointer] - button "î" [ref=f9e1141] - button "î¦" [ref=f9e1143] - button "î" [ref=f9e1145] - generic [ref=f9e1204]: - img "check-circle" [ref=f9e1205] - text: æä½æå docs/mes_bag_code_integration.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,124 @@ # MES ä¸è¢ä¸ç ï¼æ¹æ¬¡ / æç / è¢ç ï¼å端èè°æ¹æ¡ ## æ¶åé¡µé¢ - çäº§æ¹æ¬¡ç®¡çï¼`mes/pro/batch`ï¼ - æçç 管çï¼`mes/pro/pallet`ï¼ - è¢ç èµç 管çï¼`mes/pro/bagCode`ï¼ - æ«ç 追溯弹çªï¼`mes/pro/components/qr-trace-modal`ï¼ ## æ»ä½æµç¨ ä¸ç±»ç ç»ä¸éç¨âå çæå¯ä¸äºç»´ç ï¼åå½å ¥ä¸å¡ä¿¡æ¯âï¼ 1. çäº§æ¹æ¬¡ï¼é¢çæä¸´æ¶æ¹æ¬¡ç ï¼`PB-YYYYYYYY`ï¼â è¡¥å½åç§ãè¢åãäº§çº¿ãæ¥æã责任人ãç产人åï¼çææ£å¼æ¹æ¬¡å· `PC...`ï¼ã 2. æçï¼é¢çæä¸´æ¶æçç ï¼`PL-YYYYYYYY`ï¼ä¸ç»å®æ¹æ¬¡ï¼â ç»å®å·²æ£å¼è¡¥å½ä¸ç产ä¸ççäº§æ¹æ¬¡ï¼çææ£å¼æçç `æ¹æ¬¡å·-PXX`ï¼ã 3. è¢ç ï¼å çæå¯ä¸è¢ç ï¼`BAG-YYYYYYYY`ï¼ä¸ç»å®æ¹æ¬¡ï¼â å½å ¥å·²æ£å¼è¡¥å½ä¸ç产ä¸ççäº§æ¹æ¬¡ â ç»å®åæ¹æ¬¡æçã äºç»´ç ä¸ç»æå°ä¸ä¼å â转æ£å¼âè失æï¼æ«ç è¿½æº¯åæ¶å ¼å®¹æ£å¼ç ä¸ä¸´æ¶ç ï¼ä¸´æ¶ç æ«ç åæä¹ ä¿çå¹¶æ å°å°åè®°å½ã ## API | æ¹æ³ | è·¯å¾ | 说æ | |---|---|---| | POST | `/mes/pro/batch/pre-generate` | é¢çææ¹æ¬¡ä¸´æ¶äºç»´ç ï¼ä¸å½å ¥ä¸å¡ä¿¡æ¯ï¼ | | PUT | `/mes/pro/batch/fill-info` | æ¹æ¬¡è¡¥å½æ£å¼ä¿¡æ¯ï¼çææ£å¼æ¹æ¬¡å·ï¼ | | GET | `/mes/pro/batch/get-by-code?code=` | æ¹æ¬¡æ«ç 追溯ï¼å ¼å®¹æ£å¼ç ä¸ä¸´æ¶ç ï¼ | | GET | `/mes/pro/batch/export-qr?batchId=` | ææ¹æ¬¡å¯¼åºæ´å¥äºç»´ç ZIP | | POST | `/mes/pro/pallet/pre-generate` | é¢çææç临æ¶äºç»´ç ï¼ä¸ç»å®æ¹æ¬¡ï¼ | | PUT | `/mes/pro/pallet/bind-batch` | æçç»å®çäº§æ¹æ¬¡ï¼çææ£å¼æçç ï¼ | | POST | `/mes/pro/pallet/export-qr-by-ids` | æç¼å·åè¡¨å¯¼åºæçäºç»´ç ZIPï¼æ¯æä¸´æ¶æçï¼ | | GET | `/mes/pro/pallet/export-qr?batchId=` | ææ¹æ¬¡å¯¼åºæçäºç»´ç ZIP | | GET | `/mes/pro/pallet/get-by-code?code=` | æçæ«ç 追溯ï¼å ¼å®¹æ£å¼ç ä¸ä¸´æ¶ç ï¼ | | POST | `/mes/pro/bag-code/generate` | åªçæå¯ä¸è¢ç ï¼ä¸ç»å®çäº§æ¹æ¬¡ | | PUT | `/mes/pro/bag-code/bind-batch` | è¢ç å½å ¥çäº§æ¹æ¬¡ | | GET | `/mes/pro/bag-code/get-by-code?code=` | è¢ç æ«ç 追溯 | ### æ¹æ¬¡æ¥å£ **é¢çæè¯·æ±ï¼`/mes/pro/batch/pre-generate`ï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `count` | Integer | æ¯ | çææ¹æ¬¡ä¸ªæ°ï¼å¿ é¡»å¤§äº 0 | | `remark` | String | å¦ | 夿³¨ | ååº `data`ï¼`[{ id, tempCode }]`ï¼`tempCode` ä¸ºä¸´æ¶æ¹æ¬¡ç ï¼äºç»´ç å 容ï¼ã **è¡¥å½ä¿¡æ¯è¯·æ±ï¼`/mes/pro/batch/fill-info`ï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `id` | Long | æ¯ | ä¸´æ¶æ¹æ¬¡ç¼å· | | `itemId` | Long | æ¯ | åç§ï¼äº§åç©æï¼ç¼å· | | `lineId` | Long | æ¯ | 产线ç¼å· | | `produceDate` | Datetime | æ¯ | çäº§æ¥æ | | `ownerUserId` | Long | æ¯ | 责任人 | | `workers` | List | æ¯ | ç产人åé ç½®ï¼user_id / worker_typeï¼ | | `remark` | String | å¦ | 夿³¨ | æå¡ç«¯æ ¡éªéè¿åçææ£å¼æ¹æ¬¡å·å¹¶å°æ¹æ¬¡ç¶æä¿æä¸ºè稿ï¼`code` 为æ£å¼æ¹æ¬¡å·ï¼`tempCode` ä»ä¿çä¾å岿«ç ã ### æçæ¥å£ **é¢çæè¯·æ±ï¼`/mes/pro/pallet/pre-generate`ï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `count` | Integer | æ¯ | çææ°éï¼å¿ é¡»å¤§äº 0 | | `capacity` | Integer | å¦ | å¯è£ è¢æ°ï¼è¢/æçï¼ | | `remark` | String | å¦ | 夿³¨ | ååº `data`ï¼`[{ id, tempCode }]`ï¼`tempCode` ä¸ºä¸´æ¶æçç ï¼äºç»´ç å 容ï¼ã **ç»å®æ¹æ¬¡è¯·æ±ï¼`/mes/pro/pallet/bind-batch`ï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `ids` | Long[] | æ¯ | å¾ ç»å®çä¸´æ¶æçç¼å·å表 | | `batchId` | Long | æ¯ | çäº§æ¹æ¬¡ç¼å· | ä» å 许æªç»å®æ¹æ¬¡çä¸´æ¶æçç»å®ï¼ç®æ æ¹æ¬¡å¿ 须已宿æ£å¼ä¿¡æ¯è¡¥å½ä¸å¤äºç产ä¸ãç»å®åææ¹æ¬¡å åºå·çææ£å¼æçç ã **æç¼å·å¯¼åºäºç»´ç ï¼`/mes/pro/pallet/export-qr-by-ids`ï¼ï¼** è¯·æ± `{ ids: Long[] }`ï¼è¿å ZIPï¼æªç»å®æ¹æ¬¡çä¸´æ¶æç伿¾ç¤ºâæªç»å®æ¹æ¬¡âç¶æèéèææ¹æ¬¡ä¿¡æ¯ã ### è¢ç å½å ¥æ¹æ¬¡è¯·æ±ï¼`/mes/pro/bag-code/bind-batch`ï¼ | åæ° | ç±»å | å¿ å¡« | 说æ | |---|---|---|---| | `ids` | Long[] | æ¯ | å¾ å½å ¥çè¢ç ID å表 | | `batchId` | Long | æ¯ | çäº§æ¹æ¬¡ ID | ç®æ æ¹æ¬¡å¿ 须已宿æ£å¼ä¿¡æ¯è¡¥å½ï¼`code` é空ï¼ä¸å¤äºç产ä¸ï¼å½å ¥åæ¹æ¬¡çè¢ç æ°é忥éç®ãæçä¸å¾éè¿æå·¥âé¢çæ â ç»å®æ¹æ¬¡ â ç»å®è¢ç âæµç¨ç»´æ¤ã ## åæ®µå±ç¤ºè§å | åæ®µ | å±ç¤ºä½ç½® | 说æ | |---|---|---| | `code` | å表ã详æ ãäºç»´ç | æ£å¼æ¹æ¬¡å· / æ£å¼æçç | | `tempCode` | å表ã详æ ãæ«ç è¿½æº¯ï¼æ°å¢ï¼ | ä¸´æ¶æ¹æ¬¡ç ï¼`PB-`ï¼/ ä¸´æ¶æçç ï¼`PL-`ï¼ï¼æªè¡¥å½/æªç»å®æ¶ä½ä¸ºäºç»´ç å±ç¤ºå¼ | | `status`ï¼æ¹æ¬¡ï¼ | å表ã追踪 | æªè¡¥å½ä¸´æ¶æ¹æ¬¡ä¸ºâè稿âï¼å表æ¾ç¤ºâå¾ è¡¥å½âæ ç¾ | | `batchId` / `batchCode`ï¼æçï¼ | å表ã详æ | æªç»å®ä¸ºç©ºï¼å表æ¾ç¤ºâæªç»å®æ¹æ¬¡âæ ç¾ | | æ¹æ¬¡ä¸å¡å段 | 追溯 | æªè¡¥å½/æªç»å®æ¶ä¸å±ç¤ºèæçåç§ãäº§çº¿ãæ¥æã责任人 | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |---|---| | é¢çææ¹æ¬¡ | ä¸è¦æ±åç§/è¢å/产线/æ¥æ/责任人ï¼çæå ¨å±å¯ä¸ä¸´æ¶æ¹æ¬¡ç ï¼ç¶æä¸ºè稿 | | æ¹æ¬¡è¡¥å½ | ä» å è®¸å°æªçææ£å¼æ¹æ¬¡å·çä¸´æ¶æ¹æ¬¡ï¼éå¤è¡¥å½æç¤ºâ已补å½â | | æ¹æ¬¡å¼å§ç产 | æªè¡¥å½æ£å¼ä¿¡æ¯çä¸´æ¶æ¹æ¬¡ä¸å 许è¿å ¥ç产ï¼åç«¯æ ¡éª + å端æé®éèï¼ | | é¢çææç | ä¸è¦æ±çäº§æ¹æ¬¡ï¼çæå ¨å±å¯ä¸ä¸´æ¶æçç ï¼`batchId` 为空 | | æçç»å®æ¹æ¬¡ | ä¸´æ¶æçä» è½ç»å®å·²æ£å¼è¡¥å½ä¸ç产ä¸çæ¹æ¬¡ï¼è·¨æ¹æ¬¡ãéå¤ç»å®è¢«æç» | | ä¸´æ¶æçåºåº | æªç»å®æ¹æ¬¡çæçç¦æ¢åä¸éå®åºåºçä¸å¡æä½ | | è¢ç å½å ¥æ¹æ¬¡ | ä» å 许ç产ä¸çæ£å¼æ¹æ¬¡ï¼ä¸´æ¶æ¹æ¬¡ä¸å¯ä½ä¸ºå½å ¥ç®æ | | è¢ç ç»å®æç | åæ¹å¿ é¡»ä¸ºå䏿£å¼æ¹æ¬¡ï¼æªç»å®æ¹æ¬¡çä¸´æ¶æçä¸å¯åä¸ç»å® | | äºç»´ç å¯¼åº | ä¸´æ¶æ¹æ¬¡/ä¸´æ¶æçæä¸´æ¶ç 导åºï¼ä¸å¡ä¿¡æ¯ä¸ºç©ºæ¶ä¸æ¾ç¤ºèæå 容 | | æ«ç è¯å« | `PB-YYYYYYYY`âæ¹æ¬¡ã`PL-YYYYYYYY`âæçã`æ¹æ¬¡å·-PXX`âæçã`BAG-YYYYYYYY`âè¢ç ï¼æ£å¼æ¹æ¬¡å·/æçç ç §å¸¸è¯å« | ## 注æäºé¡¹ - å端è°ç¨é¡ºåºï¼æ¹æ¬¡âé¢çæ â è¡¥å½ä¿¡æ¯ â å¼å§ç产âï¼æçâé¢çæ â ç»å®æ¹æ¬¡ â ç»å®è¢ç âï¼è¢ç âçæ â å½å ¥æ¹æ¬¡ â ç»å®æçâã - æ¹æ¬¡æ£å¼åå `tempCode` ä¸å é¤ï¼å岿å°ç临æ¶äºç»´ç æ«ç ä»è½è¿½æº¯ï¼å¿ç¨æ£å¼ç è¦ç临æ¶ç ã - ä¸´æ¶æçå¨ç»å®æ¹æ¬¡åä¸å¯è¢«è¢ç ç»å®ãä¸å¯éå®åºåºï¼æ¹éç»å®éå å¾é夿¡ä¸´æ¶æçè®°å½ã - è¡¥å½/ç»å®å¤±è´¥æ¶ä¿çå½åéæ©ï¼é¿å è¯¯ä»¥ä¸ºå·²å®æä¸å¡å ³èã docs/mes_pro_pallet_auto_generation_integration.md
ÎļþÒÑɾ³ý sql/mysql/mes_pro_batch_bag_code_init.sql
@@ -12,8 +12,10 @@ -- ---------------------------- CREATE TABLE IF NOT EXISTS `mes_pro_batch` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', `code` VARCHAR(64) NOT NULL COMMENT 'æ¹æ¬¡å·ï¼èªå¨çæï¼åç¼+æ¥æ+产线+åç§+æµæ°´å·ï¼', `code` VARCHAR(64) DEFAULT NULL COMMENT 'æ¹æ¬¡å·ï¼è¡¥å½ä¸å¡ä¿¡æ¯åèªå¨çæï¼å次å½å ¥æè¡¥å½æµç¨å¿ å¡«ï¼', `temp_code` VARCHAR(64) DEFAULT NULL COMMENT 'ä¸´æ¶æ¹æ¬¡ç ï¼PB-8ä½å ¨å±åºå·ï¼é¢çæäºç»´ç é¶æ®µä½¿ç¨ï¼', `item_id` BIGINT NOT NULL COMMENT 'åç§ï¼äº§åç©æï¼ç¼å·ï¼å ³è mdm_item.id', `line_id` BIGINT DEFAULT NULL COMMENT '产线ç¼å·ï¼å ³è mes_pro_line.id', `line_code` VARCHAR(32) DEFAULT NULL COMMENT '产线ç¼ç ï¼æå¡«ï¼å䏿¹æ¬¡å·çæï¼', `line_name` VARCHAR(64) DEFAULT NULL COMMENT '产线åç§°ï¼æå¡«ï¼', `machinery_id` BIGINT DEFAULT NULL COMMENT 'ç产设å¤ç¼å·ï¼æºï¼ï¼å ³è mes_dv_machinery.id', @@ -23,6 +25,11 @@ `owner_user_id` BIGINT DEFAULT NULL COMMENT 'è´£ä»»äººç¨æ·ç¼å·ï¼è´£ä»»è½å®å°äººï¼ï¼å ³è system_users.id', `bag_quantity` INT NOT NULL DEFAULT 0 COMMENT 'å·²çæè¢ç æ°éï¼ä¸è¢ä¸ç ï¼', `pallet_quantity` INT NOT NULL DEFAULT 0 COMMENT 'å·²çææçç æ°é', `inbound_time` DATETIME DEFAULT NULL COMMENT 'å ¥åºæ¶é´', `inbound_bag_quantity` INT DEFAULT NULL COMMENT 'ç´¯è®¡å ¥åºè¢æ°', `inbound_event_id` BIGINT DEFAULT NULL COMMENT 'æè¿å ¥åºäºä»¶ç¼å·', `inbound_device_code` VARCHAR(64) DEFAULT NULL COMMENT 'å ¥åºè®¾å¤ç¼ç ', `inbound_line_code` VARCHAR(64) DEFAULT NULL COMMENT 'å ¥åºäº§çº¿ç¼ç ', `status` TINYINT NOT NULL DEFAULT 10 COMMENT 'æ¹æ¬¡ç¶æï¼åå ¸ mes_pro_batch_statusï¼10 è稿 20 çäº§ä¸ 30 已宿 40 å·²ä½åºï¼', `remark` VARCHAR(500) DEFAULT NULL COMMENT '夿³¨', `creator` VARCHAR(64) DEFAULT '' COMMENT 'å建è ', @@ -32,6 +39,7 @@ `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`), UNIQUE KEY `uk_temp_code` (`temp_code`), KEY `idx_item_id` (`item_id`), KEY `idx_work_order_id` (`work_order_id`), KEY `idx_status` (`status`) @@ -61,12 +69,14 @@ -- ---------------------------- CREATE TABLE IF NOT EXISTS `mes_pro_pallet` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', `code` VARCHAR(64) NOT NULL COMMENT 'æçç ï¼æ¹æ¬¡å·-P+æçåºå·ï¼å ¨å±å¯ä¸ï¼', `batch_id` BIGINT NOT NULL COMMENT 'çäº§æ¹æ¬¡ç¼å·ï¼å ³è mes_pro_batch.id', `code` VARCHAR(64) DEFAULT NULL COMMENT 'æçç ï¼æ¹æ¬¡å·-P+æçåºå·ï¼ç»å®æ¹æ¬¡åçæï¼', `temp_code` VARCHAR(64) DEFAULT NULL COMMENT 'ä¸´æ¶æçç ï¼PL-8ä½å ¨å±åºå·ï¼é¢çæäºç»´ç é¶æ®µä½¿ç¨ï¼', `batch_id` BIGINT DEFAULT NULL COMMENT 'çäº§æ¹æ¬¡ç¼å·ï¼ç»å®æ¹æ¬¡åå ³è mes_pro_batch.id', `batch_code` VARCHAR(64) DEFAULT NULL COMMENT 'æ¹æ¬¡å·ï¼åä½ï¼ä¾¿äºå±ç¤ºï¼', `pallet_no` INT NOT NULL COMMENT 'æ¹æ¬¡å æçåºå·', `pallet_no` INT DEFAULT NULL COMMENT 'æ¹æ¬¡å æçåºå·ï¼ç»å®æ¹æ¬¡åçæï¼', `capacity` INT DEFAULT NULL COMMENT 'å¯è£ è¢æ°ï¼è¢/æçï¼', `bag_count` INT NOT NULL DEFAULT 0 COMMENT 'å·²ç»å®è¢ç æ°é', `auto_generated` BIT(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦èªå¨çæ', `status` TINYINT NOT NULL DEFAULT 10 COMMENT 'ç¶æï¼åå ¸ mes_pro_pallet_statusï¼10 å¯ç¨ 20 ä½åºï¼', `remark` VARCHAR(255) DEFAULT NULL COMMENT '夿³¨', `creator` VARCHAR(64) DEFAULT '' COMMENT 'å建è ', @@ -76,6 +86,7 @@ `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT 'æ¯å¦å é¤', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`), UNIQUE KEY `uk_temp_code` (`temp_code`), KEY `idx_batch_id` (`batch_id`) ) ENGINE = InnoDB COMMENT = 'MES æçç '; @@ -85,9 +96,9 @@ CREATE TABLE IF NOT EXISTS `mes_pro_bag_code` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ç¼å·', `uuid` VARCHAR(32) DEFAULT NULL COMMENT 'çæç» UUIDï¼æ è®°å䏿¬¡çæçæ°æ®å ï¼', `code` VARCHAR(64) NOT NULL COMMENT 'è¢ç ï¼äºç»´ç å å®¹ï¼æ¹æ¬¡å·-è¢åºå·ï¼å ¨å±å¯ä¸ï¼', `bag_no` INT NOT NULL COMMENT 'æ¹æ¬¡å è¢åºå·', `batch_id` BIGINT NOT NULL COMMENT 'çäº§æ¹æ¬¡ç¼å·ï¼å ³è mes_pro_batch.id', `code` VARCHAR(64) NOT NULL COMMENT 'è¢ç ï¼äºç»´ç å 容ï¼å ¨å±å¯ä¸ï¼', `bag_no` INT NOT NULL COMMENT 'å ¨å±è¢åºå·', `batch_id` BIGINT DEFAULT NULL COMMENT 'çäº§æ¹æ¬¡ç¼å·ï¼å½å ¥ä¿¡æ¯åå ³è mes_pro_batch.id', `batch_code` VARCHAR(64) DEFAULT NULL COMMENT 'æ¹æ¬¡å·ï¼åä½ï¼ä¾¿äºå±ç¤ºï¼', `item_id` BIGINT DEFAULT NULL COMMENT 'åç§ï¼äº§åç©æï¼ç¼å·ï¼åä½èªæ¹æ¬¡ï¼', `pallet_id` BIGINT DEFAULT NULL COMMENT 'ç»å®æçç¼å·ï¼å ³è mes_pro_pallet.id', sql/mysql/mes_pro_pallet_auto_threshold.sql
ÎļþÒÑɾ³ý yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/MesProBagCodeController.java
@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindBatchReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateReqVO; @@ -95,6 +96,14 @@ return success(true); } @PutMapping("/bind-batch") @Operation(summary = "è¢ç å½å ¥çäº§æ¹æ¬¡") @PreAuthorize("@ss.hasPermission('mes:pro-bag-code:update')") public CommonResult<Boolean> bindBatch(@Valid @RequestBody MesProBagCodeBindBatchReqVO bindReqVO) { bagCodeService.bindBatch(bindReqVO); return success(true); } @PutMapping("/bind-pallet") @Operation(summary = "è¢ç ç»å®æç") @PreAuthorize("@ss.hasPermission('mes:pro-bag-code:update')") yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/vo/MesProBagCodeBindBatchReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.util.List; @Schema(description = "管çåå° - MES è¢ç å½å ¥çäº§æ¹æ¬¡ Request VO") @Data public class MesProBagCodeBindBatchReqVO { @Schema(description = "è¢ç ç¼å·å表", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "è¢ç ç¼å·å表ä¸è½ä¸ºç©º") private List<Long> ids; @Schema(description = "çäº§æ¹æ¬¡ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") @NotNull(message = "çäº§æ¹æ¬¡ç¼å·ä¸è½ä¸ºç©º") private Long batchId; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/vo/MesProBagCodeGenerateReqVO.java
@@ -9,10 +9,6 @@ @Data public class MesProBagCodeGenerateReqVO { @Schema(description = "çäº§æ¹æ¬¡ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") @NotNull(message = "çäº§æ¹æ¬¡ç¼å·ä¸è½ä¸ºç©º") private Long batchId; @Schema(description = "çæè¢æ°ï¼æ¬æ¬¡çæçè¢ç æ°éï¼", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") @NotNull(message = "çæè¢æ°ä¸è½ä¸ºç©º") @Positive(message = "çæè¢æ°å¿ é¡»å¤§äº 0") yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/bagcode/vo/MesProBagCodeGenerateRespVO.java
@@ -1,10 +1,7 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletAutoPrintRespVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @Schema(description = "管çåå° - MES è¢ç çæååº") @Data @@ -12,7 +9,4 @@ @Schema(description = "çæç» UUID") private String uuid; @Schema(description = "æ¬æ¬¡èªå¨çæçæçæ ç¾ï¼æ¯ä¸ªæ ç¾ copies åºå®ä¸º 3") private List<MesProPalletAutoPrintRespVO> autoPallets; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/MesProBatchController.java
@@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.batch; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -10,6 +11,8 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPreGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPreGenerateRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchTraceRespVO; @@ -75,10 +78,27 @@ private MesProBagCodeService bagCodeService; @PostMapping("/create") @Operation(summary = "å建çäº§æ¹æ¬¡ï¼èªå¨çææ¹æ¬¡å·ï¼") @Operation(summary = "å建çäº§æ¹æ¬¡ï¼ä¸æ¬¡å½å ¥ä¸å¡ä¿¡æ¯ï¼èªå¨çææ¹æ¬¡å·ï¼") @PreAuthorize("@ss.hasPermission('mes:pro-batch:create')") public CommonResult<Long> createBatch(@Valid @RequestBody MesProBatchSaveReqVO createReqVO) { return success(batchService.createBatch(createReqVO)); } @PostMapping("/pre-generate") @Operation(summary = "é¢çæçäº§æ¹æ¬¡äºç»´ç ï¼ä» çæä¸´æ¶æ¹æ¬¡ç ï¼ä¸å½å ¥ä¸å¡ä¿¡æ¯ï¼") @PreAuthorize("@ss.hasPermission('mes:pro-batch:create')") public CommonResult<List<MesProBatchPreGenerateRespVO>> preGenerateBatch( @Valid @RequestBody MesProBatchPreGenerateReqVO preGenerateReqVO) { List<MesProBatchDO> list = batchService.preGenerateBatch(preGenerateReqVO); return success(BeanUtils.toBean(list, MesProBatchPreGenerateRespVO.class)); } @PutMapping("/fill-info") @Operation(summary = "è¡¥å½çäº§æ¹æ¬¡ä¸å¡ä¿¡æ¯ï¼çææ£å¼æ¹æ¬¡å·ï¼ä» ä¸´æ¶æ¹æ¬¡å¯ç¨ï¼") @PreAuthorize("@ss.hasPermission('mes:pro-batch:update')") public CommonResult<Boolean> fillBatchInfo(@Valid @RequestBody MesProBatchSaveReqVO fillReqVO) { batchService.fillBatchInfo(fillReqVO); return success(true); } @PutMapping("/update") @@ -183,7 +203,8 @@ if (pallets.size() + 1 > QrCodeImageUtils.MAX_QR_EXPORT) { throw exception(PRO_QR_EXPORT_TOO_MANY); } QrCodeImageUtils.writeZip(response, "æ¹æ¬¡äºç»´ç -" + batch.getCode(), buildBatchQrLabels(batch, pallets)); String qrCode = StrUtil.blankToDefault(batch.getCode(), batch.getTempCode()); QrCodeImageUtils.writeZip(response, "æ¹æ¬¡äºç»´ç -" + qrCode, buildBatchQrLabels(batch, pallets)); } // ==================== æ¼æ¥ VO ==================== yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/vo/MesProBatchPageReqVO.java
@@ -20,6 +20,9 @@ @Schema(description = "æ¹æ¬¡å·", example = "PC20260818L01NY001") private String code; @Schema(description = "ä¸´æ¶æ¹æ¬¡ç ", example = "PB-00000001") private String tempCode; @Schema(description = "åç§ï¼äº§åç©æï¼ç¼å·", example = "1") private Long itemId; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/vo/MesProBatchPreGenerateReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import lombok.Data; @Schema(description = "管çåå° - MES çäº§æ¹æ¬¡é¢çæäºç»´ç Request VOï¼ä» çæä¸´æ¶æ¹æ¬¡ç ï¼ä¸å½å ¥ä¸å¡ä¿¡æ¯ï¼") @Data public class MesProBatchPreGenerateReqVO { @Schema(description = "çææ¹æ¬¡ä¸ªæ°", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "çææ¹æ¬¡ä¸ªæ°ä¸è½ä¸ºç©º") @Positive(message = "çææ¹æ¬¡ä¸ªæ°å¿ é¡»å¤§äº 0") private Integer count; @Schema(description = "夿³¨", example = "å¾ è¡¥å½åç§ä¿¡æ¯") private String remark; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/vo/MesProBatchPreGenerateRespVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Schema(description = "管çåå° - MES çäº§æ¹æ¬¡é¢çæäºç»´ç Response VO") @Data public class MesProBatchPreGenerateRespVO { @Schema(description = "çäº§æ¹æ¬¡ç¼å·", example = "1024") private Long id; @Schema(description = "ä¸´æ¶æ¹æ¬¡ç ï¼äºç»´ç å 容ï¼", example = "PB-00000001") private String tempCode; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/vo/MesProBatchRespVO.java
@@ -26,14 +26,13 @@ @ColumnWidth(25) private String code; @Schema(description = "ä¸´æ¶æ¹æ¬¡ç ï¼é¢çæäºç»´ç é¶æ®µä½¿ç¨ï¼è¡¥å½æ£å¼ä¿¡æ¯å为空æä¿çï¼", example = "PB-00000001") @ExcelIgnore private String tempCode; @Schema(description = "åç§ï¼äº§åç©æï¼ç¼å·", example = "1") @ExcelIgnore private Long itemId; @Schema(description = "å è£ è¢åï¼åå ¸ mes_pro_bag_typeï¼", example = "10") @ExcelProperty("å è£ è¢å") @DictFormat(DictTypeConstants.MES_PRO_BAG_TYPE) private Integer bagType; @Schema(description = "åç§ç¼ç ") @ExcelProperty("åç§ç¼ç ") yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/vo/MesProBatchSaveReqVO.java
@@ -24,10 +24,6 @@ @NotNull(message = "åç§ä¸è½ä¸ºç©º") private Long itemId; @Schema(description = "å è£ è¢åï¼åå ¸ mes_pro_bag_typeï¼10 å°è¢ã20 大è¢ï¼", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") @NotNull(message = "å è£ è¢åä¸è½ä¸ºç©º") private Integer bagType; @Schema(description = "产线ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "产线ä¸è½ä¸ºç©º") private Long lineId; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/batch/vo/MesProBatchTraceRespVO.java
@@ -17,8 +17,11 @@ @Schema(description = "çäº§æ¹æ¬¡ç¼å·", example = "1024") private Long id; @Schema(description = "æ¹æ¬¡å·ï¼äºç»´ç å 容ï¼", example = "PC20260818L01001") @Schema(description = "æ¹æ¬¡å·ï¼è¡¥å½åçæ£å¼æ¹æ¬¡å·ï¼", example = "PC20260818L01001") private String code; @Schema(description = "ä¸´æ¶æ¹æ¬¡ç ï¼äºç»´ç å å®¹ï¼æªè¡¥å½ä¿¡æ¯æ¶å±ç¤ºï¼", example = "PB-00000001") private String tempCode; @Schema(description = "æ¹æ¬¡ç¶æï¼åå ¸ mes_pro_batch_statusï¼", example = "20") private Integer status; @@ -51,9 +54,6 @@ private String remark; // ========== åç§ä¿¡æ¯ ========== @Schema(description = "å è£ è¢åï¼åå ¸ mes_pro_bag_typeï¼", example = "10") private Integer bagType; @Schema(description = "åç§ï¼ç©æï¼ç¼å·", example = "1024") private Long itemId; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/MesProPalletController.java
@@ -10,7 +10,11 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBatchCreateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBindBatchReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletExportQrReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPreGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPreGenerateRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletTraceRespVO; import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; @@ -69,10 +73,43 @@ private AdminUserApi adminUserApi; @PostMapping("/batch-create") @Operation(summary = "æ¹éçææçç ") @Operation(summary = "æ¹éçææçç ï¼ä¸æ¬¡å½å ¥æ¹æ¬¡çææ£å¼æçç ï¼") @PreAuthorize("@ss.hasPermission('mes:pro-pallet:create')") public CommonResult<List<Long>> batchCreatePallet(@Valid @RequestBody MesProPalletBatchCreateReqVO createReqVO) { return success(palletService.batchCreatePallet(createReqVO)); } @PostMapping("/pre-generate") @Operation(summary = "é¢çææçç äºç»´ç ï¼ä» çæä¸´æ¶æçç ï¼ä¸ç»å®çäº§æ¹æ¬¡ï¼") @PreAuthorize("@ss.hasPermission('mes:pro-pallet:create')") public CommonResult<List<MesProPalletPreGenerateRespVO>> preGeneratePallet( @Valid @RequestBody MesProPalletPreGenerateReqVO preGenerateReqVO) { List<MesProPalletDO> list = palletService.preGeneratePallet(preGenerateReqVO); return success(BeanUtils.toBean(list, MesProPalletPreGenerateRespVO.class)); } @PutMapping("/bind-batch") @Operation(summary = "æçç ç»å®çäº§æ¹æ¬¡ï¼çææ£å¼æçç ï¼") @PreAuthorize("@ss.hasPermission('mes:pro-pallet:update')") public CommonResult<Boolean> bindBatch(@Valid @RequestBody MesProPalletBindBatchReqVO bindReqVO) { palletService.bindBatch(bindReqVO); return success(true); } @PostMapping("/export-qr-by-ids") @Operation(summary = "ææçç ç¼å·å表æ¹é导åºäºç»´ç å¾ç ZIPï¼æ¯ææªç»å®æ¹æ¬¡çä¸´æ¶æçï¼") @PreAuthorize("@ss.hasPermission('mes:pro-pallet:export')") @ApiAccessLog(operateType = EXPORT) public void exportPalletQrByIds(@Valid @RequestBody MesProPalletExportQrReqVO exportReqVO, HttpServletResponse response) throws IOException { List<MesProPalletDO> list = palletService.getPalletListByIds(exportReqVO.getIds()); if (CollUtil.isEmpty(list)) { throw exception(PRO_PALLET_NOT_EXISTS); } if (list.size() > QrCodeImageUtils.MAX_QR_EXPORT) { throw exception(PRO_QR_EXPORT_TOO_MANY); } QrCodeImageUtils.writeZip(response, "æçç äºç»´ç ", buildPalletQrLabels(list)); } @DeleteMapping("/delete") @@ -155,8 +192,8 @@ private MesProPalletTraceRespVO buildPalletTraceRespVO(MesProPalletDO pallet) { MesProPalletTraceRespVO respVO = BeanUtils.toBean(pallet, MesProPalletTraceRespVO.class); // æ¹æ¬¡ä¿¡æ¯ MesProBatchDO batch = batchService.getBatch(pallet.getBatchId()); // æ¹æ¬¡ä¿¡æ¯ï¼ä¸´æ¶æçæªç»å®æ¹æ¬¡æ¶ä¸ºç©ºæ¹æ¬¡ï¼ MesProBatchDO batch = pallet.getBatchId() == null ? null : batchService.getBatch(pallet.getBatchId()); if (batch != null) { respVO.setBatchStatus(batch.getStatus()) .setProduceDate(batch.getProduceDate()) yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletAutoPrintRespVO.java
ÎļþÒÑɾ³ý yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletBindBatchReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.util.List; @Schema(description = "管çåå° - MES æçç ç»å®çäº§æ¹æ¬¡ Request VO") @Data public class MesProPalletBindBatchReqVO { @Schema(description = "æçç ç¼å·å表", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "æçç ç¼å·å表ä¸è½ä¸ºç©º") private List<Long> ids; @Schema(description = "çäº§æ¹æ¬¡ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") @NotNull(message = "çäº§æ¹æ¬¡ç¼å·ä¸è½ä¸ºç©º") private Long batchId; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletExportQrReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import lombok.Data; import java.util.List; @Schema(description = "管çåå° - MES æçç æç¼å·å表导åºäºç»´ç Request VO") @Data public class MesProPalletExportQrReqVO { @Schema(description = "æçç ç¼å·å表", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "æçç ç¼å·å表ä¸è½ä¸ºç©º") private List<Long> ids; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletPageReqVO.java
@@ -20,6 +20,9 @@ @Schema(description = "æçç ", example = "PC20260818L01A001-P01") private String code; @Schema(description = "ä¸´æ¶æçç ", example = "PL-00000001") private String tempCode; @Schema(description = "çäº§æ¹æ¬¡ç¼å·", example = "1024") private Long batchId; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletPreGenerateReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import lombok.Data; @Schema(description = "管çåå° - MES æçç é¢çæäºç»´ç Request VOï¼ä¸ç»å®çäº§æ¹æ¬¡ï¼") @Data public class MesProPalletPreGenerateReqVO { @Schema(description = "çææ°é", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") @NotNull(message = "çææ°éä¸è½ä¸ºç©º") @Positive(message = "çææ°éå¿ é¡»å¤§äº 0") private Integer count; @Schema(description = "å¯è£ è¢æ°ï¼è¢/æçï¼", example = "25") @Positive(message = "å¯è£ è¢æ°å¿ é¡»å¤§äº 0") private Integer capacity; @Schema(description = "夿³¨") private String remark; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletPreGenerateRespVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Schema(description = "管çåå° - MES æçç é¢çæäºç»´ç Response VO") @Data public class MesProPalletPreGenerateRespVO { @Schema(description = "æçç ç¼å·", example = "1024") private Long id; @Schema(description = "ä¸´æ¶æçç ï¼äºç»´ç å 容ï¼", example = "PL-00000001") private String tempCode; } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletRespVO.java
@@ -24,6 +24,10 @@ @ColumnWidth(30) private String code; @Schema(description = "ä¸´æ¶æçç ï¼é¢çæäºç»´ç é¶æ®µä½¿ç¨ï¼ç»å®æ¹æ¬¡å为空æä¿çï¼", example = "PL-00000001") @ExcelIgnore private String tempCode; @Schema(description = "çäº§æ¹æ¬¡ç¼å·", example = "1024") @ExcelIgnore private Long batchId; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/pallet/vo/MesProPalletTraceRespVO.java
@@ -16,9 +16,12 @@ @Schema(description = "æçç ç¼å·", example = "1024") private Long id; @Schema(description = "æçç ï¼äºç»´ç å 容ï¼", example = "PC20260818L01001-P01") @Schema(description = "æçç ï¼ç»å®æ¹æ¬¡åçæ£å¼æçç ï¼", example = "PC20260818L01001-P01") private String code; @Schema(description = "ä¸´æ¶æçç ï¼äºç»´ç å å®¹ï¼æªç»å®æ¹æ¬¡æ¶å±ç¤ºï¼", example = "PL-00000001") private String tempCode; @Schema(description = "æ¹æ¬¡å æçåºå·", example = "1") private Integer palletNo; yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/batch/MesProBatchDO.java
@@ -35,19 +35,19 @@ @TableId private Long id; /** * æ¹æ¬¡å·ï¼èªå¨çæï¼åç¼ + æ¥æ + 产线ç¼ç + åç§ç¼ç + æµæ°´å·ï¼ * æ¹æ¬¡å·ï¼èªå¨çæï¼åç¼ + æ¥æ + 产线ç¼ç + åç§ç¼ç + æµæ°´å·ï¼è¡¥å½ä¸å¡ä¿¡æ¯åçæï¼ */ private String code; /** * ä¸´æ¶æ¹æ¬¡ç ï¼ç å¼ï¼PB-8ä½å ¨å±åºå·ï¼é¢çæäºç»´ç é¶æ®µä½¿ç¨ï¼è¡¥å½æ£å¼ä¿¡æ¯åä»å¯æ«ç è¿½æº¯ï¼ */ private String tempCode; /** * åç§ï¼äº§åç©æï¼ç¼å· * <p> * å ³è {@link cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO#getId()} */ private Long itemId; /** * å è£ è¢åï¼åå ¸ mes_pro_bag_typeï¼ */ private Integer bagType; /** * 产线ç¼å· * <p> yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/pallet/MesProPalletDO.java
@@ -32,10 +32,14 @@ @TableId private Long id; /** * æçç ï¼æ¹æ¬¡å·-P+æçåºå·ï¼å ¨å±å¯ä¸ï¼ * æçç ï¼æ¹æ¬¡å·-P+æçåºå·ï¼ç»å®æ¹æ¬¡åçæï¼ */ private String code; /** * ä¸´æ¶æçç ï¼ç å¼ï¼PL-8ä½å ¨å±åºå·ï¼é¢çæäºç»´ç é¶æ®µä½¿ç¨ï¼ç»å®æ¹æ¬¡åä»å¯æ«ç è¿½æº¯ï¼ */ private String tempCode; /** * çäº§æ¹æ¬¡ç¼å· * <p> * å ³è {@link MesProBatchDO#getId()} yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java
@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO; import cn.iocoder.yudao.module.mes.enums.pro.MesProBagCodeStatusEnum; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -47,15 +46,6 @@ default List<MesProBagCodeDO> selectListByBatchId(Long batchId) { return selectList(MesProBagCodeDO::getBatchId, batchId); } default List<MesProBagCodeDO> selectUnboundEffectiveListByBatchId(Long batchId) { return selectList(new LambdaQueryWrapperX<MesProBagCodeDO>() .eq(MesProBagCodeDO::getBatchId, batchId) .isNull(MesProBagCodeDO::getPalletId) .ne(MesProBagCodeDO::getStatus, MesProBagCodeStatusEnum.CANCELED.getStatus()) .orderByAsc(MesProBagCodeDO::getBagNo) .last("FOR UPDATE")); } default Long selectCountByBatchId(Long batchId) { @@ -114,8 +104,14 @@ * @param batchId æ¹æ¬¡ç¼å· * @return æå¤§è¢åºå·ï¼æ è®°å½è¿å 0 */ @Select("SELECT IFNULL(MAX(bag_no), 0) FROM mes_pro_bag_code WHERE batch_id = #{batchId}") Integer selectMaxBagNo(@Param("batchId") Long batchId); @Select("SELECT IFNULL(MAX(bag_no), 0) FROM mes_pro_bag_code") Integer selectMaxBagNo(); @Update("<script>UPDATE mes_pro_bag_code SET batch_id = #{batchId}, batch_code = #{batchCode}, update_time = NOW() " + "WHERE deleted = 0 AND batch_id IS NULL AND status = #{status} AND id IN " + "<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach></script>") int bindBatchByIds(@Param("ids") Collection<Long> ids, @Param("batchId") Long batchId, @Param("batchCode") String batchCode, @Param("status") Integer status); default List<MesProBagCodeDO> selectListByIdsForUpdate(Collection<Long> ids) { return selectList(new LambdaQueryWrapperX<MesProBagCodeDO>() yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/batch/MesProBatchMapper.java
@@ -20,6 +20,14 @@ return selectOne(MesProBatchDO::getCode, code); } default MesProBatchDO selectByTempCode(String tempCode) { return selectOne(MesProBatchDO::getTempCode, tempCode); } /** çæä¸´æ¶æ¹æ¬¡ç ç¨çå ¨å±åºå·ï¼è§£æ temp_code çæ°ååç¼ï¼ä¸åå¨åè¿å 0 */ @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_batch WHERE deleted = 0") Integer selectMaxTempCodeSeq(); default Long selectCountByLineId(Long lineId) { return selectCount(MesProBatchDO::getLineId, lineId); } @@ -34,6 +42,7 @@ default PageResult<MesProBatchDO> selectPage(MesProBatchPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<MesProBatchDO>() .likeIfPresent(MesProBatchDO::getCode, reqVO.getCode()) .likeIfPresent(MesProBatchDO::getTempCode, reqVO.getTempCode()) .eqIfPresent(MesProBatchDO::getItemId, reqVO.getItemId()) .eqIfPresent(MesProBatchDO::getLineId, reqVO.getLineId()) .likeIfPresent(MesProBatchDO::getLineCode, reqVO.getLineCode()) yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
@@ -23,6 +23,14 @@ return selectOne(MesProPalletDO::getCode, code); } default MesProPalletDO selectByTempCode(String tempCode) { return selectOne(MesProPalletDO::getTempCode, tempCode); } /** çæä¸´æ¶æçç ç¨çå ¨å±åºå·ï¼è§£æ temp_code çæ°ååç¼ï¼ä¸åå¨åè¿å 0 */ @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_pallet WHERE deleted = 0") Integer selectMaxTempCodeSeq(); @Select("SELECT * FROM mes_pro_pallet WHERE id = #{id} AND deleted = 0 FOR UPDATE") MesProPalletDO selectByIdForUpdate(@Param("id") Long id); @@ -33,6 +41,7 @@ default PageResult<MesProPalletDO> selectPage(MesProPalletPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<MesProPalletDO>() .likeIfPresent(MesProPalletDO::getCode, reqVO.getCode()) .likeIfPresent(MesProPalletDO::getTempCode, reqVO.getTempCode()) .eqIfPresent(MesProPalletDO::getBatchId, reqVO.getBatchId()) .likeIfPresent(MesProPalletDO::getBatchCode, reqVO.getBatchCode()) .eqIfPresent(MesProPalletDO::getStatus, reqVO.getStatus()) yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/DictTypeConstants.java
@@ -31,7 +31,6 @@ String MES_PRO_TASK_STATUS = "mes_pro_task_status"; // MES ä»»å¡ç¶æ String MES_PRO_BATCH_STATUS = "mes_pro_batch_status"; // MES çäº§æ¹æ¬¡ç¶æ String MES_PRO_BATCH_WORKER_TYPE = "mes_pro_batch_worker_type"; // MES æ¹æ¬¡äººåå²ä½ç±»å String MES_PRO_BAG_TYPE = "mes_pro_bag_type"; // MES å è£ è¢å String MES_PRO_BAG_CODE_STATUS = "mes_pro_bag_code_status"; // MES è¢ç ç¶æ String MES_PRO_PALLET_STATUS = "mes_pro_pallet_status"; // MES æçç ç¶æ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -829,8 +829,8 @@ ErrorCode PRO_QR_EXPORT_TOO_MANY = new ErrorCode(1_040_750_007, "äºç»´ç æ¹éå¯¼åºæ°éè¶ è¿ä¸é"); ErrorCode PRO_QR_IMAGE_GENERATE_ERROR = new ErrorCode(1_040_750_008, "äºç»´ç å¾ççæå¤±è´¥"); ErrorCode PRO_QR_EXPORT_PARAMS_INVALID = new ErrorCode(1_040_750_009, "äºç»´ç æ¹é导åºç¼ºå°æ¥è¯¢æ¡ä»¶"); ErrorCode PRO_BATCH_BAG_TYPE_INVALID = new ErrorCode(1_040_750_010, "å è£ è¢åæ æ"); ErrorCode PRO_BATCH_BAG_TYPE_NOT_ALLOW_CHANGE = new ErrorCode(1_040_750_011, "æ¹æ¬¡å·²çæè¢ç ææçç ï¼ä¸å 许修æ¹å è£ è¢å"); ErrorCode PRO_BATCH_ALREADY_FILLED = new ErrorCode(1_040_750_012, "çäº§æ¹æ¬¡å·²è¡¥å½æ£å¼ä¿¡æ¯ï¼ä¸å 许éå¤è¡¥å½"); ErrorCode PRO_BATCH_NOT_FILLED = new ErrorCode(1_040_750_013, "çäº§æ¹æ¬¡å°æªè¡¥å½æ£å¼ä¿¡æ¯"); // ========== MES ç产管ç-è¢ç èµç ï¼1-040-752-000ï¼ ========== ErrorCode PRO_BAG_CODE_NOT_EXISTS = new ErrorCode(1_040_752_000, "è¢ç ä¸åå¨"); @@ -850,6 +850,9 @@ ErrorCode PRO_PALLET_NOT_EXISTS = new ErrorCode(1_040_753_000, "æçç ä¸åå¨"); ErrorCode PRO_PALLET_HAS_BAG_NOT_DELETE = new ErrorCode(1_040_753_001, "æçç å·²ç»å®è¢ç ï¼ä¸å 许å é¤"); ErrorCode PRO_PALLET_GENERATE_COUNT_INVALID = new ErrorCode(1_040_753_002, "æçç çææ°éå¿ é¡»å¤§äº 0"); ErrorCode PRO_PALLET_ALREADY_BIND_BATCH = new ErrorCode(1_040_753_003, "æçå·²ç»å®çäº§æ¹æ¬¡æå·²çææ£å¼æçç ï¼ä¸å 许éå¤ç»å®"); ErrorCode PRO_PALLET_BIND_IDS_EMPTY = new ErrorCode(1_040_753_004, "å¾ ç»å®æ¹æ¬¡çæçç¼å·å表ä¸è½ä¸ºç©º"); ErrorCode PRO_PALLET_NOT_BIND_BATCH = new ErrorCode(1_040_753_005, "æçå°æªç»å®çäº§æ¹æ¬¡"); // ========== MES ç产管ç-产线维æ¤ï¼1-040-754-000ï¼ ========== ErrorCode PRO_LINE_NOT_EXISTS = new ErrorCode(1_040_754_000, "产线ä¸åå¨"); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/pro/MesProBagTypeEnum.java
ÎļþÒÑɾ³ý yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/MesProQrLabelBuilder.java
@@ -26,16 +26,24 @@ public static QrLabelInfo buildBatchLabel(MesProBatchDO batch, Map<Long, MesMdmItemDO> itemMap, Map<Long, AdminUserRespDTO> userMap) { // æªè¡¥å½ä¸å¡ä¿¡æ¯æ¶ç¨ä¸´æ¶æ¹æ¬¡ç ä½ä¸ºäºç»´ç å 容ï¼å¹¶æç¡®æç¤ºç¶æï¼åç§/产线çä¿¡æ¯ç¼ºå¤±æ¶ä¸æ¼æ¥ç©ºææ¬ String code = StrUtil.blankToDefault(batch.getCode(), batch.getTempCode()); LinkedHashMap<String, String> keyValues = new LinkedHashMap<>(); keyValues.put("æ¹æ¬¡å·", batch.getCode()); keyValues.put("æ¹æ¬¡å·", code); if (StrUtil.isEmpty(batch.getCode())) { keyValues.put("ç¶æ", "å¾ è¡¥å½"); } MesMdmItemDO item = itemMap.get(batch.getItemId()); if (item != null) { keyValues.put("åç§", item.getName()); keyValues.put("è§æ ¼", item.getSpecification()); } if (StrUtil.isNotEmpty(batch.getLineName()) || StrUtil.isNotEmpty(batch.getLineCode())) { keyValues.put("产线", StrUtil.join(" / ", batch.getLineName(), batch.getLineCode())); keyValues.put("çäº§æ¥æ", batch.getProduceDate() == null ? "" : LocalDateTimeUtil.format(batch.getProduceDate(), "yyyy-MM-dd HH:mm")); } if (batch.getProduceDate() != null) { keyValues.put("çäº§æ¥æ", LocalDateTimeUtil.format(batch.getProduceDate(), "yyyy-MM-dd HH:mm")); } if (batch.getPlanQuantity() != null) { keyValues.put("è®¡åæ°é", String.valueOf(batch.getPlanQuantity())); } @@ -43,7 +51,7 @@ if (user != null) { keyValues.put("责任人", user.getNickname()); } return QrLabelInfo.builder().fileName(batch.getCode()).code(batch.getCode()).keyValues(keyValues).build(); return QrLabelInfo.builder().fileName(code).code(code).keyValues(keyValues).build(); } /** @@ -53,17 +61,24 @@ MesProBatchDO batch, Map<Long, MesMdmItemDO> itemMap, Map<Long, AdminUserRespDTO> userMap) { // æªç»å®æ¹æ¬¡ï¼ä¸´æ¶æçç ï¼æ¶ç¨ä¸´æ¶ç ä½ä¸ºäºç»´ç å 容并æç¡®æç¤ºç¶æ String code = StrUtil.blankToDefault(pallet.getCode(), pallet.getTempCode()); LinkedHashMap<String, String> keyValues = new LinkedHashMap<>(); keyValues.put("æçç ", pallet.getCode()); keyValues.put("æçç ", code); if (StrUtil.isEmpty(pallet.getCode())) { keyValues.put("ç¶æ", "æªç»å®æ¹æ¬¡"); } keyValues.put("æçåºå·", pallet.getPalletNo() == null ? "" : String.valueOf(pallet.getPalletNo())); if (StrUtil.isNotEmpty(pallet.getBatchCode())) { keyValues.put("æ¹æ¬¡å·", pallet.getBatchCode()); } if (pallet.getBagCount() != null) { keyValues.put("å·²è£ è¢æ°", String.valueOf(pallet.getBagCount())); } if (batch != null) { fillBatchKeyValues(keyValues, batch, itemMap, userMap); } return QrLabelInfo.builder().fileName(pallet.getCode()).code(pallet.getCode()).keyValues(keyValues).build(); return QrLabelInfo.builder().fileName(code).code(code).keyValues(keyValues).build(); } /** yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/bagcode/MesProBagCodeService.java
@@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.mes.service.pro.bagcode; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindBatchReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateRespVO; @@ -30,6 +31,8 @@ */ MesProBagCodeGenerateRespVO generateBagCodes(@Valid MesProBagCodeGenerateReqVO generateReqVO); void bindBatch(@Valid MesProBagCodeBindBatchReqVO bindReqVO); /** * ä½åºç ´æè¢ç å¹¶å¨åæ¹æ¬¡çæçéæ¿æ¢è¢ç */ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/bagcode/MesProBagCodeServiceImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindBatchReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateRespVO; @@ -64,44 +65,53 @@ @Override @Transactional(rollbackFor = Exception.class) public MesProBagCodeGenerateRespVO generateBagCodes(MesProBagCodeGenerateReqVO generateReqVO) { // 1. æ ¡éªæ¹æ¬¡åå¨ä¸å¤äºç产ä¸ç¶æ MesProBatchDO batch = batchMapper.selectByIdForUpdate(generateReqVO.getBatchId()); if (batch == null) { throw exception(PRO_BATCH_NOT_EXISTS); } if (!MesProBatchStatusEnum.PRODUCING.getStatus().equals(batch.getStatus())) { throw exception(PRO_BATCH_STATUS_NOT_GENERATE_CODE); } if (generateReqVO.getCount() == null || generateReqVO.getCount() <= 0) { throw exception(PRO_BAG_CODE_GENERATE_COUNT_INVALID); } // 2. 计ç®èµ·å§åºå·ï¼å å«å·²é»è¾å é¤è®°å½ï¼ä¿è¯åºå·ä¸åéãç å¼å¯ä¸ï¼ int startNo = bagCodeMapper.selectMaxBagNo(batch.getId()) + 1; // 3. æ¹éçæè¢ç ï¼æ¹æ¬¡å· + - + 4 ä½è¢åºå·ï¼å䏿¬¡çæå ±äº«åä¸ UUIDï¼æ°æ®å ï¼ // çæé¶æ®µåªåå»ºå ¨å±å¯ä¸è¢ç ï¼çäº§æ¹æ¬¡å¨åç»å½å ¥ int startNo = bagCodeMapper.selectMaxBagNo() + 1; String uuid = IdUtil.fastSimpleUUID(); List<MesProBagCodeDO> bagCodes = new ArrayList<>(generateReqVO.getCount()); for (int i = 0; i < generateReqVO.getCount(); i++) { int bagNo = startNo + i; bagCodes.add(new MesProBagCodeDO() .setUuid(uuid) .setCode(batch.getCode() + "-" + StrUtil.padPre(String.valueOf(bagNo), 4, '0')) .setCode("BAG-" + StrUtil.padPre(String.valueOf(bagNo), 8, '0')) .setBagNo(bagNo) .setBatchId(batch.getId()) .setBatchCode(batch.getCode()) .setStatus(MesProBagCodeStatusEnum.GENERATED.getStatus()) .setRemark(generateReqVO.getRemark())); } bagCodeMapper.insertBatch(bagCodes); return new MesProBagCodeGenerateRespVO().setUuid(uuid); } // 4. ååæ¹æ¬¡è¢ç æ°é @Override @Transactional(rollbackFor = Exception.class) public void bindBatch(MesProBagCodeBindBatchReqVO bindReqVO) { MesProBatchDO batch = batchMapper.selectByIdForUpdate(bindReqVO.getBatchId()); if (batch == null) { throw exception(PRO_BATCH_NOT_EXISTS); } if (!MesProBatchStatusEnum.PRODUCING.getStatus().equals(batch.getStatus())) { throw exception(PRO_BATCH_STATUS_NOT_GENERATE_CODE); } // ä¸´æ¶æ¹æ¬¡ï¼æªè¡¥å½æ£å¼æ¹æ¬¡å·ï¼ä¸å 许è¢ç å½å ¥ if (StrUtil.isEmpty(batch.getCode())) { throw exception(PRO_BATCH_NOT_FILLED); } List<Long> ids = bindReqVO.getIds().stream().distinct().toList(); List<MesProBagCodeDO> bagCodes = bagCodeMapper.selectListByIdsForUpdate(ids); if (bagCodes.size() != ids.size() || bagCodes.stream().anyMatch(code -> code.getBatchId() != null || !MesProBagCodeStatusEnum.GENERATED.getStatus().equals(code.getStatus()))) { throw exception(PRO_BAG_CODE_STATUS_NOT_GENERATED); } if (bagCodeMapper.bindBatchByIds(ids, batch.getId(), batch.getCode(), MesProBagCodeStatusEnum.GENERATED.getStatus()) != ids.size()) { throw exception(PRO_BAG_CODE_STATUS_NOT_GENERATED); } batchMapper.updateById(new MesProBatchDO().setId(batch.getId()) .setBagQuantity((batch.getBagQuantity() == null ? 0 : batch.getBagQuantity()) + generateReqVO.getCount())); return new MesProBagCodeGenerateRespVO() .setUuid(uuid) .setAutoPallets(palletService.autoCreatePallets(batch.getId())); .setBagQuantity(bagCodeMapper.selectEffectiveCountByBatchId(batch.getId()))); } @Override @@ -147,7 +157,7 @@ String replaceUuid = IdUtil.fastSimpleUUID(); LocalDateTime replaceTime = LocalDateTime.now(); int startNo = bagCodeMapper.selectMaxBagNo(batch.getId()) + 1; int startNo = bagCodeMapper.selectMaxBagNo() + 1; List<MesProBagCodeDO> newBagCodes = new ArrayList<>(oldBagCodes.size()); List<MesProBagCodeReplaceDO> replacements = new ArrayList<>(oldBagCodes.size()); List<MesProBagCodeReplaceItemRespVO> items = new ArrayList<>(oldBagCodes.size()); yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchService.java
@@ -2,6 +2,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPreGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchWorkerDO; @@ -26,6 +27,21 @@ Long createBatch(@Valid MesProBatchSaveReqVO createReqVO); /** * é¢çæçäº§æ¹æ¬¡äºç»´ç ï¼ä» å建æºå¸¦ä¸´æ¶æ¹æ¬¡ç çæ¹æ¬¡è®°å½ï¼ä¸å½å ¥ä¸å¡ä¿¡æ¯ï¼ç¶æä¸ºè稿 * * @param reqVO é¢çæä¿¡æ¯ * @return æ°å»ºçæ¹æ¬¡è®°å½ï¼å«ä¸´æ¶æ¹æ¬¡ç ï¼ */ List<MesProBatchDO> preGenerateBatch(@Valid MesProBatchPreGenerateReqVO reqVO); /** * è¡¥å½çäº§æ¹æ¬¡ä¸å¡ä¿¡æ¯ï¼åç§ãè¢åãäº§çº¿ãæ¥æã责任人ãç产人åï¼ï¼çææ£å¼æ¹æ¬¡å· * * @param fillReqVO è¡¥å½ä¿¡æ¯ï¼id å¿ å¡« */ void fillBatchInfo(@Valid MesProBatchSaveReqVO fillReqVO); /** * æ´æ°çäº§æ¹æ¬¡ï¼å«ç产人åé ç½®ï¼ * * @param updateReqVO æ´æ°ä¿¡æ¯ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchPreGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.batch.vo.MesProBatchSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO; @@ -15,7 +16,6 @@ import cn.iocoder.yudao.module.mes.dal.mysql.pro.batch.MesProBatchWorkerMapper; import cn.iocoder.yudao.module.mes.dal.mysql.pro.pallet.MesProPalletMapper; import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; import cn.iocoder.yudao.module.mes.enums.pro.MesProBagTypeEnum; import cn.iocoder.yudao.module.mes.enums.pro.MesProBatchStatusEnum; import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -68,7 +69,6 @@ @Override @Transactional(rollbackFor = Exception.class) public Long createBatch(MesProBatchSaveReqVO createReqVO) { validateBagType(createReqVO.getBagType()); // 1. æ ¡éªå ³èæ°æ®ï¼åç§ã产线ãç产人åï¼ MesMdmItemDO item = mdmItemService.validateItemExists(createReqVO.getItemId()); MesProLineDO line = lineService.validateLineExistsAndEnable(createReqVO.getLineId()); @@ -82,7 +82,6 @@ .setCode(code) .setLineCode(line.getCode()) .setLineName(line.getName()) .setBagType(createReqVO.getBagType()) .setBagQuantity(0) .setPalletQuantity(0) .setStatus(MesProBatchStatusEnum.DRAFT.getStatus()); @@ -95,28 +94,72 @@ @Override @Transactional(rollbackFor = Exception.class) public List<MesProBatchDO> preGenerateBatch(MesProBatchPreGenerateReqVO reqVO) { // 1. çæä¸´æ¶æ¹æ¬¡ç ï¼å ¨å± 8 ä½åºå·ï¼æ ¼å¼ PB-00000001ï¼ int startSeq = batchMapper.selectMaxTempCodeSeq() + 1; List<MesProBatchDO> list = new ArrayList<>(reqVO.getCount()); for (int i = 0; i < reqVO.getCount(); i++) { list.add(new MesProBatchDO() .setTempCode("PB-" + StrUtil.padPre(String.valueOf(startSeq + i), 8, '0')) .setBagQuantity(0) .setPalletQuantity(0) .setStatus(MesProBatchStatusEnum.DRAFT.getStatus()) .setRemark(reqVO.getRemark())); } // 2. æ¹éæå ¥ï¼èç¨¿ç¶æï¼çå¾ è¡¥å½ä¸å¡ä¿¡æ¯ï¼ for (MesProBatchDO batch : list) { batchMapper.insert(batch); } return list; } @Override @Transactional(rollbackFor = Exception.class) public void fillBatchInfo(MesProBatchSaveReqVO fillReqVO) { // 1. é宿¹æ¬¡ï¼ä» å è®¸å°æªè¡¥å½æ£å¼ä¿¡æ¯çä¸´æ¶æ¹æ¬¡ MesProBatchDO batch = batchMapper.selectByIdForUpdate(fillReqVO.getId()); if (batch == null) { throw exception(PRO_BATCH_NOT_EXISTS); } if (StrUtil.isNotEmpty(batch.getCode())) { throw exception(PRO_BATCH_ALREADY_FILLED); } // 2. æ ¡éªå ³èæ°æ®å¹¶çææ£å¼æ¹æ¬¡å· MesMdmItemDO item = mdmItemService.validateItemExists(fillReqVO.getItemId()); MesProLineDO line = lineService.validateLineExistsAndEnable(fillReqVO.getLineId()); validateRelations(fillReqVO); String code = generateBatchCode(line.getCode(), item.getCode()); // 3. è½åºä¸å¡ä¿¡æ¯ï¼ä¿çä¸´æ¶æ¹æ¬¡ç ç¨äºå岿«ç 追溯ï¼äº§çº¿ç¼ç /åç§°åä½åå¡«ï¼ MesProBatchDO updateObj = BeanUtils.toBean(fillReqVO, MesProBatchDO.class) .setCode(code) .setLineCode(line.getCode()) .setLineName(line.getName()) .setStatus(MesProBatchStatusEnum.DRAFT.getStatus()); batchMapper.updateById(updateObj); // 4. é建ç产人åé ç½® batchWorkerMapper.deleteByBatchId(fillReqVO.getId()); insertBatchWorkers(fillReqVO.getId(), fillReqVO.getWorkers()); } @Override @Transactional(rollbackFor = Exception.class) public void updateBatch(MesProBatchSaveReqVO updateReqVO) { // 1. æ ¡éªåå¨ + ç¶æï¼è稿/çäº§ä¸æå 许修æ¹ï¼ MesProBatchDO oldBatch = validateBatchExists(updateReqVO.getId()); validateBatchEditable(oldBatch); // 2. å·²çæè¢ç ææçç åä¸å 许修æ¹è¢åï¼é¿å å䏿¹æ¬¡éå¼åå导è´å½ééä¹±ï¼ if (updateReqVO.getBagType() != null && !Objects.equals(oldBatch.getBagType(), updateReqVO.getBagType()) && (bagQuantityOrPalletCreated(oldBatch))) { throw exception(PRO_BATCH_BAG_TYPE_NOT_ALLOW_CHANGE); } validateBagType(updateReqVO.getBagType()); // 2. æ ¡éªå ³èæ°æ®ï¼ç产人åï¼ validateRelations(updateReqVO); // 3. åç§/产线ååæ¶éæ°çææ¹æ¬¡å·ï¼æ¹æ¬¡å·å å«äº§çº¿ç¼ç + åç§ç¼ç è¦ç´ ï¼ // 3. æªçææ£å¼æ¹æ¬¡å·æåç§/产线ååæ¶éæ°çææ¹æ¬¡å·ï¼æ¹æ¬¡å·å å«äº§çº¿ç¼ç + åç§ç¼ç è¦ç´ ï¼ boolean codeEmpty = StrUtil.isEmpty(oldBatch.getCode()); boolean itemChanged = !Objects.equals(oldBatch.getItemId(), updateReqVO.getItemId()); boolean lineChanged = !Objects.equals(oldBatch.getLineId(), updateReqVO.getLineId()); String code = oldBatch.getCode(); MesProBatchDO updateObj = BeanUtils.toBean(updateReqVO, MesProBatchDO.class); if (itemChanged || lineChanged) { if (codeEmpty || itemChanged || lineChanged) { MesMdmItemDO item = mdmItemService.validateItemExists(updateReqVO.getItemId()); // åæ´äº§çº¿æ¶ï¼ç®æ äº§çº¿å¿ é¡»å¯ç¨ï¼æªåæ´åä» æ ¡éªåå¨ï¼é¿å åç¨äº§çº¿çå岿¹æ¬¡æ æ³ç¼è¾å ¶ä»åæ®µï¼ MesProLineDO line = lineChanged MesProLineDO line = (lineChanged || codeEmpty) ? lineService.validateLineExistsAndEnable(updateReqVO.getLineId()) : lineService.validateLineExists(updateReqVO.getLineId()); code = generateBatchCode(line.getCode(), item.getCode()); @@ -168,7 +211,10 @@ throw exception(PRO_BATCH_STATUS_INVALID); } if (MesProBatchStatusEnum.PRODUCING.getStatus().equals(status)) { validateBagType(batch.getBagType()); // æªè¡¥å½ä¸å¡ä¿¡æ¯çä¸´æ¶æ¹æ¬¡ä¸å 许è¿å ¥ç产 if (StrUtil.isEmpty(batch.getCode())) { throw exception(PRO_BATCH_NOT_FILLED); } } // 3. æ´æ°ç¶æ batchMapper.updateById(new MesProBatchDO().setId(id).setStatus(status)); @@ -181,7 +227,11 @@ @Override public MesProBatchDO getBatchByCode(String code) { return batchMapper.selectByCode(code); MesProBatchDO batch = batchMapper.selectByCode(code); if (batch == null) { batch = batchMapper.selectByTempCode(code); } return batch; } @Override @@ -255,23 +305,6 @@ && !MesProBatchStatusEnum.PRODUCING.getStatus().equals(batch.getStatus())) { throw exception(PRO_BATCH_STATUS_NOT_DRAFT_OR_PRODUCING); } } /** * æ ¡éªå è£ è¢åææ */ private void validateBagType(Integer bagType) { if (bagType != null && MesProBagTypeEnum.valueOfType(bagType) == null) { throw exception(PRO_BATCH_BAG_TYPE_INVALID); } } /** * å¤ææ¹æ¬¡æ¯å¦å·²çæè¢ç ææçç ï¼ç¨äºç¦æ¢ä¿®æ¹è¢åï¼ */ private boolean bagQuantityOrPalletCreated(MesProBatchDO batch) { return (batch.getBagQuantity() != null && batch.getBagQuantity() > 0) || (batch.getPalletQuantity() != null && batch.getPalletQuantity() > 0); } /** yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/pallet/MesProPalletService.java
@@ -1,12 +1,14 @@ package cn.iocoder.yudao.module.mes.service.pro.pallet; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletAutoPrintRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBatchCreateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBindBatchReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPreGenerateReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.pallet.MesProPalletDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** @@ -25,12 +27,20 @@ List<Long> batchCreatePallet(@Valid MesProPalletBatchCreateReqVO createReqVO); /** * ææ¹æ¬¡ææè¢ç æ°éèªå¨çæå¹¶ç»å®æ´æè¢ç * é¢çææçç äºç»´ç ï¼ä¸ç»å®çäº§æ¹æ¬¡ï¼ä» å建æºå¸¦ä¸´æ¶æçç çè®°å½ * * @param batchId æ¹æ¬¡ç¼å· * @return æ¬æ¬¡æ°çæçæçæå°æ°æ® * @param reqVO é¢çæä¿¡æ¯ * @return æ°å»ºçæçç è®°å½ï¼å«ä¸´æ¶æçç ï¼ */ List<MesProPalletAutoPrintRespVO> autoCreatePallets(Long batchId); List<MesProPalletDO> preGeneratePallet(@Valid MesProPalletPreGenerateReqVO reqVO); /** * æçç ç»å®çäº§æ¹æ¬¡ï¼çææ£å¼æçç ï¼æ¹æ¬¡å·-P+æçåºå·ï¼ï¼å¹¶ååæ¹æ¬¡æçæ°é * * @param bindReqVO ç»å®ä¿¡æ¯ * @return æ¬æ¬¡ç»å®çæçæ°é */ int bindBatch(@Valid MesProPalletBindBatchReqVO bindReqVO); /** * å 餿çç ï¼æªç»å®è¢ç æå 许å é¤ï¼ @@ -80,6 +90,14 @@ List<MesProPalletDO> getPalletListByBatchId(Long batchId); /** * è·å¾æçç åè¡¨ï¼æç¼å·åè¡¨ï¼ * * @param ids ç¼å·å表 * @return æçç å表 */ List<MesProPalletDO> getPalletListByIds(Collection<Long> ids); /** * æ´æ°æçå·²ç»å®è¢ç æ°é * * @param palletId æçç¼å· yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/pallet/MesProPalletServiceImpl.java
@@ -1,22 +1,19 @@ package cn.iocoder.yudao.module.mes.service.pro.pallet; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletAutoPrintRespVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBatchCreateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletBindBatchReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.pallet.vo.MesProPalletPreGenerateReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.pallet.MesProPalletDO; import cn.iocoder.yudao.module.mes.dal.mysql.pro.bagcode.MesProBagCodeMapper; import cn.iocoder.yudao.module.mes.dal.mysql.pro.batch.MesProBatchMapper; import cn.iocoder.yudao.module.mes.dal.mysql.pro.pallet.MesProPalletMapper; import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; import cn.iocoder.yudao.module.mes.enums.pro.MesProBagTypeEnum; import cn.iocoder.yudao.module.mes.enums.pro.MesProBatchStatusEnum; import cn.iocoder.yudao.module.mes.enums.pro.MesProPalletStatusEnum; import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -24,7 +21,7 @@ import org.springframework.validation.annotation.Validated; import java.util.ArrayList; import java.util.Collections; import java.util.Collection; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -46,10 +43,6 @@ private MesProBagCodeMapper bagCodeMapper; @Resource private MesProBatchMapper batchMapper; @Resource private MesMdmItemService mdmItemService; @Resource private AdminUserApi adminUserApi; @Override @Transactional(rollbackFor = Exception.class) @@ -95,53 +88,69 @@ @Override @Transactional(rollbackFor = Exception.class) public List<MesProPalletAutoPrintRespVO> autoCreatePallets(Long batchId) { MesProBatchDO batch = batchMapper.selectByIdForUpdate(batchId); public List<MesProPalletDO> preGeneratePallet(MesProPalletPreGenerateReqVO reqVO) { // 1. çæä¸´æ¶æçç ï¼å ¨å± 8 ä½åºå·ï¼æ ¼å¼ PL-00000001ï¼ int startSeq = palletMapper.selectMaxTempCodeSeq() + 1; List<MesProPalletDO> list = new ArrayList<>(reqVO.getCount()); for (int i = 0; i < reqVO.getCount(); i++) { list.add(new MesProPalletDO() .setTempCode("PL-" + StrUtil.padPre(String.valueOf(startSeq + i), 8, '0')) .setCapacity(reqVO.getCapacity()) .setBagCount(0) .setAutoGenerated(false) .setStatus(MesProPalletStatusEnum.IN_USE.getStatus()) .setRemark(reqVO.getRemark())); } // 2. æ¹éæå ¥ï¼æªç»å®çäº§æ¹æ¬¡ï¼çå¾ ç»å®ï¼ palletMapper.insertBatch(list); return list; } @Override @Transactional(rollbackFor = Exception.class) public int bindBatch(MesProPalletBindBatchReqVO bindReqVO) { // 1. éå®ç®æ æ¹æ¬¡å¹¶æ ¡éªå·²è¡¥å½æ£å¼ä¿¡æ¯ + çäº§ä¸ MesProBatchDO batch = batchMapper.selectByIdForUpdate(bindReqVO.getBatchId()); if (batch == null) { throw exception(PRO_BATCH_NOT_EXISTS); } if (!MesProBatchStatusEnum.PRODUCING.getStatus().equals(batch.getStatus())) { throw exception(PRO_BATCH_STATUS_NOT_GENERATE_CODE); } MesProBagTypeEnum bagType = MesProBagTypeEnum.valueOfType(batch.getBagType()); if (bagType == null) { throw exception(PRO_BATCH_BAG_TYPE_INVALID); if (StrUtil.isEmpty(batch.getCode())) { throw exception(PRO_BATCH_NOT_FILLED); } List<cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO> candidates = bagCodeMapper.selectUnboundEffectiveListByBatchId(batchId); int threshold = bagType.getThreshold(); int palletCount = candidates.size() / threshold; if (palletCount == 0) { return Collections.emptyList(); // 2. é宿çï¼æ ¡éªåæªç»å®æ¹æ¬¡ä¸æªçææ£å¼æçç List<Long> ids = bindReqVO.getIds().stream().distinct().sorted().toList(); if (ids.isEmpty()) { throw exception(PRO_PALLET_BIND_IDS_EMPTY); } int startNo = palletMapper.selectMaxPalletNo(batchId) + 1; List<MesProPalletDO> pallets = new ArrayList<>(palletCount); List<List<Long>> bagIdGroups = new ArrayList<>(palletCount); for (int i = 0; i < palletCount; i++) { int palletNo = startNo + i; MesProPalletDO pallet = new MesProPalletDO() .setCode(batch.getCode() + "-P" + StrUtil.padPre(String.valueOf(palletNo), 2, '0')) .setBatchId(batchId) .setBatchCode(batch.getCode()) .setPalletNo(palletNo) .setCapacity(threshold) .setBagCount(threshold) .setAutoGenerated(true) .setStatus(MesProPalletStatusEnum.IN_USE.getStatus()) .setRemark("æææè¢ç éå¼èªå¨çæ"); List<MesProPalletDO> pallets = new ArrayList<>(ids.size()); for (Long id : ids) { MesProPalletDO pallet = palletMapper.selectByIdForUpdate(id); if (pallet == null) { throw exception(PRO_PALLET_NOT_EXISTS); } if (pallet.getBatchId() != null || StrUtil.isNotEmpty(pallet.getCode())) { throw exception(PRO_PALLET_ALREADY_BIND_BATCH); } pallets.add(pallet); bagIdGroups.add(candidates.subList(i * threshold, (i + 1) * threshold).stream() .map(cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO::getId).toList()); } palletMapper.insertBatch(pallets); // 3. åé æ£å¼æçç ï¼æ¹æ¬¡å· + -P + 2 使çåºå·ï¼å«é»è¾å é¤è®°å½åä¸åºå·ï¼ä¿è¯ä¸åéãç å¼å¯ä¸ï¼ int startNo = palletMapper.selectMaxPalletNo(batch.getId()) + 1; for (int i = 0; i < pallets.size(); i++) { MesProPalletDO pallet = pallets.get(i); bagCodeMapper.bindPalletByIds(bagIdGroups.get(i), pallet.getId(), pallet.getCode()); int palletNo = startNo + i; palletMapper.updateById(new MesProPalletDO() .setId(pallets.get(i).getId()) .setCode(batch.getCode() + "-P" + StrUtil.padPre(String.valueOf(palletNo), 2, '0')) .setBatchId(batch.getId()) .setBatchCode(batch.getCode()) .setPalletNo(palletNo)); } batchMapper.updateById(new MesProBatchDO().setId(batchId) // 4. ååæ¹æ¬¡æçç æ°é batchMapper.updateById(new MesProBatchDO().setId(batch.getId()) .setPalletQuantity((batch.getPalletQuantity() == null ? 0 : batch.getPalletQuantity()) + pallets.size())); return buildAutoPrintVOs(pallets, batch); return pallets.size(); } @Override @@ -155,36 +164,12 @@ } // 3. å 餿çç palletMapper.deleteById(id); // 4. ååæ¹æ¬¡æçç æ°é MesProBatchDO batch = batchMapper.selectById(pallet.getBatchId()); // 4. ååæ¹æ¬¡æçç æ°éï¼ä¸´æ¶æçæªç»å®æ¹æ¬¡æ éååï¼ MesProBatchDO batch = pallet.getBatchId() == null ? null : batchMapper.selectById(pallet.getBatchId()); if (batch != null && batch.getPalletQuantity() != null && batch.getPalletQuantity() > 0) { batchMapper.updateById(new MesProBatchDO().setId(batch.getId()) .setPalletQuantity(batch.getPalletQuantity() - 1)); } } private List<MesProPalletAutoPrintRespVO> buildAutoPrintVOs(List<MesProPalletDO> pallets, MesProBatchDO batch) { MesMdmItemDO item = batch.getItemId() == null ? null : mdmItemService.getItem(batch.getItemId()); AdminUserRespDTO owner = batch.getOwnerUserId() == null ? null : adminUserApi.getUser(batch.getOwnerUserId()); return pallets.stream().map(pallet -> new MesProPalletAutoPrintRespVO() .setId(pallet.getId()) .setCode(pallet.getCode()) .setBatchId(pallet.getBatchId()) .setBatchCode(pallet.getBatchCode()) .setPalletNo(pallet.getPalletNo()) .setCopies(3) .setCapacity(pallet.getCapacity()) .setBagCount(pallet.getBagCount()) .setItemId(batch.getItemId()) .setItemCode(item == null ? null : item.getCode()) .setItemName(item == null ? null : item.getName()) .setItemSpecification(item == null ? null : item.getSpecification()) .setLineCode(batch.getLineCode()) .setLineName(batch.getLineName()) .setProduceDate(batch.getProduceDate()) .setOwnerUserId(batch.getOwnerUserId()) .setOwnerUserName(owner == null ? null : owner.getNickname())) .toList(); } @Override @@ -194,7 +179,11 @@ @Override public MesProPalletDO getPalletByCode(String code) { return palletMapper.selectByCode(code); MesProPalletDO pallet = palletMapper.selectByCode(code); if (pallet == null) { pallet = palletMapper.selectByTempCode(code); } return pallet; } @Override @@ -217,6 +206,14 @@ } @Override public List<MesProPalletDO> getPalletListByIds(Collection<Long> ids) { if (CollUtil.isEmpty(ids)) { return List.of(); } return palletMapper.selectBatchIds(ids); } @Override public void updatePalletBagCount(Long palletId, Integer bagCount) { palletMapper.updateById(new MesProPalletDO().setId(palletId).setBagCount(bagCount)); } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
@@ -228,6 +228,10 @@ if (pallet == null && bag == null) { throw exception(WM_MATERIAL_STOCK_NOT_EXISTS); } // æªç»å®çäº§æ¹æ¬¡çä¸´æ¶æçä¸å 许åä¸éå®åºåº if (pallet != null && pallet.getBatchId() == null) { throw exception(PRO_PALLET_NOT_BIND_BATCH); } Long codeId = pallet != null ? pallet.getId() : bag.getId(); MesWmProductSalesDetailDO existed = pallet != null ? productSalesDetailMapper.selectBySalesIdAndPalletCodeId(reqVO.getSalesId(), codeId)