| docs/contract_custom_no.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/ipqc_remove_production_fields_frontend.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/mes_oqc_check_result_frontend.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/mes_oqc_required_fields_relax_frontend.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/oqc_check_result_extend_frontend.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/qc_item_mdm_resolution_and_list_columns.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/qc_report_conclusion_print.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/sql/ipqc_remove_production_fields.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/sql/mes_qc_oqc_check_result_extend.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
docs/contract_custom_no.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,92 @@ # ååç¼å·æ¯æèªå®ä¹ - å端èè°æ¹æ¡ ## æ¶åé¡µé¢ - CRM - åå管ç - æ°å¢ååå¼¹çª - CRM - åå管ç - ç¼è¾ååå¼¹çª ## åæ´æ¦è¿° "ååç¼å·"åæ®µç±"ç³»ç»èªå¨çæãä¸å¯ç¼è¾"æ¹ä¸º"æ¯ææå·¥å½å ¥"ï¼æ°å¢åç¼è¾ä¸¤ç§æ¨¡å¼åå¯ç¼è¾ï¼ - æ°å¢æ¶ç空 â å端èªå¨çæï¼HT åç¼ï¼ä¸åè¡ä¸ºä¸è´ï¼ - æ°å¢æ¶å¡«å â 使ç¨ç¨æ·å¡«åçç¼å· - ç¼è¾æ¶ç空 â ä¿æåç¼å·ä¸å - ç¼è¾æ¶å¡«å â 使ç¨ç¨æ·å¡«åçç¼å·ï¼åç«¯æ ¡éªå¯ä¸æ§ï¼ ## API | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | POST | /crm/contract/create | æ°å¢ååï¼è¯·æ±ä½æ°å¢ `no` åæ®µ | | PUT | /crm/contract/update | æ´æ°ååï¼`no` åæ®µå¯ä¿®æ¹ | | GET | /crm/contract/get | æ¥è¯¢åå详æ ï¼ååºæ¬å°±å« `no` åæ®µï¼æªåï¼ | **请æ±åæ°ï¼POST /crm/contract/createãPUT /crm/contract/updateï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |------|------|------|------| | no | String | å¦ | ååç¼å·ï¼æé¿ 100 åç¬¦ï¼æ°å¢æ¶çç©ºï¼æä¸ä¼ ï¼ç±å端èªå¨çæï¼æ´æ°æ¶çç©ºä¿æåç¼å· | å ¶ä½åæ°ä¸ç°ç¶ä¸è´ï¼æ¤å¤ä¸åååºã **ååºï¼æªåæ´ï¼ï¼** ```json { "code": 0, "data": 123, "msg": "" } ``` `data` 为æ°å»ºååç IDã ## å端修æ¹ç¹ ### 1. ååç¼å·åæ®µï¼æ°å¢å¼¹çª + ç¼è¾å¼¹çªï¼ | äºé¡¹ | ç°ç¶ | éæ¹ä¸º | |------|------|--------| | disabled | æ°å¢ç¦ç¨ãç¼è¾ç¦ç¨ | ä¸¤ç§æ¨¡å¼åå¯ç¼è¾ï¼å»æç¦ç¨ï¼ | | placeholder | ä¿åæ¶èªå¨çæ | æ°å¢ï¼ç空åèªå¨çæï¼ç¼è¾ï¼ç空åä¿æåç¼å· | | å ¶ä» | â | 坿¸ 空ãæå¤§é¿åº¦ 100 | ### 2. ä¿åæ¶æäº¤è¯¥åæ®µ æ°å¢/ç¼è¾ä¿åæ¶ï¼éè¦æç¨æ·å¨"ååç¼å·"ä¸å¡«åçå¼ä¸å¹¶æäº¤ç»å端ã ### 3. ç¼è¾å¼¹çªçå ¶ä»å段 é¤ååç¼å·å¤ï¼ç¼è¾å¼¹çªå ¶ä½åæ®µä¿æä¸åã ## åæ®µå±ç¤ºè§å | åæ®µ | å±ç¤ºä½ç½® | 说æ | |------|----------|------| | ååç¼å· | æ°å¢å¼¹çª | ç¨æ·å¯å¡«åï¼ç空åç±åç«¯çæ | | ååç¼å· | ç¼è¾å¼¹çª | ç¨æ·å¯ä¿®æ¹ï¼ç空åä¿æåç¼å· | | ååç¼å· | 详æ ãå表 | å±ç¤ºå端å®é ä¿åçç¼å· | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | æ°å¢æ¶å¡«åäºç¼å· | 使ç¨ç¨æ·å¡«åçç¼å·ï¼é¦å°¾ç©ºæ ¼ä¼è¢«èªå¨å»æ | | æ°å¢æ¶ç空æåªå¡«ç©ºæ ¼ | å端èªå¨çæ HT åç¼ç¼å· | | ç¼è¾æ¶å¡«åäºç¼å· | 使ç¨ç¨æ·å¡«åçç¼å·ï¼é¦å°¾ç©ºæ ¼ä¼è¢«èªå¨å»æ | | ç¼è¾æ¶ç空æåªå¡«ç©ºæ ¼ | ä¿æåç¼å·ä¸å | | æ°å¢/ç¼è¾æ¶ä¿®æ¹çç¼å·ä¸å·²æååéå¤ | ä¿åå¤±è´¥ï¼æç¤ºï¼ååç¼å·ãxxxãå·²åå¨ï¼è¯·æ´æ¢åéè¯ | | ç¼è¾æ¶æªæ¹å¨ç¼å· | æ£å¸¸ä¿åï¼ä¸ä¼è¯¯æ¥éå¤ | | èªå¨çæçç¼å·éå¤ï¼æå°æ¦çï¼ | ä¿åå¤±è´¥ï¼æç¤ºï¼çæåååºåå·éå¤ï¼è¯·éè¯ï¼éæ°ä¿åå³å¯ï¼ | | ç¼å·è¶ è¿ 100 å符 | ä¿åå¤±è´¥ï¼æç¤ºï¼ååç¼å·é¿åº¦ä¸è½è¶ è¿ 100 个å符 | | ç±æ¥ä»·å转åå | ä¸åå½±åï¼ä»èªå¨çæç¼å· | | Excel å¯¼å ¥åå | ä¸åå½±åï¼å¯¼å ¥æ¬èº«å·²æ¯æèªå®ä¹ç¼å· | ## 注æäºé¡¹ - æ°å¢æ¥å£è¿åçæ¯åå IDï¼ä¸å 嫿ç»ç¼å·ãè¥æ°å¢åéè¦å¨çé¢ä¸æ¾ç¤ºå®é ç¼å·ï¼è¯·å¨ä¿åæååè°ç¨ `GET /crm/contract/get?id={id}` è·åï¼æç´æ¥ä½¿ç¨ç¨æ·èªå·±å¡«åçå¼ã - ç¼å·å¯ä¸æ§ç±åç«¯æ ¡éªï¼å端æ éé¢å¤æ¥éï¼ç¼è¾æ¶å端æ¥é伿é¤ååèªèº«ï¼å æ¤åæ ·æäº¤ä¸ä¼è¯¯æ¥éå¤ã - ç¼å·é¿åº¦ä¸é 100 å符ï¼å端å¯åè¾å ¥é¿åº¦éå¶ä»¥æ¹åä½éªã - ä¸ååç«¯æ ¡éªä¹ä¸å½±åæ£ç¡®æ§ï¼æ°å¢ç空走èªå¨çæãç¼è¾çç©ºä¿æåå¼ï¼éå¤ä¼è¢«åç«¯æ¦æªå¹¶è¿åæç¡®æç¤ºã - ååç¼å·çåæ´ä¼è®¡å ¥ååæä½æ¥å¿ï¼æ´æ°è®°å½ä¸ä½ç°"ååç¼å·ï¼åå¼ â æ°å¼"ï¼ã docs/ipqc_remove_production_fields_frontend.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,197 @@ # è¿ç¨æ£éªåï¼IPQCï¼å»æç产订å/å·¥ä½/ç产任å¡ãæ°å¢å¿ å¡«æ¹å· - å端èè°æ¹æ¡ ## åæ´èæ¯ è¿ç¨æ£éªåï¼IPQCï¼å表åè¦æ±å éãç产订åãï¼åç±è®¢å带åºãå·¥ä½ããç产任å¡ãï¼å¹¶ç±å·¥å/ä»»å¡åæ¨ã产åç©æããè´¨æ£æ¹æ¡ããå·¥åºãã æ¬æ¬¡æ¹é **廿ç产订åãå·¥ä½ãç产任å¡ä¸ä¸ªå段ï¼å·¥åºä¸å¹¶å»æï¼**ï¼æ¹ä¸ºï¼ - ã产åç©æãç±å端**æå¨éæ©ï¼å¿ å¡«**ï¼ä»å¾ æ£ä»»å¡å ¥å£å建æ¶ä»èªå¨å¸¦å ¥ï¼ï¼ - æ°å¢ãæ¹å·ãè¾å ¥æ¡ï¼**æå·¥å½å ¥ææ¬ï¼å¿ å¡«**ã æ¹é å IPQC ç表åç»æä¸å模åå·²ä¸çº¿ç **IQC / OQC ä¸è´**ï¼åæ® = æ¥æºåæ® + 产åç©æ + æ¹å· + æ°é + æ£éªä¿¡æ¯ã > **éè¦ï¼ç©æ ID ä½ç³»ï¼**ï¼IPQC çã产åç©æãç±åãMES ç©æï¼`mes_md_item`ï¼ãç»ä¸ä¸º **MDM ç©æï¼`mdm_item`ï¼**ï¼ä¸ IQC/OQC ç¸åãåç«¯å¿ é¡»ä½¿ç¨ **`MdmItemSelect`** ç»ä»¶ï¼`#/views/basicData/mdm/components`ï¼å¿ä¸ MES ä¾§ç `MdItemSelect`ï¼`#/views/mes/md/item/components`ï¼æ··ç¨ï¼ï¼ä¸è¦å使ç¨ä»»ä½æå·¥å/ä»»å¡çç©æéæ©å¨ã ## æ¶åé¡µé¢ | æä»¶ | 说æ | |------|------| | `src/views/mes/qc/ipqc/data.ts` | 表å schemaãå表æç´¢ schemaãå表åå®ä¹ | | `src/views/mes/qc/ipqc/index.vue` | å表页ï¼å¼ç¨ä¸é¢ schemaï¼ | | `src/views/mes/qc/ipqc/modules/form.vue` | æ°å¢/ç¼è¾è¡¨åå¼¹çª | | `src/views/mes/qc/pendinginspect/index.vue` | å¾ æ£ä»»å¡é¡µçãçæè¿ç¨æ£éªåãæé®ï¼æ°æ®å¸¦å ¥ï¼ | | `src/api/mes/qc/ipqc/index.ts` | IPQC æ¥å£ç±»åå®ä¹ | | `src/api/mes/qc/pendinginspect/index.ts` | å¾ æ£ä»»å¡æ¥å£ç±»åå®ä¹ | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å ¥ ``` æ¥å·¥å®¡æ¹éè¿ï¼éæ£éªï¼ â çæäº§åºè¡ï¼quality_status=å¾ æ£ï¼+ æ¹æ¬¡å· â â¼ å¾ æ£ä»»å¡é¡µï¼qcType = IPQCï¼ â ç¹å»ãçæè¿ç¨æ£éªåãå¸¦å ¥ï¼æ¥æºåæ®ç±»å/ID/è¡IDãæ¥æºåæ®ç¼å·ã â 产åç©æãæ¹å·ãå¾ æ£æ°éãæ£æµæ¥æ â¼ IPQC 表åï¼ç¨æ·è¡¥å ¨ï¼æ£éªç±»åãæ£æµäººåãåæ ¼/ä¸åæ ¼æ°éçï¼ â â¼ ä¿å â 宿æ£éª â å忥工 + æå产åºè¡ + å®æäº§åºå ¥åº ``` ### æ°æ®å¸¦å ¥è§åï¼å¾ æ£ä»»å¡ â IPQC 表åï¼ | 表ååæ®µ | å¾ æ£ä»»å¡ååºå段 | å¸¦å ¥åæ¯å¦å¯ç¼è¾ | |----------|------------------|------------------| | æ¥æºåæ®ç±»å sourceDocType | sourceDocType | å¦ï¼éèåªè¯»ï¼ | | æ¥æºåæ®ç¼å· sourceDocCode | sourceDocCode | å¦ï¼åªè¯»å±ç¤ºï¼ | | æ¥æºåæ® ID sourceDocId | sourceDocId | å¦ï¼éèåæ®µï¼ | | æ¥æºåæ®è¡ ID sourceLineId | sourceLineId | å¦ï¼éèåæ®µï¼ | | 产åç©æ itemId | itemId | å¦ï¼ææ¥æºåæ®æ¶ç½®ç°ï¼ | | **æ¹å· batchCodeï¼æ¬æ¬¡æ°å¢ï¼** | **batchCodeï¼æ¬æ¬¡æ°å¢ï¼** | **æ¯**ï¼å»ºè®®å¸¦å ¥åä»å 许人工修æ£ï¼ | | æ£æµæ°é checkQuantity | quantity | å¦ï¼ææ¥æºåæ®æ¶ç½®ç°ï¼ | | æ£æµæ¥æ inspectDate | recordTime | æ¯ | > å¾ æ£ä»»å¡å ¥å£å¸¦å ¥çãæ¹å·ãæ¥èªäº§åºè¡ `batch_code`ï¼æ¥å·¥å®¡æ¹éè¿æ¶ç±ç³»ç»çæçæ¹æ¬¡å·ï¼ã**å½ååªæ IPQC æ¥æºä¼è¿å `batchCode`ï¼IQC/OQC/RQC æ¥æºè¯¥å段为 `null`**ï¼åç«¯å¯¹å ¶å®æ£éªç±»å忽ç¥è¯¥å段å³å¯ã ## API ### 1. å建 / æ´æ°è¿ç¨æ£éªå | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | POST | `/mes/qc/ipqc/create` | å建è¿ç¨æ£éªå | | PUT | `/mes/qc/ipqc/update` | æ´æ°è¿ç¨æ£éªå | **请æ±åæ°ï¼ä» ååºæ¬æ¬¡åæ´å段ï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |------|------|------|------| | ~~workOrderId~~ | Long | â | **å·²å é¤**ï¼ä¸åå 许æäº¤ | | ~~taskId~~ | Long | â | **å·²å é¤**ï¼ä¸åå 许æäº¤ | | ~~workstationId~~ | Long | â | **å·²å é¤**ï¼ä¸åå 许æäº¤ | | ~~processId~~ | Long | â | **å·²å é¤**ï¼ä¸åå 许æäº¤ | | batchCode | String | **æ¯** | æ¹å·ï¼æå·¥å½å ¥ææ¬ï¼æé¿ 100 å符 | | itemId | Long | **æ¯** | 产åç©æ IDï¼**MDM ç©æ ID**ï¼ï¼ç± `MdmItemSelect` æä¾ | | templateId | Long | å¦ | è´¨æ£æ¹æ¡ IDï¼ä¸ä¼ æ¶å端æ `itemId + æ£éªç±»å(IPQC)` èªå¨å第ä¸ä¸ªå¹é æ¹æ¡ | > å ¶ä½å段ï¼codeãnameãtypeãcheckQuantityãqualifiedQuantityãunqualifiedQuantityãå·¥åº/æåº/å ¶ä»åºåæ°éãinspectorUserIdãinspectDateãsamplingLocationãcertificateNoãexecuteStandardãauditUserIdãapproveUserIdãcheckResultãremarkï¼ä¿æä¸åã **ååºï¼** `{ "code": 0, "data": <è¿ç¨æ£éªå ID> }` ### 2. å页æ¥è¯¢ | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | GET | `/mes/qc/ipqc/page` | è·å¾è¿ç¨æ£éªåå页 | **æ¥è¯¢åæ°ï¼æ¬æ¬¡åæ´ï¼ï¼** | åæ° | ç±»å | 说æ | |------|------|------| | ~~workOrderId~~ | Long | **å·²å é¤** | | batchCode | String | **æ°å¢**ï¼æ¹å·ï¼æ¨¡ç³å¹é | ### 3. 详æ / å¯¼åº | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | GET | `/mes/qc/ipqc/get?id=` | 详æ ï¼ååºå段éä¸ååæ´ | | GET | `/mes/qc/ipqc/export-excel` | å¯¼åº Excelï¼**ãæ¹å·ãåå `batchCode`**ï¼å忥æºåæ®ç¼å·ï¼ | ### 4. è´¨æ£æ¹æ¡é项ï¼è¡¨åèå¨ï¼ | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | GET | `/mes/qc/template/item/list-by-item-and-type` | æç©æ + æ£éªç±»ååå¯ç¨è´¨æ£æ¹æ¡ | **åæ°åæ´ï¼** ç±åæ¥ç `{ qcType: 2, workOrderId, taskId }` æ¹ä¸º **`{ qcType: 2, itemId }`**ï¼`itemId` 为 MDM ç©æ IDï¼ã ### 5. å¾ æ£ä»»å¡å页ï¼ååºæ°å¢åæ®µï¼ | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | GET | `/mes/qc/pending-inspect/page` | å¾ æ£ä»»å¡å页 | **ååºæ°å¢å段ï¼** | åæ®µ | ç±»å | 说æ | |------|------|------| | batchCode | String | æ¹å·ï¼**å½åä» IPQCï¼äº§åºè¡ï¼æ¥æºæä¾**ï¼å ¶ä½æ¥æºä¸º `null` | ## ååºåæ®µåæ´ï¼è¯¦æ / å页åè¡¨ï¼ **å é¤å段ï¼** | åæ®µ | 说æ | |------|------| | workOrderId / workOrderCode / workOrderName | ç产订å | | taskId | çäº§ä»»å¡ | | workstationId / workstationName | å·¥ä½ | | processId / processName | å·¥åº | **æ°å¢å段ï¼** | åæ®µ | ç±»å | 说æ | |------|------|------| | batchCode | String | æ¹å· | **ä¿çä¸åï¼** itemIdãitemCodeãitemNameãitemSpecificationãunitNameãæ£æ¥æ°éç±»åæ®µãcheckResultãinspectDateãinspectorUserId / inspectorNicknameãstatusãsamplingLocationãcertificateNoãexecuteStandardãauditUserId / auditNicknameãapproveUserId / approveNicknameãremarkã ## åæ®µå±ç¤ºè§å | åæ®µ | å±ç¤ºä½ç½® | 说æ | |------|----------|------| | 产åç©æ itemId | 表åãå表 | 表åç¨ `MdmItemSelect` éæ©ï¼**å¿ å¡«**ï¼å表å±ç¤º `itemCode / itemName / itemSpecification`ï¼åæ ·ä¿çï¼ | | æ¹å· batchCode | 表åãå表ã详æ ãå¯¼åº | **表åå¿ å¡«**ï¼å表æ°å¢åå±ç¤ºï¼å»ºè®®æ¾å¨ã产åç©æãä¹åï¼ï¼å¯¼åºåãæ¹å·ã | | ç产订å / å·¥ä½ / çäº§ä»»å¡ | â | ä»è¡¨åãå表åãå表æç´¢ã详æ ã导åºä¸**å ¨é¨ç§»é¤** | | è´¨æ£æ¹æ¡ templateId | 表å | éæ©èå´æ¹ç±ã产åç©æã驱å¨ï¼ä¸åç±ç产订å驱å¨ï¼ | ### 表ååæ®µè°æ´å»ºè®®ï¼ä» åè°æ´é¡¹ï¼ | æä½ | åæ®µ | 说æ | |------|------|------| | å é¤ | ç产订å `workOrderId` | å«å ¶ `ProWorkOrderSelect` åè卿¸ 空 taskId çé»è¾ | | å é¤ | å·¥ä½ `workstationId` | å« `MdWorkstationSelect` | | å é¤ | çäº§ä»»å¡ `taskId` | å« `ProTaskSelect` | | æ°å¢ | æ¹å· `batchCode` | `Input`ï¼`rules: 'required'`ï¼`maxlength: 100` | | ä¿®æ¹ | 产åç©æ `itemId` | æ¹ä¸º `MdmItemSelect` + `rules: 'selectRequired'`ï¼`dependencies.triggerFields` ç± `['sourceDocId']` ä¿æï¼ææ¥æºåæ®æ¶ç½®ç°ï¼ | | ä¿®æ¹ | è´¨æ£æ¹æ¡ `templateId` | `dependencies.triggerFields` ç± `['workOrderId', 'taskId']` æ¹ä¸º `['itemId']`ï¼`disabled` æ¡ä»¶ç± `!values.workOrderId` æ¹ä¸º `!values.itemId`ï¼`params` æ¹ä¸º `{ itemId: values.itemId, qcType: 2 }`ï¼å 使æ¡ç±ã请å éæ©ç产订åãæ¹ä¸ºã请å éæ©äº§åç©æã | | ä¿®æ¹ | å表æç´¢ | `workOrderId`ï¼ç产订åï¼æ¿æ¢ä¸º `batchCode`ï¼æ¹å·ï¼`Input`ï¼`allowClear`ï¼æ¨¡ç³æ¥è¯¢ï¼ | | ä¿®æ¹ | å表å | å é¤ãç产订åç¼å·ãåï¼æ°å¢ãæ¹å·ãåï¼`batchCode`ï¼ | > åèå®ç°ï¼`src/views/mes/qc/oqc/data.ts` ç `itemId`ï¼`MdmItemSelect`ï¼ä¸ `templateId`ï¼`params: { itemId, qcType: 3 }`ï¼åæ³ï¼IPQC åªéæ `qcType` æ¢æ IPQC çåå ¸å¼ã ### å¾ æ£ä»»å¡é¡µå¸¦å ¥è°æ´ `src/views/mes/qc/pendinginspect/index.vue` ç `handleCreateIpqc` é¢å¡«å¯¹è±¡ï¼ | æä½ | åæ®µ | 说æ | |------|------|------| | å é¤ | `taskId` / `workOrderId` / `workstationId` | å端已ä¸åæ¥æ¶ï¼ä¸è¡¨åå·²æ å¯¹åºæ§ä»¶ | | ä¿ç | `itemId` / `checkQuantity` / `inspectDate` / `name` / `sourceDocCode` / `sourceDocId` / `sourceDocType` / `sourceLineId` | è¯ä¹ä¸å | | **æ°å¢** | `batchCode: row.batchCode` | ä»å¾ æ£ä»»å¡å¸¦å ¥æ¹å·ï¼è¯¥åæ®µä» IPQC æ¥æºæå¼ï¼ | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | æå·¥æ°å»º IPQC | ç´æ¥éæ©äº§åç©æï¼MDMï¼+ å¡«åæ¹å·ï¼å端æ `itemId + IPQC` å¹é è´¨æ£æ¹æ¡å¹¶èªå¨çææ£éªè¡ | | æå®è´¨æ£æ¹æ¡ | åç«¯ä¼ `templateId`ï¼ä½å¿ é¡»è½å¨ `itemId + IPQC` å¹é å°çæ¹æ¡éåå ï¼å¦åå端æ¥ãæªå¹é å°è´¨æ£æ¹æ¡ã | | æªå¹é å°æ¹æ¡ | å端è¿åé误ç `QC_NO_TEMPLATE`ï¼å端æéç¨é误æç¤ºå±ç¤ºå³å¯ | | ä»å¾ æ£ä»»å¡å建 | ç©æãæ¹å·ãæ£æµæ°éãæ£æµæ¥æãæ¥æºåæ®ä¿¡æ¯èªå¨å¸¦å ¥ï¼æ¥æºåæ®å段ä¿ååä¸å¯ä¿®æ¹ | | æ¥æºåæ®åå | IPQC 宿åå忥工ï¼åæ ¼/ä¸åæ ¼/å·¥åº/æåº/å ¶ä»åºåæ°éï¼ï¼å¹¶æå产åºè¡ãå®æäº§åºå ¥åºã**该é¾è·¯ä¾èµ `sourceDocId + sourceLineId`ï¼ä¸æ¬æ¬¡å é¤çä¸ä¸ªå段æ å ³ï¼ä¸åå½±å** | | æ¹å·å¿ å¡«æ ¡éª | ç±å端 `@NotEmpty` ä¸å端 `rules: 'required'` åéä¿è¯ï¼æ¹å·ä¸ºç©ºæ¶å端è¿åãæ¹å·ä¸è½ä¸ºç©ºã | | ç©æå¿ å¡«æ ¡éª | ç±å端 `@NotNull` ä¸å端 `rules: 'selectRequired'` åéä¿è¯ï¼ç©æä¸å卿¶å端è¿åç©æä¸åå¨é误 | | å表æ¥è¯¢ | ç产订åçéå·²ä¸çº¿ï¼æ¹ä¸ºææ¹å·æ¨¡ç³æ¥è¯¢ | ## 注æäºé¡¹ 1. **ç©æéæ©å¨å¿ é¡»æ¢æ `MdmItemSelect`**ãè¥ä»æ²¿ç¨åæ¥çç©æéæ©å¨æç´æ¥åå¡« MES ç©æ IDï¼ä¼åºç°ãç©æä¸åå¨ãæãæªå¹é å°è´¨æ£æ¹æ¡ãé误ã 2. **è´¨æ£æ¹æ¡ä¸æç `params` å¿ é¡»ç± `workOrderId/taskId` æ¹ä¸º `itemId`**ï¼å¦åéå®ç©æåæ¹æ¡å表为空æä¸æéç©æä¸ç¬¦ã 3. **æ¹å·ä¸ºå¿ å¡«**ï¼æ°å¢/ç¼è¾è¡¨åä¸å建æ¥å£é½éæ ¡éªï¼ä»å¾ æ£ä»»å¡å¸¦å ¥åä¹å è®¸ç¨æ·ä¿®æ£ã 4. **å¾ æ£ä»»å¡ç `batchCode` åªæ IPQC æ¥æºæå¼**ï¼IQC/OQC/RQC æä¸º `null`ï¼ï¼å ¬å ±å¸¦å ¥é»è¾éä¸è¦å设å®ä¸å®åå¨ï¼æ 弿¶çç©ºè®©ç¨æ·æå¡«ã 5. **å岿°æ®**ï¼`mes_qc_ipqc` è¿ç§»å为 0 æ¡æ°æ®ï¼æ¬æ¬¡ä¸ºç´æ¥å å + å åï¼æ éå端åå ¼å®¹å¤çãDDLï¼å `work_order_id`/`task_id`/`workstation_id`/`process_id`ï¼å `batch_code varchar(100)`ï¼å·²äº **2026-09-22** å¨ yzfx åºæ§è¡å®æ¯ã 6. **å¯¼åº Excel çãæ¹å·ãåè¯ä¹å·²å**ï¼åå åãæ¥æºåæ®ç¼å·ãï¼ç°æ¹ä¸ºåçæ£çæ¹å·ã 7. ç产订å/å·¥ä½/ç产任å¡/å·¥åºå¨**å表åã详æ ã导åº**ä¸é½è¦ä¸å¹¶ç§»é¤ï¼é¿å åºç°æ°¸ä¹ 为空ç½çåã docs/mes_oqc_check_result_frontend.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ # MES åºè´§æ£éªåï¼OQCï¼æ£æµç»æä¸è¡¨å¤´åæ®µè°æ´ - å端èè°æ¹æ¡ > ç¶æï¼å端æ¹å¨å·²ææ¬æå®æ½ï¼OQC 表å/æç´¢/å表åãæ¹æ¬¡è¿½æº¯ OQC åãæ¥åæå°å åºææ¡ã常é䏿䏾ï¼ãæ¬æä¿çä½ä¸ºæ¥å£ä¸è§å说æã ## åæ´æè¦ | 项 | è°æ´å | è°æ´å | |----|--------|--------| | åè´§æ°é `outQuantity` | å¿ å¡« | **éå¿ å¡«** | | åºè´§æ¥æ `outDate` | å¿ å¡« | **éå¿ å¡«** | | æ£æµç»æ `checkResult` | éå¿ å¡«ï¼åå ¸ `mes_qc_check_result`ï¼åæ ¼/ç¹é/éè´§/æ¥åºï¼ | **å¿ å¡«**ï¼æ¹ç¨æ°åå ¸ `mes_oqc_check_result`ï¼1å/2å/åºåï¼ | å ¶ä½åæ®µï¼æ¬æ¬¡æ£æµæ°éãåæ ¼åæ°éãä¸åæ ¼åæ°éãæ£æµæ¥æãæ£æµäººåï¼**ä¿æå¿ å¡«ä¸å**ã > ä» OQC åæ´ãIQC / IPQC / RQC ç»§ç»ä½¿ç¨ååå ¸ `mes_qc_check_result`ã ## æ¶åé¡µé¢ - MES åºè´§æ£éªåï¼OQCï¼å表页 - MES åºè´§æ£éªåï¼OQCï¼æ°å¢/ç¼è¾å¼¹çª - MES åºè´§æ£éªåï¼OQCï¼è¯¦æ 页 - æ¹æ¬¡è¿½æº¯ï¼batchtraceï¼ââOQC ç¸å ³å - æ£éªæ¥åæå°é¡µââæ£æµç»æåï¼è§ã注æäºé¡¹ã第 3 æ¡ï¼ ## API | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | POST | /mes/qc-oqc/create | æ°å¢åºè´§æ£éªå | | PUT | /mes/qc-oqc/update | ä¿®æ¹åºè´§æ£éªå | | GET | /mes/qc-oqc/get | æ¥è¯¢åºè´§æ£éªå详æ | | GET | /mes/qc-oqc/page | å页æ¥è¯¢åºè´§æ£éªå | | GET | /mes/qc-oqc/export-excel | 导åºåºè´§æ£éªå | **请æ±åæ°åæ´ï¼create / update å ±ç¨ SaveReqVOï¼ï¼** | åæ° | ç±»å | å¿ å¡« | åæ´è¯´æ | |------|------|------|----------| | outQuantity | BigDecimal | å¦ | åè´§æ°éï¼æ¹ä¸ºéå¿ å¡«ï¼å¡«å¼é ⥠0 | | outDate | LocalDateTime | å¦ | åºè´§æ¥æï¼æ¹ä¸ºéå¿ å¡« | | checkResult | Integer | **æ¯** | æ£æµç»æï¼å¿ å¡«ï¼å弿¹ä¸º 1=1å / 2=2å / 3=åºå | **ååºåæ®µåæ´ï¼** | åæ®µ | ç±»å | 说æ | |------|------|------| | checkResult | Integer | æ£æµç»æï¼è¿å 1 / 2 / 3ï¼åå ¸ `mes_oqc_check_result`ï¼ | | checkResultText | String | å¯¼åº Excel æ¶çæ£æµç»æææ¬ï¼å·²ææ°åå ¸åæ ç¾ | **åå ¸æ¥å£è¿åï¼`/system/dict-data/list-by-type?type=mes_oqc_check_result`ï¼ï¼** | value | label | é¢è² | |-------|-------|------| | 1 | 1å | success | | 2 | 2å | primary | | 3 | åºå | danger | > ååå ¸ `mes_qc_check_result` ä»ä¿çï¼ä¾ IQC / IPQC / RQC 使ç¨ã > > â æ³¨æï¼ä»£ç æä¸¾ `MesQcCheckResultEnum` å®ä¹ä¸º 1åæ ¼ / 2ç¹é / 3ä¸åæ ¼éè´§ / 4ä¸åæ ¼æ¥åºï¼ä½**åºä¸ `mes_qc_check_result` åå ¸æ°æ®åªæ 2 æ¡**ï¼1=æ ¡éªéè¿ã2=æ ¡éªä¸éè¿ï¼ï¼æ ç¾ä¸æä¸¾ä¸ç¬¦ãä¸ç¼º 3/4 两项ã该é®é¢ä¸ºæ¢æéçï¼ä¼å½±å IQC/IPQC/RQC çæ£æµç»æå±ç¤ºï¼ä¸æ¬æ¬¡ OQC åæ´æ å ³ï¼éå¦è¡ç¡®è®¤ä¿®å¤ã ## åæ®µå±ç¤ºè§å | åæ®µ | å±ç¤ºä½ç½® | 说æ | |------|----------|------| | åè´§æ°é | 表åãå表ã详æ | éå¿ å¡«ï¼å 许为空ï¼å表/详æ 空å¼å±ç¤ºä¸º `-` | | åºè´§æ¥æ | 表åãå表ã详æ | éå¿ å¡«ï¼å 许为空 | | æ£æµç»æ | 表åï¼ä¸æï¼ãå表ï¼åå ¸æ ç¾ï¼ã详æ ãæ¥è¯¢æ¡ä»¶ | åå ¸ç±»åç± `mes_qc_check_result` æ¹ä¸º `mes_oqc_check_result`ï¼ä¸æé项为 1å / 2å / åºå | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | æ£æµç»ææäº¤ | å¿ å¡«ã为空æ¶å端è¿åãæ£æµç»æä¸è½ä¸ºç©ºã | | æ£æµç»æåå¼ | 1å / 2åï¼å¤ä¸ºåæ ¼ï¼å¯¹åºåºåºè¡è´¨éç¶æç½®ä¸ºåæ ¼ï¼åºåºåå¨å ¨é¨ OQC è¡æ£éªå®æåæµè½¬ãå¾ æ£è´§ã | | æ£æµç»æåå¼ | åºåï¼å¤ä¸ºä¸åæ ¼ï¼å¯¹åºåºåºè¡è´¨éç¶æç½®ä¸ºä¸åæ ¼ï¼å¹¶**åæ¶æ´å¼ éå®åºåºå** | | åä¸åºåºåå¤è¡ OQC | åªè¦åå¨ä»»ä¸ãåºåãè¡ï¼æ´ååæ¶ï¼å ¨é¨è¡æ£éªå®æä¸æ åºåææµè½¬å¾ æ£è´§ | | åè´§æ°é / åºè´§æ¥æ | å¯ç©ºï¼ä¸åä¸ä»»ä½æ ¡éªä¸æµè½¬å¤æ | | æ°éä¸è´æ§ï¼æ¢æè§åä¸åï¼ | æ¬æ¬¡æ£æµæ°é = åæ ¼åæ°é + ä¸åæ ¼åæ°éï¼ä¸æ»¡è¶³æ¶å端è¿åãæ£æµæ°éå¿ é¡»çäºåæ ¼åæ°éä¸ä¸åæ ¼åæ°éä¹åã | ## 注æäºé¡¹ 1. **åå ¸åæ¢èå´**ï¼OQC çå表åãæ¥è¯¢ä¸æã表å䏿ãè¯¦æ æ ç¾ï¼åå ¸ç±»åéä» `mes_qc_check_result` å ¨é¨åå° `mes_oqc_check_result`ãè¥æå¤ä»å¤ç¨ `mes_qc_check_result`ï¼ä¼åºç°ã1åã被渲æä¸ºãåæ ¼ãçéä½ã 2. **æç´¢åºåå ¸**ï¼ä½¿ç¨ DICT_TYPE å«åæ¶é忥æ°å¢ `mes_oqc_check_result` çåå ¸ç±»å常é声æï¼é¿å æç´¢é¡¹åä¸å°é项ã 3. **æ£éªæ¥åæå°é¡µ**ï¼è¯¥é¡µãæ£æµç»æãåå½åå `mes_qc_check_result`ï¼ä¸æ¥åæ¯åç±»æ£éªåå ±ç¨çãè¥è¯¥é¡µå¯è½åºç° OQC æ°æ®ï¼éè¦ææ¥æºåæ®ç±»ååºååå ¸ï¼è¥è¯¥é¡µåªæå¡äº IQC/IPQC/RQCï¼åæ éæ¹å¨ã请å端æå®é åæ°èå´ç¡®è®¤ã 4. **æ¹æ¬¡è¿½æº¯é¡µ**ï¼OQC ç¸å ³åå½åå `mes_qc_check_result`ï¼éåæ¢ä¸º `mes_oqc_check_result`ï¼å页 IQC åä¿æååå ¸ã 5. **è¡¨åæ ¡éªæç¤º**ï¼ãä¸åæ ¼åæ°é为 0 æ¶æ£æµç»æä¸è½ä¸º XXãè¿ç±»åºäºæ§åé项çæç¤ºé»è¾å·²å¤±æï¼æ§æä¸¾ 3/4 ä¸åéç¨äº OQCï¼ï¼éææ°ä¸é项éåæç§»é¤ã 6. **å岿°æ®**ï¼ç°æ OQC 忮䏿£æµç»æä¸ºç©ºï¼å表/详æ éå®¹å¿ nullï¼å±ç¤ºä¸º `-`ï¼ãæ å岿°æ®éè¦è¿ç§»ã 7. **åè´§æ°éä¸åºè´§æ¥æ**ï¼å»æåç«¯å¿ å¡«æ ¡éªåï¼æäº¤æ¶å段å¯ä¸º null æçç¥ï¼å端ä¸åæ¥éï¼å»ºè®®è¡¨åä»ä¿çè¾å ¥é¡¹ï¼ä¸å¡ä¸å¯å¡«ï¼ã docs/mes_oqc_required_fields_relax_frontend.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,118 @@ # MES åºè´§æ£éªåï¼OQCï¼æ°å¢/ç¼è¾å段æ¾å¼å¿ å¡« - å端èè°æ¹æ¡ > ç¶æï¼å端ä¸å端åå·²ææ¬æå®æ½ãæ¹å¨ç¹ï¼ > `MesQcOqcSaveReqVO`ï¼å»æ ¡éªï¼ã`MesQcOqcRespVO`ï¼Swagger æ è®°ï¼ã`MesQcOqcMapper`ï¼å®¢æ·ä¸ºç©ºæ¶çå¯è§æ§ï¼ã > `src/views/mes/qc/oqc/data.ts`ï¼å» rulesï¼ãåç«¯åªæ¹äº form schema ç rulesï¼æªå¨å表/详æ å±ç¤ºã > å端é**éå¯**åçæã ## åæ´æè¦ OQC æ°å¢/ç¼è¾è¡¨åä¸ï¼ä»¥ä¸ 4 ä¸ªåæ®µç±å¿ å¡«æ¹ä¸ºéå¿ å¡«ï¼ | åæ®µ | åç«¯å±æ§ | è°æ´å | è°æ´å | |------|----------|--------|--------| | å®¢æ· | `clientId` | å¿ å¡« `@NotNull` | **éå¿ å¡«** | | åè´§æ°éï¼æ¬æ¬¡åºè´§æ°éï¼ | `outQuantity` | å¿ å¡« `@NotNull` | **éå¿ å¡«**ï¼å¡«å¼ä»é ⥠0ï¼ | | æ£æµæ°éï¼æ¬æ¬¡æ£æµæ°éï¼ | `checkQuantity` | å¿ å¡« `@NotNull` | **éå¿ å¡«**ï¼å¡«å¼ä»é ⥠0ï¼ | | åºè´§æ¥æ | `outDate` | å¿ å¡« `@NotNull` | **éå¿ å¡«** | å ¶ä½åæ®µä¿æä¸åï¼ä»ä¸ºå¿ å¡«ï¼æ£éªåç¼å·ãæ£éªååç§°ã产åç©æãåæ ¼åæ°éãä¸åæ ¼åæ°éãæ£æµæ¥æãæ£æµäººåã > ç¸å ³åå²ææ¡£ï¼`docs/mes_oqc_check_result_frontend.md` æ¾è®¡åæ¾å¼ãåè´§æ°é / åºè´§æ¥æã两项ï¼ä½æ¬ä»åºå端 > ï¼`src/views/mes/qc/oqc/data.ts`ï¼ç®å仿¯ `rules: 'required'`ï¼å³è¯¥ä¸¤é¡¹ä¹æªå®é æ¾å¼ãæ¬æ¬¡ä¸å¹¶å¤çã ## æ¶åé¡µé¢ - MES åºè´§æ£éªåï¼OQCï¼å表页 - æ°å¢/ç¼è¾å¼¹çª - MES åºè´§æ£éªåï¼OQCï¼å表页 - å表åãæ¥è¯¢æ¡ä»¶ - MES åºè´§æ£éªåï¼OQCï¼è¯¦æ 页 - å¾ æ£ä»»å¡é¡µï¼`views/mes/qc/pendinginspect`ï¼-ãåºè´§æ£éªãæé®è·³è½¬çå建弹çªï¼é¢å¡«æ¨¡å¼ï¼ ## API | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | POST | /mes/qc/oqc/create | æ°å¢åºè´§æ£éªå | | PUT | /mes/qc/oqc/update | ä¿®æ¹åºè´§æ£éªå | | GET | /mes/qc/oqc/get | æ¥è¯¢åºè´§æ£éªå详æ | | GET | /mes/qc/oqc/page | å页æ¥è¯¢åºè´§æ£éªå | | GET | /mes/qc/oqc/export-excel | 导åºåºè´§æ£éªå | **请æ±åæ°åæ´ï¼create / update å ±ç¨ `MesQcOqcSaveReqVO`ï¼ï¼** | åæ° | ç±»å | å¿ å¡« | 说æ | |------|------|------|------| | clientId | Long | å¦ | å®¢æ· IDï¼å¯ç©ºãå¯çç¥ | | outQuantity | BigDecimal | å¦ | æ¬æ¬¡åºè´§æ°éï¼å¯ç©ºï¼å¡«å¼é ⥠0 | | checkQuantity | BigDecimal | å¦ | æ¬æ¬¡æ£æµæ°éï¼å¯ç©ºï¼å¡«å¼é ⥠0 | | outDate | LocalDateTime | å¦ | åºè´§æ¥æï¼å¯ç©º | **ååºåæ®µåæ´ï¼`MesQcOqcRespVO`ï¼ï¼** æ æ°å¢å段ï¼ä» `clientId` / `outQuantity` ç Swagger `requiredMode` ç± REQUIRED æ¹ä¸ºå¯ç©ºã `clientNickname`ã`unitName` çå ³èåæ®µå¨å¯¹åº ID 为空æ¶ä¸åè¿åï¼ä¿æ nullï¼ï¼å端é容å¿ç©ºå¼ã **请æ±ç¤ºä¾ï¼æå°å¯æäº¤ä½ï¼ï¼** ```json { "code": "OQC20260922001", "name": "ç©æAåºè´§æ£éª", "itemId": 20, "qualifiedQuantity": 10, "unqualifiedQuantity": 0, "inspectDate": "2026-09-22 10:00:00", "inspectorUserId": 1 } ``` **ååºï¼** `{ "code": 0, "data": 123 }`ï¼data 为æ°å»ºåæ® IDï¼ ## åæ®µå±ç¤ºè§å | åæ®µ | å±ç¤ºä½ç½® | 说æ | |------|----------|------| | å®¢æ· | 表åãå表ã详æ ãæ¥è¯¢æ¡ä»¶ | éå¿ å¡«ï¼æ°æ®åºå¼å¯ä¸ºç©ºï¼å端空å¼å±ç¤º `-` | | åè´§æ°é | 表åãå表ã详æ | éå¿ å¡«ï¼ç©ºå¼å±ç¤º `-`ï¼ä¸å¯å±ç¤ºä¸º `0` | | æ£æµæ°é | 表åãå表ã详æ | éå¿ å¡«ï¼ç©ºå¼å±ç¤º `-`ï¼ä¸å¯å±ç¤ºä¸º `0` | | åºè´§æ¥æ | 表åãå表ã详æ | éå¿ å¡«ï¼ç©ºå¼å±ç¤º `-` | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | æäº¤æ ¡éª | ä¸è¿° 4 ä¸ªåæ®µä¸ºç©ºæçç¥ï¼å端ä¸åæ¥ãXXä¸è½ä¸ºç©ºã | | æ°éä¸é | ä»ä¿çï¼å¡«äºå¼å°±å¿ é¡» ⥠0ï¼å¦åæ¥ãXXä¸è½å°äº 0ã | | æ°éä¸è´æ§ï¼æ¢æè§åä¸åï¼ | æ£æµæ°éãåæ ¼åæ°éãä¸åæ ¼åæ°éä¸è **é½å¡«äº**æ¶ï¼å¿ é¡»æ»¡è¶³ãæ£æµæ°é = åæ ¼åæ°é + ä¸åæ ¼åæ°éãï¼å¦åæ¥ãæ£æµæ°éå¿ é¡»çäºåæ ¼åæ°éä¸ä¸åæ ¼åæ°éä¹åãï¼æ£æµæ°é为空æ¶ä¸åè¯¥æ ¡éª | | 宿æ£éªå | 䏿¬æ¬¡åæ´æ å ³ï¼ä»è¦æ±ï¼æ£æµç»æå¿ å¡« + è³å°ä¸æ¡æ£æµç»æè®°å½ | | 缺é·çè®¡ç® | æ£æµæ°é为空æ¶ï¼è´å½/严é/轻微缺é·çæ 0 å¤çï¼å端已å¤çï¼ | | å¯¼åº Excel | 空ç客æ·/æ°é/æ¥æå导åºä¸ºç©ºç½åå æ ¼ | | AI æ¥å / è´¨æ£æ¥å | 客æ·ä¸ºç©ºæ¶æ¥åä¸è¾åºã客æ·åç§°ãï¼åºè´§æ°é为空æ¶ä¸è¾åºè¯¥é¡¹ï¼ä¸æ¥é | ## 注æäºé¡¹ 1. **åç«¯å¿ å¡«æ ¡éªå·²æ¾å¼**ï¼`src/views/mes/qc/oqc/data.ts` ä¸ `useFormSchema` éè¿ 4 ä¸ªåæ®µç `rules` å·²ç§»é¤ ï¼`clientId` å `'selectRequired'`ï¼`outQuantity` / `checkQuantity` / `outDate` å `'required'`ï¼ã å ¶ä½å段 rules æªå¨ã 2. **å表/详æ 空å¼å±ç¤º**ï¼æ¬æ¬¡æªæ¹å表/è¯¦æ æ¨¡æ¿ï¼ç©ºå¼æ VXE é»è®¤æ¸²æä¸º**空ç½**ï¼ä¸æ¯ `-`ï¼ï¼ 注æä¸è¦ä¸ºäºå¥½çæ¹æ `?? 0`ï¼ä¼æãæªå¡«ãæ¾ç¤ºæ `0`ï¼ä¸ä¸å¡å«ä¹ä¸ç¬¦ã 3. **åè´§æ°é䏿£æµæ°éèå¨é»è¾**ï¼ç°æè¡¨åæãæ°å»ºæä¸ï¼å¡«åè´§æ°éèªå¨å¸¦åºæ£æµæ°éï¼åä¹äº¦ç¶ãç `onChange` é»è¾ï¼ 夿ä¾èµ `values.checkQuantity === null`ãæ¬æ¬¡æªæ¹è¯¥é»è¾ï¼è¡ä¸ºä¿æåæ ·ï¼ä» ç¨æ·ä¸»å¨è¾å ¥æ¶è§¦åï¼æ¸ 空åä¸ä¼è¢«èªå¨å¡«åï¼ã è¥åç»åç° antd InputNumber åå¡« `undefined` 导è´èå¨å¤±ææäºç¸è¦çï¼åæéè°æ´ã 4. **å¾ æ£ä»»å¡é¢å¡«**ï¼`pendinginspect` 页éè¿ `prefill` å¸¦å ¥ `clientId` / `outQuantity`ï¼`form.vue` éä¼ç¨ `data.prefill.checkQuantity ?? data.prefill.outQuantity` è¡¥é½æ£æµæ°éãæ¾å¼å¿ å¡«åè¿ä¸ªãè¡¥é½ãä»å¯ä¿çï¼ä¸å¡ä¸åçï¼ï¼ ä½è¦ç¡®è®¤ç¨æ·æ¸ 空åä¸ä¼è¢«å次èªå¨å¡«åã 5. **客æ·ä¸ºç©ºæ¶å表å¯è§æ§ï¼å·²å¤çï¼**ï¼ OQC å表æ¥è¯¢å¸¦å®¢æ·æéè¿æ»¤ââ`MesQcOqcServiceImpl.getOqcPage` å `customerApi.getPermittedCustomerIds()`ï¼ éç©ºæ¶æ¼ `client_id IN (...)`ãæ¾å¼å®¢æ·å¿ å¡«åï¼å®¢æ·ä¸ºç©ºç忮忬ä¼è¿**建å人èªå·±**é½çä¸å°ï¼åéç¨æ·ï¼ï¼ å·²å¨ `MesQcOqcMapper.selectPage(reqVO, permittedClientIds)` 䏿¹ä¸ºï¼ - ææé客æ·å表ï¼`client_id IS NULL OR client_id IN (...)` - 没æä»»ä½ææé客æ·ï¼å表为空ï¼ï¼åªæ¥ `client_id IS NULL` å³ãæ 客æ·çåæ®ä¸å±äºä»»ä½å®¢æ·ï¼ä¸åå®¢æ·æé鮿¡ï¼å¯¹ææäººçæããè¶ ç®¡ç `getPermittedCustomerIds()` è¿å null çç¨æ·æ¬æ¥å°±ä¸åè¿æ»¤ï¼ä¸åå½±åã 6. **å岿°æ®**ï¼ç°æ OQC åæ®çè¿ 4 ä¸ªåæ®µé½æå¼ï¼æ éæ°æ®è¿ç§»ã docs/oqc_check_result_extend_frontend.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,71 @@ # OQC åºåæ£éªï¼åºè´§æ£éªï¼æ£æµç»ææ©å± - å端èè°æ¹æ¡ ## åæ´èæ¯ åºåæ£éªï¼OQC åºè´§æ£éªï¼çãæ£æµç»æãç±åæ¥ç 3 项æ©å±ä¸º 7 项ï¼å¹¶æç¡®æ¾è¡è§åã | value | æ ç¾ | é¢è² | æ¯å¦æ¾è¡åè´§ | |-------|------|------|--------------| | 1 | 1å | success | æ¾è¡ | | 2 | 2å | primary | æ¾è¡ | | 3 | åºå | danger | **䏿¾è¡** | | 4 | 3å | success | æ¾è¡ | | 5 | ä¼çå | success | æ¾è¡ | | 6 | åæ ¼å | primary | æ¾è¡ | | 7 | ä¸åæ ¼å | danger | **䏿¾è¡** | ## æ¶åé¡µé¢ - MES è´¨æ£ - åºè´§æ£éªï¼OQCï¼åè¡¨é¡µãæ°å¢/ç¼è¾å¼¹çª - æ¹æ¬¡è¿½æº¯è¯¦æ ï¼å±ç¤º OQC æ£éªç»è®ºï¼ - æ£éªæ¥åæå°ãäº§åæ£éªå Word 导åºï¼å¤å®ç»è®ºå±ç¤ºï¼ ## åå ¸æ¥æº æ£æµç»æä¸æçé项æ¥èªåå ¸ `mes_oqc_check_result`ï¼å端常é `DICT_TYPE.MES_OQC_CHECK_RESULT`ï¼ï¼ é项ç±åå ¸é©±å¨ã**ä¸éè¦å端硬ç¼ç **ãå端已æ©å±åå ¸æ°æ®ï¼ä¸ææ¡ä¼èªå¨å¸¦åºå ¨é¨ 7 项ã ## æ¥å£ æ¬æ¬¡æ æ¥å£æ°å¢ãæ 请æ±åæ°ä¸ååºç»æåæ´ï¼ `checkResult` åæ®µä»ä¸º Integerï¼ä» åå¼èå´ç± 1~3 æ©å±ä¸º 1~7ã | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | POST | /mes/qc-oqc/create | æ°å¢åºè´§æ£éªå | | PUT | /mes/qc-oqc/update | ä¿®æ¹åºè´§æ£éªå | | PUT | /mes/qc-oqc/finish | 宿åºè´§æ£éªå | | GET | /mes/qc-oqc/get | æ¥è¯¢åºè´§æ£éªå详æ | ## ä¸å¡æµç¨ä¸æ°æ®å¸¦å ¥ 1. éå®åºåºåæäº¤ â çæ OQC åºè´§æ£éªåï¼è稿æï¼ï¼åæ®ä¿¡æ¯èªå¨å¸¦å ¥ã 2. è´¨æ£åå½å ¥æ£æµç»æï¼ä¸æéæ©ï¼â 宿æ£éªåã 3. 宿忿¾è¡è§åååéå®åºåºåè¡ï¼ - ç»æä¸º 1å/2å/3å/ä¼çå/åæ ¼å â åºåºè¡å¤**åæ ¼**ï¼åºåºåæ¨è¿ãå¾ æ£è´§ãã - ç»æä¸º åºå/ä¸åæ ¼å â åºåºè¡å¤**ä¸åæ ¼**ï¼**æ´ååæ¶**éå®åºåºåã 4. æ ¡éªè§åï¼æ£æµæ°é = åæ ¼åæ°é + ä¸åæ ¼åæ°éï¼åæè§åï¼ä¸åï¼ã ## å端é忥çä¿®æ¹ç¹ | ä½ç½® | ä¿®æ¹è¯´æ | |------|----------| | `src/packages/constants/src/biz-mes-enum.ts` | `MesQcOqcCheckResultEnum` 常éè¡¥å 4 个æ°å¼ï¼3å=4ãä¼çå=5ãåæ ¼å=6ãä¸åæ ¼å=7 | | `src/views/mes/qc/oqc/modules/form.vue` | æäº¤æ ¡éªãä¸åæ ¼åæ°é为 0 æ¶ï¼æ£æµç»æä¸è½ä¸ºåºåãéæ©å±ä¸ºï¼æ£æµç»æä¸º**åºåæä¸åæ ¼å**æ¶ï¼ä¸åæ ¼åæ°éä¸è½ä¸º 0 | > 䏿é项æ¬èº«ç±åå ¸é©±å¨ï¼ä» è¡¥åå ¸å³å¯æ¾ç¤ºï¼ä¸è¡¨ä¸¤é¡¹æ¯ä¸ºäºå¸¸éè¯ä¹å®æ´ä¸æ ¡éªä¸è´ã ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | ç»æä¸ºå¯æ¾è¡ç级 | åºåºè¡å¤åæ ¼ï¼éå®åºåºåæ¨è¿å¾ æ£è´§ | | ç»æä¸º åºå æ ä¸åæ ¼å | åºåºè¡å¤ä¸åæ ¼ï¼åæ¶éå®åºåºå | | ä¸åæ ¼åæ°é为 0 | ä¸å è®¸éæ© åºå / ä¸åæ ¼å | | æ£æµæ°éæ ¡éª | æ£æµæ°é = åæ ¼åæ°é + ä¸åæ ¼åæ°é | ## 注æäºé¡¹ - å岿°æ®ä¸å·²ä¿åç `checkResult`ï¼1/2/3ï¼è¯ä¹ä¸åï¼æ éæ°æ®è¿ç§»ã - åå ¸é¢è² `color_type` ä¼å½±åå表æ ç¾é è²ï¼å端使ç¨åå ¸æ ç¾æ¸²ææ¶ä¸éé¢å¤å¤çã - å端æ¾è¡å¤å®ç»ä¸æ¶æå¨ `MesQcOqcCheckResultEnum.canShip()`ï¼å端ä¸è¦èªè¡å®ç°æ¾è¡å¤æã docs/qc_item_mdm_resolution_and_list_columns.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,98 @@ # è´¨æ£åã产åç©æå¸¦ä¸åºãä¿®å¤ + åè¡¨åæ®µç¦èº« - å端èè°æ¹æ¡ ## ç°ç¶è¯´æï¼2026-09-22 ä¿®æ£ï¼ æ¬æåå æ 注å端æ¹å¨ã已宿ãï¼**ç»å®æµä¸ºä¸å®**ï¼`grep MdmItemApi` å¨ `controller/admin/qc` ä¸é¶å½ä¸ï¼å³è´¨æ£æ§å¶å¨å½æ¶ä»èµ° MES ä¾§ `MesMdItemService`ï¼ç©æåç§°ä¾æ§æ¥ä¸åºæ¥ï¼`mes_md_item` 60 è¡ â `mdm_item` 75 è¡ï¼æ¼æç 15 ä¸ªç©ææ¾ç¤ºä¸ºç©ºï¼`mes_md_unit_measure` 0 è¡ï¼åä½æä¸ºç©ºï¼ã **ç°å·²äº 2026-09-22 çæ£è½å°**ï¼å®é æ¹å¨æ¸ åè§ä¸æ¹ãå端æ¹å¨ãè¡¨ï¼æ¬æ¬¡æ¹ä¸ºä»¥çå®ä»£ç 为åï¼éæä»¶ååºï¼ãå端èè°å 容ï¼å表ç¦èº«ã`MdmItemSelect`ï¼ä¸åå½±åï¼ä»æä¸ææ§è¡ã ## åæ´èæ¯ 1. **产åç©æä¿¡æ¯æ¥ä¸åºæ¥**ï¼IQC / IPQC / OQC / RQC åå¼ æ£éªåï¼ä»¥åãå¾ æ£ä»»å¡ã页ï¼çå页ä¸è¯¦æ æ¥å£ä¸ï¼`itemCode`ï¼ç©æç¼ç ï¼ã`itemName`ï¼ç©æåç§°ï¼ã`itemSpecification`ï¼è§æ ¼åå·ï¼ã`unitName`ï¼åä½ï¼æä¸ºç©ºã 2. **åè¡¨åæ®µè¿äºåæ**ï¼æ£éªåå页å表æå¤§é**éå¿ å¡«**åæ®µä¹ä½ä¸ºåå±ç¤ºï¼ä¿¡æ¯å¯åº¦ä½ã ## æ ¹æ¬åå ï¼ç¬¬ 1 é¡¹ï¼ è´¨æ£åæ®ç `item_id` åçæ¯ **MDM ç©æ ID**ï¼`mdm_item.id`ï¼ï¼å端å´å» **MES ç©æè¡¨**ï¼`mes_md_item`ï¼åæ¥åç§°ï¼ä¸¤å¼ è¡¨ä¸æ¯ä¸å¥ ID ä½ç³»ï¼å¯¼è´æ¥ä¸å°ï¼`mes_md_item` çè³å¯è½ä¸ºç©ºè¡¨ï¼ã ç¸å ³è¯´æè§è®°å¿ãMES ç©æ ID å轨å¶ãï¼WM/è´¨æ£åæ®ç¨ `mdm_item.id`ï¼PRO å·¥å/ä»»å¡ç¨ `mes_md_item.id`ã ## å端æ¹å¨ï¼2026-09-22 å·²å®æï¼æ¥å£ç»ææªåï¼ä» ååºå¼åæ£ç¡®ï¼ | æä»¶ | æ¹å¨ | |------|------| | `MesQcIpqcController` | ç©æ/å使¹ç± `MdmItemApi` / `MdmUnitMeasureApi` è§£æï¼å表 VO ä¸å¯¼åºè¡ä¸¤å¤ï¼ | | `MesQcIqcController` | åä¸ï¼åæ¶è¯¥ Service çç©ææ ¡éªæ©å·²èµ° `mdmItemApi`ï¼ | | `MesQcOqcController` | åä¸ | | `MesQcRqcController` | åä¸ï¼`MesQcRqcServiceImpl` çç©ææ ¡éªä¸å¹¶ç± `MesMdItemService` æ¹ä¸º `MdmItemApi` | | `MesQcNcrController`ï¼é¡ºå¸¦ï¼ | ä¸åæ ¼åå¤çåç `itemId` ç»§æ¿èªè´¨æ£åï¼åå£å¾åå° `MdmItemApi`ï¼å¦å NCR åè¡¨ç©æå为空 | | `MesQc*LineController`ï¼IPQC/IQC/OQC/RQC è¡ï¼ | è¡æç»ç计éåä½ç± `MdmUnitMeasureApi` è§£æ | | `MesQcPendingInspectController` | å¨ `buildPendingInspectRespVOList` 䏿 `item_id` æ¹éè¡¥ `itemCode/itemName/specification/unitName`ï¼åèµ° MES ä¾§è§£æï¼æ¼ 15 ä¸ªç©æï¼ | | `MesQcTemplateItemController` | 产åå ³èå表çç©æ/计éåä½ç± `MesMdmItemService`/`MesMdUnitMeasureService` æ¹ä¸º `MdmItemApi`/`MdmUnitMeasureApi`ï¼`mes_md_unit_measure` 为 0 è¡ï¼ååä½æä¸ºç©ºï¼ | | `MesQcTemplateIndicatorController` | æ£æµææ 项ç计éåä½åä¸åå° `MdmUnitMeasureApi` | | `MesQcTemplateItemServiceImpl` | `getTemplateItemList` å»æãæ `mes_md_item.id` 忥å转 `mdm_item.id`ãçä¸é´è½¬æ¢ââè´¨æ£ä¾§å ¥åæ¬å°±æ¯ MDM ç©æ IDï¼åæ¶å é¤ `workOrderId`/`taskId` 忝ï¼è´¨æ£åæ®å·²æ å·¥å/ä»»å¡ç»´åº¦ï¼ | | `MesQcIqcServiceImpl` | å 餿ªè¢«ä½¿ç¨ç `MesMdItemService` åæ®µ | > **æ¥å£è·¯å¾ã请æ±åæ°ãååºåæ®µç»æåæ åå**ï¼ä» ä¿è¯ `itemCode/itemName/itemSpecification/unitName` æå¼ãå端**æ éæ¹æ¥å£è°ç¨**ï¼åªè¦åæ¥å·²å±ç¤ºè¿äºå段å³èªå¨çæã > åç»ä¿®æ£ï¼2026-09-22 äºæ¬¡ï¼ï¼`/mes/qc/template/item/list-by-item-and-type` ç `workOrderId`/`taskId` åæ°**已移é¤**ï¼åªæ¥å `{ qcType, itemId }`ï¼å ¶ä¸ `itemId` 为 **MDM ç©æ ID**ã ## å端æ¹å¨ï¼å·²å®æï¼ ### 1. æ£éªåå表ï¼éå¿ å¡«åæ®µç§»åºå表ï¼ä» ãæ£æµç»æãä¾å¤ è§åï¼**éå¿ å¡«çåæ®µä¸åä½ä¸ºå表åï¼å¯ä¸ä¾å¤æ¯ãæ£æµç»æã**ãå¤å®ä»¥**å端 `MesQc*SaveReqVO` çæ ¡éªæ³¨è§£**为åï¼ä¸å端表å `rules` ä¸è´ï¼ï¼æ `@NotNull` / `@NotEmpty` å³è§ä¸ºéå¿ å¡«ã å个å表æç»åï¼é¡ºåºå³å±ç¤ºé¡ºåºï¼ï¼ | é¡µé¢ | å表å | |------|--------| | IPQC è¿ç¨æ£éª | æ£éªåç¼å·ãæ£éªååç§°ãæ£éªç±»åã产åç©æç¼ç ã产åç©æåç§°ãè§æ ¼åå·ãæ¹å·ãåä½ãæ£æµæ°éãæ£æµç»æãæ£æµæ¥æãæ£æµäººåãåæ®ç¶æãæä½ | | IQC æ¥ææ£éª | æ£éªåç¼å·ãæ£éªååç§°ã产åç©æç¼ç ã产åç©æåç§°ãæ¥æ¶æ°éãæ£æµæ°éãä¸åæ ¼æ°ãæ£æµç»æãæ¥ææ¥æãæ£æµæ¥æãæ£æµäººåãåæ®ç¶æãæä½ | | OQC åºè´§æ£éª | æ£éªåç¼å·ãæ£éªååç§°ã产åç©æç¼ç ã产åç©æåç§°ãè§æ ¼åå·ãåä½ãä¸åæ ¼æ°ãæ£æµç»æãæ£æµæ¥æãæ£æµäººåãåæ®ç¶æãæä½ | | RQC éè´§æ£éª | æ£éªåç¼å·ãæ£éªååç§°ã产åç©æç¼ç ã产åç©æåç§°ãè§æ ¼åå·ãåä½ãæ£æµç»æãæ£æµæ¥æãæ£æµäººåãåæ®ç¶æãæä½ | **ä»å表移é¤çå**ï¼å段æ¬èº«ã详æ å¼¹çªã导åºãæ 颿 ç鿡件åä¿çï¼ä» ä¸åå å表ï¼ï¼ | é¡µé¢ | ç§»é¤çå | 便®ï¼SaveReqVO 䏿 å¿ å¡«æ³¨è§£çåæ®µï¼ | |------|----------|--------------------------------------| | IQC | ä¾åºåç®ç§°ãä¾åºåæ¹æ¬¡å· | `vendorId` / `vendorBatch` | | OQC | 客æ·åç§°ãæ¹æ¬¡å·ãåè´§æ°éãæ£æµæ°éãåºè´§æ¥æ | `clientId` / `batchCode` / `outQuantity` / `checkQuantity` / `outDate` | | RQC | æ¥æºåæ®ç±»åãæ¥æºåæ®ç¼ç ãæ¹æ¬¡å· | `sourceDocType` / `sourceDocCode` / `batchCode` | | IPQC | æ ï¼åå表已æ éå¿ å¡«åï¼ | â | > ä¿®æ£ï¼2026-09-22 䏿¬¡ï¼ï¼æ¬ææ¤åè®°è½½ãå个å表æ°å¢å¤æ ¸äºº `auditNickname` / å®¡æ ¸äºº `approveNickname`ãä¸å®æµä¸ç¬¦ ââ `grep auditNickname|approveNickname` å¨ `controller/admin/qc` ä¸é¶å½ä¸ï¼å个页é¢ç `data.ts` ä¸ä¹æ 对åºåã该æ¡å·²å é¤ï¼ä»¥æ¬è¡¨ä¸ºåã ### 2. å¾ æ£ä»»å¡é¡µï¼ç©æçé卿¢æ MDM ç©æ `src/views/mes/qc/pendinginspect/data.ts` çã产åç©æãç鿡件ï¼ç± MES ç©æéæ©å¨æ¹ä¸º **`MdmItemSelect`**ï¼`#/views/basicData/mdm/components`ï¼ãåå ï¼å¾ æ£ä»»å¡ç `item_id` æ¥èª WM åæ®ï¼`mes_wm_*`ï¼ï¼å± MDM ç©æ ID ä½ç³»ï¼æ²¿ç¨ MES ç©æéæ©å¨ä¼å¸¦å ¥ `mes_md_item.id`ï¼çéç»ææä¸ºç©ºã > 注æåºåï¼`MdmItemSelect`ï¼MDMï¼ä½äº `#/views/basicData/mdm/components`ï¼`MdItemSelect`ï¼MESï¼ä½äº `#/views/mes/md/item/components`ãäºè ä¸å¯æ··ç¨ã ## åæ®µå±ç¤ºè§å | åæ®µ | å表 | 详æ | 说æ | |------|------|------|------| | 产åç©æï¼ç¼ç /åç§°/è§æ ¼/åä½ï¼ | æ¯ | æ¯ | ç± MDM ç©æå¸¦åº | | æ£æµç»æ | æ¯ | æ¯ | éå¿ å¡«ï¼ä½æä¸å¡è¦æ±ä¿çå¨å表 | | æ£æµäººå / 夿 ¸äºº / å®¡æ ¸äºº | æ¯ | æ¯ | æä¸å¡è¦æ±ä¿çå¨å表ï¼å¤æ ¸äººãå®¡æ ¸äººä¸ºæ¬æ¬¡æ°å¢å | | ä¾åºå / å®¢æ· | å¦ | æ¯ | éå¿ å¡«ï¼ç§»åºå表 | | æ¹æ¬¡å·ï¼OQC/RQCï¼ãåè´§æ°éãåºè´§æ¥æãæ¥æºåæ®ç±»å/ç¼ç ãä¾åºåæ¹æ¬¡å· | å¦ | æ¯ | éå¿ å¡«ï¼ç§»åºå表 | | éæ ·å°ç¹ãè¯ä¹¦ç¼å·ãæ§è¡æ åã夿³¨ | å¦ | æ¯ | 忬就ä¸å¨å表 | | å¯¼åº Excel | â | â | åä¸åæ¬æ¬¡å表ç¦èº«å½±åï¼åæ®µå ¨é¨ä¿ç | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | è´¨æ£åç©æå±ç¤º | ä¸å¾æ MDM ç©æ ID è§£æç¼ç /åç§°/è§æ ¼ï¼åä½åè¯¥ç©æç计éåä½ | | å¾ æ£ä»»å¡ç©æå±ç¤º | æ¥æºåæ®ï¼WMï¼çç©æ ID å³ MDM ç©æ IDï¼æ MDM è§£æåç§°ç | | ç©æçé | å¾ æ£ä»»å¡é¡µæ MDM ç©æçéï¼ä¼ MES ç©æ ID å°æ¥ä¸å°ä»»ä½ä»»å¡ | | å表ç¦èº« | éå¿ å¡«åæ®µä¸è¿åè¡¨ï¼æ¹å¨è¯¦æ æ¥çï¼å¯¼åº Excel ä¸åå½±å | ## 注æäºé¡¹ - **䏿¯ååºç»æåæ´**ï¼`itemCode` çåæ®µæ¬æ¥å°±åå¨ï¼åªæ¯è¿å»ä¸ç´ä¸º `null`/空串ï¼å¦æå端ä¹å对空å¼åäºå åºå¦ã-ãï¼ä¼èªç¶å为çå®å¼ã - **夿 ¸äºº / å®¡æ ¸äºº**ï¼è¥å表æ°å¢åå仿¾ç¤ºä¸ºç©ºï¼å±æ£å¸¸ç°è±¡ââåæ®µæ¬èº«éå¿ å¡«ï¼æªå¡«å³ä¸ºç©ºã - **`mes_md_item` ä¸ `mdm_item` ä¸å¯æ··ç¨**ï¼æ¬æ¬¡ä¿®å¤æ£æ¯æè´¨æ£é¾è·¯ç»ä¸åå° MDM ä½ç³»ï¼åç»è¥ææ°é¡µé¢å±ç¤ºè´¨æ£/å¾ æ£ç©æçåç§°ï¼åæ ·å¿ é¡»èµ° `MdmItemApi`ã - **å¾ æ£ä»»å¡ç `batchCode` ä» IPQC æ¥æºæå¼**ï¼å ¶ä½æ¥æºä¸º `null`ã docs/qc_report_conclusion_print.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ # è´¨æ£æ¥åãå¤å®ç»è®º / è´¨æ£ä¸ç¨ç« ãè¡¥é½ - å端èè°æ¹æ¡ > æ¬æ¬¡åæ´ï¼æå°æ¥åçå¼è¡¥é½çº¸è´¨æ¥åå¿ æçãå¤å®ç»è®ºããè´¨æ£ä¸ç¨ç« ã两æ ï¼å¹¶æå¹³è¡æµéå头ç±åºå®ãæµéNãæ¹ä¸ºææ¹æ¬¡æ°èªéåºãå端æµè§å¨æå°ä¸äº§åæ£éªå Word 导åºä¸¤ä¸ªåºå£åæ¥çæã > å ³èææ¡£ï¼`docs/qc_chemical_report_integration.md`ï¼åå·¥æ£éªæ¥åæ´ä½çå¼ï¼ã`docs/mes_oqc_check_result_frontend.md`ï¼OQC æ£æµç»æåå ¸åæ¢ï¼ã ## æ¶åé¡µé¢ - æ£éªæ¥åæå°ç»ä»¶ `views/mes/qc/components/qc-report-print.vue` - åç±»æ£éªåå表ï¼è°ç¨æ¹ï¼æ éæ¹å¨ï¼ï¼`views/mes/qc/{iqc,ipqc,oqc,rqc}/index.vue` - äº§åæ£éªå Word 导åºï¼å端çæï¼æ å端页é¢ï¼ ## åæ´æè¦ | åºå£ | åæ´ | |------|------| | å端æµè§å¨æå° | â æ°å¢ãå¤å®ç»è®º / è´¨æ£ä¸ç¨ç« ãä¸è¡ï¼å¤å®ç»è®ºå¸¦åºæ£éªç»æææ¡ï¼çç« åºç空ï¼â¡ æµéå头ï¼ä» ä¸ä¸ªæµéæ¹æ¬¡æ¶æ¾ç¤ºãæµéå¼ãï¼å¤æ¹æ¬¡æ¶æ¾ç¤ºãæµé1ããæµé2ãâ¢ è¡¨å¤´ä¿¡æ¯æ ä¸åæçãæ£æµç»è®ºã已移é¤ï¼ä¸æ°ãå¤å®ç»è®ºãåå¼ï¼é¿å å页éå¤ï¼ | | Word å¯¼åº `/mes/qc/indicator-result/export-product-word` | ãå¤å®ç»è®ºï¼ãåèªå¨åå ¥æ£éªç»æææ¡ï¼ãè´¨æ£ä¸ç¨ç« ï¼ãä»ç空çç« | ## API | æ¹æ³ | è·¯å¾ | 说æ | |------|------|------| | GET | /mes/qc/indicator-result/report | æå°æ¥åèåæ°æ®ï¼ååºæ°å¢ `checkResultText`ï¼å ¶ä½è¯·æ±åæ°ä¸ååºç»æä¸å | **ååºå段æ°å¢ï¼** | åæ®µ | ç±»å | 说æ | |------|------|------| | checkResultText | String | æ£æµç»æææ¡ï¼ç±å端æ `qcType` éæ©åå ¸è§£æãOQC å `mes_oqc_check_result`ï¼1å/2å/åºåï¼ï¼IQC/IPQC/RQC å `mes_qc_check_result`ï¼æ ¡éªéè¿/æ ¡éªä¸éè¿ï¼ã`checkResult` 为空æ¶è¯¥å段为 null | **ååºç¤ºä¾ï¼èéï¼ï¼** ```json { "code": 0, "data": { "qcType": 3, "docCode": "OQC20260106001", "itemName": "å·¥ä¸ç¨æ£ä¸é", "checkResult": 1, "checkResultText": "1å", "measureNos": [1], "items": [] } } ``` ## æ°æ®å¸¦å ¥è¯´æ 1. `checkResult`ï¼æ£éªå宿æ¶ç±äººå·¥å¡«åçæ£æµç»æï¼â å端解æä¸º `checkResultText` é `/report` è¿åï¼å端æå°æ¶ç´æ¥å±ç¤ºï¼**ä¸åç±å端æåºå®åå ¸åæ ç¾**ã 2. `measureNos` æ°ç»é¿åº¦ â å³å®æµéåå¤´ææ¡ï¼é¿åº¦ä¸º 1 æ¶åå¤´ä¸ºãæµéå¼ãï¼é¿åº¦ ⥠2 æ¶åå¤´ä¸ºãæµé1ããæµé2ãâ¦ï¼åçåå¼å£å¾ï¼æ¯å对åºä¸ä¸ªæµéæ¹æ¬¡ï¼ä¸åã 3. ãè´¨æ£ä¸ç¨ç« ãæ æ°æ®æ¥æºï¼ä» 为空ç½åå æ ¼ï¼ä¾æå°å人工çç« ã ## åæ®µå±ç¤ºè§å | åæ®µ | å±ç¤ºä½ç½® | 说æ | |------|----------|------| | checkResultText | æå°çå¼åºé¨ãå¤å®ç»è®ºï¼ãä¹å | æ 弿¶æ¾ç¤ºã-ãï¼å端å åºé»è¾ä¸åï¼ | | â | æå°çå¼åºé¨ãè´¨æ£ä¸ç¨ç« ï¼ã | 空åå æ ¼ï¼é¢ç约 90px é«åº¦ä¾¿äºçç« | | measureNos | æ£éªé¡¹ç©éµè¡¨å¤´ | åæ¹æ¬¡ãæµéå¼ãï¼å¤æ¹æ¬¡ãæµé1ããæµé2ã | ## ä¸å¡è§å说æ | åºæ¯ | è§å | |------|------| | OQC æ£éªå | å¤å®ç»è®ºæ¾ç¤ºäº§åç级ï¼1å/2å/åºåï¼ï¼ä¸ `mes_oqc_check_result` åå ¸ä¸è´ | | IQC/IPQC/RQC æ£éªå | å¤å®ç»è®ºæ¾ç¤ºéç¨æ£æµç»æï¼æ ¡éªéè¿/æ ¡éªä¸éè¿ï¼ | | æ£éªåå°æªå¤å® | `checkResult` 为空 â å¤å®ç»è®ºæ¾ç¤ºã-ã | | æªåå¹³è¡æµé | æµéååªæä¸åï¼åå¤´ä¸ºãæµéå¼ã | | åäºå¹³è¡æµé | ææ¹æ¬¡æ°å±å¼å¤åï¼åå¤´ä¸ºãæµé1ããæµé2ã | | æå°åçç« | å¤å®ç»è®ºãè´¨æ£ä¸ç¨ç« ä¸å䏿µç¨æµè½¬ï¼ä» ä½çº¸è´¨çç | ## åç«¯å ¥å£ï¼æ°å¢ï¼ äº§åæ£éªå Word å¯¼åºæ¤ååªæå端æ¥å£ãå端æ å ¥å£ï¼æ¬æ¬¡å¨åç±»æ£éªåå表ç**è¡æä½å**è¡¥é½æé®ã | é¡µé¢ | æé® | ä½ç½® | |------|------|------| | `views/mes/qc/iqc/index.vue` | 导åºäº§åæ£éªå | è¡æä½åãæå°æ¥åãä¹å | | `views/mes/qc/ipqc/index.vue` | 导åºäº§åæ£éªå | è¡æä½åãæå°æ¥åãä¹å | | `views/mes/qc/oqc/index.vue` | 导åºäº§åæ£éªå | è¡æä½åãæå°æ¥åãä¹å | | `views/mes/qc/rqc/index.vue` | 导åºäº§åæ£éªå | è¡æä½åãæå°æ¥åãä¹å | | 项 | 说æ | |----|------| | 徿 | `ant-design:file-word-outlined` | | æé | ä¸å页ãæå°æ¥åãä¸è´ï¼`mes:qc-{iqc\|ipqc\|oqc\|rqc}:query` | | æ¥å£ | `GET /mes/qc/indicator-result/export-product-word`ï¼åæ° `qcId`ã`qcType`ã`resultId`ï¼å¯éï¼ä¸ä¼ å该æ£éªåææ©ä¸æ¡æ£éªç»æï¼ | | ä¸è½½æä»¶å | `äº§åæ£éªå-{æ£éªåç¼å·}.docx` | | è°ç¨æ¹å¼ | `requestClient.download` å Blob â `downloadFileFromBlobPart` è½ç | ## 注æäºé¡¹ - `checkResultText` æ¯**æ°å¢ååºå段**ï¼åç«¯è¯»åæ¶é容éï¼èçæ¬å端ä¸è¿åè¯¥åæ®µï¼ï¼ç»ä»¶å½åå®ç°ä¸ºãå `checkResultText`ï¼ä¸ºç©ºæ¶åéæ `checkResult` å `mes_qc_check_result` æ ç¾ãã - æå°çå¼è¡¨å¤´ä¿¡æ¯æ å·²å»æãæ£æµç»è®ºãä¸é¡¹ï¼è¥é¡µé¢å ¶å®ä½ç½®ä»éè¦å±ç¤ºæ£æµç»è®ºï¼è¯·ä» `/report` æå表æ¥å£ç `checkResult` ååå ¸æ ç¾å±ç¤ºï¼åå ¸éæ©éæ `qcType` åºåï¼OQC ç¨ `mes_oqc_check_result`ï¼ã - Word 导åºçãæ£éª / 夿 ¸ / æ¹åã已带åºåæ®çæ£æµäººåã夿 ¸äººãå®¡æ ¸äººå§åï¼åå«ä¸º `inspectorName` / `auditName` / `approveName`ï¼ï¼æªæå®äººåæ¶è¯¥æ®µç空æåããè´¨æ£ä¸ç¨ç« ãä»ä¸ºç空çç« ã - å¯¼åºæé®ä¸ãæå°æ¥åãå为 `query` æéçº§å ¥å£ï¼æ éæ°å¢èåæé项ã docs/sql/ipqc_remove_production_fields.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ -- ============================================================ -- è¿ç¨è´¨æ£åï¼IPQCï¼mes_qc_ipqcï¼åæ®µè°æ´ -- -- åæ´å å®¹ï¼ -- 廿ï¼ç产订å work_order_id / çäº§ä»»å¡ task_id / å·¥ä½ workstation_id / å·¥åº process_id -- æ°å¢ï¼æ¹å· batch_codeï¼å端æå·¥å½å ¥ï¼å¿ å¡«ï¼ -- -- é 奿¹é ï¼äº§åç©æ item_id ç±ãå·¥å/ä»»å¡å¸¦åºãæ¹ä¸ºãå端æå¨éæ©ãï¼ -- åå¨ä½ç³»ç»ä¸ä¸º MDM ç©æ IDï¼mdm_item.idï¼ï¼ä¸ IQC/OQC ä¸è´ã -- -- 说æï¼æ§è¡å mes_qc_ipqc æ ä¸å¡æ°æ®ï¼å¯ç´æ¥å åï¼ -- MySQL ç ALTER TABLE ADD COLUMN 䏿¯æ IF NOT EXISTSï¼æ ç´æ¥æ§è¡ã -- ============================================================ ALTER TABLE `mes_qc_ipqc` DROP COLUMN `work_order_id`, DROP COLUMN `task_id`, DROP COLUMN `workstation_id`, DROP COLUMN `process_id`; ALTER TABLE `mes_qc_ipqc` ADD COLUMN `batch_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'æ¹å·' AFTER `source_doc_code`; docs/sql/mes_qc_oqc_check_result_extend.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ -- ============================================================ -- OQC åºè´§æ£éªï¼åºåæ£éªï¼æ£æµç»æåå ¸æ©å± -- -- åæ´å å®¹ï¼æ£æµç»æç±ã1å / 2å / åºåãæ©å±ä¸º -- 1å / 2å / 3å / ä¼çå / åæ ¼å / åºå / ä¸åæ ¼å -- æ¾è¡è§åï¼åºåãä¸åæ ¼å å¤è¡ä¸åæ ¼å¹¶åæ¶éå®åºåºåï¼ -- å ¶ä½ç级å¤è¡åæ ¼å¹¶æ¨è¿åºåºåå¾ æ£è´§ -- å¯¹åºæä¸¾ï¼MesQcOqcCheckResultEnum -- ç®æ åº ï¼mom-jhhg -- å¹ç ï¼å¯é夿§è¡ -- æ¥æ ï¼2026-09-24 -- ============================================================ -- 1. æ¸ çæ§åå ¸ï¼æ dict_type å é¤ï¼ä¸å½±åå ¶å®åå ¸ï¼ DELETE FROM system_dict_data WHERE dict_type = 'mes_oqc_check_result'; DELETE FROM system_dict_type WHERE type = 'mes_oqc_check_result'; -- 2. å åºæ¸ ç被å ç¨çåºå® IDï¼é²æ¢é ç½®æ¼ç§»å¯¼è´ä¸»é®å²çª DELETE FROM system_dict_data WHERE id BETWEEN 1065401 AND 1065407; DELETE FROM system_dict_type WHERE id = 1065400; -- 3. åå ¸ç±»å INSERT INTO system_dict_type (id, name, type, status, remark, creator, create_time, updater, update_time, deleted) VALUES (1065400, 'MES åºè´§æ£éªæ£æµç»æ', 'mes_oqc_check_result', 0, 'åºè´§æ£éªå(OQC)å¤å®ç»æï¼1å/2å/3å/ä¼çå/åæ ¼å为å¯åè´§ç级ï¼åºåä¸ä¸åæ ¼å䏿¾è¡', '1', NOW(), '1', NOW(), b'0'); -- 4. åå ¸æ°æ® INSERT INTO system_dict_data (id, sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted) VALUES (1065401, 1, '1å', '1', 'mes_oqc_check_result', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'), (1065402, 2, '2å', '2', 'mes_oqc_check_result', 0, 'primary', '', '', '1', NOW(), '1', NOW(), b'0'), (1065403, 3, 'åºå', '3', 'mes_oqc_check_result', 0, 'danger', '', '', '1', NOW(), '1', NOW(), b'0'), (1065404, 4, '3å', '4', 'mes_oqc_check_result', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'), (1065405, 5, 'ä¼çå', '5', 'mes_oqc_check_result', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'), (1065406, 6, 'åæ ¼å', '6', 'mes_oqc_check_result', 0, 'primary', '', '', '1', NOW(), '1', NOW(), b'0'), (1065407, 7, 'ä¸åæ ¼å', '7', 'mes_oqc_check_result', 0, 'danger', '', '', '1', NOW(), '1', NOW(), b'0');