Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev
| | |
| | | </div> |
| | | </div> |
| | | </body> |
| | | <script type='text/javascript' src='http://192.168.21.53:9001/web-apps/apps/api/documents/api.js'></script> |
| | | <script src="<%= BASE_URL %>luckysheet/plugins/js/plugin.js"></script> |
| | | <script src="<%= BASE_URL %>luckysheet/luckysheet.umd.js"></script> |
| | | <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // æ¥åç¼å¶é¡µé¢ç¸å
³æ¥å£ |
| | | import request from '@/utils/request' |
| | | |
| | | // æ¥åè¿å |
| | | export function upReportUrl(query) { |
| | | return request({ |
| | | url: '/insReport/upReportUrl', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ¥è¯¢æ£éªæ¥åæ°æ® |
| | | export function pageInsReport(query) { |
| | | return request({ |
| | | url: '/insReport/pageInsReport', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ¥åæ¹éä¸è½½ |
| | | export function downAll(query) { |
| | | return request({ |
| | | url: '/insReport/downAll', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ¥åéåå°æ£éªä»»å¡ |
| | | export function sendBackTask(query) { |
| | | return request({ |
| | | url: '/insReport/sendBackTask', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ¥åå®¡æ ¸ |
| | | export function examineReport(query) { |
| | | return request({ |
| | | url: '/insReport/examineReport', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ¥åæäº¤ |
| | | export function writeReport(query) { |
| | | return request({ |
| | | url: '/insReport/writeReport', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ¥åæ¹å |
| | | export function ratifyReport(query) { |
| | | return request({ |
| | | url: '/insReport/ratifyReport', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | |
| | | return request({ |
| | | url: "/insOrderPlan/upPlanUser", |
| | | method: "post", |
| | | data: data, |
| | | params: data, |
| | | }); |
| | | } |
| | | |
| | |
| | | return request({ |
| | | url: "/insOrderPlan/verifyPlan", |
| | | method: "post", |
| | | data: data, |
| | | params: data, |
| | | }); |
| | | } |
| | | |
| | |
| | | return request({ |
| | | url: "/insOrderPlan/checkSubmitPlan", |
| | | method: "post", |
| | | data: data, |
| | | params: data, |
| | | }); |
| | | } |
| | | |
| | |
| | | return request({ |
| | | url: "/insOrderPlan/submitPlan", |
| | | method: "post", |
| | | data: data, |
| | | params: data, |
| | | }); |
| | | } |
| | | |
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | // æ¥è¯¢å¤æµæ¨¡ç |
| | | export function getInsProductUnqualifiedRetest(query) { |
| | | return request({ |
| | | url: "/insOrderPlan/getInsProductUnqualifiedRetest", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | |
| | | params: query |
| | | }) |
| | | } |
| | | // ä¿åä¸åæ ¼å¤æµæ°æ® |
| | | export function saveUnqualifiedContext(query) { |
| | | return request({ |
| | | url: '/insOrderPlan/saveUnqualifiedContext', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // æ ·å管ç页é¢ç¸å
³æ¥å£ |
| | | import request from '@/utils/request' |
| | | |
| | | // æ¥è¯¢ä»åº |
| | | export function selectWarehouse() { |
| | | return request({ |
| | | url: '/warehouse/selectWarehouse', |
| | | method: 'get' |
| | | }) |
| | | } |
| | | // æ ·åå
¥åº |
| | | export function inWarehouse(query) { |
| | | return request({ |
| | | url: '/warehouse/inWarehouse', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ ·ååºåº |
| | | export function outWarehouse(query) { |
| | | return request({ |
| | | url: '/warehouse/outWarehouse', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // ä¿®æ¹ä»åº |
| | | export function upWarehouse(query) { |
| | | return request({ |
| | | url: '/warehouse/upWarehouse', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ·»å ä»åº |
| | | export function addWarehouse(query) { |
| | | return request({ |
| | | url: '/warehouse/addWarehouse', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // ä¿®æ¹è´§æ¶ |
| | | export function upShelf(query) { |
| | | return request({ |
| | | url: '/warehouse/upShelf', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // æ·»å è´§æ¶ |
| | | export function addShelf(query) { |
| | | return request({ |
| | | url: '/warehouse/addShelf', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // å é¤ä»åº |
| | | export function delWarehouse(query) { |
| | | return request({ |
| | | url: '/warehouse/delWarehouse', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | // å é¤è´§æ¶ |
| | | export function delShelf(query) { |
| | | return request({ |
| | | url: '/warehouse/delShelf', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ¥è¯¢è´§æ¶ä¸çåæ¾ä¿¡æ¯ |
| | | export function getWarehouse(query) { |
| | | return request({ |
| | | url: '/warehouse/getWarehouse', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ¥è¯¢è´§æ¶ä¸çåæ¾ä¿¡æ¯ |
| | | export function searchSampleId(query) { |
| | | return request({ |
| | | url: '/warehouse/searchSampleId', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | |
| | | // ä¸åæ ¼ç®¡çç¸å
³æ¥å£ |
| | | |
| | | import request from "@/utils/request"; |
| | | |
| | | //æ¥è¯¢è¿è´§éªè¯ä¿¡æ¯ |
| | |
| | | data: data, |
| | | }); |
| | | } |
| | | // æ¥è¯¢ä¸åæ ¼æ ·åæ°æ® |
| | | export function pageInsUnPass(data) { |
| | | return request({ |
| | | url: "/unPass/pageInsUnPass", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // ä¸åæ ¼å¤çç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | //æ¥è¯¢ä¸åæ ¼å¤ç |
| | | export function page(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | //å é¤ä¸åæ ¼å¤ç |
| | | export function deleteUnqualifiedHandler(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/deleteUnqualifiedHandler", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | //å é¤ä¸åæ ¼å¤ç |
| | | export function pushOA(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/pushOA", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | // å页æ¥è¯¢ |
| | | export function getPageSubstanceRecord(query) { |
| | | return request({ |
| | | url: '/feStandardSubstanceRecord/getPageSubstanceRecord', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | // è·åå®éªå®¤åç§° |
| | | export function getPageStandardSubstance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstance/getPageStandardSubstance', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | //æ åç©è´¨æ¸
åæ°å¢ç¼è¾ |
| | | export function addStandardSubstance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstance/addStandardSubstance', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | //å 餿 åç©è´¨æ¸
å |
| | | export function removeStandardSubstance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstance/removeStandardSubstance', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // æä»¶åæ´-å¯¼åº |
| | | export function exportOfStandardSubstanceList(query) { |
| | | return request({ |
| | | url: "/feStandardSubstance/exportOfStandardSubstanceList", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ åç©è´¨æ¸
ååç¨ |
| | | export function borrowSubstance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstanceRecord/borrowSubstance', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | //æ åç©è´¨æ¸
åå½è¿ |
| | | export function returnSubstance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstanceRecord/returnSubstance', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | export function getPageAcceptance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstanceAcceptance/getPageAcceptance', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | export function updateAcceptanc(query) { |
| | | return request({ |
| | | url: '/feStandardSubstanceAcceptance/updateAcceptanc', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | export function addAcceptance(query) { |
| | | return request({ |
| | | url: '/feStandardSubstanceAcceptance/addAcceptance', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // çº æ£æªæ½ç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | //æ¥è¯¢çç£çº æ£æªæ½å表 |
| | | export function pageSuperviseDetailCorrect(query) { |
| | | return request({ |
| | | url: "/qualitySupervise/pageSuperviseDetailCorrect", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //导åºçç£çº æ£æªæ½ |
| | | export function exportSuperviseDetaillCorrect(query) { |
| | | return request({ |
| | | url: "/qualitySupervise/exportSuperviseDetaillCorrect", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢çç£çº æ£æªæ½éä»¶ |
| | | export function getSuperviseDetailCorrectFileList(query) { |
| | | return request({ |
| | | url: "/qualitySupervise/getSuperviseDetailCorrectFileList", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤çç£çº æ£æªæ½éä»¶ |
| | | export function delSuperviseDetailCorrectFile(query) { |
| | | return request({ |
| | | url: "/qualitySupervise/delSuperviseDetailCorrectFile", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢çç£çº æ£å¤ç |
| | | export function getSuperviseDetailCorrect(query) { |
| | | return request({ |
| | | url: "/qualitySupervise/getSuperviseDetailCorrect", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢ä»å¹´äººåå¹è®ä¿¡æ¯ |
| | | export function getThisYearTrainingDetailed(query) { |
| | | return request({ |
| | | url: "/personTraining/getThisYearTrainingDetailed", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // å®¢æ·æ»¡æåº¦ç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | //å®¢æ·æ»¡æåº¦è°æ¥å表 |
| | | export function pageClientSatisfaction(query) { |
| | | return request({ |
| | | url: "/clientSatisfaction/pageClientSatisfaction", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢å®¢æ·åæéä»¶ |
| | | export function pageAnalyseFile(query) { |
| | | return request({ |
| | | url: "/clientSatisfaction/pageAnalyseFile", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å 餿°å¢å®¢æ·æ»¡æåº¦è°æ¥ |
| | | export function delClientSatisfaction(query) { |
| | | return request({ |
| | | url: "/clientSatisfaction/delClientSatisfaction", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤å®¢æ·åæéä»¶ |
| | | export function delAnalyseFile(query) { |
| | | return request({ |
| | | url: "/clientSatisfaction/delAnalyseFile", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢å®¢æ·æ»¡æåº¦è°æ¥ |
| | | export function addClientSatisfaction(data) { |
| | | return request({ |
| | | url: "/clientSatisfaction/addClientSatisfaction", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹æ°å¢å®¢æ·æ»¡æåº¦è°æ¥ |
| | | export function updateClientSatisfaction(data) { |
| | | return request({ |
| | | url: "/clientSatisfaction/updateClientSatisfaction", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 夿¥æä»¶ç¡®è®¤è®°å½-æ°å¢ |
| | | export function addManageRecordVerify(data) { |
| | | return request({ |
| | | url: "/manageRecordVerify/addManageRecordVerify", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //夿¥æä»¶ç¡®è®¤è®°å½-å¡«å--å表 |
| | | export function pageManageRecordVerify(query) { |
| | | return request({ |
| | | url: "/manageRecordVerify/pageManageRecordVerify", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 夿¥æä»¶ç¡®è®¤è®°å½-åå²--æäº¤ |
| | | export function submitManageRecordTotal(data) { |
| | | return request({ |
| | | url: "/manageRecordTotal/submitManageRecordTotal", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // 夿¥æä»¶ç¡®è®¤è®°å½-åå²--å®¡æ ¸ |
| | | export function ratifyManageRecordTotal(data) { |
| | | return request({ |
| | | url: "/manageRecordTotal/ratifyManageRecordTotal", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //夿¥æä»¶ç¡®è®¤è®°å½-å¡«å--å é¤ |
| | | export function delManageRecordVerify(query) { |
| | | return request({ |
| | | url: "/manageRecordVerify/delManageRecordVerify", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //夿¥æä»¶ç¡®è®¤è®°å½-åå²--å表 |
| | | export function pageManageRecordTotal(query) { |
| | | return request({ |
| | | url: "/manageRecordTotal/pageManageRecordTotal", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 夿¥æä»¶ç¡®è®¤è®°å½-å¡«å--ä¿®æ¹ |
| | | export function doManageRecordVerify(data) { |
| | | return request({ |
| | | url: "/manageRecordVerify/doManageRecordVerify", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶åæ¾åæ¶è®°å½-å¯¼åº |
| | | export function exportOutManageRecordIssueRecycle(query) { |
| | | return request({ |
| | | url: "/manageRecordIssueRecycle/exportOutManageRecordIssueRecycle", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶åæ¾åæ¶è®°å½-æ°å¢ |
| | | export function addManageRecordIssueRecycle(data) { |
| | | return request({ |
| | | url: "/manageRecordIssueRecycle/addManageRecordIssueRecycle", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶åæ¾åæ¶è®°å½-ç¼è¾ |
| | | export function doManageRecordIssueRecycle(data) { |
| | | return request({ |
| | | url: "/manageRecordIssueRecycle/doManageRecordIssueRecycle", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢CNAS人åä¾§è¾¹æ |
| | | export function selectCNSAPersonTree(query) { |
| | | return request({ |
| | | url: "/personBasicInfo/selectCNSAPersonTree", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶åæ¾åæ¶è®°å½-å表 |
| | | export function pageManageRecordIssueRecycle(query) { |
| | | return request({ |
| | | url: "/manageRecordIssueRecycle/pageManageRecordIssueRecycle", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶åæ¾åæ¶è®°å½-å é¤ |
| | | export function delManageRecordIssueRecycle(query) { |
| | | return request({ |
| | | url: "/manageRecordIssueRecycle/delManageRecordIssueRecycle", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶ä¿®è®¢-导åºå表 |
| | | export function exportOutManageRecordAudit(query) { |
| | | return request({ |
| | | url: "/manageRecordAudit/exportOutManageRecordAudit", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶ä¿®è®¢-æ°å¢ |
| | | export function addManageRecordAudit(data) { |
| | | return request({ |
| | | url: "/manageRecordAudit/addManageRecordAudit", |
| | | method: "post", |
| | | headers: { "Content-Type": "application/x-www-form-urlencoded" }, |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶ä¿®è®¢-ç¼è¾ |
| | | export function doManageRecordAudit(data) { |
| | | return request({ |
| | | url: "/manageRecordAudit/doManageRecordAudit", |
| | | method: "post", |
| | | headers: { "Content-Type": "application/x-www-form-urlencoded" }, |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶ä¿®è®¢-æ¹å |
| | | export function ratifyManageRecordAudit(data) { |
| | | return request({ |
| | | url: "/manageRecordAudit/ratifyManageRecordAudit", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶ä¿®è®¢-å表 |
| | | export function pageManageRecordAudit(query) { |
| | | return request({ |
| | | url: "/manageRecordAudit/pageManageRecordAudit", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶ä¿®è®¢-å é¤ |
| | | export function delManageRecordAudit(query) { |
| | | return request({ |
| | | url: "/manageRecordAudit/delManageRecordAudit", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶å®æå®¡æ¥è®°å½-å¯¼åº |
| | | export function exportOutManageRecordIntervals(query) { |
| | | return request({ |
| | | url: "/manageRecordIntervals/exportOutManageRecordIntervals", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶å®æå®¡æ¥è®°å½-æ°å¢ |
| | | export function addManageRecordIntervals(data) { |
| | | return request({ |
| | | url: "/manageRecordIntervals/addManageRecordIntervals", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶å®æå®¡æ¥è®°å½-ç¼è¾ |
| | | export function doManageRecordIntervals(data) { |
| | | return request({ |
| | | url: "/manageRecordIntervals/doManageRecordIntervals", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶å®æå®¡æ¥è®°å½-åå²è®°å½-æ¹å |
| | | export function ratifyManageRecordIntervalsTotal(data) { |
| | | return request({ |
| | | url: "/manageRecordIntervalsTotal/ratifyManageRecordIntervalsTotal", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶å®æå®¡æ¥è®°å½-åå²è®°å½-æäº¤ |
| | | export function submitManageRecordIntervalsTotal(data) { |
| | | return request({ |
| | | url: "/manageRecordIntervalsTotal/submitManageRecordIntervalsTotal", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶å®æå®¡æ¥è®°å½-å表 |
| | | export function pageManageRecordIntervals(query) { |
| | | return request({ |
| | | url: "/manageRecordIntervals/pageManageRecordIntervals", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶å®æå®¡æ¥è®°å½-åå²è®°å½-å表 |
| | | export function pageManageRecordIntervalsTotal(query) { |
| | | return request({ |
| | | url: "/manageRecordIntervalsTotal/pageManageRecordIntervalsTotal", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶å®æå®¡æ¥è®°å½-å é¤ |
| | | export function delManageRecordIntervals(query) { |
| | | return request({ |
| | | url: "/manageRecordIntervals/delManageRecordIntervals", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶ä½åºè®°å½-å¯¼åº |
| | | export function exportOutManageRecordCancel(query) { |
| | | return request({ |
| | | url: "/manageRecordCancel/exportOutManageRecordCancel", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶ä½åºè®°å½-æ°å¢ |
| | | export function addManageRecordCancel(data) { |
| | | return request({ |
| | | url: "/manageRecordCancel/addManageRecordCancel", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶ä½åºè®°å½-ç¼è¾ |
| | | export function doManageRecordCancel(data) { |
| | | return request({ |
| | | url: "/manageRecordCancel/doManageRecordCancel", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æä»¶ä½åºè®°å½-æ¹å |
| | | export function ratifyManageRecordCancel(data) { |
| | | return request({ |
| | | url: "/manageRecordCancel/ratifyManageRecordCancel", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶ä½åºè®°å½-å é¤ |
| | | export function delManageRecordCancel(query) { |
| | | return request({ |
| | | url: "/manageRecordCancel/delManageRecordCancel", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æä»¶ä½åºè®°å½-å表 |
| | | export function pageManageRecordCancel(query) { |
| | | return request({ |
| | | url: "/manageRecordCancel/pageManageRecordCancel", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // å
审管çç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | //年度计å-å页 |
| | | export function pageInternalPlan(query) { |
| | | return request({ |
| | | url: "/internalPlan/pageInternalPlan", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //年度计å-å é¤ |
| | | export function delInternalPlan(query) { |
| | | return request({ |
| | | url: "/internalPlan/delInternalPlan", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //年度计å-å¯¼åº |
| | | export function exportInternalPlan(query) { |
| | | return request({ |
| | | url: "/internalPlan/exportInternalPlan", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //年度计å详æ
|
| | | export function getInternalPlanOne(query) { |
| | | return request({ |
| | | url: "/internalPlan/getInternalPlanOne", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 年度计å-æ°å¢ |
| | | export function addInternalPlan(data) { |
| | | return request({ |
| | | url: "/internalPlan/addInternalPlan", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // 年度计å-ä¿®æ¹ |
| | | export function updateInternalPlan(data) { |
| | | return request({ |
| | | url: "/internalPlan/updateInternalPlan", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // 年度计å-å®¡æ ¸ |
| | | export function examineInternalPlan(data) { |
| | | return request({ |
| | | url: "/internalPlan/examineInternalPlan", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // 年度计å-æ¹å |
| | | export function ratifyInternalPlan(data) { |
| | | return request({ |
| | | url: "/internalPlan/ratifyInternalPlan", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //å
审宿½è®¡åå页æ¥è¯¢ |
| | | export function pageInternalImplement(query) { |
| | | return request({ |
| | | url: "/internalImplement/pageInternalImplement", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å
审宿½è®¡åå é¤ |
| | | export function delInternalImplement(query) { |
| | | return request({ |
| | | url: "/internalImplement/delInternalImplement", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //导åºå
审宿½è®¡å |
| | | export function exportInternalImplement(query) { |
| | | return request({ |
| | | url: "/internalImplement/exportInternalImplement", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å
审宿½è®¡å详æ
|
| | | export function getInternalImplementOne(query) { |
| | | return request({ |
| | | url: "/internalImplement/getInternalImplementOne", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å
审宿½è®¡åæ°å¢ |
| | | export function addInternalImplement(data) { |
| | | return request({ |
| | | url: "/internalImplement/addInternalImplement", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
审宿½è®¡åä¿®æ¹ |
| | | export function updateInternalImplement(data) { |
| | | return request({ |
| | | url: "/internalImplement/updateInternalImplement", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
审宿½è®¡åä¿®æ¹ |
| | | export function ratifyInternalImplement(data) { |
| | | return request({ |
| | | url: "/internalImplement/ratifyInternalImplement", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //ä¼è®®ç¾å°æ¥è¯¢ |
| | | export function pageInternalMeeting(query) { |
| | | return request({ |
| | | url: "/internalMeeting/pageInternalMeeting", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // ä¼è®®ç¾å°å é¤ |
| | | export function delInternalMeeting(query) { |
| | | return request({ |
| | | url: "/internalMeeting/delInternalMeeting", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //导åºå
审ä¼è®® |
| | | export function exportInternalMeeting(query) { |
| | | return request({ |
| | | url: "/internalMeeting/exportInternalMeeting", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //ä¼è®®ç¾å°æ¥è¯¢è¯¦æ
|
| | | export function getInternalMeetingOne(query) { |
| | | return request({ |
| | | url: "/internalMeeting/getInternalMeetingOne", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢ä¼è®®ç¾å° |
| | | export function addInternalMeeting(data) { |
| | | return request({ |
| | | url: "/internalMeeting/addInternalMeeting", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ä¼è®®ç¾å°ä¿®æ¹ |
| | | export function updateInternalMeeting(data) { |
| | | return request({ |
| | | url: "/internalMeeting/updateInternalMeeting", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //å
å®¡æ£æ¥å页æ¥è¯¢ |
| | | export function pageInternalCheck(query) { |
| | | return request({ |
| | | url: "/internalCheck/pageInternalCheck", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å
å®¡æ£æ¥å é¤ |
| | | export function delInternalCheck(query) { |
| | | return request({ |
| | | url: "/internalCheck/delInternalCheck", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //导åºå
å®¡æ£æ¥ |
| | | export function exportInternalCheck(query) { |
| | | return request({ |
| | | url: "/internalCheck/exportInternalCheck", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å
å®¡æ£æ¥è¯¦æ
|
| | | export function getInternalCheckOne(query) { |
| | | return request({ |
| | | url: "/internalCheck/getInternalCheckOne", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å
å®¡æ£æ¥æ°å¢ |
| | | export function addInternalCheck(data) { |
| | | return request({ |
| | | url: "/internalCheck/addInternalCheck", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
å®¡æ£æ¥ä¿®æ¹ |
| | | export function updateInternalCheck(data) { |
| | | return request({ |
| | | url: "/internalCheck/updateInternalCheck", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
å®¡æ£æ¥æ¹å |
| | | export function ratifyInternalCheck(data) { |
| | | return request({ |
| | | url: "/internalCheck/ratifyInternalCheck", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢å
审管ççº æ£æªæ½å表 |
| | | export function pageInternalCorrect(query) { |
| | | return request({ |
| | | url: "/internalCorrect/pageInternalCorrect", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //导åºå
审管ççº æ£æªæ½éä»¶ |
| | | export function exportInternalCorrect(query) { |
| | | return request({ |
| | | url: "/internalCorrect/exportInternalCorrect", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢å
审管ççº æ£å¤ç详æ
|
| | | export function getInternalCorrect(query) { |
| | | return request({ |
| | | url: "/internalCorrect/getInternalCorrect", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æäº¤å
审管ççº æ£æªæ½å表 |
| | | export function addInternalCorrect(data) { |
| | | return request({ |
| | | url: "/internalCorrect/addInternalCorrect", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //å
审æ¥åå é¤ |
| | | export function delInternalReport(query) { |
| | | return request({ |
| | | url: "/internalReport/delInternalReport", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å
审æ¥åå页æ¥è¯¢ |
| | | export function pageInternalReport(query) { |
| | | return request({ |
| | | url: "/internalReport/pageInternalReport", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //导åºå
审æ¥å |
| | | export function exportInternalReport(query) { |
| | | return request({ |
| | | url: "/internalReport/exportInternalReport", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å
审æ¥å详æ
|
| | | export function getInternalReportOne(query) { |
| | | return request({ |
| | | url: "/internalReport/getInternalReportOne", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å
审æ¥åæ°å¢ |
| | | export function addInternalReport(data) { |
| | | return request({ |
| | | url: "/internalReport/addInternalReport", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
审æ¥åä¿®æ¹ |
| | | export function updateInternalReport(data) { |
| | | return request({ |
| | | url: "/internalReport/updateInternalReport", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
审æ¥åå®¡æ ¸ |
| | | export function examineInternalReport(data) { |
| | | return request({ |
| | | url: "/internalReport/examineInternalReport", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å
审æ¥åè´è´£äººå¡«å |
| | | export function qualityInternalReport(data) { |
| | | return request({ |
| | | url: "/internalReport/qualityInternalReport", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢å
审管ççº æ£æªæ½éä»¶ |
| | | export function getInternalCorrectFileList(query) { |
| | | return request({ |
| | | url: "/internalCorrect/getInternalCorrectFileList", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤å
审管ççº æ£æªæ½éä»¶ |
| | | export function delInternalCorrectFile(query) { |
| | | return request({ |
| | | url: "/internalCorrect/delInternalCorrectFile", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // åºå¯¹é£é©çæªæ½ç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | //å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§ å页 |
| | | export function getPageResults(query) { |
| | | return request({ |
| | | url: "/manageRiskAssessmentResults/getPageResults", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§ å®¡æ¹ |
| | | export function dangerousRiskApproval(data) { |
| | | return request({ |
| | | url: "/manageRiskAssessmentResults/dangerousRiskApproval", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§ æ¹å |
| | | export function hazardIdentificationAndRiskApproval(data) { |
| | | return request({ |
| | | url: "/manageRiskAssessmentResults/hazardIdentificationAndRiskApproval", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§ å é¤ |
| | | export function removeRiskFactors(query) { |
| | | return request({ |
| | | url: "/manageRiskAssessmentResults/removeRiskFactors", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§ æ°å¢ |
| | | export function addNewRiskFactors(data) { |
| | | return request({ |
| | | url: "/manageRiskAssessmentResults/addNewRiskFactors", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§ å¯¼åº |
| | | export function exportHazardFactorIdentification(query) { |
| | | return request({ |
| | | url: "/manageRiskAssessmentResults/exportHazardFactorIdentification", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å å页 |
| | | export function getPageList(query) { |
| | | return request({ |
| | | url: "/manageControlPlanList/getPageList", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å å®¡æ ¸ |
| | | export function riskAnalysisApprovalOfControlPlanChecklist(data) { |
| | | return request({ |
| | | url: "/manageControlPlanList/riskAnalysisApprovalOfControlPlanChecklist", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å æ¹å |
| | | export function approvalOfControlPlanChecklist(data) { |
| | | return request({ |
| | | url: "/manageControlPlanList/approvalOfControlPlanChecklist", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å å é¤ |
| | | export function deleteSignificantRiskFactorAnalysis(query) { |
| | | return request({ |
| | | url: "/manageControlPlanList/deleteSignificantRiskFactorAnalysis", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å æ°å¢ |
| | | export function analysisOfMajorRiskFactorsAdded(data) { |
| | | return request({ |
| | | url: "/manageControlPlanList/analysisOfMajorRiskFactorsAdded", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å å¯¼åº |
| | | export function exportSignificantRiskFactors(query) { |
| | | return request({ |
| | | url: "/manageControlPlanList/exportSignificantRiskFactors", |
| | | method: "get", |
| | | headers: { |
| | | responseType: "blob", |
| | | }, |
| | | params: query, |
| | | }); |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | // ç»æ åæ æ·»å æ£éªæ å |
| | | export function addStandardMethodList(data) { |
| | | return request({ |
| | | url: "/standardTree/addStandardMethodList", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æ·»å æ åæ |
| | | export function addStandardTree(data) { |
| | | return request({ |
| | |
| | | }); |
| | | } |
| | | |
| | | // å 餿 åæ ä¸çæ£éªæ å |
| | | export function delStandardMethodByFLSSM(data) { |
| | | return request({ |
| | | url: "/standardTree/delStandardMethodByFLSSM", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å 餿 åæ ä¸çæ£éªæ å |
| | | export function delStandardProductByIds(data) { |
| | | return request({ |
| | | url: "/standardTree/delStandardProductByIds", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢æ åæ ä¸çæ£éªé¡¹ç® |
| | | export function addStandardProduct(data) { |
| | | return request({ |
| | | url: "/standardTree/addStandardProduct", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // éè¿æ£éªæ åæ¥è¯¢æ£éªé¡¹ç® |
| | | export function selectStandardProductListByMethodId(query) { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1712111454775" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5950" width="18" height="18" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M354.133333 682.666667H256v-42.666667h170.666667v170.666667H384v-98.133334L243.2 853.333333l-29.866667-29.866666L354.133333 682.666667z m358.4 0l140.8 140.8-29.866666 29.866666-140.8-140.8V810.666667h-42.666667v-170.666667h170.666667v42.666667h-98.133334zM354.133333 384L213.333333 243.2l29.866667-29.866667L384 354.133333V256h42.666667v170.666667H256V384h98.133333z m358.4 0H810.666667v42.666667h-170.666667V256h42.666667v98.133333L823.466667 213.333333l29.866666 29.866667L712.533333 384z" fill="#606266" p-id="5951"></path></svg> |
| | |
| | | .required-span { |
| | | color: red; |
| | | } |
| | | table { |
| | | border-collapse: collapse; /* å
³é®å±æ§ï¼åå¹¶è¾¹æ¡ */ |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!--onlyoffice ç¼è¾å¨--> |
| | | <template> |
| | | <div id="vabOnlyOffice"></div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: "VabOnlyOffice", |
| | | props: ['options'], |
| | | data() { |
| | | return { |
| | | doctype: "", |
| | | docEditor: null, |
| | | //åèvabOnlyOfficeç»ä»¶åæ°é
ç½® |
| | | option: { |
| | | url: "", |
| | | isEdit: false, |
| | | fileType: "", |
| | | title: "", |
| | | lang: "zh-CN", |
| | | isPrint: true, |
| | | user: {}, |
| | | editUrl: "" |
| | | } |
| | | }; |
| | | }, |
| | | created() { |
| | | if(this.options){ |
| | | const option = this.options |
| | | this.option.url = option.url |
| | | this.option.isEdit = option.isEdit === "true" ? true : false |
| | | this.option.fileType = option.fileType |
| | | this.option.title = option.title |
| | | this.option.lang = option.lang |
| | | this.option.isPrint = option.isPrint |
| | | this.option.user.id = option.user_id |
| | | this.option.user.name = option.user_name |
| | | this.option.editUrl = option.editUrl |
| | | }else{ |
| | | const option = this.$route.query |
| | | this.option.url = option.url |
| | | this.option.isEdit = option.isEdit === "true" ? true : false |
| | | this.option.fileType = option.fileType |
| | | this.option.title = option.title |
| | | this.option.lang = option.lang |
| | | this.option.isPrint = option.isPrint |
| | | this.option.user.id = option.user_id |
| | | this.option.user.name = option.user_name |
| | | this.option.editUrl = option.editUrl |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | if (this.docEditor !== null) { |
| | | this.docEditor.destroyEditor(); |
| | | this.docEditor = null; |
| | | } |
| | | }, |
| | | watch: { |
| | | option: { |
| | | handler: function(n) { |
| | | this.setEditor(n); |
| | | this.doctype = this.getFileType(n.fileType); |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | mounted() { |
| | | if (this.option.url) { |
| | | this.setEditor(this.option); |
| | | } |
| | | }, |
| | | methods: { |
| | | async setEditor(option) { |
| | | if (this.docEditor !== null) { |
| | | this.docEditor.destroyEditor(); |
| | | this.docEditor = null; |
| | | } |
| | | this.doctype = this.getFileType(option.fileType); |
| | | let config = { |
| | | document: { |
| | | //åç¼ |
| | | fileType: option.fileType, |
| | | key: option.key || "", |
| | | title: option.title, |
| | | permissions: { |
| | | edit: option.isEdit, //æ¯å¦å¯ä»¥ç¼è¾: åªè½æ¥çï¼ä¼ false |
| | | print: option.isPrint, |
| | | download: false |
| | | // "fillForms": true,//æ¯å¦å¯ä»¥å¡«åè¡¨æ ¼ï¼å¦æå°modeåæ°è®¾ç½®ä¸ºeditï¼åå¡«å表åä»
å¯¹ææ¡£ç¼è¾å¨å¯ç¨ã é»è®¤å¼ä¸editæreviewåæ°çå¼ä¸è´ã |
| | | // "review": true //è·è¸ªåå |
| | | }, |
| | | url: option.url |
| | | }, |
| | | documentType: this.doctype, |
| | | editorConfig: { |
| | | callbackUrl: option.editUrl, //"ç¼è¾wordåä¿åæ¶åè°çå°åï¼è¿ä¸ªapiéè¦èªå·±åäºï¼å°ç¼è¾åçæä»¶éè¿è¿ä¸ªapiä¿åå°èªå·±æ³è¦çä½ç½® |
| | | lang: option.lang, //è¯è¨è®¾ç½® |
| | | //å®å¶ |
| | | customization: { |
| | | autosave: true, //æ¯å¦èªå¨ä¿å |
| | | chat: true, |
| | | comments: false, |
| | | help: false, |
| | | "hideRightMenu": false,//å®ä¹å¨ç¬¬ä¸æ¬¡å è½½æ¶æ¯æ¾ç¤ºè¿æ¯éèå³ä¾§èåã é»è®¤å¼ä¸ºfalse |
| | | //æ¯å¦æ¾ç¤ºæä»¶ |
| | | plugins: false |
| | | }, |
| | | user: { |
| | | id: option.user.id, |
| | | name: option.user.name |
| | | }, |
| | | mode: option.model ? option.model : "edit" |
| | | }, |
| | | width: "100%", |
| | | height: "100%", |
| | | token: option.token || "" |
| | | }; |
| | | |
| | | // eslint-disable-next-line no-undef,no-unused-vars |
| | | this.docEditor = new DocsAPI.DocEditor("vabOnlyOffice", config); |
| | | }, |
| | | getFileType(fileType) { |
| | | let docType = ""; |
| | | let fileTypesDoc = [ |
| | | "doc", |
| | | "docm", |
| | | "docx", |
| | | "dot", |
| | | "dotm", |
| | | "dotx", |
| | | "epub", |
| | | "fodt", |
| | | "htm", |
| | | "html", |
| | | "mht", |
| | | "odt", |
| | | "ott", |
| | | "pdf", |
| | | "rtf", |
| | | "txt", |
| | | "djvu", |
| | | "xps" |
| | | ]; |
| | | let fileTypesCsv = [ |
| | | "csv", |
| | | "fods", |
| | | "ods", |
| | | "ots", |
| | | "xls", |
| | | "xlsm", |
| | | "xlsx", |
| | | "xlt", |
| | | "xltm", |
| | | "xltx" |
| | | ]; |
| | | let fileTypesPPt = [ |
| | | "fodp", |
| | | "odp", |
| | | "otp", |
| | | "pot", |
| | | "potm", |
| | | "potx", |
| | | "pps", |
| | | "ppsm", |
| | | "ppsx", |
| | | "ppt", |
| | | "pptm", |
| | | "pptx" |
| | | ]; |
| | | if (fileTypesDoc.includes(fileType)) { |
| | | docType = "text"; |
| | | } |
| | | if (fileTypesCsv.includes(fileType)) { |
| | | docType = "spreadsheet"; |
| | | } |
| | | if (fileTypesPPt.includes(fileType)) { |
| | | docType = "presentation"; |
| | | } |
| | | return docType; |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | html, |
| | | body { |
| | | height: 100%; |
| | | } |
| | | #app { |
| | | font-family: Avenir, Helvetica, Arial, sans-serif; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | text-align: center; |
| | | color: #2c3e50; |
| | | height: 100%; |
| | | } |
| | | .qualityManual-container { |
| | | padding: 0 !important; |
| | | height: 100%; |
| | | } |
| | | .qualityManual-container-office { |
| | | width: 100%; |
| | | height: calc(100% - 55px); |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | <div v-if="isPdf"> |
| | | <object :data="fileUrl" type="application/pdf" width="100%" height="750px"> |
| | | <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl">ä¸è½½ PDF æä»¶</a></p> |
| | | <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;">ä¸è½½ PDF æä»¶</a></p> |
| | | </object> |
| | | </div> |
| | | <div v-if="isDoc"> |
| | |
| | | <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey" |
| | | :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue" |
| | | :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop" |
| | | :show-overflow-tooltip="item.dataType === 'action' ? false : true" :sortable="item.sortable ? true : false" |
| | | :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true" :sortable="item.sortable ? true : false" |
| | | :type="item.type" :width="item.dataType === 'action' ? getWidth(item.operation) : item.width |
| | | " align="center"> |
| | | <!-- <div class="123" v-if="item.type == ''"> --> |
| | |
| | | @click="o.clickFun(scope.row)" :key="key"> |
| | | {{ o.name }} |
| | | </el-button> |
| | | <el-upload action="#" size="mini" :on-change="(file, fileList) => o.clickFun(scope.row, file, fileList) |
| | | " :multiple="o.multiple ? o.multiple : false" :limit="o.limit ? o.limit : 1" |
| | | <el-upload |
| | | :action="javaApi + o.url +'?id=' +(o.uploadIdFun ? o.uploadIdFun(scope.row): scope.row.id) " |
| | | size="mini" |
| | | ref="upload" |
| | | :multiple="o.multiple ? o.multiple : false" |
| | | :limit="1" |
| | | :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept |
| | | ? o.accept |
| | | : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | " v-if="o.type == 'upload'" style="display: inline-block; width: 50px" |
| | | v-show="o.showHide ? o.showHide(scope.row) : true" :auto-upload="false" :on-exceed="onExceed" |
| | | v-show="o.showHide ? o.showHide(scope.row) : true" |
| | | :headers="uploadHeader" |
| | | :on-error="onError" |
| | | :on-exceed="onExceed" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" :key="key"> |
| | | <el-button :size="o.size ? o.size : 'small'" type="text" |
| | | :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button> |
| | |
| | | row.forEach((a) => { |
| | | count += a.name.length; |
| | | }); |
| | | return count * 15 + 60 + "px"; |
| | | return count * 15 + 70 + "px"; |
| | | }, |
| | | iconFn(row) { |
| | | if (row.name === "ç¼è¾" || row.name === "ä¿®æ¹") { |
| | |
| | | setCurrent(row) { |
| | | this.$refs.multipleTable.setCurrentRow(); |
| | | }, |
| | | handleSuccessUp(response, label) { |
| | | if (typeof label === "string") { |
| | | if (response.code == 200) { |
| | | this.upData[label] = response.data.url; |
| | | } |
| | | } else { |
| | | if (response.code == 200) { |
| | | this.$message.success("ä¸ä¼ æå"); |
| | | } |
| | | } |
| | | }, |
| | | onError(err, file, fileList) { |
| | | this.$message.error("ä¸ä¼ 失败"); |
| | | this.$refs.upload.clearFiles(); |
| | | this.uploading = false; |
| | | }, |
| | | onExceed() { |
| | | this.$message.warning("è¶
åºæä»¶ä¸ªæ°"); |
| | | }, |
| | |
| | | v-else |
| | | ref="upload" |
| | | :accept="a.uploadConfig.accept" |
| | | :action=" |
| | | javaApi + |
| | | a.uploadConfig.url + |
| | | '?id=' + |
| | | (a.uploadConfig.uploadIdFun |
| | | ? a.uploadConfig.uploadIdFun(scope.row) |
| | | : scope.row.id) |
| | | " |
| | | :action="javaApi + a.uploadConfig.url +'?id=' +(a.uploadConfig.uploadIdFun ? a.uploadConfig.uploadIdFun(scope.row): scope.row.id)" |
| | | :disabled=" |
| | | a.disabFun ? a.disabFun(scope.row, scope.$index) : false |
| | | " |
| | |
| | | // åå
¸æ°æ®ç»ä»¶ |
| | | import DictData from "@/components/DictData"; |
| | | import { checkPermi } from "@/utils/permission"; // æé夿彿° |
| | | import { getToken } from "@/utils/auth"; |
| | | |
| | | // å
¨å±æ¹æ³æè½½ |
| | | Vue.prototype.getDicts = getDicts; |
| | |
| | | }; |
| | | Vue.prototype.javaApi = process.env.VUE_APP_BASE_API |
| | | ? process.env.VUE_APP_BASE_API |
| | | : "http://192.168.1.36:8002"; |
| | | : "http://192.168.0.170:8002"; |
| | | Vue.prototype.checkPermi = checkPermi; |
| | | Vue.prototype.uploadHeader = { |
| | | Authorization: "Bearer " + getToken(), |
| | | }; |
| | | |
| | | // å
¨å±ç»ä»¶æè½½ |
| | | Vue.component("DictTag", DictTag); |
| | |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button size="small" @click="$refs.ValueTable.openUpload()" v-if="inPower"> |
| | | <!-- <el-button size="small" @click="$refs.ValueTable.openUpload()" v-if="inPower"> |
| | | <i class="el-icon-upload2" style="color: #3a7bfa"></i> |
| | | <span style="color: #3a7bfa">导å
¥</span></el-button> |
| | | <span style="color: #3a7bfa">导å
¥</span></el-button> --> |
| | | <el-button size="small" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="æ åç©è´¨åç§°" prop="name"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.name" |
| | | @keyup.enter.native="searchList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·" prop="factoryManufacturer"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.model" |
| | | @keyup.enter.native="searchList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="medium" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | | getPageSubstanceRecord |
| | | } from '@/api/cnas/resourceDemand/standardMaterailRequistion/standardMaterailRequistion' |
| | | |
| | | export default { |
| | | components: { |
| | | limsTable |
| | | // TableCard, |
| | | // ZTTable, |
| | | }, |
| | | data() { |
| | | return { |
| | | searchForm: { |
| | | name: '', |
| | | factoryManufacturer: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ åç©è´¨åç§°', |
| | | prop: 'name', |
| | | minWidth: '120' |
| | | }, |
| | | { |
| | | label: 'è§æ ¼åå·', |
| | | prop: 'model', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åºåç¼å·', |
| | | prop: 'factoryNum', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'æ°é', |
| | | prop: 'factoryNum', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'é¢ç¨äºº', |
| | | prop: 'borrowUser', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'é¢ç¨æ¥æ', |
| | | prop: 'borrowDate', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å½è¿äºº', |
| | | prop: 'returnIntegrity', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å½è¿æ¥æ', |
| | | prop: 'returnDate', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å½è¿æ¶ç¶æ', |
| | | prop: 'returnIntegrity', |
| | | minWidth: '100' |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | total: 0, |
| | | formDia: false, |
| | | borrowDia: false, |
| | | returnDia: false, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | methods :{ |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | this.tableLoading = true |
| | | getPageSubstanceRecord({ |
| | | ...this.page, |
| | | ...this.searchForm |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.name = ''; |
| | | this.searchForm.model = ''; |
| | | this.searchList() |
| | | }, |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="æ åç©è´¨åç¨" |
| | | width="80%" @close="closeBorrowDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="right" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ åç©è´¨åç§°"> |
| | | <el-input v-model="form.name" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå·"> |
| | | <el-input v-model="form.model" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®å¥½æ§" prop="integrity"> |
| | | <el-input v-model="form.integrity" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åç¨äºº" prop="borrowUser"> |
| | | <el-input v-model="form.borrowUser" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="èç³»æ¹å¼" prop="phone"> |
| | | <el-input v-model="form.phone" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ååºæ¥æ" prop="borrowDate"> |
| | | <el-date-picker |
| | | v-model="form.borrowDate" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="约å®å½è¿æ¥æ" prop="borrowReturnDate"> |
| | | <el-date-picker |
| | | v-model="form.borrowReturnDate" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ååºäºº" prop="lender"> |
| | | <el-input v-model="form.lender" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeBorrowDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | borrowSubstance |
| | | } from "@/api/cnas/resourceDemand/standardMaterial/standardMaterial"; |
| | | |
| | | export default { |
| | | name: 'borrowDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | name: '', |
| | | model: '', |
| | | integrity: '', |
| | | borrowUser: '', |
| | | phone: '', |
| | | borrowDate: '', |
| | | borrowReturnDate: '', |
| | | lender: '', |
| | | substanceId: '' |
| | | }, |
| | | rules: { |
| | | integrity: [{required: true, message: '请填åå®å¥½æ§',trigger: 'blur'}], |
| | | borrowUser: [{required: true, message: '请填ååç¨äºº',trigger: 'blur'}], |
| | | phone: [{required: true, message: '请填åèç³»æ¹å¼',trigger: 'blur'}], |
| | | borrowDate: [{required: true, message: 'è¯·éæ©ååºæ¥æ',trigger: 'change'}], |
| | | borrowReturnDate: [{required: true, message: 'è¯·éæ©çº¦å®å½è¿æ¥æ',trigger: 'change'}], |
| | | lender: [{required: true, message: 'è¯·éæ©lender',trigger: 'blur'}], |
| | | }, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (row) { |
| | | this.formDia = true |
| | | this.form.name = row.name |
| | | this.form.model = row.model |
| | | this.form.substanceId = row.id |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | this.form.status = '0'; |
| | | borrowSubstance(this.form).then(res =>{ |
| | | this.loading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('æä½æå') |
| | | this.closeBorrowDia() |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeBorrowDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeBorrowDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="æ åç©è´¨" |
| | | width="80%" @close="closeYearDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="right" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ åç©è´¨åç§°" prop="name"> |
| | | <el-input v-model="form.name" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è§æ ¼åå·" prop="model"> |
| | | <el-input v-model="form.model" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç产åå®¶" prop="factoryManufacturer"> |
| | | <el-input v-model="form.factoryManufacturer" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åºåç¼å·" prop="factoryNum"> |
| | | <el-input v-model="form.factoryNum" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="管çç¼å·" prop="manageNum"> |
| | | <el-input v-model="form.manageNum" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸ç¡®å®åº¦" prop="uncertainty"> |
| | | <el-input v-model="form.uncertainty" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ°é" prop="quantity"> |
| | | <el-input v-model="form.quantity" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è´ç½®æ¥æ" prop="acquisitionDate"> |
| | | <el-date-picker |
| | | v-model="form.acquisitionDate" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æææ" prop="effectiveDate"> |
| | | <el-date-picker |
| | | v-model="form.effectiveDate" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¡£æ¡ç¼å·" prop="fileNum"> |
| | | <el-input v-model="form.fileNum" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åæ¾ä½ç½®" prop="position"> |
| | | <el-input v-model="form.position" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeYearDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { |
| | | addStandardSubstance |
| | | } from "@/api/cnas/resourceDemand/standardMaterial/standardMaterial"; |
| | | |
| | | export default { |
| | | name: 'formDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | name: '', |
| | | model: '', |
| | | factoryManufacturer: '', |
| | | factoryNum: '', |
| | | manageNum: '', |
| | | uncertainty: '', |
| | | quantity: '', |
| | | acquisitionDate: '', |
| | | effectiveDate: '', |
| | | fileNum: '', |
| | | position: '', |
| | | remark: '', |
| | | id: '', |
| | | }, |
| | | rules: { |
| | | name: [{required: true, message: 'è¯·å¡«åæ åç©è´¨åç§°',trigger: 'blur'}], |
| | | model: [{required: true, message: '请填åè§æ ¼åå·',trigger: 'blur'}], |
| | | factoryManufacturer: [{required: true, message: '请填åç产åå®¶',trigger: 'blur'}], |
| | | factoryNum: [{required: true, message: '请填ååºåç¼å·',trigger: 'blur'}], |
| | | manageNum: [{required: true, message: '请填å管çç¼å·',trigger: 'blur'}], |
| | | uncertainty: [{required: true, message: '请填åä¸ç¡®å®åº¦',trigger: 'blur'}], |
| | | quantity: [{required: true, message: 'è¯·å¡«åæ°é',trigger: 'blur'}], |
| | | acquisitionDate: [{required: true, message: 'è¯·éæ©è´ç½®æ¥æ',trigger: 'change'}], |
| | | effectiveDate: [{required: true, message: 'è¯·éæ©æææ',trigger: 'change'}], |
| | | fileNum: [{required: true, message: 'è¯·å¡«åæ¡£æ¡ç¼å·',trigger: 'blur'}], |
| | | position: [{required: true, message: '请填ååæ¾ä½ç½®',trigger: 'blur'}], |
| | | }, |
| | | operationType: '', |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.form = row |
| | | } |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | addStandardSubstance(this.form).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeYearDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeYearDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="æ åç©è´¨å½è¿" |
| | | width="80%" @close="closeReturnDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="right" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ åç©è´¨åç§°" prop="name"> |
| | | <el-input v-model="form.name" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå·" prop="model"> |
| | | <el-input v-model="form.model" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å½è¿æ¥æ" prop="returnDate"> |
| | | <el-date-picker |
| | | v-model="form.returnDate" |
| | | clearable |
| | | format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" |
| | | type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å½è¿äºº" prop="returnedPerson"> |
| | | <el-input v-model="form.returnedPerson" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®å¥½æ§" prop="returnIntegrity"> |
| | | <el-input v-model="form.returnIntegrity" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ£æ¥äºº" prop="rummager"> |
| | | <el-input v-model="form.rummager" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeReturnDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | returnSubstance |
| | | } from "@/api/cnas/resourceDemand/standardMaterial/standardMaterial"; |
| | | |
| | | export default { |
| | | name: 'returnDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | name: '', |
| | | model: '', |
| | | returnedPerson: '', |
| | | returnDate: '', |
| | | returnIntegrity: '', |
| | | rummager: '', |
| | | }, |
| | | rules: { |
| | | }, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (row) { |
| | | this.formDia = true |
| | | this.form.name = row.name |
| | | this.form.model = row.model |
| | | this.form.substanceId = row.id |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | this.form.status = '1'; |
| | | returnSubstance(this.form).then(res => { |
| | | this.loading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('æä½æå') |
| | | this.closeReturnDia() |
| | | } |
| | | }) |
| | | let internalReport = this.HaveJson(this.form) |
| | | |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeReturnDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeReturnDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="æ åç©è´¨åç§°" prop="name"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.name" |
| | | @keyup.enter.native="searchList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶" prop="factoryManufacturer"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.factoryManufacturer" |
| | | @keyup.enter.native="searchList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">æ¥ è¯¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <el-button size="medium" @click="exportFun">导 åº</el-button> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <form-dia v-if="formDia" ref="formDia" @closeYearDia="closeYearDia"></form-dia> |
| | | <borrow-dia v-if="borrowDia" ref="borrowDia" @closeYearDia="closeBorrowDia"></borrow-dia> |
| | | <return-dia v-if="returnDia" ref="returnDia" @closeYearDia="closeReturnDia"></return-dia> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | // import FormDia from '../do/a6-standard-material-list/formDia.vue'; |
| | | // import BorrowDia from '../do/a6-standard-material-list/borrowDia.vue'; |
| | | // import ReturnDia from '../do/a6-standard-material-list/returnDia.vue'; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | | getPageStandardSubstance, |
| | | removeStandardSubstance, |
| | | exportOfStandardSubstanceList |
| | | } from '@/api/cnas/resourceDemand/standardMaterial/standardMaterial' |
| | | import FormDia from '../standardMaterial/component/formDia.vue'; |
| | | import BorrowDia from '../standardMaterial/component/borrowDia.vue'; |
| | | import ReturnDia from '../standardMaterial/component/returnDia.vue'; |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | FormDia, |
| | | BorrowDia, |
| | | ReturnDia |
| | | }, |
| | | data() { |
| | | return { |
| | | searchForm: { |
| | | name: '', |
| | | factoryManufacturer: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ åç©è´¨åç§°', |
| | | prop: 'name', |
| | | minWidth: '120' |
| | | }, |
| | | { |
| | | label: 'è§æ ¼åå·', |
| | | prop: 'model', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ç产åå®¶', |
| | | prop: 'factoryManufacturer', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åºåç¼å·', |
| | | prop: 'factoryNum', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '管çç¼å·', |
| | | prop: 'manageNum', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¸ç¡®å®åº¦', |
| | | prop: 'uncertainty', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'æ°é', |
| | | prop: 'quantity', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è´ç½®æ¥æ', |
| | | prop: 'acquisitionDate', |
| | | minWidth: '150' |
| | | }, |
| | | { |
| | | label: 'æææ', |
| | | prop: 'effectiveDate', |
| | | minWidth: '150' |
| | | }, |
| | | { |
| | | label: 'æ¡£æ¡ç¼å·', |
| | | prop: 'fileNum', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åæ¾ä½ç½®', |
| | | prop: 'position', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '夿³¨', |
| | | prop: 'remark', |
| | | minWidth: '100' |
| | | }, |
| | | // { |
| | | // label: 'å建人', |
| | | // prop: 'createUser', |
| | | // minWidth: '100' |
| | | // }, |
| | | { |
| | | label: 'å建æ¶é´', |
| | | prop: 'createTime', |
| | | minWidth: '150' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | minWidth: '180', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'åç¨', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.borrow(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å½è¿', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.return(row); |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | total: 0, |
| | | formDia: false, |
| | | borrowDia: false, |
| | | returnDia: false, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | methods :{ |
| | | exportFun() { |
| | | this.outLoading = true |
| | | exportOfStandardSubstanceList(this.searchForm).then(res =>{ |
| | | this.outLoading = false |
| | | const blob = new Blob([res], {type: 'application/octet-stream'},false); |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æ åç©è´¨æ¸
å.xlsx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æ åç©è´¨æ¸
å.xlsx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | this.tableLoading = true |
| | | getPageStandardSubstance({ |
| | | ...this.page, |
| | | ...this.searchForm |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | removeStandardSubstance({id:row.id}).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeYearDia () { |
| | | this.formDia = false |
| | | this.searchList() |
| | | }, |
| | | // åç¨ |
| | | borrow (row) { |
| | | this.borrowDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.borrowDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeBorrowDia () { |
| | | this.borrowDia = false |
| | | this.searchList() |
| | | }, |
| | | // å½è¿ |
| | | return (row) { |
| | | this.returnDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.returnDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeReturnDia () { |
| | | this.returnDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.name = ''; |
| | | this.searchForm.factoryManufacturer = ''; |
| | | this.searchList() |
| | | }, |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | // å页 |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog :visible.sync="dialogVisible" title="æ åç©è´¨éªæ¶è®°å½" width="70%"> |
| | | <!-- <el-steps :active="currentStep" finish-status="success"> |
| | | <el-step class="cursor-pointer" v-for="(item, index) in steps" :key="index" :title="item"> |
| | | </el-step> |
| | | </el-steps> --> |
| | | <!-- <el-form :model="model" label-width="140px" size="small">--> |
| | | <!-- <Step1 :model.sync="model"></Step1>--> |
| | | <!-- </el-form>--> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="submit">ä¿ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | // import Step1 from './Step/Step1.vue' |
| | | export default { |
| | | components: { |
| | | // Step1 |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | currentStep: 0, // æ¥éª¤æ¡æ¾ç¤ºç¬¬å æ¥ |
| | | // steps: ['æäº¤', 'å¼ç®±éªæ¶å¤æ ¸', 'å®è£
éªæ¶æ£æ¥', 'å®è£
éªæ¶å¤æ ¸', 'éªæ¶æ ¸æ¥', 'éªæ¶æ ¸æ¥å®¡æ ¸'], |
| | | model: { |
| | | acceptance: { |
| | | id: undefined, |
| | | producer: undefined, // å家代表 |
| | | file: undefined, // ç¸å
³éä»¶ |
| | | recipient: undefined, // æ¥æ¶äºº |
| | | signature: undefined, // æ¥åç¾å |
| | | situation: undefined, // éªæ¶æ
åµ |
| | | installation: undefined, // å®è£
è°è¯æ
åµ |
| | | substanceId: undefined, // æ¸
å |
| | | arriveDate: undefined, // å°è´§æ¥æ |
| | | maintenanceUnit: undefined, // ç»´ä¿®åä½ |
| | | }, |
| | | list: [] |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | model(newVal) { |
| | | this.model = newVal |
| | | } |
| | | }, |
| | | methods: { |
| | | clearForm() { |
| | | this.model.acceptance.id = undefined |
| | | this.model.acceptance.producer = undefined |
| | | this.model.acceptance.file = undefined |
| | | this.model.acceptance.recipient = undefined |
| | | this.model.acceptance.signature = undefined |
| | | this.model.acceptance.situation = undefined |
| | | this.model.acceptance.installation = undefined |
| | | this.model.acceptance.substanceId = undefined |
| | | this.model.acceptance.arriveDate = undefined |
| | | this.model.acceptance.maintenanceUnit = undefined |
| | | this.model.list = [] |
| | | }, |
| | | openDialog(form) { |
| | | console.log(form) |
| | | if(form) { |
| | | this.model.acceptance.id = form.acceptance.id |
| | | this.model.acceptance.producer = form.acceptance.producer |
| | | this.model.acceptance.file = form.acceptance.file |
| | | this.model.acceptance.recipient = form.acceptance.recipient |
| | | this.model.acceptance.signature = form.acceptance.signature |
| | | this.model.acceptance.situation = form.acceptance.situation |
| | | this.model.acceptance.installation = form.acceptance.installation |
| | | this.model.acceptance.substanceId = form.acceptance.substanceId |
| | | this.model.acceptance.arriveDate = form.acceptance.arriveDate |
| | | this.model.acceptance.maintenanceUnit = form.acceptance.maintenanceUnit |
| | | this.model.list = form.list |
| | | } else { |
| | | this.clearForm() |
| | | } |
| | | this.dialogVisible = true |
| | | }, |
| | | closeDialog() { |
| | | this.dialogVisible = false |
| | | }, |
| | | submit() { |
| | | if (!this.model.acceptance.substanceId) { |
| | | this.$message.warning('è¯·éæ©æ¸
å') |
| | | return |
| | | } |
| | | this.$emit('submit', this.model) |
| | | this.closeDialog() |
| | | } |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .cursor-pointer { |
| | | cursor: pointer; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!--<template>--> |
| | | <!-- <el-card class="card">--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="å家代表">--> |
| | | <!-- <el-input v-model="model.acceptance.producer"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="ç¸å
³éä»¶">--> |
| | | <!-- <div class="table-between">--> |
| | | <!-- <el-input v-model="model.acceptance.file" style="width: 82%;"></el-input>--> |
| | | <!-- <el-upload--> |
| | | <!-- ref="upload"--> |
| | | <!-- style="float: left; margin: 0 12px 0 20px;"--> |
| | | <!-- :action="action"--> |
| | | <!-- :show-file-list="false"--> |
| | | <!-- :on-success="onSuccess"--> |
| | | <!-- >--> |
| | | <!-- <el-button type="primary">--> |
| | | <!-- éä»¶ä¸ä¼ --> |
| | | <!-- </el-button>--> |
| | | <!-- </el-upload>--> |
| | | <!-- </div>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="æ¥æ¶äºº">--> |
| | | <!-- <el-input v-model="model.acceptance.recipient"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="æ¥åç¾å">--> |
| | | <!-- <el-input v-model="model.acceptance.signature"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="éªæ¶æ
åµ">--> |
| | | <!-- <el-input v-model="model.acceptance.situation"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="å®è£
è°è¯æ
åµ">--> |
| | | <!-- <el-input v-model="model.acceptance.installation"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="æ¸
å" prop="substanceId" required>--> |
| | | <!-- <el-select v-model="model.acceptance.substanceId" placeholder="è¯·éæ©" style="width: 100%">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in options"--> |
| | | <!-- :key="item.value"--> |
| | | <!-- :label="item.name"--> |
| | | <!-- :value="item.id">--> |
| | | <!-- </el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="å°è´§æ¥æ">--> |
| | | <!-- <el-date-picker--> |
| | | <!-- v-model="model.acceptance.arriveDate"--> |
| | | <!-- align="right"--> |
| | | <!-- type="date"--> |
| | | <!-- placeholder="éæ©æ¥æ"--> |
| | | <!-- style="width: 100%"--> |
| | | <!-- value-format="yyyy-MM-dd"--> |
| | | <!-- >--> |
| | | <!-- </el-date-picker>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="ç»´ä¿®åä½">--> |
| | | <!-- <el-input v-model="model.acceptance.maintenanceUnit"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="24">--> |
| | | <!-- <el-form-item label="å¤ä»¶ç¡®è®¤">--> |
| | | <!-- <el-button type="primary" style="float: right;" @click="addSpareTable">å¢å è¡</el-button>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="24">--> |
| | | <!-- <el-form-item>--> |
| | | <!-- <ZTTable--> |
| | | <!-- style="margin-bottom: 20px;"--> |
| | | <!-- :column="spareColumns"--> |
| | | <!-- :table-data="model.list"--> |
| | | <!-- >--> |
| | | <!-- <template slot="name" slot-scope="{ row, index }">--> |
| | | <!-- <el-input v-if="row.isEdit" size="small" v-model="row.name"></el-input>--> |
| | | <!-- <span v-else>{{ row.name }}</span>--> |
| | | <!-- </template>--> |
| | | <!-- <template slot="number" slot-scope="{ row, index }">--> |
| | | <!-- <el-input v-if="row.isEdit" size="small" v-model="row.number"></el-input>--> |
| | | <!-- <span v-else>{{ row.number }}</span>--> |
| | | <!-- </template>--> |
| | | <!-- <template slot="action" slot-scope="{ row, index }">--> |
| | | <!-- <div v-if="row.isEdit">--> |
| | | <!-- <el-button type="text" @click="save(index)">ä¿å</el-button>--> |
| | | <!-- <el-button type="text">åæ¶</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- <div v-else>--> |
| | | <!-- <el-button type="text" @click="edit(index)">ä¿®æ¹</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- </template>--> |
| | | <!-- </ZTTable>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-card>--> |
| | | <!--</template>--> |
| | | |
| | | <!--<script>--> |
| | | <!--import ZTTable from '@/components/caorui/ZTTable/index.vue';--> |
| | | <!--import { getStandardSubstanceAll } from "@/assets/api/api";--> |
| | | <!--import axios from 'axios';--> |
| | | |
| | | <!--export default {--> |
| | | <!-- components: {--> |
| | | <!-- ZTTable--> |
| | | <!-- },--> |
| | | <!-- props: {--> |
| | | <!-- model: {--> |
| | | <!-- type: Object,--> |
| | | <!-- default: () => {}--> |
| | | <!-- }--> |
| | | <!-- },--> |
| | | <!-- data() {--> |
| | | <!-- return {--> |
| | | <!-- spareColumns: [--> |
| | | <!-- {--> |
| | | <!-- label: "åç§°",--> |
| | | <!-- prop: "name",--> |
| | | <!-- align: "center",--> |
| | | <!-- dataType: "slot",--> |
| | | <!-- slot: "name",--> |
| | | <!-- }, {--> |
| | | <!-- label: "æ°é",--> |
| | | <!-- prop: "number",--> |
| | | <!-- align: "center",--> |
| | | <!-- dataType: "slot",--> |
| | | <!-- slot: "number",--> |
| | | <!-- }, {--> |
| | | <!-- label: "æä½",--> |
| | | <!-- align: "center",--> |
| | | <!-- dataType: "slot",--> |
| | | <!-- slot: "action",--> |
| | | <!-- width: 150--> |
| | | <!-- }--> |
| | | <!-- ],--> |
| | | <!-- options: []--> |
| | | <!-- }--> |
| | | <!-- },--> |
| | | <!-- computed: {--> |
| | | <!-- action() {--> |
| | | <!-- return `${this.javaApi}/${this.$api.personnel.saveCNASFile}`--> |
| | | <!-- }--> |
| | | <!-- },--> |
| | | <!-- mounted() {--> |
| | | <!-- this.getStand()--> |
| | | <!-- },--> |
| | | <!-- methods: {--> |
| | | <!-- async getStand() {--> |
| | | <!-- const { code, data } = await axios({--> |
| | | <!-- url: getStandardSubstanceAll,--> |
| | | <!-- method: 'get'--> |
| | | <!-- })--> |
| | | <!-- this.options = data--> |
| | | <!-- },--> |
| | | <!-- addSpareTable() {--> |
| | | <!-- this.model.list.push({--> |
| | | <!-- acceptanceId: this.model.acceptance.id,--> |
| | | <!-- name: '',--> |
| | | <!-- number: '',--> |
| | | <!-- isEdit: true--> |
| | | <!-- })--> |
| | | <!-- },--> |
| | | <!-- onSuccess(response) {--> |
| | | <!-- this.model.acceptance.file = response.data--> |
| | | <!-- this.$emit('update:model', this.model)--> |
| | | <!-- },--> |
| | | <!-- save(index) {--> |
| | | <!-- this.model.list[index].isEdit = false--> |
| | | <!-- this.$emit('update:model', this.model)--> |
| | | <!-- },--> |
| | | <!-- edit(index) {--> |
| | | <!-- this.model.list[index].isEdit = true--> |
| | | <!-- }--> |
| | | <!-- }--> |
| | | <!--}--> |
| | | <!--</script>--> |
| | | |
| | | <!--<style scoped>--> |
| | | <!--.card {--> |
| | | <!-- margin-top: 1em;--> |
| | | <!-- height: 56vh;--> |
| | | <!-- overflow-y: scroll;--> |
| | | <!--}--> |
| | | <!--.table-between {--> |
| | | <!-- display: flex;--> |
| | | <!-- justify-content: space-between;--> |
| | | <!--}--> |
| | | <!--</style>--> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="form" ref="form" size="small" :inline="true"> |
| | | <el-form-item label="ç©è´¨åç§°"> |
| | | <el-input v-model="form.search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button @click="reset">é ç½®</el-button> |
| | | <el-button type="primary" @click="getTableData">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="openDialog">æ·»å éªæ¶</el-button> |
| | | <el-button size="small" type="primary" @click="exportExcel">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="columns" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <AddRecord ref="addRecordRef" @submit="submit"></AddRecord> |
| | | </div> |
| | | |
| | | <!-- <div class="tables">--> |
| | | <!-- <ZTTable--> |
| | | <!-- :column="columns"--> |
| | | <!-- :table-data="tableData"--> |
| | | <!-- >--> |
| | | <!-- <template slot="action" slot-scope="{ row }">--> |
| | | <!-- <el-button type="text" @click="edit(row)">ç¼è¾</el-button>--> |
| | | <!-- </template>--> |
| | | <!-- </ZTTable>--> |
| | | <!-- <div class="pagination">--> |
| | | <!-- <div></div>--> |
| | | <!-- <el-pagination--> |
| | | <!-- :page-size="pagination.pageSize"--> |
| | | <!-- :page-sizes="[10, 20, 30, 40]"--> |
| | | <!-- :total="pagination.total"--> |
| | | <!-- layout="total, sizes, prev, pager, next, jumper"--> |
| | | <!-- @current-change="handleCurrent"--> |
| | | <!-- @size-change="handleSize"--> |
| | | <!-- >--> |
| | | <!-- </el-pagination>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <AddRecord ref="addRecordRef" @submit="submit"></AddRecord>--> |
| | | </template> |
| | | |
| | | <script> |
| | | // import axios from "axios"; |
| | | // import { getPageAcceptance, addAcceptance, updateAcceptance, getAcceptanceDetails, exportAcceptance } from "@/assets/api/api"; |
| | | // import ZTTable from '@/components/caorui/ZTTable/index.vue'; |
| | | // import AddRecord from './components/AddRecord.vue'; |
| | | |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | | getPageAcceptance, |
| | | updateAcceptanc, |
| | | addAcceptance |
| | | } from '@/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept' |
| | | export default { |
| | | components: { |
| | | limsTable |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | | search: undefined |
| | | }, |
| | | columns: [ |
| | | { |
| | | label: "åºåºç¼å·", |
| | | prop: "factoryNum" |
| | | }, |
| | | { |
| | | label: "æææ", |
| | | prop: "effectiveDate" |
| | | }, |
| | | { |
| | | label: "ç产åå®¶", |
| | | prop: "factoryManufacturer" |
| | | }, |
| | | { |
| | | label: "ææ¡£ç¼å·", |
| | | prop: "fileNum" |
| | | }, |
| | | { |
| | | label: "æ åç©è´¨åç§°", |
| | | prop: "name" |
| | | }, |
| | | { |
| | | label: "è§æ ¼åå·", |
| | | prop: "model" |
| | | }, |
| | | { |
| | | label: "管çç¼å·", |
| | | prop: "manageNum" |
| | | }, |
| | | { |
| | | label: "åæ¾ä½ç½®", |
| | | prop: "position" |
| | | }, |
| | | // { |
| | | // label: "åºåå·", |
| | | // prop: "manageNum" |
| | | // }, |
| | | { |
| | | label: "æäº¤æ¥æ", |
| | | prop: "acquisitionDate" |
| | | }, |
| | | { |
| | | label: "æ°é", |
| | | prop: "quantity" |
| | | }, |
| | | { |
| | | fixed: "right", |
| | | label: "æä½", |
| | | align: "center", |
| | | dataType: "slot", |
| | | slot: "action", |
| | | }, |
| | | ], |
| | | tableData: [], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableLoading: false, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getTableData() |
| | | }, |
| | | methods: { |
| | | async getTableData() { |
| | | const res = await getPageAcceptance(this.form); |
| | | if(res.code === 200){ |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | |
| | | }, |
| | | openDialog() { |
| | | this.$refs.addRecordRef.openDialog() |
| | | }, |
| | | async submit(form) { |
| | | |
| | | const {code} = await form.acceptance.id ? updateAcceptanc(this.form):addAcceptance((this.form)); |
| | | if(code == 200) { |
| | | this.$message.success(`${form.acceptance.id ? 'ç¼è¾':'æ·»å '}æå`) |
| | | this.getTableData() |
| | | } |
| | | }, |
| | | async edit(row) { |
| | | const res = await this.getDetail(row.id) |
| | | this.$refs.addRecordRef.openDialog({ |
| | | acceptance: res.acceptance, |
| | | list: res.list |
| | | }) |
| | | }, |
| | | async getDetail(id) { |
| | | const { code, data } = await axios({ |
| | | method: 'get', |
| | | url: getAcceptanceDetails, |
| | | params: { id } |
| | | }) |
| | | if(code == 200) { |
| | | return data; |
| | | } |
| | | }, |
| | | reset() { |
| | | this.form.search = undefined |
| | | this.getTableData() |
| | | }, |
| | | async exportExcel() { |
| | | const res = await axios({ |
| | | method: "get", |
| | | url: `${exportAcceptance}`, |
| | | responseType: "blob" |
| | | }) |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | //å°Blob å¯¹è±¡è½¬æ¢æå符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æ åç©è´¨éªæ¶.xlsx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æ åç©è´¨éªæ¶.xlsx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.getTableData() |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="éä»¶" width="80%" @closed="closeFilesLook"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload" |
| | | :data="{ superviseDetailsCorrectId: info.superviseDetailsCorrectId }" :headers="uploadHeader" |
| | | :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-button size="small" style="height: 38px" type="primary">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </div> |
| | | <div> |
| | | <limsTable ref="yearTable" :column="columnData" :height="'calc(100vh - 30em)'" :highlightCurrentRow="true" |
| | | :table-data="tableData" :table-loading="tableLoading" style="margin-top: 0.5em;"> |
| | | </limsTable> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/word/' + currentInfo.fileUrl" |
| | | style="height: 90vh;overflow-y: auto;" /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | | import { |
| | | getSuperviseDetailCorrectFileList, |
| | | delSuperviseDetailCorrectFile, |
| | | } from '@/api/cnas/systemManagement/correctiveAction.js' |
| | | export default { |
| | | name: 'ViewTestRecord', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { filePreview, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | filesDialogVisible: false, |
| | | tableLoading: false, |
| | | filesLookInfo: {}, |
| | | columnData: [ |
| | | { |
| | | label: 'æä»¶åç§°', |
| | | prop: 'fileName', |
| | | minWidth: '150px' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '100', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | | { |
| | | name: 'é¢è§', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleLook(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.upload(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delete(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | info: {}, |
| | | currentInfo: {}, |
| | | lookDialogVisible: false, |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(row) { |
| | | this.filesDialogVisible = true |
| | | this.info = row |
| | | this.searchTableList() |
| | | }, |
| | | // æ¥è¯¢éä»¶å表 |
| | | searchTableList() { |
| | | this.tableLoading = true |
| | | getSuperviseDetailCorrectFileList({ superviseDetailsCorrectId: this.info.superviseDetailsCorrectId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | closeFilesLook() { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | // æ¥çæä»¶ |
| | | handleLook(row) { |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true |
| | | }, |
| | | // ä¸è½½ |
| | | upload(row) { |
| | | let url = ''; |
| | | if (row.type == 1) { |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | } else { |
| | | url = this.javaApi + '/word/' + row.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | } |
| | | }, |
| | | // å é¤ |
| | | delete(row) { |
| | | this.tableLoading = true |
| | | delSuperviseDetailCorrectFile({ superviseDetailsCorrectFileId: row.superviseDetailsCorrectFileId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchTableList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // ä¸ä¼ éªè¯ |
| | | fileBeforeUpload(file) { |
| | | let flag = true |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | flag = false |
| | | } |
| | | if (!flag) { |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | onError(err, file, fileList, type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response,) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.searchTableList() |
| | | } |
| | | }, |
| | | }, |
| | | computed: { |
| | | fileAction() { |
| | | return this.javaApi + '/qualitySupervise/uploadSuperviseDetailCorrectFile' |
| | | |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped></style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="formDia" title="çº æ£æªæ½å¤çå" |
| | | width="60%" @close="closeProcessingDia"> |
| | | <div style="height: 660px; overflow-y: auto"> |
| | | <table border="1" cellspacing="10" class="tables"> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>å¹è®è®¡åï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-select v-model="form.personTrainingDetailedId" clearable filterable style="width: 100%" disabled |
| | | placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="item in yearTrainingDetailed" :key="item.id" :label="item.trainingObjectives" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>ä¸åæ ¼æå离äºå®çæè¿°ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <span class="td-info1"> {{ form.raiseResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æåºäººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.raiseUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>æåºé¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.raiseDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.raiseTime }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>åå åæï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <span class="td-info1"> {{ form.causeResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>åå åæäººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.causeUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>责任é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.causeDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>åå åææ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.causeTime }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>çº æ£æªæ½ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <span class="td-info1"> {{ form.correctResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æåºè¦æ±é¨é¨ç¡®è®¤ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <span class="td-info1"> {{ form.raiseDepartmentAffirm }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>çº æ£äººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.correctUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>责任é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.correctDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>çº æ£æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.correctTime }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>宿½éªè¯ç»æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <span class="td-info1"> {{ form.validationResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>éªè¯äººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.validationUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>责任é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.validationDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>éªè¯æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.validationTime }} |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getSuperviseDetailCorrect, |
| | | getThisYearTrainingDetailed, |
| | | } from '@/api/cnas/systemManagement/correctiveAction.js' |
| | | export default { |
| | | name: 'correctiveInfo', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | yearTrainingDetailed: [], |
| | | form: { |
| | | superviseDetailsId: '', |
| | | raiseResult: '', |
| | | vdeRaiseResult: '', |
| | | causeUserId: '', |
| | | raiseUserName: '', |
| | | raiseDepartment: '', |
| | | raiseTime: '', |
| | | causeResult: '', |
| | | causeUserName: '', |
| | | causeDepartment: '', |
| | | causeTime: '', |
| | | correctUserId: '', |
| | | correctResult: '', |
| | | raiseDepartmentAffirm: '', |
| | | correctUserName: '', |
| | | correctDepartment: '', |
| | | correctTime: '', |
| | | validationUserId: '', |
| | | validationResult: '', |
| | | validationUserName: '', |
| | | validationDepartment: '', |
| | | validationTime: '', |
| | | }, |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(row) { |
| | | this.formDia = true |
| | | this.searchInfo(row) |
| | | this.form.superviseDetailsId = row.superviseDetailsId |
| | | this.getYearTrainingDetailed() // è·åå¹è®è®¡å |
| | | }, |
| | | // æ¥è¯¢çæ§è®¡å详æ
宿½ä¿¡æ¯ |
| | | searchInfo(row) { |
| | | this.form.qualityMonitorDetailsId = row.qualityMonitorDetailsId |
| | | getSuperviseDetailCorrect({ superviseDetailsId: row.superviseDetailsId }).then(res => { |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | getYearTrainingDetailed() { |
| | | getThisYearTrainingDetailed().then(res => { |
| | | this.yearTrainingDetailed = res.data |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeProcessingDia() { |
| | | this.formDia = false |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 5vh auto 50px !important; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .td-title { |
| | | height: 40px; |
| | | width: 170px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 6px; |
| | | } |
| | | |
| | | .td-info { |
| | | padding: 6px; |
| | | } |
| | | |
| | | .td-info1 { |
| | | display: inline-block; |
| | | width: 100%; |
| | | text-align: left; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 150px">ä¸åæ ¼æè¿°ï¼</span> |
| | | <el-input v-model="searchForm.raiseResult" clearable size="small"></el-input> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="small" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 17em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" @pagination="pagination" |
| | | :page="page"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | </div> |
| | | <corrective-info v-if="correctiveInfo" ref="correctiveInfo"></corrective-info> |
| | | <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog"></ViewTestRecord> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import CorrectiveInfo from './components/correctiveInfo.vue'; |
| | | // import QualityInfo from '../do/a7-nonconforming-item/qualityInfo.vue'; |
| | | import ViewTestRecord from './components/ViewTestRecord.vue'; |
| | | import { |
| | | pageSuperviseDetailCorrect, |
| | | exportSuperviseDetaillCorrect, |
| | | } from '@/api/cnas/systemManagement/correctiveAction.js' |
| | | |
| | | export default { |
| | | name: 'a8-corrective-action', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { |
| | | // QualityInfo, |
| | | CorrectiveInfo, |
| | | limsTable, |
| | | TableCard, |
| | | ViewTestRecord |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | raiseResult: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'ä¸åæ ¼æå离äºå®çæè¿°', |
| | | prop: 'raiseResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åå åæ', |
| | | prop: 'causeResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'çº æ£æªæ½', |
| | | prop: 'correctResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '宿½éªè¯ç»æ', |
| | | prop: 'validationResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '60', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'æ¥ç', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.viewInfo(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'æ¥çéä»¶', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.viewFiles(row); |
| | | }, |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | correctiveInfo: false, |
| | | viewTestRecordDialog: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = { |
| | | raiseResult: this.searchForm.raiseResult, |
| | | } |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageSuperviseDetailCorrect({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportSuperviseDetaillCorrect({ superviseDetailsCorrectId: row.superviseDetailsCorrectId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'çç£çº æ£æªæ½' + '.docx'); |
| | | }) |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.raiseResult = ''; |
| | | this.searchList() |
| | | }, |
| | | // æ¥ç详æ
|
| | | viewInfo(row) { |
| | | this.correctiveInfo = true |
| | | this.$nextTick(() => { |
| | | this.$refs.correctiveInfo.openDia(row) |
| | | }) |
| | | }, |
| | | // æ¥çéä»¶ |
| | | viewFiles(row) { |
| | | this.viewTestRecordDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.viewTestRecordDialog.openDia(row) |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .view-title { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 60px; |
| | | padding-left: 20px; |
| | | } |
| | | |
| | | .search-background { |
| | | width: 100%; |
| | | height: 80px; |
| | | line-height: 80px; |
| | | background-color: #ffffff; |
| | | display: flex; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | |
| | | .table { |
| | | background-color: #ffffff; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="formDia" title="å®¢æ·æ»¡æåº¦è°æ¥è¡¨" |
| | | width="70%" @close="closeFormDia"> |
| | | <table border="1" cellspacing="10" class="tables"> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>åä½åç§°ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-input v-model="form.unitName" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-date-picker v-model="form.fillDate" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>å§åï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | <el-input v-model="form.userName" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | <el-input v-model="form.department" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>èç³»çµè¯ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | <el-input v-model="form.contactNumber" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æå¡æåº¦ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-radio-group v-model="form.serviceAttitude" v-removeAriaHidden> |
| | | <el-radio :label="0">满æ</el-radio> |
| | | <el-radio :label="1">ä¸è¬</el-radio> |
| | | <el-radio :label="2">䏿»¡æ</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>建议ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-input v-model="form.serviceAttitudeSuggestion" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>ææ¯è½åï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-radio-group v-model="form.technicalCompetence" v-removeAriaHidden> |
| | | <el-radio :label="0">满æ</el-radio> |
| | | <el-radio :label="1">ä¸è¬</el-radio> |
| | | <el-radio :label="2">䏿»¡æ</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>建议ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-input v-model="form.technicalCompetenceSuggestion" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æ£æµå·¥ä½ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-radio-group v-model="form.inspectionWork" v-removeAriaHidden> |
| | | <el-radio :label="0">满æ</el-radio> |
| | | <el-radio :label="1">ä¸è¬</el-radio> |
| | | <el-radio :label="2">䏿»¡æ</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>建议ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-input v-model="form.inspectionWorkSuggestion" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æ¶è´¹åçæ§ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-radio-group v-model="form.reasonableFees" v-removeAriaHidden> |
| | | <el-radio :label="0">满æ</el-radio> |
| | | <el-radio :label="1">ä¸è¬</el-radio> |
| | | <el-radio :label="2">䏿»¡æ</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>建议ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="2"> |
| | | <el-input v-model="form.reasonableFeesSuggestion" placeholder="请è¾å
¥å
容" size="small"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="td-title"> |
| | | <p>æ¨å¯¹æä»¬ç叿ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="5"> |
| | | <el-input v-model="form.remark" :rows="4" placeholder="请è¾å
¥å
容" size="small" type="textarea"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeFormDia">å æ¶</el-button> |
| | | <el-button :loading="editLoad" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | addClientSatisfaction, |
| | | updateClientSatisfaction |
| | | } from '@/api/cnas/systemManagement/customerSatisfaction.js' |
| | | export default { |
| | | name: 'formDialog', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | form: { |
| | | unitName: '', |
| | | fillDate: '', |
| | | userName: '', |
| | | department: '', |
| | | contactNumber: '', |
| | | serviceAttitude: '', |
| | | technicalCompetence: '', |
| | | technicalCompetenceSuggestion: '', |
| | | inspectionWork: '', |
| | | inspectionWorkSuggestion: '', |
| | | reasonableFees: '', |
| | | reasonableFeesSuggestion: '', |
| | | remark: '', |
| | | clientSatisfactionId: '', |
| | | }, |
| | | operationType: '', |
| | | editLoad: false, |
| | | |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(type, row) { |
| | | this.formDia = true; |
| | | this.operationType = type |
| | | if (this.operationType === 'edit') { |
| | | this.form = { ...row } |
| | | } |
| | | }, |
| | | handleEdit() { |
| | | if (!this.form.unitName) { |
| | | this.$message.warning('请填ååä½åç§°') |
| | | return |
| | | } |
| | | if (!this.form.department) { |
| | | this.$message.warning('请填åé¨é¨') |
| | | return |
| | | } |
| | | this.editLoad = true |
| | | if (this.operationType === 'add') { |
| | | addClientSatisfaction(this.form).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æäº¤æå') |
| | | this.closeFormDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | } else { |
| | | updateClientSatisfaction(this.form).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æäº¤æå') |
| | | this.closeFormDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | } |
| | | }, |
| | | closeFormDia() { |
| | | this.formDia = false; |
| | | this.$emit('closeFormDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 10vh auto 50px !important; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .td-title { |
| | | height: 40px; |
| | | width: 170px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 6px; |
| | | } |
| | | |
| | | .td-info { |
| | | padding: 6px; |
| | | } |
| | | |
| | | .td-info1 { |
| | | display: inline-block; |
| | | width: 100%; |
| | | text-align: left; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span v-if="tabIndex === '0'" class="search-group"> |
| | | <span style="width: 150px">åä½åç§°ï¼</span> |
| | | <el-input v-model="searchForm.unitName" clearable size="small"></el-input> |
| | | </span> |
| | | <span v-if="tabIndex === '1'" class="search-group"> |
| | | <span style="width: 150px">æä»¶åç§°ï¼</span> |
| | | <el-input v-model="searchForm1.fileName" clearable size="small"></el-input> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="small" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <div class="btn"> |
| | | <el-button v-if="tabIndex === '0'" size="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | <el-upload v-if="tabIndex === '1'" ref='upload' :action="action" :before-upload="beforeUpload" |
| | | :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'> |
| | | <el-button :loading="upLoading" size="small" type="primary">导å
¥</el-button> |
| | | </el-upload> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <div class="table-tab"> |
| | | <el-radio-group v-model="tabIndex" @change="searchList" size="small"> |
| | | <el-radio-button label="0">å®¢æ·æ»¡æåº¦</el-radio-button> |
| | | <el-radio-button label="1">综ååæ</el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-if="tabIndex === '0'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 22em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" @pagination="pagination" |
| | | :page="page"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | <div v-if="tabIndex === '1'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 22em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" style="padding: 0 15px;margin-bottom: 16px" @pagination="pagination0"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/word/' + currentInfo.fileUrl" |
| | | style="height: 90vh;overflow-y: auto;" /> |
| | | </el-dialog> |
| | | <FormDialog v-if="formDialog" ref="formDialog" @closeFormDia="closeFormDia"></FormDialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import FormDialog from './components/formDialog.vue'; |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | | import { |
| | | pageClientSatisfaction, |
| | | pageAnalyseFile, |
| | | delClientSatisfaction, |
| | | delAnalyseFile, |
| | | } from '@/api/cnas/systemManagement/customerSatisfaction.js' |
| | | |
| | | export default { |
| | | name: 'a8-customer-satisfaction', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { filePreview, FormDialog, limsTable, TableCard }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | unitName: '', |
| | | }, |
| | | searchForm1: { |
| | | fileName: '', |
| | | }, |
| | | tabIndex: '0', |
| | | tableColumn: [ |
| | | { |
| | | label: 'åä½åç§°', |
| | | prop: 'unitName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'æ¥æ', |
| | | prop: 'fillDate', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å§å', |
| | | prop: 'userName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'é¨é¨', |
| | | prop: 'department', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'èç³»çµè¯', |
| | | prop: 'contactNumber', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åå»ºæ¥æ', |
| | | prop: 'createTime', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '80', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | tableColumn1: [ |
| | | { |
| | | label: 'éä»¶åç§°', |
| | | prop: 'fileName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å建人', |
| | | prop: 'userName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å建æ¶é´', |
| | | prop: 'createTime', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '50', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'é¢è§', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleLook(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.upload(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delFile(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | page1: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total1: 0, |
| | | formDialog: false, |
| | | upLoading: false, |
| | | currentInfo: {}, |
| | | lookDialogVisible: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = this.tabIndex === '0' ? this.searchForm : this.searchForm1 |
| | | const page = this.tabIndex === '0' ? this.page : this.page1 |
| | | if (this.tabIndex === '0') { |
| | | this.tableLoading = true |
| | | pageClientSatisfaction({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | } else { |
| | | this.tableLoading1 = true |
| | | pageAnalyseFile({ ...entity, ...page }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 201) return |
| | | this.tableData1 = res.data.records |
| | | this.total1 = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading1 = false |
| | | }) |
| | | } |
| | | }, |
| | | openFormDia(type, row) { |
| | | this.formDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDialog.openDia(type, row); |
| | | }) |
| | | }, |
| | | closeFormDia() { |
| | | this.formDialog = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.unitName = ''; |
| | | this.searchForm1.fileName = ''; |
| | | this.searchList() |
| | | }, |
| | | // 导å
¥æµç¨ |
| | | beforeUpload(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | return false; |
| | | } else { |
| | | this.upLoading = true; |
| | | return true; |
| | | } |
| | | }, |
| | | onError(err, file, fileList) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.searchList() |
| | | } |
| | | }, |
| | | // å é¤å®¢æ·æ»¡æåº¦ |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delClientSatisfaction({ clientSatisfactionId: row.clientSatisfactionId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ¥çæä»¶ |
| | | handleLook(row) { |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true |
| | | }, |
| | | // ä¸è½½å®¢æ·ç¦å»º |
| | | upload(row) { |
| | | let url = ''; |
| | | if (row.type == 1) { |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | file.downloadIamge(url, row.fileName) |
| | | } else { |
| | | url = this.javaApi + '/word/' + row.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | | link.click(); |
| | | } |
| | | }, |
| | | // å é¤å®¢æ·åæéä»¶ |
| | | delFile(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delAnalyseFile({ analyseFileId: row.analyseFileId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å页 |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | // å页 |
| | | pagination0({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + '/clientSatisfaction/uploadAnalyseFile' |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .view-title { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 60px; |
| | | padding-left: 20px; |
| | | } |
| | | |
| | | .search-background { |
| | | width: 100%; |
| | | height: 80px; |
| | | line-height: 80px; |
| | | background-color: #ffffff; |
| | | display: flex; |
| | | position: relative; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | |
| | | .table { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .table-tab { |
| | | margin: 0 20px 20px 20px; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | top: 16px; |
| | | right: 20px; |
| | | } |
| | | </style> |
| | |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :title="'æ·»å ' + radio + 'è®°å½'" :visible.sync="addDialogVisible" top="10vh" width="800px"> |
| | | <el-row> |
| | | <el-row v-if="addDialogVisible"> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>ç³è¯·ç¼å·ï¼</div> |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">ä¸ä¼ éä»¶ï¼</div> |
| | | <div class="search_input"><el-upload :auto-upload="false" :multiple="false" :on-change="handleChangeUpload" |
| | | accept='.pdf,.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx' action="#" style="margin: 8px 0 0px 50px;"> |
| | | accept='.pdf,.doc,.docx,.xls,.xlsx' action="#" style="margin: 8px 0 0px 50px;"> |
| | | <el-button size="small" type="primary">ä¸ä¼ éä»¶</el-button> |
| | | </el-upload></div> |
| | | </div> |
| | |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns" style="padding-left: 30px;"> |
| | | <el-upload :action="action" :multiple="false" accept='.xls,.xlsx' :headers="headers" :on-change="beforeUpload" |
| | | :on-error="onError" ref='upload' :on-success="handleSuccessUp" :show-file-list="false"> |
| | | <el-upload :action="action" :multiple="false" accept='.xls,.xlsx' :headers="uploadHeader" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' :on-success="handleSuccessUp" |
| | | :show-file-list="false"> |
| | | <el-button size="small" type="primary" :loading="upLoading">导å
¥</el-button></el-upload> |
| | | </div> |
| | | </div> |
| | |
| | | delManageDocumentList, |
| | | doManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | import { getToken } from "@/utils/auth"; |
| | | export default { |
| | | components: { |
| | | UpPdfStamp, |
| | |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + '/manageDocumentList/exportManageDocumentList' |
| | | } |
| | |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button size="small" type="primary" @click="openAdd('æ°å¢')">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' :headers="headers" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' :on-success="handleSuccessUp" |
| | | style="display:inline-block;margin-left: 20px;"> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + '/manageRecordCheck/exportInManageRecordCheck' |
| | | } |
| | |
| | | <template> |
| | | <!-- ä½åºæä»¶éæ¯è®°å½ --> |
| | | <div class="ObsoleteDocumentDestructionRecords"> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">ä½åºæä»¶éæ¯è®°å½</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' :headers="headers" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" |
| | | style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="medium">导å
¥</el-button></el-upload> |
| | | <el-button size="medium" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="componentData.entity.documentName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.documentCode" |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button size="small" type="primary" @click="openAdd">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable" :url="$api.manageRecordCancel.pageManageRecordCancel" |
| | | :delUrl="$api.manageRecordCancel.delManageRecordCancel" :componentData="componentData" |
| | | :upUrl="$api.manageRecordIssueRecycle.doManageRecordIssueRecycle" :key="upIndex" /> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 260px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :title="title" :visible.sync="addDialogVisible" width="400px" top="6vh"> |
| | | <el-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table//value-table.vue' |
| | | import { getToken } from "@/utils/auth"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import { |
| | | exportOutManageRecordCancel, |
| | | addManageRecordCancel, |
| | | doManageRecordCancel, |
| | | ratifyManageRecordCancel, |
| | | delManageRecordCancel, |
| | | pageManageRecordCancel |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | import { |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | export default { |
| | | components: { |
| | | ValueTable |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | upPower: true, |
| | | outLoading: false, |
| | | addLoading: false, |
| | | componentData: { |
| | | entity: { |
| | | documentName: null, |
| | | documentCode: null, |
| | | orderBy: { |
| | | field: 'createTime', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | // selectMethod: 'handleChangeTask', |
| | | do: [{ |
| | | id: 'handleEdit0', |
| | | font: 'ä¿®æ¹', |
| | | type: 'text', |
| | | method: 'handleEdit0', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return row.ratifyState == 'éè¿' |
| | | } |
| | | }, { |
| | | id: 'handleRatify', |
| | | font: 'æ¹å', |
| | | type: 'text', |
| | | method: 'handleRatify', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return row.ratifyState == 'éè¿' |
| | | } |
| | | }, { |
| | | id: 'delete', |
| | | font: 'å é¤', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | disabFun: (row, index) => { |
| | | return row.ratifyState == 'éè¿' |
| | | } |
| | | },], |
| | | tagField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | selectField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | addUpload: ['signatoryUrl'], |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | datePicker: ['receiveDate'], |
| | | noHead: ['signedUserName', 'signedDate', 'departLims'],//ä¸å䏿°å¢ç¼è¾çåæ®µ |
| | | needSort: [], |
| | | inputType: '' |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | addInfo: {}, |
| | | title: 'æ°å¢', |
| | | addInfo: {}, |
| | | addDialogVisible: false, |
| | | fileList: [], |
| | | personList: [], |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "æä»¶ç¼å·", prop: "documentCode" }, |
| | | { label: "æä»¶åç§°", prop: "documentName", width: "120px" }, |
| | | { |
| | | label: "æ°é", |
| | | prop: "qty", |
| | | }, |
| | | { label: "鿝åå ", prop: "reason" }, |
| | | { label: "ç³è¯·äºº", prop: "createUserName" }, |
| | | { label: "ç³è¯·æ¥æ", prop: "createTime" }, |
| | | { label: "æ¹å人", prop: "ratifyUserName" }, |
| | | { label: "æ¹åæ¥æ", prop: "ratifyTime" }, |
| | | { label: "夿³¨", prop: "remark" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "ç¼è¾", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleEdit0(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.ratifyState == 'éè¿' |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¹å", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleRatify(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.ratifyState == 'éè¿' |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.ratifyState == 'éè¿' |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.manageRecordCancel.exportInManageRecordCancel |
| | | return this.javaApi + '/manageRecordCancel/exportInManageRecordCancel' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getPower() |
| | | // this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getList() |
| | | this.getAuthorizedPerson() |
| | | this.getFileList() |
| | | }, |
| | |
| | | this.upPower = up |
| | | }, |
| | | openAdd() { |
| | | // this.$refs.ValueTable.openAddDia(this.$api.manageRecordIssueRecycle.addManageRecordIssueRecycle); |
| | | this.addInfo = {} |
| | | this.title = 'æ°å¢' |
| | | this.addDialogVisible = true; |
| | |
| | | // å¯¼åº |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.manageRecordCancel.exportOutManageRecordCancel, { entity: this.componentData.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { |
| | | exportOutManageRecordCancel(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导åºå¤±è´¥') |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + 'word/' + res.message |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'ä½åºæä»¶éæ¯è®°å½'; |
| | | link.click(); |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, "ä½åºæä»¶éæ¯è®°å½"); |
| | | }) |
| | | }, |
| | | refreshTable() { |
| | | this.refreshTable()() |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManageRecordCancel({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | this.refreshTable() |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | beforeUpload(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | |
| | | }, |
| | | // è·åæä»¶å表--æä»¶æ¸
å |
| | | getFileList() { |
| | | this.$axios.post(this.$api.manageDocumentList.pageManageDocumentList, { |
| | | entity: { |
| | | orderBy: { |
| | | field: 'createTime', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | page: { |
| | | pageManageDocumentList({ |
| | | current: -1, |
| | | size: -1 |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.fileList = res.data.body.records.map(m => { |
| | | this.fileList = res.data.records.map(m => { |
| | | m.title = m.documentCode |
| | | return m |
| | | }) |
| | |
| | | let { id, documentCode, documentName, qty, reason, remark } = this.addInfo |
| | | obj = { id, documentCode, documentName, qty, reason, remark } |
| | | } |
| | | this.$axios.post(this.$api.manageRecordCancel[this.title == 'æ°å¢' ? 'addManageRecordCancel' : 'doManageRecordCancel'], obj, { headers: { 'Content-Type': 'application/json' }, noQs: true }).then(res => { |
| | | if (this.title == 'æ°å¢') { |
| | | addManageRecordCancel(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } else { |
| | | doManageRecordCancel(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } |
| | | }, |
| | | getCurrentFile(e) { |
| | | let obj = this.fileList.find(m => m.documentCode == e) |
| | |
| | | } |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | selectUserCondition().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | value: a.id |
| | | }) |
| | | }) |
| | | // this.componentData.tagField.receiveUserName.select = data |
| | | // this.componentData.selectField.receiveUserName.select = data |
| | | this.personList = data |
| | | }) |
| | | }, |
| | |
| | | beforeClose: (action, instance, done) => { |
| | | if (action === 'confirm') { |
| | | // ç¹å»âç¡®å®âæé®ï¼å
许å
³é |
| | | this.$axios.post(this.$api.manageRecordCancel.ratifyManageRecordCancel, { id: row.id, ratifyState: 'éè¿' }).then(res => { |
| | | ratifyManageRecordCancel({ id: row.id, ratifyState: 'éè¿' }).then(res => { |
| | | if (res.code === 201) return |
| | | this.refreshTable() |
| | | done(); |
| | |
| | | }) |
| | | } else if (action === 'cancel') { |
| | | // ç¹å»âåæ¶âæé®ï¼ä¸å
许å
³é |
| | | this.$axios.post(this.$api.manageRecordCancel.ratifyManageRecordCancel, { id: row.id, ratifyState: 'ä¸éè¿' }).then(res => { |
| | | ratifyManageRecordCancel({ id: row.id, ratifyState: 'ä¸éè¿' }).then(res => { |
| | | if (res.code === 201) return |
| | | this.refreshTable() |
| | | done(); |
| | |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delManageRecordCancel({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 16px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æææä»¶ï¼å
ãå¤é¨æä»¶ï¼çåæ¾ä¸åæ¶è®°å½ --> |
| | | <div class="DistributionRetrievalRecordsAllDocuments"> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">æææä»¶ï¼å
ãå¤é¨æä»¶ï¼çåæ¾ä¸åæ¶è®°å½</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' :headers="headers" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" |
| | | style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="medium">导å
¥</el-button></el-upload> |
| | | <el-button size="medium" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="componentData.entity.documentName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.documentCode" |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button size="small" type="primary" @click="openAdd">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable" :url="$api.manageRecordIssueRecycle.pageManageRecordIssueRecycle" |
| | | :delUrl="$api.manageRecordIssueRecycle.delManageRecordIssueRecycle" :componentData="componentData" |
| | | :upUrl="$api.manageRecordIssueRecycle.doManageRecordIssueRecycle" :key="upIndex" /> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 260px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :title="title" :visible.sync="addDialogVisible" width="400px" top="6vh"> |
| | | <el-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table/value-table.vue' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | getYearAndMonthAndDays |
| | | } from '@/utils/date' |
| | | import { getToken } from "@/utils/auth"; |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import { |
| | | exportOutManageRecordIssueRecycle, |
| | | doManageRecordIssueRecycle, |
| | | addManageRecordIssueRecycle, |
| | | selectCNSAPersonTree, |
| | | pageManageRecordIssueRecycle, |
| | | delManageRecordIssueRecycle, |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | import { |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | components: { |
| | | ValueTable |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | upPower: true, |
| | | outLoading: false, |
| | | addLoading: false, |
| | | componentData: { |
| | | entity: { |
| | | documentName: null, |
| | | documentCode: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | // selectMethod: 'handleChangeTask', |
| | | do: [{ |
| | | id: 'delete', |
| | | font: 'å é¤', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | disabFun: (row, index) => { |
| | | return !!row.signedUser |
| | | } |
| | | }, { |
| | | id: 'handleEdit', |
| | | font: 'ä¿®æ¹', |
| | | type: 'text', |
| | | method: 'handleEdit', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.signedUser |
| | | } |
| | | }, { |
| | | id: 'handleBack', |
| | | font: 'åæ¶', |
| | | type: 'text', |
| | | method: 'handleBack', |
| | | disabFun: (row, index) => { |
| | | return !!row.signedUser |
| | | } |
| | | }], |
| | | tagField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | selectField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | addUpload: ['signatoryUrl'], |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | datePicker: ['receiveDate'], |
| | | noHead: ['signedUserName', 'signedDate', 'departLims'],//ä¸å䏿°å¢ç¼è¾çåæ®µ |
| | | needSort: [], |
| | | inputType: '' |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | title: 'æ°å¢', |
| | | addDialogVisible: false, |
| | | addInfo: {}, |
| | | personList: [], |
| | | fileType: [], |
| | | fileList: [], |
| | | list: [] |
| | | list: [], |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "æä»¶ç¼å·", prop: "documentCode" }, |
| | | { label: "æä»¶åç§°", prop: "documentName", width: "120px" }, |
| | | { |
| | | label: "çå·", |
| | | prop: "documentVersion", |
| | | }, |
| | | { label: "份æ°", prop: "pages" }, |
| | | { label: "æä»¶ç±»å«", prop: "documentType" }, |
| | | { label: "ååå·", prop: "number" }, |
| | | { label: "æ¥å人", prop: "receiveUserName" }, |
| | | { label: "æ¥æ¶é¨é¨", prop: "departLims" }, |
| | | { label: "æ¥åæ¥æ", prop: "receiveDate" }, |
| | | { label: "ç¾æ¶äºº", prop: "signedUserName" }, |
| | | { label: "ç¾æ¶æ¥æ", prop: "signedDate" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "ç¼è¾", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleEdit(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.signedUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "åæ¶", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleBack(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.signedUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.signedUser |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.manageRecordIssueRecycle.exportInManageRecordIssueRecycle |
| | | } |
| | | return this.javaApi + '/manageRecordIssueRecycle/exportInManageRecordIssueRecycle' |
| | | }, |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getPower() |
| | | // this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getList() |
| | | this.getAuthorizedPerson() |
| | | this.selectEnumByCategory() |
| | | this.getFileList() |
| | | this.selectTreeList() |
| | | // TODO é¨é¨æ¥å£éè¦éå |
| | | // this.selectTreeList() |
| | | }, |
| | | methods: { |
| | | getPower() { |
| | |
| | | // å¯¼åº |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.manageRecordIssueRecycle.exportOutManageRecordIssueRecycle, { entity: this.componentData.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { |
| | | exportOutManageRecordIssueRecycle(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导åºå¤±è´¥') |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + 'word/' + res.message |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æä»¶åæ¾ä¸åæ¶è®°å½'; |
| | | link.click(); |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, 'æä»¶åæ¾ä¸åæ¶è®°å½') |
| | | }) |
| | | }, |
| | | refreshTable() { |
| | | this.refreshTable()() |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManageRecordIssueRecycle({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | this.refreshTable() |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | selectUserCondition().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | value: a.id |
| | | }) |
| | | }) |
| | | // this.componentData.tagField.receiveUserName.select = data |
| | | // this.componentData.selectField.receiveUserName.select = data |
| | | this.personList = data |
| | | }) |
| | | }, |
| | |
| | | } |
| | | }, |
| | | selectEnumByCategory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "æä»¶ç±»å«" |
| | | }).then(res => { |
| | | // this.componentData.tagField.documentType.select = res.data |
| | | // this.componentData.selectField.documentType.select = res.data |
| | | this.fileType = res.data |
| | | }) |
| | | // æä»¶ç±»å« |
| | | this.getDicts("document_type").then((response) => { |
| | | this.fileType = this.dictToValue(response.data); |
| | | }); |
| | | }, |
| | | // è·åæä»¶å表--æä»¶æ¸
å |
| | | getFileList() { |
| | | this.$axios.post(this.$api.manageDocumentList.pageManageDocumentList, { |
| | | entity: { |
| | | orderBy: { |
| | | field: 'createTime', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | page: { |
| | | pageManageDocumentList({ |
| | | current: -1, |
| | | size: -1 |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.fileList = res.data.body.records.map(m => { |
| | | this.fileList = res.data.records.map(m => { |
| | | m.title = m.documentCode |
| | | return m |
| | | }) |
| | |
| | | let { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims } = this.addInfo |
| | | obj = { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims } |
| | | } |
| | | this.$axios.post(this.$api.manageRecordIssueRecycle[this.title == 'æ°å¢' ? 'addManageRecordIssueRecycle' : 'doManageRecordIssueRecycle'], obj, { headers: { 'Content-Type': 'application/json' }, noQs: true }).then(res => { |
| | | if (this.title == 'æ°å¢') { |
| | | addManageRecordIssueRecycle(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } else { |
| | | doManageRecordIssueRecycle(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } |
| | | }, |
| | | // åæ¶ |
| | | handleBack(row) { |
| | |
| | | }).then(() => { |
| | | let obj = {} |
| | | let { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims } = row |
| | | obj = { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims, signedDate: getYearAndMonthAndDays(), signedUser: JSON.parse(localStorage.getItem("user")).userId } |
| | | this.$axios.post(this.$api.manageRecordIssueRecycle.doManageRecordIssueRecycle, obj, { headers: { 'Content-Type': 'application/json' }, noQs: true }).then(res => { |
| | | obj = { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims, signedDate: getYearAndMonthAndDays(), signedUser: this.userId } |
| | | doManageRecordIssueRecycle(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | |
| | | }, |
| | | // æ¥è¯¢æ å½¢å表 |
| | | selectTreeList() { |
| | | this.$axios.get(this.$api.personnel.selectCNSAPersonTree).then((res) => { |
| | | selectCNSAPersonTree().then((res) => { |
| | | this.list = res.data[0].children; |
| | | }); |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delManageRecordIssueRecycle({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | } |
| | | } |
| | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- 夿¥æä»¶ç¡®è®¤è®°å½ --> |
| | | <div class="ExternalDocumentConfirmationRecords"> |
| | | <el-row class="title"> |
| | | <el-col :span="20" style="padding-left: 20px;text-align: left;">夿¥æä»¶ç¡®è®¤è®°å½</el-col> |
| | | </el-row> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;"> |
| | | <el-tab-pane label="å¡«å" name="å¡«å" style="height: 100%;"> |
| | | <div style="display: flex;align-items: center;justify-content: flex-end;margin-right: 20px;"> |
| | | <el-button size="small" type="primary" @click="handleAdd0" style="margin-left: 20px;" |
| | | v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' :headers="headers" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" |
| | | style="display:inline-block;margin-left: 20px;"> |
| | | <el-button size="small" type="primary" @click="openAdd('æ°å¢')" style="margin-left: 20px;">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button size="small" type="primary" :loading="upLoading">导å
¥</el-button></el-upload> |
| | | </div> |
| | | <div class="table" style="height: calc(100% - 200px)"> |
| | | <ValueTable ref="ValueTable0" :url="$api.manageRecordTotal.pageManageRecordVerify" |
| | | <!-- <ValueTable ref="ValueTable0" :url="$api.manageRecordTotal.pageManageRecordVerify" |
| | | :componentData="componentData0" :key="upIndex0" :delUrl="$api.manageRecordTotal.delManageRecordVerify" |
| | | :upUrl="$api.manageRecordTotal.doManageRecordVerify" /> |
| | | :upUrl="$api.manageRecordTotal.doManageRecordVerify" /> --> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading0" |
| | | :height="'calc(100vh - 270px)'" @pagination="pagination0"></lims-table> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="åå²è®°å½" name="åå²è®°å½" style="height: 100%;"> |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">å¹´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="componentData.entity.year" type="year" placeholder="鿩年" format="yyyy" |
| | | value-format="yyyy" size="small" @change="refreshTable()"> |
| | | <el-date-picker v-model="queryParams.year" type="year" placeholder="鿩年" format="yyyy" value-format="yyyy" |
| | | size="small" @change="refreshTable()"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable" :url="$api.manageRecordTotal.pageManageRecordTotal" |
| | | :componentData="componentData" :key="upIndex" /> |
| | | <!-- <ValueTable ref="ValueTable" :url="$api.manageRecordTotal.pageManageRecordTotal" |
| | | :componentData="componentData" :key="upIndex" /> --> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 280px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | |
| | | <el-button type="primary" @click="submitCheck('éè¿')" :loading="checkLoading">é è¿</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- æ°å¢/ç¼è¾ --> |
| | | <el-dialog :title="title" :visible.sync="addDia" width="500px"> |
| | | <el-form :model="addForm" ref="addForm" :rules="addRules" label-position="right" label-width="120px"> |
| | | <el-form-item label="夿¥æä»¶åç§°" prop="documentName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="addForm.documentName"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="addForm.documentCode"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ åè§èåç§°" prop="standardName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="addForm.standardName"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ åå·" prop="standardCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="addForm.standardCode"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="çææ¥æ" prop="effectiveDate"> |
| | | <el-date-picker v-model="addForm.effectiveDate" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="ä½åºæ¥æ" prop="cancelDate"> |
| | | <el-date-picker v-model="addForm.cancelDate" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="note"> |
| | | <el-input size="small" placeholder="请è¾å
¥" type="textarea" :rows="2" clearable v-model="addForm.note"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="addDia = false">å æ¶</el-button> |
| | | <el-button :loading="uploading" type="primary" @click="submitProduct('addForm')">确 认</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | | import ValueTable from '@/components/Table/value-table.vue' |
| | | import { getToken } from "@/utils/auth"; |
| | | import { |
| | | addManageRecordVerify, |
| | | pageManageRecordVerify, |
| | | submitManageRecordTotal, |
| | | ratifyManageRecordTotal, |
| | | delManageRecordVerify, |
| | | pageManageRecordTotal, |
| | | doManageRecordVerify |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | | filePreview, |
| | | limsTable, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | lookDialogVisible: false, |
| | | noCheckLoading: false, |
| | | checkLoading: false, |
| | | componentData: { |
| | | entity: { |
| | | year: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [{ |
| | | id: 'handleLook', |
| | | font: 'æ¥ç', |
| | | type: 'text', |
| | | method: 'handleLook', |
| | | disabFun: (row, index) => { |
| | | return !row.url |
| | | } |
| | | }, { |
| | | id: 'handleDown0', |
| | | font: 'ä¸è½½', |
| | | type: 'text', |
| | | method: 'handleDown0', |
| | | disabFun: (row, index) => { |
| | | return !row.url |
| | | } |
| | | }, |
| | | { |
| | | id: 'handleSubmit', |
| | | font: 'æäº¤', |
| | | type: 'text', |
| | | method: 'handleSubmit', |
| | | disabFun: (row, index) => { |
| | | return !!row.submitUserName |
| | | } |
| | | }, { |
| | | id: 'handleApproval', |
| | | font: 'æ¹å', |
| | | type: 'text', |
| | | method: 'handleApproval', |
| | | disabFun: (row, index) => { |
| | | return !row.submitUserName || !!row.ratifyUserName |
| | | } |
| | | }], |
| | | tagField: {}, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | needSort: [], |
| | | inputType: '' |
| | | }, |
| | | // æ ·åå表 |
| | | componentData0: { |
| | | entity: { |
| | | manageRecordTotalId: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [{ |
| | | id: 'update', |
| | | font: 'ä¿®æ¹', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }, { |
| | | id: 'delete', |
| | | font: 'å é¤', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }], |
| | | tagField: {}, |
| | | selectField: {}, |
| | | requiredAdd: ['documentName', 'documentCode'], |
| | | requiredUp: ['documentName', 'documentCode'], |
| | | datePicker: ['effectiveDate', 'cancelDate'], |
| | | needSort: [], |
| | | inputType: '' |
| | | }, |
| | | upIndex0: 100, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | addPower: true, |
| | | upPower: true, |
| | | currentInfo: {}, |
| | | upLoading: false, |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "年份", prop: "year" }, |
| | | { label: "æ»æ°é", prop: "totalNum", width: "120px" }, |
| | | { |
| | | label: "æå¶äºº", |
| | | prop: "submitUserName", |
| | | }, |
| | | { label: "æå¶æ¥æ", prop: "submitDate" }, |
| | | { label: "æ¹å人", prop: "ratifyUserName" }, |
| | | { label: "æ¹åæ¥æ", prop: "ratifyDate" }, |
| | | { label: "æ¹åç»æ", prop: "ratifyState" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "æ¥ç", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleLook(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !row.url |
| | | }, |
| | | }, |
| | | { |
| | | name: "ä¸è½½", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDown0(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !row.url |
| | | }, |
| | | }, |
| | | { |
| | | name: "æäº¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleSubmit(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.submitUserName |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¹å", |
| | | type: "text", |
| | | clickFun: (handleApproval) => { |
| | | this.handleSubmit(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !row.submitUserName || !!row.ratifyUserName |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | tableData0: [], |
| | | column0: [ |
| | | { label: "夿¥æä»¶åç§°", prop: "documentName" }, |
| | | { label: "æä»¶ç¼å·", prop: "documentCode", width: "120px" }, |
| | | { |
| | | label: "æ åè§èåç§°", |
| | | prop: "standardName", |
| | | }, |
| | | { label: "æ åå·", prop: "standardCode" }, |
| | | { label: "çææ¥æ", prop: "effectiveDate" }, |
| | | { label: "ä½åºæ¥æ", prop: "cancelDate" }, |
| | | { label: "夿³¨", prop: "note" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "ç¼è¾", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.openAdd("ç¼è¾", row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page0: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading0: false, |
| | | title: 'æ°å¢', |
| | | addForm: {}, |
| | | addDia: false, |
| | | addRules: { |
| | | documentName: [{ required: true, message: "请è¾å
¥å¤æ¥æä»¶åç§°", trigger: "blur" }], |
| | | documentCode: [ |
| | | { required: true, message: "请è¾å
¥æä»¶ç¼å·", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | uploading: false, |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.manageRecordTotal.exportManageRecordVerify |
| | | return this.javaApi + '/manageRecordVerify/exportManageRecordVerify' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getPower() |
| | | // this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getList() |
| | | this.getList0() |
| | | }, |
| | | methods: { |
| | | getPower() { |
| | |
| | | this.addPower = add |
| | | this.upPower = up |
| | | }, |
| | | handleAdd0() { |
| | | this.$refs.ValueTable0.openAddDia(this.$api.manageRecordTotal.addManageRecordVerify); |
| | | openAdd(title, row) { |
| | | this.title = title; |
| | | if (row) { |
| | | this.addForm = row; |
| | | } else { |
| | | this.addForm = {}; |
| | | } |
| | | this.addDia = true; |
| | | }, |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManageRecordTotal({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | getList0() { |
| | | this.tableLoading0 = true; |
| | | let param = { ...this.page0 }; |
| | | delete param.total; |
| | | pageManageRecordVerify({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading0 = false; |
| | | if (res.code === 200) { |
| | | this.tableData0 = res.data.records; |
| | | this.page0.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading0 = false; |
| | | }); |
| | | }, |
| | | pagination0({ page, limit }) { |
| | | this.pag0.current = page; |
| | | this.page0.size = limit; |
| | | this.getList0(); |
| | | }, |
| | | refresh() { |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.refreshTable()() |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | beforeUpload(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.$refs['ValueTable0'].selectList() |
| | | this.getList0(); |
| | | } else { |
| | | this.$message.error('ä¸ä¼ 失败'); |
| | | } |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | this.refreshTable() |
| | | }, |
| | | submitCheck(type) { }, |
| | | // æ¥ç |
| | |
| | | // å
¬ç¨æ¹æ³ |
| | | commonFun(row, callbanck) { |
| | | this.currentInfo = row |
| | | this.componentData0.entity.manageRecordTotalId = row.id |
| | | this.$axios.post(this.$api.manageRecordTotal.pageManageRecordVerify, { |
| | | entity: this.componentData0.entity, |
| | | page: { |
| | | pageManageRecordVerify({ |
| | | current: -1, |
| | | size: -1 |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, noQs: true |
| | | size: -1, |
| | | manageRecordTotalId: row.id |
| | | }).then(res => { |
| | | this.currentInfo.arr = res.data.body.records |
| | | this.currentInfo.arr = res.data.records |
| | | this.lookDialogVisible = true |
| | | if (callbanck) { |
| | | callbanck() |
| | |
| | | }).catch(err => { }); |
| | | }, |
| | | handleDown0(row) { |
| | | let url = this.javaApi + 'word/' + row.url |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.month + ' 夿¥æä»¶ç¡®è®¤è®°å½'; |
| | | link.click(); |
| | | let url = this.javaApi + '/word/' + row.url |
| | | this.$download.saveAs(url, '夿¥æä»¶ç¡®è®¤è®°å½') |
| | | }, |
| | | // æäº¤ |
| | | handleSubmit(row) { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.post(this.$api.manageRecordTotal.submitManageRecordTotal, { |
| | | submitManageRecordTotal({ |
| | | id: row.id |
| | | }).then(res => { |
| | | this.$message({ |
| | |
| | | } else { |
| | | this.noCheckLoading = true |
| | | } |
| | | this.$axios.post(this.$api.manageRecordTotal.ratifyManageRecordTotal, { |
| | | ratifyManageRecordTotal({ |
| | | id: this.currentInfo.id, |
| | | ratifyState: state |
| | | }).then(res => { |
| | |
| | | this.refreshTable()() |
| | | this.lookDialogVisible = false |
| | | }).catch(err => { }); |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delManageRecordVerify({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.getList0() |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | submitProduct(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | this.uploading = true; |
| | | if (this.title == "æ°å¢") { |
| | | addManageRecordVerify(this.addForm) |
| | | .then((res) => { |
| | | this.uploading = false; |
| | | if (res.code != 200) { |
| | | return; |
| | | } |
| | | this.$message.success("æäº¤æå"); |
| | | this.getList0() |
| | | this.addDia = false; |
| | | }) |
| | | .catch((err) => { |
| | | this.uploading = false; |
| | | }); |
| | | } else { |
| | | doManageRecordVerify(this.addForm) |
| | | .then((res) => { |
| | | this.uploading = false; |
| | | if (res.code != 200) { |
| | | return; |
| | | } |
| | | this.$message.success("æäº¤æå"); |
| | | this.getList0() |
| | | this.addDia = false; |
| | | }) |
| | | .catch((err) => { |
| | | this.uploading = false; |
| | | }); |
| | | } |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | .search_label { |
| | | width: 110px; |
| | | width: 30px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 140px); |
| | | padding: 20px; |
| | | height: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | >>>.el-tabs__content { |
| | |
| | | <template> |
| | | <!-- æä»¶å®æå®¡æ¥è®°å½ --> |
| | | <div class="PeriodicDocumentReviewRecords"> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">æä»¶å®æå®¡æ¥è®°å½</el-col> |
| | | <!-- <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :show-file-list="false" |
| | | accept='.doc,.docx' :headers="headers" :on-change="beforeUpload" |
| | | :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="medium">导å
¥</el-button></el-upload> |
| | | <el-button size="medium" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </el-col> --> |
| | | </el-row> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;"> |
| | | <el-tab-pane label="å¡«å" name="å¡«å" style="height: 100%;"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="componentData.entity.documentName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | v-model="queryParams.documentName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.documentCode" |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' :headers="headers" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" |
| | | style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="medium">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable" :url="$api.manageRecordIntervals.pageManageRecordIntervals" |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> |
| | | <!-- <ValueTable ref="ValueTable" :url="$api.manageRecordIntervals.pageManageRecordIntervals" |
| | | :delUrl="$api.manageRecordIntervals.delManageRecordIntervals" :componentData="componentData" |
| | | :upUrl="$api.manageRecordIssueRecycle.doManageRecordIssueRecycle" :key="upIndex" /> |
| | | :upUrl="$api.manageRecordIssueRecycle.doManageRecordIssueRecycle" :key="upIndex" /> --> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="åå²è®°å½" name="åå²è®°å½" style="height: 100%;"> |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">å¹´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="componentData0.entity.year" type="year" placeholder="鿩年" format="yyyy" |
| | | value-format="yyyy" size="small" @change="refreshTable()"> |
| | | <el-date-picker v-model="queryParams0.year" type="year" placeholder="鿩年" format="yyyy" |
| | | value-format="yyyy" size="small" @change="refreshTable(1)"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable0" :url="$api.manageRecordIntervals.pageManageRecordIntervalsTotal" |
| | | :componentData="componentData0" :key="upIndex" /> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination0"></lims-table> |
| | | <!-- <ValueTable ref="ValueTable0" :url="$api.manageRecordIntervals.pageManageRecordIntervalsTotal" |
| | | :componentData="componentData0" :key="upIndex" /> --> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table/value-table.vue' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | | import { getToken } from "@/utils/auth"; |
| | | import { |
| | | exportOutManageRecordIntervals, |
| | | addManageRecordIntervals, |
| | | doManageRecordIntervals, |
| | | ratifyManageRecordIntervalsTotal, |
| | | submitManageRecordIntervalsTotal, |
| | | pageManageRecordIntervals, |
| | | pageManageRecordIntervalsTotal, |
| | | delManageRecordIntervals, |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | import { |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | | limsTable, |
| | | filePreview |
| | | }, |
| | | data() { |
| | |
| | | fileList: [], |
| | | typeList: [], |
| | | currentInfo: {}, |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "æä»¶åç§°", prop: "documentName" }, |
| | | { label: "æä»¶ç¼å·", prop: "documentCode", width: "120px" }, |
| | | { |
| | | label: "çæ¬å·", |
| | | prop: "documentVersion", |
| | | }, |
| | | { label: "修订å·", prop: "revision" }, |
| | | { label: "é宿§", prop: "suitability" }, |
| | | { label: "夿³¨", prop: "remark" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "ç¼è¾", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleEdit(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | queryParams0: {}, |
| | | tableData0: [], |
| | | column0: [ |
| | | { label: "年份", prop: "year" }, |
| | | { label: "æ»æ°é", prop: "totalNum", width: "120px" }, |
| | | { |
| | | label: "æå¶äºº", |
| | | prop: "submitUserName", |
| | | }, |
| | | { label: "æå¶æ¥æ", prop: "submitDate" }, |
| | | { label: "æ¹å人", prop: "ratifyUserName" }, |
| | | { label: "æ¹åæ¥æ", prop: "ratifyDate" }, |
| | | { label: "æ¹åç»æ", prop: "ratifyState" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "æ¥ç", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleLook(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !row.url |
| | | }, |
| | | }, |
| | | { |
| | | name: "ä¸è½½", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDown0(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !row.url |
| | | }, |
| | | }, |
| | | { |
| | | name: "æäº¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleSubmit(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.submitUserName && row.ratifyState != 'ä¸éè¿' |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¹å", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleApproval(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return (!row.submitUserName || !!row.ratifyUserName) && row.ratifyState != 'ä¸éè¿' |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page0: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.manageRecordIntervals.exportInManageRecordIntervals |
| | | return this.javaApi + '/manageRecordIntervals/exportInManageRecordIntervals' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.entityCopy0 = this.HaveJson(this.componentData0.entity); |
| | | this.getPower() |
| | | // this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | // this.entityCopy0 = this.HaveJson(this.componentData0.entity); |
| | | this.getList() |
| | | this.getList0() |
| | | this.getFileList() |
| | | this.selectEnumByCategory() |
| | | }, |
| | |
| | | // å¯¼åº |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.manageRecordIntervals.exportOutManageRecordIntervals, { entity: this.componentData.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { |
| | | exportOutManageRecordIntervals(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导åºå¤±è´¥') |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + 'word/' + res.message |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æä»¶å®æå®¡æ¥è®°å½'; |
| | | link.click(); |
| | | this.$download.saveAs(url, "æä»¶å®æå®¡æ¥è®°å½"); |
| | | }) |
| | | }, |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManageRecordIntervals({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | getList0() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams0, ...this.page0 }; |
| | | delete param.total; |
| | | pageManageRecordIntervalsTotal({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData0 = res.data.records; |
| | | this.page0.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination0({ page, limit }) { |
| | | this.page0.current = page; |
| | | this.page0.size = limit; |
| | | this.getList0(); |
| | | }, |
| | | refreshTable(num) { |
| | | if (num) { |
| | | this.$refs['ValueTable0'].selectList() |
| | | this.page0.current = 1; |
| | | this.getList0(); |
| | | } else { |
| | | this.refreshTable()() |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | } |
| | | }, |
| | | refresh(num) { |
| | | if (num) { |
| | | this.componentData0.entity = this.HaveJson(this.entityCopy0) |
| | | this.upIndex++ |
| | | this.queryParams0 = {}; |
| | | this.page0.current = 1; |
| | | this.getList0(); |
| | | } else { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | } |
| | | }, |
| | | beforeUpload(file) { |
| | |
| | | }, |
| | | // è·åæä»¶å表--æä»¶æ¸
å |
| | | getFileList() { |
| | | this.$axios.post(this.$api.manageDocumentList.pageManageDocumentList, { |
| | | entity: { |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | page: { |
| | | pageManageDocumentList({ |
| | | current: -1, |
| | | size: -1 |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.fileList = res.data.body.records.map(m => { |
| | | this.fileList = res.data.records.map(m => { |
| | | m.title = m.documentCode |
| | | return m |
| | | }) |
| | | }).catch(err => { }) |
| | | }, |
| | | selectEnumByCategory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "é宿§" |
| | | }).then(res => { |
| | | this.typeList = res.data |
| | | }) |
| | | // æä»¶ç±»å« |
| | | this.getDicts("suitability").then((response) => { |
| | | this.typeList = this.dictToValue(response.data); |
| | | }); |
| | | }, |
| | | // æäº¤ |
| | | handleAdd() { |
| | |
| | | let { id, documentCode, documentName, documentVersion, revision, suitability, remark } = this.addInfo |
| | | obj = { id, documentCode, documentName, documentVersion, revision, suitability, remark } |
| | | } |
| | | this.$axios.post(this.$api.manageRecordIntervals[this.title == 'æ°å¢' ? 'addManageRecordIntervals' : 'doManageRecordIntervals'], obj, { headers: { 'Content-Type': 'application/json' }, noQs: true }).then(res => { |
| | | if (this.title == 'æ°å¢') { |
| | | addManageRecordIntervals(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } else { |
| | | doManageRecordIntervals(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } |
| | | }, |
| | | // ä¿®æ¹ |
| | | handleEdit(row) { |
| | |
| | | } else { |
| | | this.noCheckLoading = true |
| | | } |
| | | this.$axios.post(this.$api.manageRecordIntervals.ratifyManageRecordIntervalsTotal, { |
| | | ratifyManageRecordIntervalsTotal({ |
| | | id: this.currentInfo.id, |
| | | ratifyState: state |
| | | }).then(res => { |
| | |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | this.$refs['ValueTable0'].selectList() |
| | | this.refreshTable(1); |
| | | this.lookDialogVisible = false |
| | | }).catch(err => { }); |
| | | }, |
| | |
| | | } |
| | | }, |
| | | handleDown0(row) { |
| | | let url = this.javaApi + 'word/' + row.url |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.month + ' æææä»¶å®ææ£æ¥è®°å½'; |
| | | link.click(); |
| | | let url = this.javaApi + '/word/' + row.url |
| | | this.$download.saveAs(url, "æææä»¶å®ææ£æ¥è®°å½"); |
| | | }, |
| | | // æäº¤ |
| | | handleSubmit(row) { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.post(this.$api.manageRecordIntervals.submitManageRecordIntervalsTotal, { |
| | | submitManageRecordIntervalsTotal({ |
| | | id: row.id |
| | | }).then(res => { |
| | | if (res.code === 201) return |
| | |
| | | type: 'success', |
| | | message: 'æäº¤æå!' |
| | | }); |
| | | this.$refs['ValueTable0'].selectList() |
| | | this.refreshTable(1); |
| | | }).catch(err => { }); |
| | | }) |
| | | }, |
| | |
| | | handleApproval(row) { |
| | | this.title0 = 'æ¹å' |
| | | this.commonFun(row) |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delManageRecordIntervals({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.refreshTable(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | } |
| | | } |
| | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 140px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | >>>.el-tabs__content { |
| | |
| | | <template> |
| | | <!-- æä»¶ä¿®è®¢ç³è¯·å®¡æ¹è®°å½ --> |
| | | <div class="DocumentRevisionRequestApprovalRecords"> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">æä»¶ä¿®è®¢ç³è¯·å®¡æ¹è®°å½</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <!-- <el-upload :action="action" :show-file-list="false" |
| | | accept='.doc,.docx' :headers="headers" :on-change="beforeUpload" |
| | | :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="medium">导å
¥</el-button></el-upload> --> |
| | | <el-button size="medium" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div class="search"> |
| | | <!-- <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> --> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.documentCode" |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button size="small" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable" :url="$api.manageRecordAudit.pageManageRecordAudit" |
| | | :delUrl="$api.manageRecordAudit.delManageRecordAudit" :componentData="componentData" |
| | | :upUrl="$api.manageRecordIssueRecycle.doManageRecordIssueRecycle" :key="upIndex" /> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 260px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :title="title" :visible.sync="addDialogVisible" width="800px" top="6vh"> |
| | | <el-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table/value-table.vue' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { exportHtmlToPDF } from '@/utils/downHtmlToPDF' |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | | import { |
| | | exportOutManageRecordAudit, |
| | | addManageRecordAudit, |
| | | doManageRecordAudit, |
| | | selectCNSAPersonTree, |
| | | ratifyManageRecordAudit, |
| | | pageManageRecordAudit, |
| | | delManageRecordAudit, |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | import { |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | | filePreview |
| | | filePreview, |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | outLoading: false, |
| | | lookDialogVisible: false, |
| | | addLoading: false, |
| | | componentData: { |
| | | entity: { |
| | | // documentName: null, |
| | | documentCode: null, |
| | | orderBy: { |
| | | field: 'createTime', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | // selectMethod: 'handleChangeTask', |
| | | do: [{ |
| | | id: 'handleLook', |
| | | font: 'æ¥ç', |
| | | type: 'text', |
| | | method: 'handleLook' |
| | | }, { |
| | | id: 'handleLook0', |
| | | font: 'æä»¶é¢è§', |
| | | type: 'text', |
| | | method: 'handleLook0' |
| | | }, { |
| | | id: 'handleOut', |
| | | font: 'ä¸è½½', |
| | | type: 'text', |
| | | method: 'handleOut' |
| | | }, { |
| | | id: 'delete', |
| | | font: 'å é¤', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | disabFun: (row, index) => { |
| | | return !!row.ratifyUser |
| | | } |
| | | }, { |
| | | id: 'handleEdit', |
| | | font: 'ä¿®æ¹', |
| | | type: 'text', |
| | | method: 'handleEdit', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.ratifyUser |
| | | } |
| | | }, { |
| | | id: 'handleRatify', |
| | | font: 'æ¹å', |
| | | type: 'text', |
| | | method: 'handleRatify', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.ratifyUser |
| | | } |
| | | }, { |
| | | id: 'handlework0', |
| | | font: 'ç³è¯·æè§', |
| | | type: 'text', |
| | | method: 'handlework0', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.ratifyUser |
| | | } |
| | | }, { |
| | | id: 'handlework1', |
| | | font: 'åå®å¶æè§', |
| | | type: 'text', |
| | | method: 'handlework1', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.ratifyUser |
| | | } |
| | | }, { |
| | | id: 'handlework2', |
| | | font: 'åå®¡æ ¸æè§', |
| | | type: 'text', |
| | | method: 'handlework2', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.ratifyUser |
| | | } |
| | | }], |
| | | tagField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | selectField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | addUpload: ['signatoryUrl'], |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | datePicker: ['receiveDate'], |
| | | noHead: ['signedUserName', 'signedDate', 'departLims'],//ä¸å䏿°å¢ç¼è¾çåæ®µ |
| | | needSort: [], |
| | | inputType: '' |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | title: 'æ°å¢', |
| | | addInfo: { |
| | | method: '修订', |
| | |
| | | file: null, |
| | | title0: 'æ¥ç', |
| | | currentInfo: {}, |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "æä»¶ç¼å·", prop: "documentCode" }, |
| | | { label: "ç« èå·", prop: "capter", width: "120px" }, |
| | | { |
| | | label: "页ç ", |
| | | prop: "pages", |
| | | }, |
| | | { label: "修订次æ°", prop: "number" }, |
| | | { label: "ä¿®æ¹åçæ¬å·", prop: "beforeVersion" }, |
| | | { label: "ä¿®æ¹åçæ¬å·", prop: "afterVersion" }, |
| | | { label: "ä¿®æ¹å
容", prop: "alterThing" }, |
| | | { label: "修订人", prop: "alterUserName" }, |
| | | { label: "æ¹å人", prop: "ratifyUserName" }, |
| | | { label: "æ¥æ", prop: "date" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "æ¥ç", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleLook(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "æä»¶é¢è§", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleLook0(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "ä¸è½½", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleOut(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.ratifyUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "ç¼è¾", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleEdit(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.ratifyUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¹å", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleRatify(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.ratifyUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "ç³è¯·æè§", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handlework0(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.ratifyUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "åå®å¶æè§", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handlework1(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.ratifyUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "åå®¡æ ¸æè§", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handlework2(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.ratifyUser |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getPower() |
| | | this.getList() |
| | | this.getFileList() |
| | | this.getAuthorizedPerson() |
| | | this.selectTreeList() |
| | |
| | | // å¯¼åº |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.manageRecordAudit.exportOutManageRecordAudit, { entity: this.componentData.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { |
| | | exportOutManageRecordAudit(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导åºå¤±è´¥') |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + 'word/' + res.message |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'æä»¶ä¿®è®¢è¡¨'; |
| | | link.click(); |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, "æä»¶ä¿®è®¢è¡¨"); |
| | | }) |
| | | }, |
| | | refreshTable() { |
| | | this.refreshTable()() |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManageRecordAudit({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | this.refreshTable() |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | // è·åæä»¶å表--æä»¶æ¸
å |
| | | getFileList() { |
| | | this.$axios.post(this.$api.manageDocumentList.pageManageDocumentList, { |
| | | entity: { |
| | | orderBy: { |
| | | field: 'createTime', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | page: { |
| | | pageManageDocumentList({ |
| | | current: -1, |
| | | size: -1 |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.fileList = res.data.body.records.map(m => { |
| | | this.fileList = res.data.records.map(m => { |
| | | m.title = m.documentCode |
| | | return m |
| | | }) |
| | |
| | | fd.append(m, this.addInfo[m]) |
| | | } |
| | | this.addLoading = true |
| | | this.$axios.post(this.$api.manageRecordAudit.addManageRecordAudit, fd, { |
| | | headers: { |
| | | 'Content-Type': 'multipart/form-data' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | addManageRecordAudit(fd).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | |
| | | } |
| | | } |
| | | this.addLoading = true |
| | | this.$axios.post(this.$api.manageRecordAudit.doManageRecordAudit, fd, { |
| | | headers: { |
| | | 'Content-Type': 'multipart/form-data' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | doManageRecordAudit(fd).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 200) { |
| | | this.refreshTable() |
| | |
| | | } |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | selectUserCondition().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | value: a.id |
| | | }) |
| | | }) |
| | | // this.componentData.tagField.receiveUserName.select = data |
| | | // this.componentData.selectField.receiveUserName.select = data |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | // æ¥è¯¢æ å½¢å表 |
| | | selectTreeList() { |
| | | this.$axios.get(this.$api.personnel.selectCNSAPersonTree).then((res) => { |
| | | selectCNSAPersonTree().then((res) => { |
| | | this.list = res.data[0].children; |
| | | }); |
| | | }, |
| | |
| | | type: 'warning' |
| | | }) |
| | | .then(() => { |
| | | this.$axios |
| | | .post(this.$api.manageRecordAudit.ratifyManageRecordAudit, { id: row.id }) |
| | | .then(res => { |
| | | ratifyManageRecordAudit({ id: row.id }).then(res => { |
| | | if (res.code === 201) { |
| | | return; |
| | | } |
| | |
| | | handleLook0(row) { |
| | | this.currentInfo = row; |
| | | this.lookDialogVisible = true |
| | | } |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delManageRecordAudit({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | border-collapse: collapse; |
| | | } |
| | | |
| | | .tables td { |
| | |
| | | >>>.el-dialog__body { |
| | | height: auto; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 16px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="éä»¶" width="80%" @closed="closeFilesLook"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload" |
| | | :data="{ correctId: info.correctId }" :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-button size="small" style="height: 38px" type="primary">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </div> |
| | | <div> |
| | | <limsTable ref="yearTable" :column="columnData" :height="'calc(100vh - 30em)'" :highlightCurrentRow="true" |
| | | :table-data="tableData" :table-loading="tableLoading" style="margin-top: 0.5em;" :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/word/' + currentInfo.fileUrl" |
| | | style="height: 90vh;overflow-y: auto;" /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | | import { |
| | | getInternalCorrectFileList, |
| | | delInternalCorrectFile, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'ViewTestRecord', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { filePreview, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | filesDialogVisible: false, |
| | | tableLoading: false, |
| | | filesLookInfo: {}, |
| | | columnData: [ |
| | | { |
| | | label: 'æä»¶åç§°', |
| | | prop: 'fileName', |
| | | minWidth: '150px' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '100', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | | { |
| | | name: 'é¢è§', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleLook(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.upload(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delete(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | info: {}, |
| | | currentInfo: {}, |
| | | lookDialogVisible: false, |
| | | page: { |
| | | total: 0, |
| | | size: -1, |
| | | current: -1, |
| | | }, |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(row) { |
| | | this.filesDialogVisible = true |
| | | this.info = row |
| | | this.searchTableList() |
| | | }, |
| | | // æ¥è¯¢éä»¶å表 |
| | | searchTableList() { |
| | | this.tableLoading = true |
| | | getInternalCorrectFileList({ correctId: this.info.correctId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | closeFilesLook() { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | // æ¥çæä»¶ |
| | | handleLook(row) { |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true |
| | | }, |
| | | // ä¸è½½ |
| | | upload(row) { |
| | | let url = ''; |
| | | if (row.type == 1) { |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | this.$download.saveAs(url, row.fileName) |
| | | } else { |
| | | url = this.javaApi + '/word/' + row.fileUrl |
| | | this.$download.saveAs(url, row.fileName) |
| | | } |
| | | }, |
| | | // å é¤ |
| | | delete(row) { |
| | | this.tableLoading = true |
| | | delInternalCorrectFile({ correctFileId: row.correctFileId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchTableList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // ä¸ä¼ éªè¯ |
| | | fileBeforeUpload(file) { |
| | | let flag = true |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | flag = false |
| | | } |
| | | if (!flag) { |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | onError(err, file, fileList, type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response,) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.searchTableList() |
| | | } else { |
| | | this.$message.error(response.message); |
| | | } |
| | | }, |
| | | }, |
| | | computed: { |
| | | fileAction() { |
| | | return this.javaApi + '/internalCorrect/uploadInternalCorrectFile' |
| | | |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped></style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å审é¨é¨ï¼</span> |
| | | <el-input v-model="searchForm.department" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <audit-inspection-dia v-if="auditInspectionDia" ref="auditInspectionDia" |
| | | @closeImplementDia="closeImplementDia"></audit-inspection-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import AuditInspectionDia from './auditInspectionDia.vue'; |
| | | import { |
| | | pageInternalCheck, |
| | | delInternalCheck, |
| | | exportInternalCheck |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | |
| | | export default { |
| | | name: 'auditInspection', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { AuditInspectionDia, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | department: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'å审é¨é¨', |
| | | prop: 'department', |
| | | }, |
| | | { |
| | | label: 'é¨é¨è´è´£äºº', |
| | | prop: 'departmentHead', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸å', |
| | | prop: 'auditor', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¥æ', |
| | | prop: 'reviewDate', |
| | | }, { |
| | | dataType: 'tag', |
| | | label: 'æ¹åç¶æ', |
| | | prop: 'ratifyStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return '䏿¹å'; |
| | | } else if (params === 1) { |
| | | return 'æ¹å'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, { |
| | | label: 'æ¹åå
容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '140' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '220', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('ratify', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | auditInspectionDia: false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = this.searchForm |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageInternalCheck({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia(type, row) { |
| | | this.auditInspectionDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.auditInspectionDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeImplementDia() { |
| | | this.auditInspectionDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.department = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delInternalCheck({ checkId: row.checkId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportInternalCheck({ checkId: row.checkId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å
å®¡æ£æ¥' + '.docx'); |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" title="å
é¨å®¡æ ¸å®æ½è®¡å" width="80%" @close="closeImplementDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="auto"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å审é¨é¨" prop="department"> |
| | | <el-input v-model="form.department" :disabled="operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é¨é¨è´è´£äºº" prop="departmentHead"> |
| | | <el-input v-model="form.departmentHead" :disabled="operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸å" prop="auditor"> |
| | | <el-input v-model="form.auditor" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸æ¥æ" prop="reviewDate"> |
| | | <el-date-picker v-model="form.reviewDate" :disabled="operationType === 'ratify'" clearable |
| | | format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | <div v-if="operationType !== 'ratify'" style="text-align: right;margin-bottom: 10px"> |
| | | <el-button size="small" type="primary" @click="addRow">æ·»å </el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">æ¸
空</el-button> |
| | | </div> |
| | | <el-table :data="checkDetailList" border height="300" style="width: 100%"> |
| | | <el-table-column align="center" label="åºå·" type="index" width="60" /> |
| | | <el-table-column header-align="center" label="æ¶åè¦ç´ åè´¨éä½ç³»æä»¶æ¡æ¬¾" prop="element"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.element" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="å®¡æ ¸å
容" prop="content"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.content" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="å®¡æ ¸æ¹å¼" prop="method"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.method" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="å®¡æ ¸ç»æè®°å½" prop="resultRecords" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.resultRecords" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="ä¸ç¬¦åæ§è´¨" prop="nonNature" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.nonNature" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" @click="ratify(0)">䏿¹å</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="ratify(1)">æ¹ |
| | | å</el-button> |
| | | <el-button v-if="operationType !== 'ratify'" @click="closeImplementDia">å æ¶</el-button> |
| | | <el-button v-if="operationType !== 'ratify'" :loading="loading" type="primary" @click="handleEdit">æ |
| | | 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="æ¹å" width="30%" @close="approvalDialog = false"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | | <el-input v-model="ratifyRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="approvalLoading" @click="approvalDialog = false">å æ¶</el-button> |
| | | <el-button :loading="approvalLoading" type="primary" @click="handleApproval(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInternalCheckOne, |
| | | addInternalCheck, |
| | | updateInternalCheck, |
| | | ratifyInternalCheck, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'auditInspectionDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | department: '', |
| | | departmentHead: '', |
| | | auditor: '', |
| | | reviewDate: '', |
| | | }, |
| | | rules: { |
| | | department: [{ required: true, message: '请填åå审é¨é¨', trigger: 'blur' }], |
| | | departmentHead: [{ required: true, message: '请填åé¨é¨è´è´£äºº', trigger: 'blur' }], |
| | | auditor: [{ required: true, message: '请填åå®¡æ ¸å', trigger: 'blur' }], |
| | | reviewDate: [{ required: true, message: '请填åå®¡æ ¸æ¥æ', trigger: 'blur' }], |
| | | }, |
| | | checkDetailList: [], |
| | | operationType: '', |
| | | approvalDialog: false, |
| | | approvalLoading: false, |
| | | ratifyRemark: '', |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo(row) { |
| | | this.diaLoading = true |
| | | getInternalCheckOne({ checkId: row.checkId }).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | this.checkDetailList = this.form.checkDetailList |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | if (this.checkDetailList.length === 0) { |
| | | this.$message.warning('请添å è¡¨æ ¼æ°æ®') |
| | | return |
| | | } |
| | | this.loading = true |
| | | const internalCheckDto = this.HaveJson(this.form) |
| | | internalCheckDto.checkDetailList = this.HaveJson(this.checkDetailList) |
| | | if (this.operationType === 'add') { |
| | | addInternalCheck(internalCheckDto).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | updateInternalCheck(internalCheckDto).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | ratify(ratifyStatus) { |
| | | // 䏿¹åéè¦å¡«åæ¹åå
容 |
| | | if (ratifyStatus === 0) { |
| | | this.approvalDialog = true |
| | | } else { |
| | | this.handleApproval(ratifyStatus) |
| | | } |
| | | }, |
| | | // æäº¤æ¹åä¿¡æ¯ |
| | | handleApproval(ratifyStatus) { |
| | | this.approvalLoading = true |
| | | const internalCheckDto = this.HaveJson(this.form) |
| | | internalCheckDto.ratifyStatus = ratifyStatus |
| | | internalCheckDto.ratifyRemark = ratifyStatus === 0 ? this.ratifyRemark : '' |
| | | ratifyInternalCheck(internalCheckDto).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeImplementDia(this.departId); |
| | | } |
| | | this.approvalLoading = false |
| | | }).catch(() => { |
| | | this.approvalLoading = false |
| | | }) |
| | | }, |
| | | // å¢å è¡¨æ ¼è¡æ°æ® |
| | | addRow() { |
| | | this.checkDetailList.push({ |
| | | element: '', |
| | | content: '', |
| | | method: '', |
| | | resultRecords: '', |
| | | nonNature: '', |
| | | }) |
| | | }, |
| | | // æ¸
ç©ºè¡¨æ ¼æ°æ® |
| | | clearTable() { |
| | | this.checkDetailList = [] |
| | | }, |
| | | closeImplementDia() { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeImplementDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped></style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">æ¶é´ï¼</span> |
| | | <el-input v-model="searchForm.meetingDate" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <audit-meeting-sign-dia v-if="auditMeetingSignDia" ref="auditMeetingSignDia" |
| | | @closeYearDia="closeYearDia"></audit-meeting-sign-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import AuditMeetingSignDia from './auditMeetingSignDia.vue'; |
| | | import { |
| | | pageInternalMeeting, |
| | | delInternalMeeting, |
| | | exportInternalMeeting, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | |
| | | export default { |
| | | name: 'auditMeetingSign', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { AuditMeetingSignDia, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | meetingDate: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ¶é´', |
| | | prop: 'meetingDate', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '主æäºº', |
| | | prop: 'compere', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å°ç¹', |
| | | prop: 'place', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¼è®®ä¸»é¢', |
| | | prop: 'subject', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åä¼äººå', |
| | | prop: 'participantName', |
| | | minWidth: '120' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | minWidth: '220', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | auditMeetingSignDia: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = this.searchForm |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageInternalMeeting({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾å¼¹æ¡ |
| | | openFormDia(type, row) { |
| | | this.auditMeetingSignDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.auditMeetingSignDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeYearDia() { |
| | | this.auditMeetingSignDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.meetingDate = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delInternalMeeting({ meetingId: row.meetingId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportInternalMeeting({ meetingId: row.meetingId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å
审ä¼è®®ç¾å°' + '.docx'); |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" title="å
审ä¼è®®ç¾å°è¡¨" width="1000px" @close="closeYearDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¶é´" prop="meetingDate"> |
| | | <el-date-picker v-model="form.meetingDate" clearable format="yyyy-MM-dd HH:mm:ss" placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="主æäºº" prop="compere"> |
| | | <el-input v-model="form.compere" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å°ç¹" prop="place"> |
| | | <el-input v-model="form.place" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¼è®®ä¸»é¢" prop="subject"> |
| | | <el-input v-model="form.subject" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="åä¼äººå" prop="participant"> |
| | | <el-select v-model="form.participant" clearable filterable multiple placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeYearDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import { |
| | | getInternalMeetingOne, |
| | | addInternalMeeting, |
| | | updateInternalMeeting, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'auditMeetingSignDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | meetingDate: '', |
| | | compere: '', |
| | | place: '', |
| | | subject: '', |
| | | participant: [], |
| | | }, |
| | | rules: { |
| | | meetingDate: [{ required: true, message: '请填åä¼è®®æ¶é´', trigger: 'blur' }], |
| | | compere: [{ required: true, message: '请填å主æäºº', trigger: 'blur' }], |
| | | place: [{ required: true, message: '请填åå°ç¹', trigger: 'blur' }], |
| | | subject: [{ required: true, message: '请填åä¼è®®ä¸»é¢', trigger: 'blur' }], |
| | | participant: [{ required: true, message: 'è¯·éæ©åå 人å', trigger: 'change' }], |
| | | }, |
| | | operationType: '', |
| | | personList: [] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | this.getAuthorizedPerson() |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo(row) { |
| | | this.diaLoading = true |
| | | getInternalMeetingOne({ meetingId: row.meetingId }).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | this.form.participant = this.form.participant.split(',').map(Number) |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalMeeting = this.HaveJson(this.form) |
| | | internalMeeting.participant = internalMeeting.participant.join(',') |
| | | if (this.operationType === 'add') { |
| | | addInternalMeeting(internalMeeting).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | updateInternalMeeting(internalMeeting).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeYearDia() { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeYearDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .table { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .table td { |
| | | height: 34px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 4px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å®¡æ ¸ç®çï¼</span> |
| | | <el-input v-model="searchForm.purposes" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <audit-report-dia v-if="auditReportDia" ref="auditReportDia" |
| | | @closeImplementDia="closeImplementDia"></audit-report-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import AuditReportDia from './auditReportDia.vue'; |
| | | import { |
| | | delInternalReport, |
| | | pageInternalReport, |
| | | exportInternalReport, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'auditReport', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { AuditReportDia, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | purposes: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'å®¡æ ¸ç®ç', |
| | | prop: 'purposes', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸ä¾æ®', |
| | | prop: 'basis', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¥æ', |
| | | prop: 'reviewDate', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¹æ³', |
| | | prop: 'method', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸èå´', |
| | | prop: 'scope', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸è´£ä»»è
', |
| | | prop: 'responsible', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸ç»é¿', |
| | | prop: 'leader', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸å', |
| | | prop: 'auditor', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸ç»åå·¥æ
åµ', |
| | | prop: 'division', |
| | | }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'å®¡æ ¸ç¶æ', |
| | | prop: 'examineStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return 'ä¸éè¿'; |
| | | } else if (params === 1) { |
| | | return 'éè¿'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸å
容', |
| | | prop: 'examineRemark', |
| | | minWidth: '140' |
| | | }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'è´¨éè´è´£äººç¶æ', |
| | | prop: 'qualityStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return 'ä¸éè¿'; |
| | | } else if (params === 1) { |
| | | return 'éè¿'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: 'è´¨éè´è´£äººæè§', |
| | | prop: 'qualityRemark', |
| | | minWidth: '140' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '220', |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.examineStatus === 1 || row.examineStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å®¡æ ¸', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('examine', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.examineStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æè§', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('ratify', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.qualityStatus === 1 || row.examineStatus === 0 || row.examineStatus === null) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.qualityStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | auditReportDia: false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = this.searchForm |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageInternalReport({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia(type, row) { |
| | | this.auditReportDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.auditReportDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeImplementDia() { |
| | | this.auditReportDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.purposes = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delInternalReport({ reportId: row.reportId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportInternalReport({ reportId: row.reportId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å
审æ¥å' + '.docx'); |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" title="å
é¨å®¡æ ¸æ¥å" width="80%" @close="closeImplementDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸ç®ç" prop="purposes"> |
| | | <el-input v-model="form.purposes" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸ä¾æ®" prop="basis"> |
| | | <el-input v-model="form.basis" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸æ¥æ" prop="reviewDate"> |
| | | <el-date-picker v-model="form.reviewDate" |
| | | :disabled="operationType === 'examine' || operationType === 'ratify'" clearable format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸æ¹æ³" prop="method"> |
| | | <el-input v-model="form.method" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸èå´" prop="scope"> |
| | | <el-input v-model="form.scope" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸è´£ä»»è
" prop="responsible"> |
| | | <el-input v-model="form.responsible" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸ç»é¿" prop="leader"> |
| | | <el-input v-model="form.leader" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸å" prop="auditor"> |
| | | <el-input v-model="form.auditor" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸ç»åå·¥æ
åµ" prop="division"> |
| | | <el-input v-model="form.division" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸æ¦åµ" prop="overview"> |
| | | <el-input v-model="form.overview" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å
审ç»å¯¹ä¸å¿ç®¡çä½ç³»çç»è®ºæ§è¯ä»·" prop="conclusion"> |
| | | <el-input v-model="form.conclusion" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ¹è¿æè§" prop="suggest"> |
| | | <el-input v-model="form.suggest" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="é¢è®¡åå®¡æ ¸é¨é¨å®æçº æ£æªæ½æéæ¶é´" prop="actionDate"> |
| | | <el-input v-model="form.actionDate" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ä¸ç¬¦åæ
嵿´æ¹æ»ä½è·è¿ç¡®è®¤äºº" prop="followUser"> |
| | | <el-input v-model="form.followUser" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ä¸ç¬¦åæ
嵿´æ¹æ»ä½è·è¿ç¡®è®¤è®°å½" prop="followRecord"> |
| | | <el-input v-model="form.followRecord" |
| | | :disabled="operationType === 'examine' || operationType === 'ratify'" :rows="3" clearable size="small" |
| | | type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ¬æ¥ååæ¾èå´" prop="reportScope"> |
| | | <el-input v-model="form.reportScope" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="operationType === 'ratify'" :span="24"> |
| | | <el-form-item label="è´¨éè´è´£äººæè§" prop="qualityRemark"> |
| | | <el-input v-model="form.qualityRemark" :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="operationType === 'examine'" :loading="loading" @click="examine(0)">ä¸éè¿</el-button> |
| | | <el-button v-if="operationType === 'examine'" :loading="loading" type="primary" @click="examine(1)">é |
| | | è¿</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" @click="handleApproval(0)">䏿¹å</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="handleApproval(1)">æ¹ |
| | | å</el-button> |
| | | <el-button v-if="operationType !== 'ratify' && operationType !== 'examine'" @click="closeImplementDia">å |
| | | æ¶</el-button> |
| | | <el-button v-if="operationType !== 'ratify' && operationType !== 'examine'" :loading="loading" type="primary" |
| | | @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="examineDialog" title="å®¡æ ¸" width="30%" @close="examineDialog = false"> |
| | | <span> |
| | | å®¡æ ¸å¤æ³¨ï¼ |
| | | <el-input v-model="examineRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="examineLoading" @click="examineDialog = false">å æ¶</el-button> |
| | | <el-button :loading="examineLoading" type="primary" @click="handleExamine(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="æ¹å" width="30%" @close="approvalDialog = false"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | | <el-input v-model="qualityRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="approvalLoading" @click="approvalDialog = false">å æ¶</el-button> |
| | | <el-button :loading="approvalLoading" type="primary" @click="handleApproval(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInternalReportOne, |
| | | addInternalReport, |
| | | updateInternalReport, |
| | | examineInternalReport, |
| | | qualityInternalReport, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'auditReportDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | purposes: '', |
| | | basis: '', |
| | | reviewDate: '', |
| | | method: '', |
| | | scope: '', |
| | | responsible: '', |
| | | leader: '', |
| | | auditor: '', |
| | | division: '', |
| | | overview: '', |
| | | conclusion: '', |
| | | suggest: '', |
| | | actionDate: '', |
| | | followUser: '', |
| | | followRecord: '', |
| | | reportScope: '', |
| | | qualityRemark: '', |
| | | }, |
| | | rules: { |
| | | purposes: [{ required: true, message: '请填åå®¡æ ¸ç®ç', trigger: 'blur' }], |
| | | basis: [{ required: true, message: '请填åå®¡æ ¸ä¾æ®', trigger: 'blur' }], |
| | | reviewDate: [{ required: true, message: '请填åå®¡æ ¸æ¥æ', trigger: 'change' }], |
| | | method: [{ required: true, message: '请填åå®¡æ ¸æ¹æ³', trigger: 'blur' }], |
| | | scope: [{ required: true, message: '请填åå®¡æ ¸èå´', trigger: 'blur' }], |
| | | responsible: [{ required: true, message: '请填åå®¡æ ¸è´£ä»»è
', trigger: 'blur' }], |
| | | leader: [{ required: true, message: '请填åå®¡æ ¸ç»é¿', trigger: 'blur' }], |
| | | auditor: [{ required: true, message: '请填åå®¡æ ¸å', trigger: 'blur' }], |
| | | division: [{ required: true, message: '请填åå®¡æ ¸ç»åå·¥æ
åµ', trigger: 'blur' }], |
| | | overview: [{ required: true, message: '请填åå®¡æ ¸æ¦åµ', trigger: 'blur' }], |
| | | conclusion: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | suggest: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | actionDate: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | followUser: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | followRecord: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | reportScope: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | qualityRemark: [{ required: true, message: '请填å', trigger: 'blur' }], |
| | | }, |
| | | operationType: '', |
| | | approvalDialog: false, |
| | | approvalLoading: false, |
| | | examineDialog: false, |
| | | examineLoading: false, |
| | | qualityRemark: '', |
| | | examineRemark: '', |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo(row) { |
| | | this.diaLoading = true |
| | | getInternalReportOne({ reportId: row.reportId }).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | if (this.operationType === 'add') { |
| | | addInternalReport(internalReport).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | updateInternalReport(internalReport).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // å®¡æ ¸æµç¨ |
| | | examine(examineStatus) { |
| | | if (examineStatus === 0) { |
| | | this.examineDialog = true |
| | | } else { |
| | | this.handleExamine(examineStatus) |
| | | } |
| | | }, |
| | | handleExamine(examineStatus) { |
| | | this.examineLoading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | internalReport.examineStatus = examineStatus |
| | | examineInternalReport(internalReport).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeImplementDia(this.departId); |
| | | } |
| | | this.examineLoading = false |
| | | }).catch(() => { |
| | | this.examineLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å®¡æ ¸ä¿¡æ¯ |
| | | handleApproval(qualityStatus) { |
| | | this.approvalLoading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | internalReport.qualityStatus = qualityStatus |
| | | qualityInternalReport(internalReport).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeImplementDia(this.departId); |
| | | } |
| | | this.approvalLoading = false |
| | | }).catch(() => { |
| | | this.approvalLoading = false |
| | | }) |
| | | }, |
| | | closeImplementDia() { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeImplementDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 6vh auto 50px !important; |
| | | } |
| | | |
| | | >>>.el-dialog__body { |
| | | max-height: 42em; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | >>>.is-required { |
| | | margin-bottom: 6px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 200px">ä¸åæ ¼æè¿°ï¼</span> |
| | | <el-input v-model="searchForm.raiseResult" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <corrective-action-d-ia v-if="correctiveActionDIa" ref="correctiveActionDIa" |
| | | @closeRectifyDia="closeRectifyDia"></corrective-action-d-ia> |
| | | <view-test-record v-if="viewTestRecordDialog" ref="viewTestRecordDialog"></view-test-record> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import CorrectiveActionDIa from './correctiveActionDIa.vue'; |
| | | import ViewTestRecord from './ViewTestRecord.vue'; |
| | | import { |
| | | pageInternalCorrect, |
| | | exportInternalCorrect, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | |
| | | export default { |
| | | name: 'correctiveAction', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { CorrectiveActionDIa, limsTable, TableCard, ViewTestRecord }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | raiseResult: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'ä¸åæ ¼æå离äºå®çæè¿°', |
| | | prop: 'raiseResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'åå åæ', |
| | | prop: 'causeResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'çº æ£æªæ½', |
| | | prop: 'correctResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '宿½éªè¯ç»æ', |
| | | prop: 'validationResult', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '220', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'çº æ£', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('rectify', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¥çéä»¶', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.viewFiles(row); |
| | | }, |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | correctiveActionDIa: false, |
| | | viewTestRecordDialog: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = { |
| | | raiseResult: this.searchForm.raiseResult, |
| | | } |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageInternalCorrect({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.raiseResult = ''; |
| | | this.searchList() |
| | | }, |
| | | // æ¥çéä»¶ |
| | | viewFiles(row) { |
| | | this.viewTestRecordDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.viewTestRecordDialog.openDia(row) |
| | | }) |
| | | }, |
| | | openFormDia(type, row) { |
| | | this.correctiveActionDIa = true |
| | | this.$nextTick(() => { |
| | | this.$refs.correctiveActionDIa.openDia(type, row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportInternalCorrect({ correctId: row.correctId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å
å®¡çº æ£æªæ½' + '.docx'); |
| | | }) |
| | | }, |
| | | closeRectifyDia() { |
| | | this.correctiveActionDIa = false |
| | | this.searchList() |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="formDia" title="çº æ£æªæ½å¤çå" |
| | | width="60%" @close="closeRectifyDia"> |
| | | <el-steps :active="currentStep" align-center finish-status="success"> |
| | | <el-step title="ä¸åæ ¼æå离äºå®çæè¿°" @click.native="setStep(0)"></el-step> |
| | | <el-step title="åå åæ" @click.native="setStep(1)"></el-step> |
| | | <el-step title="çº æ£æªæ½" @click.native="setStep(2)"></el-step> |
| | | <el-step title="宿½éªè¯ç»æ" @click.native="setStep(3)"></el-step> |
| | | </el-steps> |
| | | <div> |
| | | <table border="1" cellspacing="10" class="tables"> |
| | | <tr v-if="showStep === 0"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>ä¸åæ ¼æå离äºå®çæè¿°ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 0 && currentStep === 0" v-model="form.raiseResult" :rows="4" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 0 && currentStep !== 0" class="td-info1"> {{ form.raiseResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0"> |
| | | <td v-if="currentStep === 0" class="td-title"> |
| | | <p><span class="required-span">* </span>è¯·éæ©ä¸ä¸æ¥è´è´£äººï¼</p> |
| | | </td> |
| | | <td v-if="currentStep === 0" class="td-info" colspan="3"> |
| | | <el-select v-model="form.causeUserId" clearable filterable placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0 && currentStep !== 0"> |
| | | <td class="td-title"> |
| | | <p>æåºäººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.raiseUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>æåºé¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.raiseDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 0 && currentStep !== 0"> |
| | | <td class="td-title"> |
| | | <p>æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.raiseTime }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>åå åæï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 1 && currentStep === 1" v-model="form.causeResult" :rows="5" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 1 && currentStep !== 1" class="td-info1"> {{ form.causeResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1 && currentStep !== 1"> |
| | | <td class="td-title"> |
| | | <p>åå åæäººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.causeUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>责任é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.causeDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1 && currentStep !== 1"> |
| | | <td class="td-title"> |
| | | <p>åå åææ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.causeTime }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 1"> |
| | | <td v-if="currentStep === 1" class="td-title"> |
| | | <p><span class="required-span">* </span>è¯·éæ©ä¸ä¸æ¥è´è´£äººï¼</p> |
| | | </td> |
| | | <td v-if="currentStep === 1" class="td-info" colspan="3"> |
| | | <el-select v-model="form.correctUserId" clearable filterable placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>çº æ£æªæ½ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 2 && currentStep === 2" v-model="form.correctResult" :rows="5" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 2 && currentStep !== 2" class="td-info1"> {{ form.correctResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2"> |
| | | <td class="td-title"> |
| | | <p>æåºè¦æ±é¨é¨ç¡®è®¤ï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 2 && currentStep === 2" v-model="form.raiseDepartmentAffirm" :rows="5" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 2 && currentStep !== 2" class="td-info1"> {{ form.raiseDepartmentAffirm }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2 && currentStep !== 2"> |
| | | <td class="td-title"> |
| | | <p>çº æ£äººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.correctUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>责任é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.correctDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2 && currentStep !== 2"> |
| | | <td class="td-title"> |
| | | <p>çº æ£æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.correctTime }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 2"> |
| | | <td v-if="currentStep === 2" class="td-title"> |
| | | <p><span class="required-span">* </span>è¯·éæ©ä¸ä¸æ¥è´è´£äººï¼</p> |
| | | </td> |
| | | <td v-if="currentStep === 2" class="td-info" colspan="3"> |
| | | <el-select v-model="form.validationUserId" clearable filterable placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 3"> |
| | | <td class="td-title"> |
| | | <p><span class="required-span">* </span>宿½éªè¯ç»æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | <el-input v-if="showStep === 3 && currentStep === 3" v-model="form.validationResult" :rows="5" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"> |
| | | </el-input> |
| | | <span v-if="showStep === 3 && currentStep !== 3" class="td-info1"> {{ form.validationResult }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 3 && currentStep !== 3"> |
| | | <td class="td-title"> |
| | | <p>éªè¯äººï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.validationUserName }} |
| | | </td> |
| | | <td class="td-title"> |
| | | <p>责任é¨é¨ï¼</p> |
| | | </td> |
| | | <td class="td-info"> |
| | | {{ form.validationDepartment }} |
| | | </td> |
| | | </tr> |
| | | <tr v-if="showStep === 3 && currentStep !== 3"> |
| | | <td class="td-title"> |
| | | <p>éªè¯æ¥æï¼</p> |
| | | </td> |
| | | <td class="td-info" colspan="3"> |
| | | {{ form.validationTime }} |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeRectifyDia">å æ¶</el-button> |
| | | <el-button v-if="currentStep !== 4" :loading="editLoad" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInternalCorrect, |
| | | addInternalCorrect, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | export default { |
| | | name: 'correctiveActionDIa', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | currentStep: 0, |
| | | showStep: 0, |
| | | form: { |
| | | superviseDetailsId: '', |
| | | raiseResult: '', |
| | | vdeRaiseResult: '', |
| | | causeUserId: '', |
| | | raiseUserName: '', |
| | | raiseDepartment: '', |
| | | raiseTime: '', |
| | | causeResult: '', |
| | | causeUserName: '', |
| | | causeDepartment: '', |
| | | causeTime: '', |
| | | correctUserId: '', |
| | | correctResult: '', |
| | | raiseDepartmentAffirm: '', |
| | | correctUserName: '', |
| | | correctDepartment: '', |
| | | correctTime: '', |
| | | validationUserId: '', |
| | | validationResult: '', |
| | | validationUserName: '', |
| | | validationDepartment: '', |
| | | validationTime: '', |
| | | }, |
| | | editLoad: false, |
| | | personList: [], |
| | | supervisedUserList: [], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | this.form.superviseDetailsId = row.superviseDetailsId |
| | | } |
| | | this.getAuthorizedPerson() // è·å人åå表 |
| | | this.getSupervisedUserList() // è·åå½åé¨é¨äººå |
| | | }, |
| | | // æ¥è¯¢çæ§è®¡å详æ
宿½ä¿¡æ¯ |
| | | searchInfo(row) { |
| | | this.form.qualityMonitorDetailsId = row.qualityMonitorDetailsId |
| | | getInternalCorrect({ correctId: row.correctId }).then(res => { |
| | | if (res.code === 201) return |
| | | if (res.data.superviseDetailsCorrectId === null) { |
| | | this.showStep = 0 |
| | | this.currentStep = 0 |
| | | } else { |
| | | this.form = res.data |
| | | if (res.data.isFinish === 0) { |
| | | if (res.data.causeUserId) { |
| | | this.showStep = 1 |
| | | this.currentStep = 1 |
| | | } |
| | | if (res.data.correctUserId) { |
| | | this.showStep = 2 |
| | | this.currentStep = 2 |
| | | } |
| | | if (res.data.validationUserId) { |
| | | this.showStep = 3 |
| | | this.currentStep = 3 |
| | | } |
| | | } else { |
| | | this.currentStep = 4 |
| | | this.showStep = 3 |
| | | } |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // æäº¤ |
| | | handleEdit() { |
| | | if (this.currentStep === 0) { |
| | | if (!this.form.raiseResult) { |
| | | this.$message.warning('请填åä¸åæ ¼æè¿°') |
| | | return |
| | | } |
| | | if (!this.form.causeUserId) { |
| | | this.$message.warning('è¯·éæ©ä¸ä¸æ¥è´è´£äºº') |
| | | return |
| | | } |
| | | } else if (this.currentStep === 1) { |
| | | if (!this.form.causeResult) { |
| | | this.$message.warning('请填ååå åæ') |
| | | return |
| | | } |
| | | if (!this.form.correctUserId) { |
| | | this.$message.warning('è¯·éæ©ä¸ä¸æ¥è´è´£äºº') |
| | | return |
| | | } |
| | | } else if (this.currentStep === 2) { |
| | | if (!this.form.correctResult) { |
| | | this.$message.warning('请填åçº æ£æªæ½') |
| | | return |
| | | } |
| | | if (!this.form.validationUserId) { |
| | | this.$message.warning('è¯·éæ©ä¸ä¸æ¥è´è´£äºº') |
| | | return |
| | | } |
| | | } else if (this.currentStep === 3) { |
| | | if (!this.form.validationResult) { |
| | | this.$message.warning('请填å宿½éªè¯ç»æ') |
| | | return |
| | | } |
| | | } |
| | | this.editLoad = true |
| | | this.form.supervisedTime = '' |
| | | this.form.flowType = this.currentStep |
| | | addInternalCorrect(this.form).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æäº¤æå') |
| | | this.closeRectifyDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeRectifyDia() { |
| | | this.formDia = false |
| | | this.$emit('closeRectifyDia') |
| | | }, |
| | | setStep(step) { |
| | | this.showStep = step |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | getSupervisedUserList() { |
| | | selectUserCondition({ type: 2 }).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.supervisedUserList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 10vh auto 50px !important; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .td-title { |
| | | height: 40px; |
| | | width: 170px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 6px; |
| | | } |
| | | |
| | | .td-info { |
| | | padding: 6px; |
| | | } |
| | | |
| | | .td-info1 { |
| | | display: inline-block; |
| | | width: 100%; |
| | | text-align: left; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" title="å
é¨å®¡æ ¸å®æ½è®¡å" width="80%" @close="closeImplementDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="auto"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸ç®ç" prop="purposes"> |
| | | <el-input v-model="form.purposes" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸æ§è´¨" prop="nature"> |
| | | <el-input v-model="form.nature" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸èå´" prop="scope"> |
| | | <el-input v-model="form.scope" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å®¡æ ¸ä¾æ®" prop="basis"> |
| | | <el-input v-model="form.basis" :disabled="operationType === 'ratify'" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸ç»é¿" prop="teamLeader"> |
| | | <el-input v-model="form.teamLeader" :disabled="operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å
审å" prop="internalAuditor"> |
| | | <el-input v-model="form.internalAuditor" :disabled="operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸æ¥æ" prop="reviewDate"> |
| | | <el-date-picker v-model="form.reviewDate" :disabled="operationType === 'ratify'" clearable |
| | | format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸æ¹æ³" prop="auditMethod"> |
| | | <el-input v-model="form.auditMethod" :disabled="operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="馿¬¡ä¼è®®æ¶é´" prop="firstMeetingTime"> |
| | | <el-date-picker v-model="form.firstMeetingTime" :disabled="operationType === 'ratify'" clearable |
| | | format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ«æ¬¡ä¼è®®æ¶é´" prop="lastMeetingTime"> |
| | | <el-date-picker v-model="form.lastMeetingTime" :disabled="operationType === 'ratify'" clearable |
| | | format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸æ¥åæäº¤æ¥æ" prop="submitTime"> |
| | | <el-date-picker v-model="form.submitTime" :disabled="operationType === 'ratify'" clearable |
| | | format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" style="width: 100%" type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸æ¥ååæ¾èå´" prop="submitScope"> |
| | | <el-input v-model="form.submitScope" :disabled="operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | <div v-if="operationType !== 'ratify'" style="text-align: right;margin-bottom: 10px"> |
| | | <el-button size="small" type="primary" @click="addRow">æ·»å </el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">æ¸
空</el-button> |
| | | </div> |
| | | <el-table :data="implementDetailList" border height="300" style="width: 100%"> |
| | | <el-table-column align="center" label="åºå·" type="index" width="60" /> |
| | | <el-table-column header-align="center" label="æ¶é´" prop="implement"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.implement" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="åå®¡æ ¸é¨é¨" prop="department"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.department" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="责任人" prop="responsible"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.responsible" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="å®¡æ ¸å" prop="auditor" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.auditor" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="å®¡æ ¸å
容" prop="reviewContent" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.reviewContent" :disabled="operationType === 'ratify'" size="small" /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" @click="ratify(0)">䏿¹å</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="ratify(1)">æ¹ |
| | | å</el-button> |
| | | <el-button v-if="operationType !== 'ratify'" @click="closeImplementDia">å æ¶</el-button> |
| | | <el-button v-if="operationType !== 'ratify'" :loading="loading" type="primary" @click="handleEdit">æ |
| | | 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="æ¹å" width="30%" @close="approvalDialog = false"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | | <el-input v-model="ratifyRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="approvalLoading" @click="approvalDialog = false">å æ¶</el-button> |
| | | <el-button :loading="approvalLoading" type="primary" @click="handleApproval(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInternalImplementOne, |
| | | addInternalImplement, |
| | | updateInternalImplement, |
| | | ratifyInternalImplement, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'implementPlanDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | purposes: '', |
| | | nature: '', |
| | | scope: '', |
| | | basis: '', |
| | | teamLeader: '', |
| | | internalAuditor: '', |
| | | reviewDate: '', |
| | | auditMethod: '', |
| | | firstMeetingTime: '', |
| | | lastMeetingTime: '', |
| | | submitTime: '', |
| | | submitScope: '', |
| | | }, |
| | | rules: { |
| | | purposes: [{ required: true, message: '请填åå®¡æ ¸ç®ç', trigger: 'blur' }], |
| | | nature: [{ required: true, message: '请填åå®¡æ ¸æ§è´¨', trigger: 'blur' }], |
| | | scope: [{ required: true, message: '请填åå®¡æ ¸èå´', trigger: 'blur' }], |
| | | basis: [{ required: true, message: '请填åå®¡æ ¸ä¾æ®', trigger: 'blur' }], |
| | | teamLeader: [{ required: true, message: '请填åå®¡æ ¸ç»é¿', trigger: 'blur' }], |
| | | internalAuditor: [{ required: true, message: '请填åå
审å', trigger: 'blur' }], |
| | | reviewDate: [{ required: true, message: '请填åå®¡æ ¸æ¶é´', trigger: 'blur' }], |
| | | auditMethod: [{ required: true, message: '请填åå®¡æ ¸æ¹æ³', trigger: 'blur' }], |
| | | firstMeetingTime: [{ required: true, message: '请填å馿¬¡ä¼è®®æ¶é´', trigger: 'blur' }], |
| | | lastMeetingTime: [{ required: true, message: 'è¯·å¡«åæ«æ¬¡ä¼è®®æ¶é´', trigger: 'blur' }], |
| | | submitTime: [{ required: true, message: '请填åå®¡æ ¸æ¥åæäº¤æ¥æ', trigger: 'blur' }], |
| | | submitScope: [{ required: true, message: '请填åå®¡æ ¸æ¥ååæ¾èå´', trigger: 'blur' }], |
| | | }, |
| | | implementDetailList: [], |
| | | operationType: '', |
| | | approvalDialog: false, |
| | | approvalLoading: false, |
| | | ratifyRemark: '', |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo(row) { |
| | | this.diaLoading = true |
| | | getInternalImplementOne({ implementId: row.implementId }).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | this.implementDetailList = this.form.implementDetailList |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | if (this.implementDetailList.length === 0) { |
| | | this.$message.warning('请添å è¡¨æ ¼æ°æ®') |
| | | return |
| | | } |
| | | this.loading = true |
| | | const internalImplementDto = this.HaveJson(this.form) |
| | | internalImplementDto.implementDetailList = this.HaveJson(this.implementDetailList) |
| | | if (this.operationType === 'add') { |
| | | addInternalImplement(internalImplementDto).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | updateInternalImplement(internalImplementDto).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeImplementDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | ratify(ratifyStatus) { |
| | | // 䏿¹åéè¦å¡«åæ¹åå
容 |
| | | if (ratifyStatus === 0) { |
| | | this.approvalDialog = true |
| | | } else { |
| | | this.handleApproval(ratifyStatus) |
| | | } |
| | | }, |
| | | // æäº¤æ¹åä¿¡æ¯ |
| | | handleApproval(ratifyStatus) { |
| | | this.approvalLoading = true |
| | | const internalImplementDto = this.HaveJson(this.form) |
| | | internalImplementDto.ratifyStatus = ratifyStatus |
| | | internalImplementDto.ratifyRemark = ratifyStatus === 0 ? this.ratifyRemark : '' |
| | | ratifyInternalImplement(internalImplementDto).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeImplementDia(this.departId); |
| | | } |
| | | this.approvalLoading = false |
| | | }).catch(() => { |
| | | this.approvalLoading = false |
| | | }) |
| | | }, |
| | | // å¢å è¡¨æ ¼è¡æ°æ® |
| | | addRow() { |
| | | this.implementDetailList.push({ |
| | | implement: '', |
| | | department: '', |
| | | responsible: '', |
| | | auditor: '', |
| | | reviewContent: '', |
| | | }) |
| | | }, |
| | | // æ¸
ç©ºè¡¨æ ¼æ°æ® |
| | | clearTable() { |
| | | this.implementDetailList = [] |
| | | }, |
| | | closeImplementDia() { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeImplementDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 10vh auto 50px !important; |
| | | } |
| | | |
| | | >>>.el-dialog__body { |
| | | max-height: 38em; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å®¡æ ¸ç®çï¼</span> |
| | | <el-input v-model="searchForm.purposes" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" @pagination="pagination" :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | <implement-plan-dia v-if="implementPlanDia" ref="implementPlanDia" |
| | | @closeImplementDia="closeImplementDia"></implement-plan-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | pageInternalImplement, |
| | | delInternalImplement, |
| | | exportInternalImplement, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import ImplementPlanDia from './implementPlanDia.vue'; |
| | | |
| | | export default { |
| | | name: 'implementationPlan', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { ImplementPlanDia, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | purposes: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'å®¡æ ¸ç®ç', |
| | | prop: 'purposes', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ§è´¨', |
| | | prop: 'nature', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸èå´', |
| | | prop: 'scope', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸ä¾æ®', |
| | | prop: 'basis', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸ç»é¿', |
| | | prop: 'teamLeader', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å
审å', |
| | | prop: 'internalAuditor', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¥æ', |
| | | prop: 'reviewDate', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¹æ³', |
| | | prop: 'auditMethod', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | label: '馿¬¡ä¼è®®æ¶é´', |
| | | prop: 'firstMeetingTime', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | label: 'æ«æ¬¡ä¼è®®æ¶é´', |
| | | prop: 'lastMeetingTime', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¥åæäº¤æ¥æ', |
| | | prop: 'submitTime', |
| | | minWidth: '100', |
| | | }, |
| | | { |
| | | label: 'å®¡æ ¸æ¥ååæ¾èå´', |
| | | prop: 'submitScope', |
| | | minWidth: '100', |
| | | }, { |
| | | dataType: 'tag', |
| | | label: 'æ¹åç¶æ', |
| | | prop: 'ratifyStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return '䏿¹å'; |
| | | } else if (params === 1) { |
| | | return 'æ¹å'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, { |
| | | label: 'æ¹åå
容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '220', |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('ratify', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | implementPlanDia: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = this.searchForm |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageInternalImplement({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia(type, row) { |
| | | this.implementPlanDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.implementPlanDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeImplementDia() { |
| | | this.implementPlanDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.purposes = ''; |
| | | this.searchList() |
| | | }, |
| | | // å é¤ |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delInternalImplement({ implementId: row.implementId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportInternalImplement({ implementId: row.implementId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å
审宿½è®¡å' + '.docx'); |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å
审ç®çï¼</span> |
| | | <el-input v-model="searchForm.purpose" clearable size="small"></el-input> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" @pagination="pagination" :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | <year-plan-dia v-if="yearPlanDia" ref="yearPlanDia" @closeYearDia="closeYearDia"></year-plan-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import YearPlanDia from './yearPlanDia.vue'; |
| | | import { |
| | | pageInternalPlan, |
| | | delInternalPlan, |
| | | exportInternalPlan, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | |
| | | export default { |
| | | name: 'yearPlan', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { YearPlanDia, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | purpose: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'å
审ç®ç', |
| | | prop: 'purpose', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å
审èå´', |
| | | prop: 'scope', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å
审便®', |
| | | prop: 'basis', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ç»é¿', |
| | | prop: 'leader', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ç»å', |
| | | prop: 'crew', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'å®¡æ ¸ç¶æ', |
| | | prop: 'examineStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return 'ä¸éè¿'; |
| | | } else if (params === 1) { |
| | | return 'éè¿'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, { |
| | | label: 'å®¡æ ¸å
容', |
| | | prop: 'examineRemark', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'å®¡æ ¸äºº', |
| | | prop: 'examineUserName', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'å®¡æ ¸æ¥æ', |
| | | prop: 'examineTime', |
| | | minWidth: '160' |
| | | }, { |
| | | dataType: 'tag', |
| | | label: 'æ¹åç¶æ', |
| | | prop: 'ratifyStatus', |
| | | minWidth: '100', |
| | | formatData: (params) => { |
| | | if (params === 0) { |
| | | return '䏿¹å'; |
| | | } else if (params === 1) { |
| | | return 'æ¹å'; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params === 0) { |
| | | return 'danger'; |
| | | } else if (params === 1) { |
| | | return 'success'; |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | }, { |
| | | label: 'æ¹åå
容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'æ¹å人', |
| | | prop: 'ratifyUserName', |
| | | minWidth: '100' |
| | | }, { |
| | | label: 'æ¹åæ¥æ', |
| | | prop: 'ratifyTime', |
| | | minWidth: '160' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | minWidth: '220', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å®¡æ ¸', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('examine', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.examineStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('ratify', row); |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1 || row.examineStatus === 0 || row.examineStatus === null) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if (row.ratifyStatus === 1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | yearPlanDia: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = this.searchForm |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pageInternalPlan({ ...entity, ...page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delInternalPlan({ planId: row.planId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia(type, row) { |
| | | this.yearPlanDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.yearPlanDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown(row) { |
| | | exportInternalPlan({ planId: row.planId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å
审年度计å' + '.docx'); |
| | | }) |
| | | }, |
| | | closeYearDia() { |
| | | this.yearPlanDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.purpose = ''; |
| | | this.searchList() |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="formDia" title="å
é¨å®¡æ ¸å¹´åº¦è®¡å" width="1000px" @close="closeYearDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å
审ç®ç" prop="purpose"> |
| | | <el-input v-model="form.purpose" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å
审èå´" prop="scope"> |
| | | <el-input v-model="form.scope" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | :rows="3" clearable size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å
审便®" prop="basis"> |
| | | <el-input v-model="form.basis" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç»é¿" prop="leader"> |
| | | <el-input v-model="form.leader" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç»å" prop="crew"> |
| | | <el-input v-model="form.crew" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <table border="1" cellspacing="10" class="table"> |
| | | <tr> |
| | | <td class="div-with-line"> |
| | | <span style="float: left;">é¨é¨</span> |
| | | <span style="float: right;">æä»½</span> |
| | | </td> |
| | | <th v-for="(item, index) in dic1" :key="index">{{ item }}</th> |
| | | </tr> |
| | | <tr v-for="(item, index) in planDetailList" :key="index"> |
| | | <td>{{ item.department }}</td> |
| | | <th> |
| | | <el-input v-model="item.january" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.february" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.march" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.april" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.may" :disabled="operationType === 'examine' || operationType === 'ratify'" clearable |
| | | size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.june" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.july" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.august" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.september" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.october" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.november" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | <th> |
| | | <el-input v-model="item.december" :disabled="operationType === 'examine' || operationType === 'ratify'" |
| | | clearable size="small"></el-input> |
| | | </th> |
| | | </tr> |
| | | </table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="operationType === 'examine'" :loading="loading" @click="examine(0)">ä¸éè¿</el-button> |
| | | <el-button v-if="operationType === 'examine'" :loading="loading" type="primary" @click="examine(1)">é |
| | | è¿</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" @click="approval(0)">䏿¹å</el-button> |
| | | <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="handleApproval(1)">æ¹ |
| | | å</el-button> |
| | | <el-button v-if="operationType !== 'ratify' && operationType !== 'examine'" @click="closeYearDia">å |
| | | æ¶</el-button> |
| | | <el-button v-if="operationType !== 'ratify' && operationType !== 'examine'" :loading="loading" type="primary" |
| | | @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="examineDialog" title="å®¡æ ¸" width="30%" @close="examineDialog = false"> |
| | | <span> |
| | | å®¡æ ¸å¤æ³¨ï¼ |
| | | <el-input v-model="examineRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="examineLoading" @click="examineDialog = false">å æ¶</el-button> |
| | | <el-button :loading="examineLoading" type="primary" @click="handleExamine(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="æ¹å" width="30%" @close="approvalDialog = false"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | | <el-input v-model="ratifyRemark" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="approvalLoading" @click="approvalDialog = false">å æ¶</el-button> |
| | | <el-button :loading="approvalLoading" type="primary" @click="handleApproval(0)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInternalPlanOne, |
| | | addInternalPlan, |
| | | updateInternalPlan, |
| | | examineInternalPlan, |
| | | ratifyInternalPlan, |
| | | } from '@/api/cnas/systemManagement/internalAuditManagement.js' |
| | | export default { |
| | | name: 'yearPlanDia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | purpose: '', |
| | | scope: '', |
| | | basis: '', |
| | | leader: '', |
| | | crew: '', |
| | | }, |
| | | rules: { |
| | | purpose: [{ required: true, message: '请填åå
审ç®ç', trigger: 'blur' }], |
| | | scope: [{ required: true, message: '请填åå
审èå´', trigger: 'blur' }], |
| | | basis: [{ required: true, message: '请填åå
审便®', trigger: 'blur' }], |
| | | leader: [{ required: true, message: '请填åç»é¿', trigger: 'blur' }], |
| | | crew: [{ required: true, message: '请填åç»å', trigger: 'blur' }], |
| | | }, |
| | | operationType: '', |
| | | approvalDialog: false, |
| | | approvalLoading: false, |
| | | examineDialog: false, |
| | | examineLoading: false, |
| | | ratifyRemark: '', |
| | | examineRemark: '', |
| | | dic1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], |
| | | planDetailList: [{ department: 'è£
å¤çµç¼å®éªå®¤' }, { department: 'é信产åå®éªå®¤' }, { department: 'çµå产åå®éªå®¤' }, { department: 'å¨è½äº§åå®éªå®¤' }, { department: 'å°é¢çº¿ç¼å®éªå®¤' }], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia(type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo(row) { |
| | | this.diaLoading = true |
| | | getInternalPlanOne({ planId: row.planId }).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | this.planDetailList = this.form.planDetailList |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalPlan = this.HaveJson(this.form) |
| | | internalPlan.planDetailList = this.HaveJson(this.planDetailList) |
| | | if (this.operationType === 'add') { |
| | | addInternalPlan(internalPlan).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | updateInternalPlan(internalPlan).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeYearDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // å®¡æ ¸æµç¨ |
| | | examine(examineStatus) { |
| | | if (examineStatus === 0) { |
| | | this.examineDialog = true |
| | | } else { |
| | | this.handleExamine(examineStatus) |
| | | } |
| | | }, |
| | | handleExamine(examineStatus) { |
| | | this.examineLoading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | internalReport.examineStatus = examineStatus |
| | | internalReport.examineRemark = this.examineRemark |
| | | examineInternalPlan(internalReport).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeYearDia(this.departId); |
| | | } |
| | | this.examineLoading = false |
| | | }).catch(() => { |
| | | this.examineLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤æ¹åä¿¡æ¯ |
| | | approval(ratifyStatus) { |
| | | if (ratifyStatus === 0) { |
| | | this.approvalDialog = true |
| | | } else { |
| | | this.handleApproval(ratifyStatus) |
| | | } |
| | | }, |
| | | handleApproval(ratifyStatus) { |
| | | this.approvalLoading = true |
| | | const internalReport = this.HaveJson(this.form) |
| | | internalReport.ratifyStatus = ratifyStatus |
| | | internalReport.ratifyRemark = this.ratifyRemark |
| | | ratifyInternalPlan(internalReport).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æäº¤æåï¼'); |
| | | this.approvalDialog = false |
| | | this.closeYearDia(this.departId); |
| | | } |
| | | this.approvalLoading = false |
| | | }).catch(() => { |
| | | this.approvalLoading = false |
| | | }) |
| | | }, |
| | | closeYearDia() { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeYearDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin: 6vh auto 50px !important; |
| | | } |
| | | |
| | | >>>.el-dialog__body { |
| | | max-height: 42em; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | >>>.is-required { |
| | | margin-bottom: 6px; |
| | | } |
| | | |
| | | .table { |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .table th { |
| | | width: 70px; |
| | | } |
| | | |
| | | .table td { |
| | | width: 70px; |
| | | height: 70px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .div-with-line { |
| | | width: 70px; |
| | | height: 70px; |
| | | position: relative; |
| | | /*overflow: hidden; /* éèæº¢åºå
容 */ |
| | | } |
| | | |
| | | .div-with-line::after { |
| | | content: ''; |
| | | position: absolute; |
| | | bottom: 0; |
| | | height: 1px; |
| | | background-color: #000000; |
| | | left: 50%; |
| | | transform: translateX(-50%) rotate(45deg); |
| | | transform-origin: center 50%; |
| | | top: 50%; |
| | | width: 100px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <el-tabs v-model="activeName" class="tab-panel" type="border-card"> |
| | | <el-tab-pane label="年度计å" name="yearPlan"> |
| | | <year-plan></year-plan> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="å
é¨å®æ½è®¡å" name="implementationPlan"> |
| | | <implementation-plan></implementation-plan> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="å
审ä¼è®®ç¾å°" name="meetingSignIn"> |
| | | <audit-meeting-sign></audit-meeting-sign> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="å
å®¡æ£æ¥" name="auditInspection"> |
| | | <audit-inspection></audit-inspection> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="çº æ£æªæ½" name="correctiveAction"> |
| | | <corrective-action></corrective-action> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="å
审æ¥å" name="auditReport"> |
| | | <audit-report></audit-report> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import YearPlan from './components/yearPlan.vue'; |
| | | import implementationPlan from './components/implementationPlan.vue'; |
| | | import AuditInspection from './components/auditInspection.vue'; |
| | | import AuditReport from './components/auditReport.vue'; |
| | | import AuditMeetingSign from './components/auditMeetingSign.vue'; |
| | | import CorrectiveAction from './components/correctiveAction.vue'; |
| | | |
| | | export default { |
| | | name: 'InternalAuditManagement', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { CorrectiveAction, AuditMeetingSign, AuditReport, AuditInspection, YearPlan, implementationPlan }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | activeName: 'yearPlan', |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: {} |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | padding: 15px 0; |
| | | } |
| | | |
| | | .tab-panel { |
| | | background: #fff; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div style="padding: 10px"> |
| | | <div class="header"> |
| | | <span></span> |
| | | <div style="min-width: 200px"> |
| | | <el-button type="primary" size="small" @click="addFun">æ° å¢</el-button> |
| | | <el-button type="primary" size="small" @click="approvalFun">审 æ¹</el-button> |
| | | <el-button type="primary" size="small" @click="approveFun">æ¹ å</el-button> |
| | | <el-upload style="display: inline-block; padding: 0 6px" :headers="uploadHeader" :action="action" |
| | | :on-error="onError" :show-file-list="false" :on-success="onSuccess"> |
| | | <el-button size="small" type="primary">导 å
¥</el-button> |
| | | </el-upload> |
| | | <el-button size="small" @click="openDownloadDia">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table :data="tableData" style="width: 100%" height="calc(100vh - 18em)"> |
| | | <el-table-column type="index" label="åºå·" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (page.current - 1) * page.size + scope.$index + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="venue" label="å°ç¹/æ´»å¨" min-width="180"></el-table-column> |
| | | <el-table-column prop="hazard" label="å±é©å ç´ " width="testDate" min-width="180"></el-table-column> |
| | | <el-table-column prop="accidents" label="å¯è½å¯¼è´çäºæ
" min-width="180"></el-table-column> |
| | | <el-table-column prop="injury" label="对人å¯è½é æçå±å®³" min-width="180"></el-table-column> |
| | | <el-table-column label="é£é©è¯ä»·" align="center" min-width="180"> |
| | | <template> |
| | | <el-table-column prop="riskL" label="L" min-width="80"></el-table-column> |
| | | <el-table-column prop="riskE" label="E" min-width="80"></el-table-column> |
| | | <el-table-column prop="riskC" label="C" min-width="80"></el-table-column> |
| | | <el-table-column prop="riskD" label="D" min-width="80"></el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="level" label="é£é©ç级" min-width="180"></el-table-column> |
| | | <el-table-column prop="measures" label="æ§å¶æªæ½" min-width="180"></el-table-column> |
| | | <el-table-column prop="editorName" label="ç¼å¶äººå§å" min-width="180"></el-table-column> |
| | | <el-table-column prop="editorDate" label="ç¼å¶æ¥æ" min-width="180"></el-table-column> |
| | | <el-table-column prop="approvalName" label="审æ¹äººå§å" min-width="180"></el-table-column> |
| | | <el-table-column prop="approvalDate" label="å®¡æ¹æ¥æ" min-width="180"></el-table-column> |
| | | <el-table-column prop="approvalStatus" label="审æ¹ç¶æ" min-width="180"> |
| | | <template #default="{ row }"> |
| | | {{ row.approvalStatus === 1 ? 'éè¿' : row.approvalStatus === 2 ? 'ä¸éè¿' : '' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approveName" label="æ¹å人å§å" min-width="180"></el-table-column> |
| | | <el-table-column prop="approveStatus" label="æ¹åç¶æ" min-width="180"> |
| | | <template #default="{ row }"> |
| | | {{ row.approveStatus === 1 ? 'éè¿' : row.approveStatus === 2 ? 'ä¸éè¿' : '' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approveDate" label="æ¹åæ¥æ" min-width="180"></el-table-column> |
| | | <el-table-column fixed="right" label="æä½" width="100"> |
| | | <template v-slot="scope"> |
| | | <el-button type="text" size="small" @click="editClick(scope.row)">ç¼è¾</el-button> |
| | | <el-button @click="deleteClick(scope.row)" type="text" size="small">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" :total="page.total" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog title="æç¤º" :visible.sync="dialogVisible" width="50%"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å°ç¹/æ´»å¨"> |
| | | <el-input v-model="form.venue" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å±é©å ç´ "> |
| | | <el-input v-model="form.hazard" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å¯è½å¯¼è´çäºæ
"> |
| | | <el-input v-model="form.accidents" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="对人å¯è½é æçå±å®³" label-width="140px"> |
| | | <el-input v-model="form.injury" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©è¯ä»·/L"> |
| | | <el-input v-model="form.riskL" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©è¯ä»·/E"> |
| | | <el-input v-model="form.riskE" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©è¯ä»·/C"> |
| | | <el-input v-model="form.riskC" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©è¯ä»·/D"> |
| | | <el-input v-model="form.riskD" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©ç级"> |
| | | <el-input v-model="form.level" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ§å¶æªæ½"> |
| | | <el-input v-model="form.measures" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="addApi" :loading="loading">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getToken } from "@/utils/auth"; |
| | | import { |
| | | getPageResults, |
| | | dangerousRiskApproval, |
| | | hazardIdentificationAndRiskApproval, |
| | | removeRiskFactors, |
| | | addNewRiskFactors, |
| | | exportHazardFactorIdentification, |
| | | } from '@/api/cnas/systemManagement/measuresDealRisks.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | form: {}, |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableData: [], |
| | | loading: false |
| | | } |
| | | }, |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + '/manageRiskAssessmentResults/riskAssessmentImport' |
| | | }, |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | methods: { |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.initData(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.initData(); |
| | | }, |
| | | // åé¡µè¡¨æ ¼åå§å |
| | | initData() { |
| | | this.tableData = [] |
| | | getPageResults(this.page).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | }); |
| | | }, |
| | | // å®¡æ¹ |
| | | approvalFun() { |
| | | this.$confirm('æ¯å¦å®¡æ¹éè¿?', 'æç¤º', { |
| | | confirmButtonText: 'éè¿', |
| | | cancelButtonText: 'ä¸éè¿', |
| | | type: 'warning', |
| | | closeOnClickModal: false, // ç¦æ¢ç¹å»é®ç½©å±å
³é |
| | | distinguishCancelAndClose: true, |
| | | beforeClose: (action, instance, done) => { |
| | | if (action === 'confirm') { |
| | | this.approvalApi(this.userId, 1) |
| | | done(); |
| | | } else if (action === 'cancel') { |
| | | this.approvalApi(this.userId, 2) |
| | | done(); |
| | | } else if (action === 'close') { |
| | | // ç¹å»âÃâæé®ï¼ä¸å
许å
³é |
| | | done(); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // å®¡æ¹æ¥å£ |
| | | approvalApi(userId, status) { |
| | | dangerousRiskApproval({ approval: userId, status: status }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ¹å |
| | | approveFun() { |
| | | this.$confirm('æ¯å¦æ¹åéè¿?', 'æç¤º', { |
| | | confirmButtonText: 'éè¿', |
| | | cancelButtonText: 'ä¸éè¿', |
| | | type: 'warning', |
| | | closeOnClickModal: false, // ç¦æ¢ç¹å»é®ç½©å±å
³é |
| | | distinguishCancelAndClose: true, |
| | | beforeClose: (action, instance, done) => { |
| | | if (action === 'confirm') { |
| | | this.approveApi(this.userId, 1) |
| | | done(); |
| | | } else if (action === 'cancel') { |
| | | this.approveApi(this.userId, 2) |
| | | done(); |
| | | } else if (action === 'close') { |
| | | // ç¹å»âÃâæé®ï¼ä¸å
许å
³é |
| | | done(); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // æ¹åæ¥å£ |
| | | approveApi(userId, status) { |
| | | hazardIdentificationAndRiskApproval({ approve: userId, status: status }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }); |
| | | }, |
| | | // æä»¶ä¸ä¼ 失败 |
| | | onError() { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: 'æä½å¤±è´¥!' |
| | | }); |
| | | }, |
| | | // æä»¶ä¸ä¼ æå |
| | | onSuccess(response) { |
| | | if (response.code == 201) { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: response.message, |
| | | }); |
| | | return |
| | | } |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }, |
| | | addFun() { |
| | | this.form = {} |
| | | this.dialogVisible = true |
| | | }, |
| | | // å é¤ |
| | | deleteClick(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | removeRiskFactors({ id: row.id }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | addApi() { |
| | | this.loading = true |
| | | addNewRiskFactors(this.form).then(res => { |
| | | if (res.code === 201) return; |
| | | this.dialogVisible = false |
| | | this.loading = false |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }).catch(err => { |
| | | this.loading = false |
| | | }); |
| | | }, |
| | | // ç¼è¾ |
| | | editClick(row) { |
| | | this.form = { ...row } |
| | | this.dialogVisible = true |
| | | }, |
| | | // å¯¼åº |
| | | openDownloadDia() { |
| | | exportHazardFactorIdentification().then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§' + '.docx'); |
| | | }) |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.initData() |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | height: 3em; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div style="padding: 10px"> |
| | | <div class="header"> |
| | | <div></div> |
| | | <div style="min-width: 200px"> |
| | | <el-button type="primary" size="small" @click="addFun">æ° å¢</el-button> |
| | | <el-button type="primary" size="small" @click="approvalFun">审 æ¹</el-button> |
| | | <el-button type="primary" size="small" @click="approveFun">æ¹ å</el-button> |
| | | <el-upload style="display: inline-block; padding: 0 6px" :action="action" :headers="uploadHeader" |
| | | :on-error="onError" :show-file-list="false" :on-success="onSuccess"> |
| | | <el-button size="small" type="primary">导 å
¥</el-button> |
| | | </el-upload> |
| | | <el-button size="small" @click="openDownloadDia">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table :data="tableData" style="width: 100%" height="calc(100vh - 18em)"> |
| | | <el-table-column type="index" label="åºå·" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="jobActivity" label="ä½ä¸æ´»å¨" min-width="180"></el-table-column> |
| | | <el-table-column prop="category" label="é£é©å ç´ ç±»å«" width="testDate" min-width="180"></el-table-column> |
| | | <el-table-column prop="description" label="é£é©å ç´ æè¿°" min-width="180"></el-table-column> |
| | | <el-table-column prop="result" label="å¯å¯¼è´çäºæ
" min-width="180"></el-table-column> |
| | | <el-table-column prop="intolerable" label="æ¯å¦ä¸å¯æ¿åé£é©" min-width="180"></el-table-column> |
| | | <el-table-column prop="plan" label="æ§å¶è®¡å" min-width="180"></el-table-column> |
| | | <el-table-column prop="editorName" label="ç¼å¶äººå§å" min-width="180"></el-table-column> |
| | | <el-table-column prop="editorDate" label="ç¼å¶æ¥æ" min-width="180"></el-table-column> |
| | | <el-table-column prop="approvalName" label="审æ¹å§å" min-width="180"></el-table-column> |
| | | <el-table-column prop="approvalDate" label="å®¡æ¹æ¥æ" min-width="180"></el-table-column> |
| | | <el-table-column prop="approvalStatus" label="审æ¹ç¶æ" min-width="180"> |
| | | <template #default="{ row }"> |
| | | {{ row.approvalStatus === 1 ? 'éè¿' : row.approvalStatus === 2 ? 'ä¸éè¿' : '' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approveName" label="æ¹åå§å" min-width="180"></el-table-column> |
| | | <el-table-column prop="approveStatus" label="æ¹åç¶æ" min-width="180"> |
| | | <template #default="{ row }"> |
| | | {{ row.approveStatus === 1 ? 'éè¿' : row.approveStatus === 2 ? 'ä¸éè¿' : '' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approveDate" label="æ¹åäººæ¥æ" min-width="180"></el-table-column> |
| | | <el-table-column fixed="right" label="æä½" width="100"> |
| | | <template v-slot="scope"> |
| | | <el-button type="text" size="small" @click="editClick(scope.row)">ç¼è¾</el-button> |
| | | <el-button @click="deleteClick(scope.row)" type="text" size="small">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" :total="search.total" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog title="æç¤º" :visible.sync="dialogVisible" width="50%"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä½ä¸æ´»å¨"> |
| | | <el-input v-model="form.jobActivity" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©å ç´ ç±»å«"> |
| | | <el-input v-model="form.category" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é£é©å ç´ æè¿°"> |
| | | <el-input v-model="form.description" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å¯å¯¼è´çäºæ
"> |
| | | <el-input v-model="form.result" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¯å¦ä¸å¯æ¿åé£é©" label-width="130px"> |
| | | <el-input v-model="form.intolerable" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ§å¶è®¡å"> |
| | | <el-input v-model="form.plan" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="addApi" :loading="loading">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getPageList, |
| | | riskAnalysisApprovalOfControlPlanChecklist, |
| | | approvalOfControlPlanChecklist, |
| | | deleteSignificantRiskFactorAnalysis, |
| | | analysisOfMajorRiskFactorsAdded, |
| | | exportSignificantRiskFactors, |
| | | } from '@/api/cnas/systemManagement/measuresDealRisks.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | form: {}, |
| | | loading: false, |
| | | search: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0 |
| | | }, |
| | | tableData: [], |
| | | } |
| | | }, |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + '/manageControlPlanList/importControlPlanList' |
| | | }, |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | methods: { |
| | | handleSizeChange(val) { |
| | | this.search.size = val; |
| | | this.initData(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.search.current = val; |
| | | this.initData(); |
| | | }, |
| | | initData() { |
| | | getPageList(this.search).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | }); |
| | | }, |
| | | // å®¡æ¹ |
| | | approvalFun() { |
| | | this.$confirm('æ¯å¦å®¡æ¹éè¿?', 'æç¤º', { |
| | | confirmButtonText: 'éè¿', |
| | | cancelButtonText: 'ä¸éè¿', |
| | | type: 'warning', |
| | | closeOnClickModal: false, // ç¦æ¢ç¹å»é®ç½©å±å
³é |
| | | distinguishCancelAndClose: true, |
| | | beforeClose: (action, instance, done) => { |
| | | if (action === 'confirm') { |
| | | this.approvalApi(this.userId, 1) |
| | | done(); |
| | | } else if (action === 'cancel') { |
| | | this.approvalApi(this.userId, 2) |
| | | done(); |
| | | } else if (action === 'close') { |
| | | // ç¹å»âÃâæé®ï¼ä¸å
许å
³é |
| | | done(); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // å®¡æ¹æ¥å£ |
| | | approvalApi(userId, status) { |
| | | riskAnalysisApprovalOfControlPlanChecklist({ approval: userId, status }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ¹å |
| | | approveFun() { |
| | | this.$confirm('æ¯å¦æ¹åéè¿?', 'æç¤º', { |
| | | confirmButtonText: 'éè¿', |
| | | cancelButtonText: 'ä¸éè¿', |
| | | type: 'warning', |
| | | closeOnClickModal: false, // ç¦æ¢ç¹å»é®ç½©å±å
³é |
| | | distinguishCancelAndClose: true, |
| | | beforeClose: (action, instance, done) => { |
| | | if (action === 'confirm') { |
| | | this.approveApi(this.userId, 1) |
| | | done(); |
| | | } else if (action === 'cancel') { |
| | | this.approveApi(this.userId, 2) |
| | | done(); |
| | | } else if (action === 'close') { |
| | | // ç¹å»âÃâæé®ï¼ä¸å
许å
³é |
| | | done(); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // æ¹åæ¥å£ |
| | | approveApi(userId, status) { |
| | | approvalOfControlPlanChecklist({ approve: userId, status }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }); |
| | | }, |
| | | onError() { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: 'æä½å¤±è´¥!' |
| | | }); |
| | | }, |
| | | onSuccess(response) { |
| | | if (response.code == 201) { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: response.message, |
| | | }); |
| | | return |
| | | } |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }, |
| | | addFun() { |
| | | this.form = {} |
| | | this.dialogVisible = true |
| | | }, |
| | | // å é¤ |
| | | deleteClick(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteSignificantRiskFactorAnalysis({ id: row.id }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | addApi() { |
| | | this.loading = true |
| | | analysisOfMajorRiskFactorsAdded(this.form).then(res => { |
| | | if (res.code === 201) return; |
| | | this.dialogVisible = false |
| | | this.loading = false |
| | | this.initData() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }).catch(err => { |
| | | this.loading = false |
| | | }); |
| | | }, |
| | | // ç¼è¾ |
| | | editClick(row) { |
| | | this.form = { ...row } |
| | | this.dialogVisible = true |
| | | }, |
| | | // å¯¼åº |
| | | openDownloadDia() { |
| | | exportSignificantRiskFactors().then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å' + '.docx'); |
| | | }) |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.initData() |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | height: 3em; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <el-tabs v-model="activeName" type="border-card" :lazy="true"> |
| | | <el-tab-pane label="å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§" name="å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§"> |
| | | <HazardIdentificationRiskAssessment v-if="activeName === 'å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§'" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å" name="é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å"> |
| | | <listRiskAnalysisControlPlans v-if="activeName === 'é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å'" /> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import HazardIdentificationRiskAssessment |
| | | from "./components/hazardIdentificationRiskAssessment.vue"; |
| | | import listRiskAnalysisControlPlans |
| | | from "./components//listRiskAnalysisControlPlans.vue"; |
| | | export default { |
| | | components: { HazardIdentificationRiskAssessment, listRiskAnalysisControlPlans }, |
| | | data() { |
| | | return { |
| | | activeName: 'å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§', |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | width: 100%; |
| | | } |
| | | |
| | | /deep/ .el-tabs--border-card>.el-tabs__content { |
| | | height: calc(100vh - 9em); |
| | | padding: 0; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="å§æç¼å·" prop="entrustCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.entrustCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åç±»å«" prop="entrustCode"> |
| | | <el-select size="small" v-model="entity.typeSource" clearable style="width: 100%;" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh">é ç½®</el-button> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div class="page_total"> |
| | | <span>æ»è®¡ä»»å¡æ°é:</span> |
| | | <span>{{page.total}}</span> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination" |
| | | key="tableData0"></lims-table> |
| | | </div> |
| | | <!-- <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == null">--> |
| | | <!-- <Add :active="activeFace" :currentId="currentId"/>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == 0">--> |
| | | <!-- <CustomsInspection :active="activeFace" :customsInspection="customsInspection" :currentId="currentId"/>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="width: 100%;height: 100%;" v-if="activeFace >0 && isCopper == 1">--> |
| | | <!-- <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder>--> |
| | | <!-- </div>--> |
| | | <!-- <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :sonLaboratory="componentData.entity.sonLaboratory" :typeSource="typeSource" :state="state"/>--> |
| | | <!-- <!–产ä¸é¾ä¿¡æ¯æ¥ç–>--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" :showInfoDialog="showInfoDialog" ref="showInfoDialog"></ShowInfo>--> |
| | | <!--æ¥åæ¥ç--> |
| | | <el-dialog title="æ¥åæ¥ç" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false" |
| | | :fullscreen="fullscreen"> |
| | | <div class="full-screen"> |
| | | <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i> |
| | | <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen=false;" > |
| | | </div> |
| | | <div style="height: 80vh;" v-if="issuedVisible"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog title="æ¥çéä»¶" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen> |
| | | <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.tempUrlPdf" :currentFile="{}" |
| | | style="max-height: 90vh;overflow-y: auto;" /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getYearAndMonthAndDays } from "@/utils/date"; |
| | | // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; |
| | | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {selectInsOrderPlanList, selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import {mapGetters} from "vuex"; |
| | | import {upReportUrl} from "@/api/business/insReport"; |
| | | import {delfile} from "@/api/business/rawMaterialOrder"; |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | |
| | | export default { |
| | | components: { |
| | | filePreview, |
| | | onlyoffice, |
| | | limsTable, |
| | | // ShowInfo, |
| | | }, |
| | | dicts: ["urgency_level", "inspection_task_state"], |
| | | computed: { |
| | | ...mapGetters(["nickName", "userId"]), |
| | | }, |
| | | data() { |
| | | return { |
| | | lookDialogVisible: false, |
| | | alone: false, |
| | | tabList: [], |
| | | active: 1, |
| | | tabIndex: 0, |
| | | entity: { |
| | | sonLaboratory: null, |
| | | insState: '3', |
| | | userId: 0, |
| | | typeSource: null, |
| | | isCheck: 1 |
| | | }, |
| | | tableData: [], |
| | | column: [ |
| | | { |
| | | label: "å§æç¼å·", |
| | | prop: "entrustCode", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "selectAllByOne", |
| | | }, |
| | | { label: "æ ·ååç§°", prop: "sample", width: "160px" }, |
| | | { |
| | | label: "ä¸åç±»å«", |
| | | prop: "typeSource", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "æåä¸å"; |
| | | } else { |
| | | return "åææä¸å"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "æ ·ååå·", prop: "sampleModel", width: "120px" }, |
| | | { |
| | | label: "ç´§æ¥ç¨åº¦", |
| | | prop: "type", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.urgencyLevel.find((m) => m.value == params).label; |
| | | }, |
| | | }, |
| | | { |
| | | label: "æ£éªç±»å", |
| | | prop: "orderType", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { |
| | | label: "ç¶æ", |
| | | prop: "insState", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params) |
| | | .label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "æ£éªäºº", prop: "userName" }, |
| | | { label: "夿 ¸äºº", prop: "checkName" }, |
| | | { label: "çº¦å®æ¶é´", prop: "appointed" }, |
| | | { label: "ä¸åæ¶é´", prop: "sendTime", width: "140px" }, |
| | | { label: "æ£éªå¼å§æ¶é´", prop: "insTime", width: "140px" }, |
| | | { label: "çç±", prop: "verifyTell", width: "140px" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "夿 ¸", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleReview(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.userName == null || row.userName && !row.userName.includes(this.nickName) |
| | | } |
| | | }, |
| | | { |
| | | name: "ä¸è½½æ¥å", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.download(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "ä¸ä¼ ", |
| | | type: "upload", |
| | | accept: '.doc,.docx', |
| | | url: '/insReport/inReport', |
| | | uploadIdFun: (row) => { |
| | | return row.insReportId |
| | | } |
| | | }, |
| | | { |
| | | name: "è¿å", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleRestore(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¥çæ¥å", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleIssued(row); |
| | | } |
| | | }, |
| | | // { |
| | | // name: "产ä¸é¾", |
| | | // type: "text", |
| | | // clickFun: (row) => { |
| | | // this.openInfoDialog(row); |
| | | // }, |
| | | // disabled: (row) => { |
| | | // return row.typeSource !== 1 |
| | | // }, |
| | | // } |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | upIndex: 0, |
| | | planTotal: 0, |
| | | insStateList: [], |
| | | state:0,//0:å°è´¦é¡µï¼1ï¼æ£éªé¡µé¢,2æ£éªé¡µé¢(夿 ¸)ï¼é»è®¤ä¸º0 |
| | | activeFace: 0, //1ï¼ä¸åï¼2ï¼æ¥çï¼3ï¼å®¡æ ¸ï¼é»è®¤ä¸º0 |
| | | examine: null, |
| | | isReport: 0, |
| | | currentId: null, |
| | | orderId: 0, |
| | | personList:[], |
| | | currentTime: null, |
| | | sonLaboratoryList:[], |
| | | typeSourceList: [ |
| | | {label: 'æåä¸å', value: 0}, |
| | | {label: 'åææä¸å', value: 1}, |
| | | ], |
| | | isCopper: null, |
| | | customsInspection: {}, |
| | | typeSource: null,// 0:æåä¸åï¼1ï¼åææä¸å |
| | | showInfoDialog: false, // 产ä¸é¾ä¿¡æ¯æ¥ç |
| | | issuedVisible: false, |
| | | fullscreen: false, |
| | | option:null, |
| | | orderTypeList: [ |
| | | {label: 'å§æè¯éª', value: 'Customer-ordered test'}, |
| | | {label: 'æ½æ£', value: 'æ½æ£'}, |
| | | {label: 'è¿åæ£éª', value: 'è¿åæ£éª'}, |
| | | {label: 'å£åº¦æ£éª', value: 'Quarterly inspection'}, |
| | | ], |
| | | urgencyLevel: [], |
| | | inspectionTaskState: [], |
| | | } |
| | | }, |
| | | created() { |
| | | this.getDicts("urgency_level").then((response) => { |
| | | this.urgencyLevel = this.dictToValue(response.data); |
| | | }); |
| | | this.getDicts("inspection_task_state").then((response) => { |
| | | this.inspectionTaskState = this.dictToValue(response.data); |
| | | }); |
| | | this.getAuthorizedPerson() |
| | | this.currentTime = getYearAndMonthAndDays() |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.entity, ...this.page }; |
| | | delete param.total; |
| | | selectInsOrderPlanList({ ...param }).then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }).catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.refreshTable(); |
| | | }, |
| | | refresh() { |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | rowClassName({ row, rowIndex }) { |
| | | if (this.currentTime == row.appointed) { |
| | | return "highlight-warning-row-border"; |
| | | } else if (this.currentTime > row.appointed) { |
| | | return "highlight-danger-row-border"; |
| | | } |
| | | return ""; |
| | | }, |
| | | // æ¥ç产ä¸é¾ä¿¡æ¯ |
| | | // openInfoDialog (row) { |
| | | // this.showInfoDialog = true |
| | | // this.$nextTick(() => { |
| | | // this.$refs.showInfoDialog.getInfo(row.ifsInventoryId) |
| | | // }) |
| | | // }, |
| | | selectAllByOne(row) { |
| | | this.isCopper = row.isCopper |
| | | this.customsInspection = row |
| | | this.activeFace = 2; |
| | | this.examine = 1; |
| | | this.isReport = 0; |
| | | this.currentId = parseInt(row.id) |
| | | switch (row.isCopper) { |
| | | case 0: |
| | | // åææ |
| | | this.$router.push({ |
| | | path: "/materialOrder/customsInspection", query: { |
| | | customsInspection: row, |
| | | active: this.activeFace, |
| | | currentId: this.currentId, |
| | | isReport: this.isReport |
| | | } |
| | | }); |
| | | break; |
| | | case null: |
| | | // æå |
| | | this.$router.push({ |
| | | path: "/productOrder/add", query: { |
| | | examine: this.examine, |
| | | active: this.activeFace, |
| | | currentId: this.currentId |
| | | } |
| | | }); |
| | | break; |
| | | case 1: |
| | | // éæ |
| | | this.$router.push({ |
| | | path: "/materialOrder/copperOrder", query: { |
| | | active: this.activeFace, |
| | | currentId: this.currentId |
| | | } |
| | | }); |
| | | break; |
| | | } |
| | | }, |
| | | // 夿 ¸åè° |
| | | handleReview(row){ |
| | | this.$router.push({ |
| | | path: "/inspectionTask/inspection", |
| | | query: { |
| | | sonLaboratory: row.sonLaboratory, |
| | | state: 2, |
| | | typeSource: row.typeSource, |
| | | orderId: row.id, |
| | | }, |
| | | }) |
| | | }, |
| | | // ä¸ä¼ æ¥å |
| | | handleUpload (row) { |
| | | |
| | | }, |
| | | // ä¸è½½æ¥å |
| | | download(row) { |
| | | let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }, |
| | | // è¿åæä½ |
| | | handleRestore(row) { |
| | | this.$confirm('æ¯å¦è¿åå½åæ¥å?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | upReportUrl({id: row.insReportId}).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('è¿åæå') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => { }) |
| | | |
| | | }, |
| | | // æ¥çæ¥å |
| | | handleIssued(row) { |
| | | if (!row.tempUrlPdf) return this.$message.warning('æä»¶æªä¸ä¼ ') |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true |
| | | // this.currentInfo = row; |
| | | // let fileName = row.url |
| | | // let fileType = "docx" |
| | | // if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | // fileName = row.tempUrlPdf |
| | | // fileType = "pdf" |
| | | // } |
| | | // fileName = fileName.replace('/word/','') |
| | | // const userName = this.nickName |
| | | // this.option = { |
| | | // url: this.javaApi + "/word/" + fileName, |
| | | // isEdit: false, |
| | | // fileType: fileType, |
| | | // title: fileName, |
| | | // lang: 'zh-CN', |
| | | // isPrint: false, |
| | | // user_id: 1, |
| | | // user_name: userName, |
| | | // editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | // } |
| | | // this.issuedVisible = true; |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.personList = data; |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .page_total { |
| | | margin-bottom: 10px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog :close-on-press-escape="false" |
| | | :visible.sync="isShow" |
| | | custom-class="unPassCheck" |
| | | title="ä¸åæ ¼å¤æµ" |
| | | width="90%" |
| | | @close="$emit('closeUnPassCheckDialog')"> |
| | | <div v-loading="loading" class="inspection"> |
| | | <!-- <el-row class="title">--> |
| | | <!-- <el-col :span="24" style="text-align: right;">--> |
| | | <!-- <el-button size="small" type="primary" @click="addVerifyDia = true" v-if="state==1">æäº¤</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | <div class="center"> |
| | | <div class="search" style="text-align: left;display: flex;align-items: center;justify-content: space-between;"> |
| | | <div style="display: flex;align-items: center;"> |
| | | <span v-if="tableList.length>0">æ£éªæ¨¡æ¿ï¼</span> |
| | | <el-radio-group v-model="currentTable" size="small"> |
| | | <el-radio-button v-for="(item,index) in tableLists" :key="index" :label="item.templateId" |
| | | size="small">{{ item.templateName }}</el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | <div style="display: flex;align-items: center;"> |
| | | <span v-if="typeSource == '1'"> 夿µæ¬¡æ°ï¼</span> |
| | | <el-select v-if="typeSource == '1'" v-model="retestTag" |
| | | placeholder="è¯·éæ©" |
| | | size="small" @change="m=>handleChangeCableTag(currentSample.id,4, 'cableTag', m)"> |
| | | <el-option |
| | | v-for="item in unPassNumList" |
| | | :key="item.retestTag" |
| | | :label="item.retestTag" |
| | | :value="item.retestTag"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <!-- å¸¸è§æ£éªåå§è®°å½ --> |
| | | <div id="tableBox" v-loading="tableLoading" class="center-box"> |
| | | <table v-for="(item,index) in tableList" :key="index+currentTable+currentSample.id" border="1" cellpadding="10" class="tables"> |
| | | <tbody> |
| | | <tr v-for="(m,i) in item.arr" :key="i"> |
| | | <td v-for="(n,j) in m" v-if="n.v.mc==undefined || Object.keys(n.v.mc).length === 4" :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' |
| | | :key="j" :colspan="n.v.mc&&n.v.mc.cs?n.v.mc.cs:1" |
| | | :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" |
| | | :style="`background:${n.v.bg?n.v.bg:''};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> |
| | | <div :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`" |
| | | class="content"> |
| | | <template v-if="n.v.ps!=undefined && typeof n.v.ps.value ==='string'&& n.v.ps.value.includes('æ£éªå¼') && state==1"> |
| | | <el-input v-if="getInspectionValueType(n.i) == 1" :key="'abc-'+'000'+index+'000'+i+'000'+j" v-model="n.v.v" |
| | | :disabled="(getInspectionItemType(n.i) == 1 && !dataAcquisitionEidtAble )|| (n.u != userId && n.u != undefined && n.u != '')" |
| | | class="table_input" |
| | | @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`, n,'getDataType')" @input="handleInput(n)" @mousewheel.native.prevent |
| | | @keydown.enter="changeInput('',`${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType')"> |
| | | </el-input> |
| | | <el-input v-else-if="getInspectionValueType(n.i) == 2" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" |
| | | class="table_input" |
| | | type="textarea" |
| | | @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`,n,'getDataType')" /> |
| | | <!-- <el-select v-else-if="getInspectionValueType(n.i) == 5" v-model="n.v.v" :disabled="state>1||getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"--> |
| | | <!-- class="table_input" @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`,n,'getDataType')"--> |
| | | <!-- @visible-change="e=>getDic(e,n.i)">--> |
| | | <!-- <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option>--> |
| | | <!-- </el-select>--> |
| | | <span v-else-if="getInspectionValueType(n.i) == 4" |
| | | :style="`font-family:${n.v.ff} !important;`">/</span> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='ç»è®º'"> |
| | | <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1&&PROJECT=='è£
å¤çµç¼'" |
| | | v-model="n.v.v" class="table_input" @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`, n,'getDataType')"> |
| | | <el-option :value="1" label="åæ ¼"></el-option> |
| | | <el-option :value="0" label="ä¸åæ ¼"></el-option> |
| | | <el-option :value="3" label="ä¸å¤å®"></el-option> |
| | | <el-option :value="2" label="å¾
å®"></el-option> |
| | | </el-select> |
| | | <template v-if="state > 1"> |
| | | <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">åæ ¼</span> |
| | | <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">ä¸åæ ¼</span> |
| | | <span v-else-if="n.v.v===3" :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">ä¸å¤å®</span> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`">å¾
å®</span> |
| | | </template> |
| | | <template v-if="getInspectionValueType(n.i) != 2 && state==1"> |
| | | <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">åæ ¼</span> |
| | | <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">ä¸åæ ¼</span> |
| | | <span v-else-if="n.v.v===3" :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">ä¸å¤å®</span> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`">å¾
å®</span> |
| | | </template> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='设å¤ç¼ç ' && state==1"> |
| | | <span>{{ n.v.v }}</span> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='设å¤åç§°'"> |
| | | <el-select v-model="n.v.v" :disabled="state>1" |
| | | class="table_input" filterable |
| | | multiple |
| | | placeholder="设å¤" remote @change="(val)=>changeEquip(val, n)" |
| | | @visible-change="e=>getEquipOptions(e,n.i)"> |
| | | <el-option v-for="item in equipOptions" :key="item.value" :label="item.label" :value="item.value"> |
| | | {{item.label + '--' +item.value}} |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='è¦æ±å¼' && state==1"> |
| | | <span :style="`font-family:${n.v.ff} !important;`">{{getTell(n.i)}}</span> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='计ç®å¼' && state==1"><span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span></template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='æç»å¼' && state==1"> |
| | | <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='æ ·åç¼å·'"> |
| | | <div :title="currentSample.sampleCode" style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%"> |
| | | <i v-if="!currentFiberOpticTape&&!currentFiberOptic" class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)"></i> |
| | | <div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">{{currentSample.sampleCode}}</div> |
| | | <i v-if="!currentFiberOpticTape&&!currentFiberOptic" class="el-icon-caret-right table_caret" |
| | | style="width: 16px;" @click="caretSample(1)"></i> |
| | | </div> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='æ ·ååå·'"> |
| | | <div v-if="currentSample.model!==undefined&¤tSample.model!==null" :style="`font-family:${n.v.ff} !important;`">{{currentSample.model}}</div> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='å¥ç®¡'"> |
| | | <div style="display: flex;flex-wrap: nowrap;align-items: center;"> |
| | | <div :style="`font-family:${n.v.ff} !important;`">{{currentBushing?currentBushing.color:''}}</div> |
| | | </div> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='å
纤带'"> |
| | | <div style="display: flex;flex-wrap: nowrap;align-items: center;"> |
| | | <i v-if="currentFiberOpticTape" class="el-icon-caret-left table_caret" @click="caretTape(-1) |
| | | "></i> |
| | | <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOpticTape?currentFiberOpticTape.code:''}}</div> |
| | | <i v-if="currentFiberOpticTape" |
| | | class="el-icon-caret-right table_caret" |
| | | @click="caretTape(1)"></i> |
| | | </div> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='å
纤'"> |
| | | <div style="display: flex;flex-wrap: nowrap;align-items: center;"> |
| | | <i v-if="currentFiberOptic" class="el-icon-caret-left table_caret" |
| | | @click="caretOptic(-1)"></i> |
| | | <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOptic?currentFiberOptic.color:''}} |
| | | </div> |
| | | <i |
| | | v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i> |
| | | </div> |
| | | </template> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | <el-dialog :visible.sync="reviewDia" title="æ£éªå¤æ ¸" width="500px"> |
| | | <div v-if="reviewDia" class="body" style="display: flex;padding: 10px;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">* </span>ä¸éè¿ççç±ï¼</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-input v-model="noReason" :autosize="{ minRows: 4}" clearable size="small" type="textarea"></el-input> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="reviewDia = false">å æ¶</el-button> |
| | | <el-button :loading="reviewLoading" type="primary" @click="handleReviewDia">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="addVerifyDia" title="æå®å¤æ ¸äººå" width="400px"> |
| | | <div class="body" style="display: flex;padding: 10px;align-items: center;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">*</span>夿 ¸äºº</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-select v-model="verifyUser" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="addVerifyDia = false">å æ¶</el-button> |
| | | <el-button :loading="submitLoading" type="primary" @click="submit()">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="dataGetDia" custom-class="custom-dialog" title="æ°æ®éé"> |
| | | <div> |
| | | <table border="1" cellpadding="10" class="thermal-table"> |
| | | <tr> |
| | | <td style="width: 120px;">æ£éªé¡¹</td> |
| | | <td style="width: 120px;">æ£éªå项</td> |
| | | <td>æ°éæ°æ®</td> |
| | | </tr> |
| | | <template v-for="(item,index) in getData"> |
| | | <tr> |
| | | <td :rowspan="item.child.length">{{item.faName}}</td> |
| | | <td>{{ item.child[0].name }}</td> |
| | | <td style="text-align: left;"> |
| | | <el-checkbox-group |
| | | v-model="getDataIndex" :max="item.child[0].maxNum"> |
| | | <el-checkbox v-for="(n,j) in item.child[0].arr" :key="j" :label="j">{{n}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(m,i) in item.child" v-show="i>0" :key="i+'bbbbbbbbbbbbbb'"> |
| | | <td>{{ m.name }}</td> |
| | | <td style="text-align: left;"> |
| | | <el-checkbox-group |
| | | v-model="getDataIndex" :max="m.maxNum"> |
| | | <el-checkbox v-for="(n,j) in m.arr" :key="j" :label="j">{{n}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </td> |
| | | </tr> |
| | | </template> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <UnPassDialog v-if="unPassDialog" ref="unPassDialog" |
| | | :orderId="orderId" |
| | | :unPassDialog="unPassDialog" |
| | | @resetForm="resetForm"></UnPassDialog> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" |
| | | title="æå®æ¥åå®¡æ ¸äººå" |
| | | width="400px" |
| | | @close="closeAddVerifyDia"> |
| | | <div class="body" style="display: flex;padding: 10px;align-items: center;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">*</span>å®¡æ ¸äººï¼</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-select v-model="checkUser" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeAddVerifyDia">å æ¶</el-button> |
| | | <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | // import ValueTable from '../../tool/value-table.vue' |
| | | import file from '@/utils/file' |
| | | import excelFunction from '@/utils/excelFountion' |
| | | import UnPassDialog from "@/views/business/unpass/components/unPassDialog.vue"; |
| | | import AddUnPass from "@/views/business/unpass/components/addUnPass.vue"; |
| | | import { |
| | | checkSubmitPlan, |
| | | doInsOrder, |
| | | getInsProductUnqualifiedRetest, |
| | | search, selectUserCondition, |
| | | submitPlan, |
| | | verifyPlan |
| | | } from "@/api/business/inspectionTask"; |
| | | import {getUserNow, saveUnqualifiedContext} from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | props: ['sonLaboratory', 'orderId', 'state','inspectorList','typeSource', 'unPassCheck', 'rawMaterialTag'], |
| | | components: { |
| | | AddUnPass, |
| | | UnPassDialog |
| | | }, |
| | | data() { |
| | | return { |
| | | isShow: this.unPassCheck, |
| | | sagData: [], |
| | | sagForm: { |
| | | sampleCode: null, |
| | | model: null, |
| | | inspection: null, |
| | | methodName: null, |
| | | tensileForce: null, |
| | | spanLength: null, |
| | | load: null |
| | | }, |
| | | dataGetDia:false, |
| | | wareTableDataLoading:false, |
| | | fileAdd:false, |
| | | submitLoading: false, |
| | | searchForm: { |
| | | sampleName: null, |
| | | state: null |
| | | }, |
| | | id: 0, |
| | | componentData0: { |
| | | entity: { |
| | | insOrderId:'' |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | sort: false, |
| | | init:false, |
| | | do: [ |
| | | { |
| | | id: 'handleDown', |
| | | font: 'ä¸è½½', |
| | | type: 'text', |
| | | method: 'handleDown' |
| | | },{ |
| | | id: 'delete', |
| | | font: 'å é¤', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | disabFun: (row, index) => { |
| | | return this.state!=1 |
| | | } |
| | | } |
| | | ], |
| | | isPage: false, |
| | | linkEvent: {}, |
| | | tagField: { |
| | | type:{ |
| | | select:[ |
| | | { |
| | | value: 1, |
| | | label: 'å¾ç' |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: 'æä»¶' |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | currentId: '', |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | changeType:null, |
| | | getReportModelLoading:false, |
| | | insOrder: {}, |
| | | sampleProduct: [], |
| | | typeList: [], |
| | | urgentList: [], |
| | | currentSample: {}, //å½åæ ·åä¿¡æ¯ |
| | | tableList: [], |
| | | loading: false, |
| | | ps: {}, |
| | | param: {}, |
| | | currentKey0: 1, |
| | | currentKey1: 1, |
| | | currentKey2: 1, |
| | | comparisonList: [], |
| | | excelMethodList: [], |
| | | equipOptions: [], |
| | | userId: 0, |
| | | reviewLoading: false, |
| | | reviewDia: false, |
| | | noReason: '', |
| | | tableWidth: 1000, |
| | | currentTable: null, |
| | | tableLists: [], |
| | | widthList: [], |
| | | addVerifyDia: false, |
| | | verifyUser: null, |
| | | personList: [], |
| | | enumList: [], |
| | | tableLoading:false, |
| | | upLoading:false, |
| | | temptList:null, |
| | | currentTab:null, |
| | | wareForm:{ |
| | | inspectionItem:1, |
| | | inspectionItemSubclass:'20(常温)', |
| | | }, |
| | | wareForm0:{}, |
| | | numOptions:[], |
| | | temperatureOptions:[], |
| | | wareTableData:[], |
| | | otherForm:{ |
| | | humidity:null, |
| | | temperature:null, |
| | | }, |
| | | equipForm:{ |
| | | value0:null, |
| | | code0:null, |
| | | value1:null, |
| | | code1:null, |
| | | }, |
| | | result: null, |
| | | worker: null, |
| | | worker0: null, |
| | | wareLength:[], |
| | | dataAcquisitionInfo:{}, |
| | | dataAcquisitionInfoNew:{}, |
| | | dataAcquisitionEidtAble:false, |
| | | isGet:false, |
| | | dataAcquisitionLoading:false, |
| | | collected:false, |
| | | // ç循ç¯---å¼å§ |
| | | thermalCyclingInfo:{ |
| | | max:0, |
| | | inspectionItem:1, |
| | | arr:[], |
| | | length:1, |
| | | inspectionItemClass:null, |
| | | }, |
| | | thermalCyclingLoading:false, |
| | | temDataAcquisition:false, |
| | | getData:[ |
| | | { |
| | | faName:'æ³¢é¿éå è¡°å', |
| | | child:[ |
| | | { |
| | | name:'1285nm~1330nm', |
| | | arr:[12,13,14,15], |
| | | }, |
| | | { |
| | | name:'1525nm~1575nm', |
| | | arr:[12,13,14,15], |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | faName:'æªè³æ³¢é¿', |
| | | child:[ |
| | | { |
| | | name:'æªè³æ³¢é¿', |
| | | arr:[12,13,14,15], |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | getDataIndex:[], |
| | | getDataIndexLoading:false, |
| | | getDataTypeId:'', |
| | | getDataType:null, |
| | | unPassDialog: false, // ä¸åæ ¼å¤çå¼¹æ¡ |
| | | retestTag: '', // 夿µæ¬¡æ° |
| | | addCheck: false, // æå®å®¡æ ¸äººåå¼¹æ¡ |
| | | checkUser: '', |
| | | type: '', |
| | | unPassNumList: [ |
| | | {retestTag: '1'}, |
| | | {retestTag: '2'}, |
| | | ], |
| | | } |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + "/insOrderPlan/uploadFile"; |
| | | } |
| | | }, |
| | | created() { |
| | | this.id = this.orderId; |
| | | this.getUserInfo() |
| | | }, |
| | | mounted() { |
| | | this.getTypeDicts() // è·åç´§æ¥ç¨åº¦ä¸ææ¡é项 |
| | | this.getInsStateDicts() |
| | | this.getComparisonList() |
| | | this.getAuthorizedPerson() |
| | | this.startWorker() |
| | | }, |
| | | watch: { |
| | | // çå¬ä»»å¡idï¼è·åä»»å¡ä¿¡æ¯ |
| | | id(val) { |
| | | this.loading = true |
| | | doInsOrder({ |
| | | id: val, |
| | | laboratory: this.sonLaboratory |
| | | }).then(async res => { |
| | | this.insOrder = res.data.insOrder; |
| | | this.componentData0.entity.insOrderId = val; |
| | | this.urgentList.forEach(m => { |
| | | if (m.value == this.insOrder.type) { |
| | | this.insOrder.typeName = m.label |
| | | } |
| | | }) |
| | | if(!res.data.sampleProduct||res.data.sampleProduct.length==0){ |
| | | return this.$message.error('è¯¥ä»»å¡æ²¡ææ ·åä¿¡æ¯') |
| | | } |
| | | // èµå¼å½åæ ·åå表 |
| | | this.sampleProduct = res.data.sampleProduct |
| | | this.currentSample = this.HaveJson(this.sampleProduct[0]) |
| | | let insProduct = this.HaveJson(this.currentSample.insProduct) |
| | | // æ¸©åº¦ãæ¹¿åº¦èµå¼ |
| | | this.otherForm = { |
| | | temperature:this.insOrder.temperature?this.insOrder.temperature:null, |
| | | humidity:this.insOrder.humidity?this.insOrder.humidity:null, |
| | | } |
| | | if (this.typeSource == '1') { |
| | | this.retestTag = '1' |
| | | } |
| | | this.getEquipOptions(1) |
| | | // è·åå½åæ ·åçæ£éªé¡¹ |
| | | let list = await this.getCurrentProduct(this.currentSample.id,0) |
| | | if (list === undefined) { |
| | | this.$message.warning('ææ ä¸åæ ¼å¤æµæ°æ®') |
| | | this.$emit('closeUnPassCheckDialog') |
| | | return |
| | | } |
| | | this.currentSample.insProduct = this.HaveJson(list) |
| | | // åå§åä¼ éå°å端çåæ° |
| | | this.param = {} |
| | | this.changeType = 0; |
| | | this.currentSample.insProduct.forEach(a => { |
| | | // æ¯å¦ä¸ºæåçµç¼ä¸çæ¾å¥ç®¡é¡¹ç®ï¼ä¸æ¯åæ§è¡åå§å |
| | | if(this.handleCasing(a.inspectionItem)){ |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | | resValue: null, |
| | | equipValue: [], |
| | | equipName: [], |
| | | insResult: null |
| | | } |
| | | } |
| | | }) |
| | | await this.determineWhetherToCollectData()//æ¯å¦éè¦æ°é |
| | | if (this.currentSample.index == undefined) this.currentSample['index'] = 1 |
| | | let bushing = this.currentSample.bushing |
| | | this.getTableLists();//å¤ç模æ¿åè¡¨ä¿¡æ¯ |
| | | this.loading = false |
| | | |
| | | }) |
| | | }, |
| | | // çå¬å½å模æ¿åå |
| | | currentTable(val1, val0) { |
| | | if (val0 != null && val1 != val0) { |
| | | if(this.changeType&&this.changeType>0){ |
| | | // 妿æ¯å
纤ãå
纤带ï¼å䏿§è¡ä¸é¢æä½ |
| | | return |
| | | } |
| | | this.tableLists.forEach(async (m, i) => { |
| | | if (m.templateId == val1) { |
| | | let list = await this.getCurrentProduct(this.currentSample.id,0) |
| | | this.currentSample.insProduct = this.HaveJson(list)//èµå¼å½åæ ·åçæ£éªé¡¹ |
| | | this.param = {}//åå§åä¼ å°å端çåæ° |
| | | this.currentSample.insProduct.forEach((a, j) => { |
| | | if(this.handleCasing(a.inspectionItem)){ |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | | resValue: null, |
| | | equipValue: [], |
| | | equipName: [], |
| | | insResult: null |
| | | } |
| | | } |
| | | }) |
| | | // å»é模æ¿ï¼è¿åæå ä¸ªæ¨¡æ¿ |
| | | const mySet1 = new Set(); |
| | | this.tableLists = this.currentSample.insProduct.filter(m => { |
| | | let num0 = mySet1.size; |
| | | if (m.templateId != null&&m.template != null) { |
| | | try { |
| | | mySet1.add(JSON.stringify({ |
| | | template: m.template, |
| | | templateId: m.templateId |
| | | })) |
| | | } catch (error) { |
| | | console.log(222,error); |
| | | } |
| | | } |
| | | let num1 = mySet1.size; |
| | | if (num1 > num0) { |
| | | return m |
| | | } |
| | | }); |
| | | if (this.tableLists && this.tableLists.length > 0) { |
| | | this.tableList = null; |
| | | this.tableList = this.tableLists.filter(m => m.templateId == val1) |
| | | // 对模æ¿è¿è¡å¤ç |
| | | this.handleTableData() |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | // ç¹æ®æ£éªé¡¹--çå¬è®¾å¤ä¿¡æ¯æ¹å |
| | | equipForm:{ |
| | | deep:true, |
| | | handler(val){ |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('ç循ç¯')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('温åè¯éª'))&&this.equipOptions&&this.equipOptions.length>0){ |
| | | // åå§å设å¤ä¿¡æ¯ |
| | | this.param[this.currentSample.insProduct[0].id].equipValue = [] |
| | | this.param[this.currentSample.insProduct[0].id].equipName = [] |
| | | if(this.equipForm.code0){ |
| | | // èµå¼ç¬¬ä¸ä¸ªè®¾å¤çä¿¡æ¯ |
| | | this.equipForm.value0 = this.equipOptions.find(m=>m.value==this.equipForm.code0).label |
| | | this.param[this.currentSample.insProduct[0].id].equipValue.push({ |
| | | i:this.currentSample.insProduct[0].id, |
| | | v:{ |
| | | v:this.equipForm.code0 |
| | | } |
| | | }) |
| | | this.param[this.currentSample.insProduct[0].id].equipName.push({ |
| | | i:this.currentSample.insProduct[0].id, |
| | | v:{ |
| | | v:this.equipForm.value0 |
| | | } |
| | | }) |
| | | } |
| | | if(this.equipForm.code1){ |
| | | // èµå¼ç¬¬äºä¸ªè®¾å¤çä¿¡æ¯ |
| | | this.equipForm.value1 = this.equipOptions.find(m=>m.value==this.equipForm.code1).label |
| | | this.param[this.currentSample.insProduct[0].id].equipValue.push({ |
| | | i:this.currentSample.insProduct[0].id, |
| | | v:{ |
| | | v:this.equipForm.code1 |
| | | } |
| | | }) |
| | | this.param[this.currentSample.insProduct[0].id].equipName.push({ |
| | | i:this.currentSample.insProduct[0].id, |
| | | v:{ |
| | | v:this.equipForm.value1 |
| | | } |
| | | }) |
| | | } |
| | | // ä¿åæ°æ® |
| | | this.saveInsContext() |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | beforeDestroy() { |
| | | // å¨ç»ä»¶éæ¯åç¡®ä¿åæ¢ Workerï¼é¿å
å
åæ³æ¼ |
| | | this.stopWorker(); |
| | | }, |
| | | methods: { |
| | | closeAddVerifyDia () { |
| | | this.addCheck = false |
| | | this.checkUser = '' |
| | | }, |
| | | // å
³éä¸åæ ¼å¤çå¼¹æ¡ |
| | | resetForm () { |
| | | this.$refs.unPassDialog.$refs['unPassForm'].resetFields(); |
| | | this.unPassDialog = false |
| | | }, |
| | | handleDataAcquisition(data){ |
| | | // æ¯å¦å¯ä»¥ç¼è¾æ°éæ°æ® |
| | | if(this.dataAcquisitionEidtAble){ |
| | | this.getDataType = 1; |
| | | }else{ |
| | | this.getDataType = 2; |
| | | } |
| | | this.dataAcquisitionInfo = {} |
| | | this.getData = [] |
| | | for (let i in data){ |
| | | let obj = { |
| | | faName:i, |
| | | child:[] |
| | | } |
| | | // å¾ªç¯æ°éæ°æ® |
| | | for(let j in data[i]){ |
| | | // æ¼æ¥å符串 æ£éªé¡¹+æ£éªå项 |
| | | let str0 = '' |
| | | if(i==j){ |
| | | str0 = i+',' |
| | | }else{ |
| | | str0 = i+','+j |
| | | } |
| | | if(j!='frequency'&&data[i][j]&&(!data[i][j].result||typeof data[i][j].result == 'string')){ |
| | | // å¤çæ°éä¿¡æ¯æ ¼å¼ |
| | | this.dataAcquisitionInfo[str0] = { |
| | | value:data[i][j].result, |
| | | frequency:data[i].frequency |
| | | } |
| | | let list = this.tableList[0].arr |
| | | // 循ç¯é¡µé¢å表信æ¯ï¼å¤ææ°éæ°æ®å¯¹åºé¡µé¢å表信æ¯çæ£éªé¡¹æ¯åªä¸ªï¼å¹¶ç»å½åæ£éªé¡¹ç»å®è®¾å¤ä¿¡æ¯ |
| | | list.forEach((item,index)=>{ |
| | | let num0 = 0; |
| | | let str = '' |
| | | item.forEach(m=>{ |
| | | if(m.v.ps&&(m.v.ps.value=='æ£éªå项'||m.v.ps.value=='æ£éªé¡¹')){ |
| | | if(m.v.ps&&m.v.ps.value=='æ£éªé¡¹'){ |
| | | if(num0==0){ |
| | | str = m.v.v+',' |
| | | num0++ |
| | | } |
| | | } |
| | | if(m.v.ps&&m.v.ps.value=='æ£éªå项'){ |
| | | if(num0==1){ |
| | | str = str+m.v.v |
| | | } |
| | | } |
| | | } |
| | | // ç»å®è®¾å¤ä¿¡æ¯ |
| | | if(data[i][j].equipName&&data[i][j].equipValue&&m.v&&m.v.ps&&m.v.ps.value=='设å¤åç§°'&&str0==str){ |
| | | if(!m.v.v){ |
| | | this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName) |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | }else if(j!='frequency'&&data[i][j]&&Array.isArray(data[i][j].result)){ |
| | | // 妿è¿åçæ°éæ°æ®æ¯æ°ç»ï¼åå¤çæ°ç» |
| | | // 以ä¸é»è¾ä¸ºè·åæ¯ä¸ªæ£éªé¡¹å¯è¾å
¥çæ£éªå¼çæå¤§ä¸ªæ° |
| | | let str0 = '' |
| | | if(i==j){ |
| | | str0 = i+',' |
| | | }else{ |
| | | str0 = i+','+j |
| | | } |
| | | let list = this.tableList[0].arr |
| | | let maxNum = 0 |
| | | list.forEach((item,index)=>{ |
| | | let num0 = 0; |
| | | let str = '' |
| | | item.forEach(m=>{ |
| | | if(m.v.ps&&(m.v.ps.value=='æ£éªå项'||m.v.ps.value=='æ£éªé¡¹')){ |
| | | if(m.v.ps&&m.v.ps.value=='æ£éªé¡¹'){ |
| | | if(num0==0){ |
| | | str = m.v.v+',' |
| | | num0++ |
| | | } |
| | | } |
| | | if(m.v.ps&&m.v.ps.value=='æ£éªå项'){ |
| | | if(num0==1){ |
| | | str = str+m.v.v |
| | | } |
| | | } |
| | | let num = 0; |
| | | list[index].forEach(n=>{ |
| | | if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('æ£éªå¼')){ |
| | | num++ |
| | | } |
| | | }) |
| | | if(str0==str){ |
| | | maxNum = num |
| | | } |
| | | } |
| | | // ç»å®è®¾å¤ |
| | | if(data[i][j].equipName&&data[i][j].equipValue&&m.v&&m.v.ps&&m.v.ps.value=='设å¤åç§°'&&str0==str){ |
| | | if(!m.v.v){ |
| | | this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName) |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | // è·å尿大æ£éªå¼è¾å
¥ä¸ªæ°åéç»æ°æ® |
| | | let obj0 = { |
| | | name:j, |
| | | arr:data[i][j].result, |
| | | maxNum:maxNum, |
| | | value:[] |
| | | } |
| | | // 妿æ°éè¿åçæ°ç»é¿åº¦å¤§äºæå¤§è¾å
¥ä¸ªæ°ï¼åå°æ°éæ°æ®å¨å¼¹æ¡ä¸å±ç¤ºï¼ç¨æ·éæ©éè¦æå¨éæ©æ°éçä¿¡æ¯ |
| | | if(data[i][j].result&&Array.isArray(data[i][j].result)&&data[i][j].result.length>maxNum){ |
| | | obj.child.push(obj0) |
| | | }else{ |
| | | this.dataAcquisitionInfo[str0] = { |
| | | value:data[i][j].result |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(obj.child.length>0){ |
| | | this.getData.push(obj) |
| | | } |
| | | } |
| | | // 妿å卿°éè¿åçæ°ç»é¿åº¦å¤§äºæå¤§è¾å
¥ä¸ªæ°ï¼åå¼¹åºå¼¹æ¡éæ© |
| | | if(this.getData.length>0){ |
| | | this.dataGetDia = true |
| | | this.getDataIndex = [] |
| | | }else{ |
| | | // 妿é½ä¸åå¨ï¼åï¼è¿å
¥å¤çæ°é线ç¨éå»å¤çæ°æ® |
| | | try { |
| | | // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ |
| | | this.getDataIndexLoading = false |
| | | this.dataGetDia = false |
| | | this.getDataTypeId = '' |
| | | this.worker0.postMessage(JSON.stringify({ |
| | | dataAcquisitionInfo: this.dataAcquisitionInfo, |
| | | list:this.tableList[0].arr |
| | | })); |
| | | } catch (error) { |
| | | console.log(1111,error); |
| | | } |
| | | } |
| | | // çå¬ Worker è¿åçç»æ |
| | | this.worker0.onmessage = (event) => { |
| | | let result = JSON.parse(event.data); |
| | | if(result.method=='changeInput'){ |
| | | // ééåçæ°æ®ï¼éè¦è¿è¡è®¡ç®ç线ç¨è¿è¡è®¡ç® |
| | | let {list,n} = result.value |
| | | this.$set(this.tableList[0],'arr',list) |
| | | this.changeInput('',`${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`,n) |
| | | }else if(result.getDataTypeId){ |
| | | // è·åå°æ°éæåä¸é¡¹ï¼æ£éªé¡¹çID |
| | | this.getDataTypeId = result.getDataTypeId |
| | | } |
| | | }; |
| | | }, |
| | | // 妿å卿°éè¿åçæ°ç»é¿åº¦å¤§äºæå¤§è¾å
¥ä¸ªæ°ï¼åå¼¹åºå¼¹æ¡éæ©ï¼è¿éæ¯å¼¹æ¡çæäº¤ |
| | | submitDataGet(){ |
| | | if(this.getDataIndex.length==0){ |
| | | this.$message.error('è¯·éæ©éè¦ééçæ°æ®') |
| | | return |
| | | } |
| | | this.getDataIndex.sort((a, b) => a - b); |
| | | for (let i=0;i<this.getData.length;i++){ |
| | | for(let j=0;j<this.getData[i].child.length;j++){ |
| | | // å¯¹ç¨æ·éæ©çæ°éä¿¡æ¯è¿è¡å¤çï¼èµå¼ |
| | | let arr = [] |
| | | for(let k=0;k<this.getDataIndex.length;k++){ |
| | | arr.push( this.dataAcquisitionInfoNew[this.getData[i].faName][this.getData[i].child[j].name].result[this.getDataIndex[k]]) |
| | | } |
| | | this.dataAcquisitionInfoNew[this.getData[i].faName][this.getData[i].child[j].name].result = arr |
| | | } |
| | | } |
| | | this.getDataIndexLoading = true |
| | | // èµå¼å®æåéè¦å次è¿å
¥å¤çæ°é线ç¨éå»å¤çæ°æ® |
| | | this.handleDataAcquisition(this.dataAcquisitionInfoNew) |
| | | }, |
| | | // å¤çº¿ç¨ |
| | | startWorker() { |
| | | if (this.worker) { |
| | | this.stopWorker(); // ç¡®ä¿ä¹åç Worker 已忢 |
| | | } |
| | | // å建 Worker å®ä¾ |
| | | this.worker = new Worker('/static/js/worker.js'); |
| | | if (this.worker0) { |
| | | this.stopWorker(); // ç¡®ä¿ä¹åç Worker 已忢 |
| | | } |
| | | // å建 Worker å®ä¾ |
| | | this.worker0 = new Worker('/static/js/worker0.js'); |
| | | }, |
| | | // 忢å¤çº¿ç¨ |
| | | stopWorker() { |
| | | if (this.worker) { |
| | | this.worker.terminate(); |
| | | this.worker = null; |
| | | } |
| | | if (this.worker0) { |
| | | this.worker0.terminate(); |
| | | this.worker0 = null; |
| | | } |
| | | }, |
| | | // æ ¹æ®ç±»åãä»»å¡idãå®éªå®¤æ¥è·åæ ·åçæ£éªé¡¹ä¿¡æ¯ |
| | | async getCurrentProduct(id,type,cableTag){ |
| | | this.tableLoading = true; |
| | | type = this.typeSource == '1' ? 5 : type |
| | | this.type = type |
| | | const params = { |
| | | id: id, |
| | | type: type, |
| | | laboratory: this.sonLaboratory, |
| | | retestTag: this.retestTag, |
| | | rawMaterialTag: this.rawMaterialTag, |
| | | } |
| | | let res = getInsProductUnqualifiedRetest(params) |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | this.tableLoading = false; |
| | | this.scrollInit() |
| | | return res.data |
| | | } |
| | | }, |
| | | // æ¾å¥ç®¡ç夿\妿changeTypeä¸çäº3é£ä¹é¡µé¢ä¸å±ç¤ºæ¾å¥ç®¡æ£éªé¡¹ |
| | | handleCasing(inspectionItem){ |
| | | if(this.changeType!=3){ |
| | | if(inspectionItem.includes('æ¾å¥ç®¡')){ |
| | | return false |
| | | }else{ |
| | | return true |
| | | } |
| | | }else{ |
| | | return true |
| | | } |
| | | }, |
| | | async handleChangeCableTag(m,type, num, m2){ |
| | | let cableTag = '' |
| | | if (num === 'cableTag') { |
| | | cableTag = m2 |
| | | } |
| | | if (!m2) { |
| | | type = 0 |
| | | } |
| | | this.changeType = type |
| | | if(m){ |
| | | let list = await this.getCurrentProduct(m,type, cableTag) |
| | | if(list.length>0){ |
| | | this.param = {} |
| | | list.forEach(a => { |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | | resValue: null, |
| | | equipValue: [], |
| | | equipName: [], |
| | | insResult: null |
| | | } |
| | | }) |
| | | this.getTableLists0(list) |
| | | this.worker.postMessage(JSON.stringify({ |
| | | type: 'saveData', |
| | | tableList:this.tableList, |
| | | param:this.param, |
| | | currentTable:this.currentTable, |
| | | bushing:m |
| | | })); |
| | | }else{ |
| | | this.tableLists = [] |
| | | this.tableList = [] |
| | | this.$message.error('æ£éªé¡¹ä¸ºç©º') |
| | | } |
| | | } |
| | | }, |
| | | // åå
¸è·åä¿¡æ¯ |
| | | getTypeDicts() { |
| | | this.getDicts("urgency_level").then((response) => { |
| | | this.urgentList = this.dictToValue(response.data); |
| | | }); |
| | | }, |
| | | // åå
¸è·åä¿¡æ¯ |
| | | getInsStateDicts() { |
| | | this.getDicts("inspection_task_state").then((response) => { |
| | | this.typeList = this.dictToValue(response.data); |
| | | }) |
| | | }, |
| | | // åå
¸è·åä¿¡æ¯ |
| | | getComparisonList() { |
| | | this.getDicts("coordinate_transformation").then((response) => { |
| | | this.comparisonList = this.dictToValue(response.data); |
| | | }); |
| | | }, |
| | | // å¤ç页é¢åè¡¨æ°æ®--å»é,çææ£éªæ¨¡æ¿åæ¢å表 |
| | | getTableLists() { |
| | | const mySet1 = new Set(); |
| | | this.tableLists = this.currentSample.insProduct.filter(m => { |
| | | let num0 = mySet1.size; |
| | | if (m.templateId != null&&m.template != null) { |
| | | try { |
| | | mySet1.add(JSON.stringify({ |
| | | template: m.template, |
| | | templateId: m.templateId |
| | | })) |
| | | } catch (error) { |
| | | console.log(222,error); |
| | | } |
| | | } |
| | | let num1 = mySet1.size; |
| | | if (num1 > num0) { |
| | | return m |
| | | } |
| | | }); |
| | | if (this.tableLists && this.tableLists.length > 0) { |
| | | this.tableList = null; |
| | | this.tableList = [this.tableLists[0]] |
| | | this.currentTable = this.tableLists[0].templateId; |
| | | // å¤ç页é¢åè¡¨æ°æ® |
| | | this.handleTableData() |
| | | } |
| | | }, |
| | | // å
纤é
ç½®ç¸å
³æ¨¡æ¿tableå表 |
| | | getTableLists0(list){ |
| | | const mySet1 = new Set(); |
| | | this.tableLists = list.filter(m => { |
| | | let num0 = mySet1.size; |
| | | if (m.templateId != null&&m.template != null) { |
| | | try { |
| | | mySet1.add(JSON.stringify({ |
| | | template: m.template, |
| | | templateId: m.templateId |
| | | })) |
| | | } catch (error) { |
| | | console.log(333,error); |
| | | } |
| | | } |
| | | let num1 = mySet1.size; |
| | | if (num1 > num0) { |
| | | return m |
| | | } |
| | | }); |
| | | if (this.tableLists && this.tableLists.length > 0) { |
| | | this.tableList = null; |
| | | this.tableList = [this.tableLists[0]] |
| | | this.currentTable = this.tableLists[0].templateId; |
| | | this.currentSample.insProduct = this.HaveJson(list) |
| | | // å¤ç页é¢åè¡¨æ°æ® |
| | | this.handleTableData() |
| | | } |
| | | }, |
| | | // å¤ç页é¢åè¡¨æ°æ® |
| | | handleTableData() { |
| | | console.log("ttt-------->>>>",this.tableList); |
| | | this.excelMethodList = []//excel彿°å表 |
| | | this.widthList = this.tableList[0].style.columnlen;//页é¢å®½åº¦--æ ¹æ®æ¨¡æ¿æ¥ç |
| | | // æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½--å¼å§ |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½'){ |
| | | // å¯¹è¦æ±å¼è¿è¡æåå¤ç,è¿èå¾åºé¡µé¢å
容 |
| | | let ask = this.currentSample.insProduct[0].ask |
| | | let askList = ask.split(';') |
| | | // è·åå¾ªç¯æ¬¡æ° |
| | | this.numOptions = [] |
| | | for (let i = 1; i <= askList[askList.length-1]; i++) { |
| | | this.numOptions.push({ |
| | | value:i, |
| | | label:i |
| | | }) |
| | | } |
| | | let mySet1 = new Set(); |
| | | askList.forEach((m,i) => { |
| | | if(i<askList.length-1){ |
| | | mySet1.add(m.split(',')[0].replace('â','')) |
| | | } |
| | | }) |
| | | // è·å温度ç¹å表 |
| | | this.temperatureOptions = [] |
| | | mySet1.forEach(m => { |
| | | this.temperatureOptions.push({ |
| | | value:String(m), |
| | | label:m |
| | | }) |
| | | }) |
| | | } |
| | | // æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½---ç»æ |
| | | // çå¾ªç¯æ£éªåå§è®°å½---å¼å§ |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('ç循ç¯')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('温åè¯éª'))){ |
| | | // æ ¹æ®è¦æ±å¼æåæ°æ®,å¾å°é¡µé¢æ¸²æçä¿¡æ¯ |
| | | let ask = this.currentSample.insProduct[0].ask |
| | | let askList = ask.split(';') |
| | | this.thermalCyclingInfo.max = Number(askList[askList.length-1]) |
| | | let arr = [] |
| | | for (let i = 0; i < askList.length-1; i++) { |
| | | arr.push(askList[i].split(',')[0]) |
| | | } |
| | | arr = arr.map(item=>{ |
| | | let obj = {} |
| | | obj.name = item; |
| | | if(obj.insResult==null||obj.insResult==undefined){ |
| | | obj.arr = [ |
| | | { |
| | | value0:'', |
| | | value1:'', |
| | | } |
| | | ] |
| | | obj.insResult = null; |
| | | } |
| | | return obj |
| | | }) |
| | | this.thermalCyclingInfo.arr = arr; |
| | | } |
| | | // çå¾ªç¯æ£éªåå§è®°å½---ç»æ |
| | | // æ¬æ¬¡å¾ªç¯ä¸»è¦å页颿¸²æå±é¢çå¤ç--åå
æ ¼åå¹¶é¢å¤ç |
| | | this.tableList.forEach(a => { |
| | | let mcList = [] |
| | | a.template.forEach(b => { |
| | | if (b.v.mc != undefined && b.v.mc.cs != undefined && b.v.mc.rs != undefined) { |
| | | mcList.push(b) |
| | | } |
| | | }) |
| | | let count = 0 |
| | | mcList.forEach(b => { |
| | | for (var c in a.template) { |
| | | for (var i = 0; i < b.v.mc.cs; i++) { |
| | | for (var i2 = 0; i2 < b.v.mc.rs; i2++) { |
| | | if (a.template[c].c === b.c + i && a.template[c].r === b.r + i2) { |
| | | let bb = this.HaveJson(b) |
| | | a.template[c].v.v = bb.v.v |
| | | a.template[c].v.ps = bb.v.ps |
| | | a.template[c].v.fc = bb.v.fc |
| | | a.template[c].v.fs = bb.v.fs |
| | | a.template[c].v.ht = bb.v.ht |
| | | a.template[c].mc = count |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | count++ |
| | | }) |
| | | }) |
| | | // æ¬æ¬¡å¾ªç¯ä¸»è¦æ¯æ§å¶åå¹¶,以忧嶿£éªé¡¹ä¿¡æ¯æ¯å¦å±ç¤ºåºæ¥,以便åç»æ£éª |
| | | this.tableList.forEach(a => { |
| | | let dels = new Set()//éè¦å é¤çè¡ |
| | | let ids = []//æææ£éªé¡¹çid |
| | | let set3 = new Set() |
| | | a.template.forEach(b => { |
| | | let size1 = set3.size |
| | | let size2 = set3.add(b.r).size |
| | | if (size1 < size2) { |
| | | let str = '' |
| | | let str2 = '' |
| | | let unit2 = '' |
| | | let count4 = 0 |
| | | let isThree = 0 |
| | | a.template.forEach(c => { |
| | | // è·åå° æ£éªé¡¹åç±»+æ£éªé¡¹+æ£éªåé¡¹çæ¼æ¥,å¦ææ¨¡æ¿éçä¿¡æ¯è·æ¥å£è¿åçæ£éªé¡¹ä¿¡æ¯è½å¤å¹é
åå±ç¤ºåºæ¥ |
| | | if (b.r === c.r) { |
| | | if(c.v.ps != undefined && c.v.ps.value === 'æ£éªé¡¹åç±»'&&count4 === 0){ |
| | | // ä¸çº§åç±» |
| | | isThree = 1 |
| | | }else if(c.v.ps != undefined && c.v.ps.value === 'æ£éªé¡¹'&&count4 === 0){ |
| | | // äºçº§åç±» |
| | | isThree = 0 |
| | | } |
| | | if(isThree==0){ |
| | | if (c.v.ps != undefined && c.v.ps.value === 'æ£éªé¡¹') { |
| | | if (count4 === 0) { |
| | | str += c.v.v |
| | | count4 += 1 |
| | | } |
| | | } else if (c.v.ps != undefined && c.v.ps.value === 'æ£éªå项') { |
| | | if (count4 === 1) { |
| | | str += c.v.v |
| | | count4 += 1 |
| | | } |
| | | } |
| | | }else if(isThree==1){ |
| | | if (c.v.ps != undefined && c.v.ps.value === 'æ£éªé¡¹åç±»') { |
| | | if (count4 === 0) { |
| | | str += c.v.v |
| | | count4 += 1 |
| | | } |
| | | }else if (c.v.ps != undefined && c.v.ps.value === 'æ£éªé¡¹') { |
| | | if (count4 === 1) { |
| | | str += c.v.v |
| | | count4 += 1 |
| | | } |
| | | } else if (c.v.ps != undefined && c.v.ps.value === 'æ£éªå项') { |
| | | if (count4 === 2) { |
| | | str += c.v.v |
| | | count4 += 1 |
| | | } |
| | | } |
| | | } |
| | | if (str === 'æºæ¢°æ§è½å¹²ææä¼¸å¼ºåº¦(纵å)') { |
| | | if (c.v.ps != undefined && c.v.ps.value === 'åä½') { |
| | | str2 = str + c.v.v |
| | | unit2 = c.v.v |
| | | |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | if (str != '') { |
| | | let count2 = 0 |
| | | for (let i in this.currentSample.insProduct) { |
| | | let inspectionItemClass = this.currentSample.insProduct[i].inspectionItemClass==null||this.currentSample.insProduct[i].inspectionItemClass==undefined?'':this.currentSample.insProduct[i].inspectionItemClass |
| | | let inspectionItem = this.currentSample.insProduct[i].inspectionItem==null||this.currentSample.insProduct[i].inspectionItem==undefined?'':this.currentSample.insProduct[i].inspectionItem |
| | | let inspectionItemSubclass = this.currentSample.insProduct[i].inspectionItemSubclass==null||this.currentSample.insProduct[i].inspectionItemSubclass==undefined?'':this.currentSample.insProduct[i].inspectionItemSubclass |
| | | if(inspectionItemSubclass === 'å¹²ææä¼¸å¼ºåº¦(纵å)') { |
| | | // æ£éªå项为'å¹²ææä¼¸å¼ºåº¦(纵å)'æ¶ï¼æ¨¡çéæ¯ä¸¤ä¸ªè®¡ç®å¼å¯¹åºç¸åçæ£éªå¼å¹¶ä¸è®¡ç®æ¹å¼ä¸åï¼è¦æ ¹æ®ç¸åç'åä½'åç¹æ®ç渲æ |
| | | const unit = this.currentSample.insProduct[i].unit |
| | | if ((this.currentSample.insProduct[i].templateId === a.templateId && inspectionItemClass +inspectionItem+inspectionItemSubclass+unit === str2) || (this.currentSample.insProduct[i].templateId === a.templateId && !unit2.includes('/')&& inspectionItemClass +inspectionItem+inspectionItemSubclass === str)) { |
| | | ids.push({ |
| | | r: b.r, |
| | | id: this.currentSample.insProduct[i].id, |
| | | product: this.currentSample.insProduct[i] |
| | | }) |
| | | break |
| | | } |
| | | } else { |
| | | // 妿ç¸ç,é£ä¹è¯´ææ¾å°äº,并䏿idåèµ·æ¥,åç»æ£éªé¡¹ä¹ä¼å¨é¡µé¢ä¸æ¾ç¤ºåºæ¥ |
| | | if (this.currentSample.insProduct[i].templateId === a.templateId && inspectionItemClass +inspectionItem+inspectionItemSubclass === str) { |
| | | ids.push({ |
| | | r: b.r, |
| | | id: this.currentSample.insProduct[i].id, |
| | | product: this.currentSample.insProduct[i] |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | count2++ |
| | | } |
| | | if (count2 == this.currentSample.insProduct.length) { |
| | | dels.add(b.r) |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | // æä½å é¤ |
| | | dels.forEach(del => { |
| | | for (let b = 0; b < a.template.length; b++) { |
| | | if (a.template[b].r === del) { |
| | | a.template.splice(b, 1) |
| | | b -= 1 |
| | | } |
| | | } |
| | | }) |
| | | // æä½èµå¼--主è¦èµå¼åä½,è¯éªæ¹æ³çä¿¡æ¯ |
| | | ids.forEach(id => { |
| | | for (let b = 0; b < a.template.length; b++) { |
| | | if (a.template[b].r === id.r) { |
| | | a.template[b].i = id.id |
| | | if (a.template[b].v.ps != undefined && a.template[b].v.ps.value === 'åä½') { |
| | | a.template[b].v.v = id.product.unit |
| | | } |
| | | if (a.template[b].v.ps != undefined && (a.template[b].v.ps.value === 'è¯éªæ¹æ³' || a.template[b].v |
| | | .ps.value === 'æ£æµæ¹æ³')) { |
| | | a.template[b].v.v = id.product.methodS |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | let set2 = new Set() |
| | | // åå¹¶çæ°æ®å¤ç,cs rs 代表åå¹¶çæ°é |
| | | a.template.forEach(b => { |
| | | let size1 = set2.size |
| | | let size2 = set2.add(b.mc).size |
| | | if (b.mc != undefined && size1 < size2) { |
| | | b.v.mc.rs = 0 |
| | | b.v.mc.cs = 0 |
| | | a.template.forEach(c => { |
| | | if (b.mc === c.mc) { |
| | | if (b.r === c.r) { |
| | | b.v.mc.cs += 1 |
| | | } |
| | | if (b.c === c.c) { |
| | | b.v.mc.rs += 1 |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | // æ¬æ¬¡å¾ªç¯ä¸»è¦æ¯å¯¹åç«¯ä¼ åè¿è¡åå§å,æ ·å¼é»è¾ä¿®æ¹ |
| | | this.tableList.forEach(a => { |
| | | let arrs = [] |
| | | let set = new Set() |
| | | let count1 = 0 |
| | | let conclusionList = []; //ç»è®ºå表 |
| | | let finalList = []; //æç»å¼å表 |
| | | // ç»è®ºä¸æç»å¼å¨è¿éä¸ä¸å¯¹åº,以ä¸ä¸¤ä¸ªå表é¿åº¦è¯å®æ¯ä¸æ ·ç,妿æä¸ä¸æ ·,é£ä¹å¤åæ¯æ¨¡æ¿é
ç½®å¾é®é¢ |
| | | conclusionList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === 'ç»è®º')//ç»è®ºå表 |
| | | finalList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === 'æç»å¼')//æç»å¼å表 |
| | | a.template.forEach( b => { |
| | | if (b.v.ps != undefined && b.v.ps.value === 'åºå·' && (b.v.mc == undefined || Object.keys(b.v.mc).length === 4)) { |
| | | // 对åºå·è¿è¡èµå¼ |
| | | count1++ |
| | | b.v.v = count1 |
| | | } |
| | | if (b.v.ps != undefined && b.v.ps.value === 'è¦æ±å¼') { |
| | | // å¯¹è¦æ±å¼è¿è¡èµå¼ |
| | | b.v.v = this.getAsk(b.i) |
| | | } |
| | | // 对页é¢çåç»åç«¯ä¼ åçæ£éªå¼,计ç®å¼,设å¤ç¼ç ,设å¤åç§°,æç»å¼,ç»è®ºè¿è¡åå§å |
| | | if (b.v.ps != undefined && typeof b.v.ps.value ==='string'&&b.v.ps.value.includes('æ£éªå¼')) { |
| | | this.$set(b.v, 'v','' ) |
| | | // b.v.v = '' |
| | | b.u = '' |
| | | b.i && this.param[b.i]&&this.param[b.i].insValue.push(b) |
| | | } |
| | | if (b.v.ps != undefined && b.v.ps.value === '计ç®å¼') { |
| | | this.$set(b.v, 'v','' ) |
| | | // b.v.v = '' |
| | | b.i && this.param[b.i]&&this.param[b.i].comValue.push(b) |
| | | } |
| | | if (b.v.ps != undefined && b.v.ps.value === '设å¤ç¼ç ') { |
| | | // b.v.v = '' |
| | | this.$set(b.v, 'v', '' ) |
| | | b.i && this.param[b.i]&&this.param[b.i].equipValue.push(b) |
| | | } |
| | | if (b.v.ps != undefined && b.v.ps.value === '设å¤åç§°') { |
| | | this.$set(b.v, 'v', '' ) |
| | | // b.v.v = '' |
| | | b.i && this.param[b.i]&&this.param[b.i].equipName.push(b) |
| | | } |
| | | if (b.v.ps != undefined && b.v.ps.value === 'æç»å¼') { |
| | | // b.v.v = '' |
| | | this.$set(b.v, 'v', '' ) |
| | | if (b.i !== undefined&&this.param[b.i]&&!this.param[b.i].resValue) { |
| | | this.param[b.i].resValue = b |
| | | } |
| | | } |
| | | if (b.v.ps != undefined && b.v.ps.value === 'ç»è®º') { |
| | | if (b.i !== undefined&&this.param[b.i]&&!this.param[b.i].insResult) { |
| | | this.param[b.i].insResult = b |
| | | conclusionList.forEach((n, i) => { |
| | | if (n.r == b.r && n.c == b.c) { |
| | | b.v.f = |
| | | `(${this.comparisonList.find(j=>j.value==(finalList[i].c)).label}${finalList[i].r+1})` |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | set.add(b.r) |
| | | // å¦ææ¨¡æ¿å表ç彿°åå¨,é£ä¹å å
¥å°excel彿°å表éé¢ |
| | | if (b.v.f) { |
| | | this.excelMethodList.push(b) |
| | | } |
| | | }) |
| | | // 以䏿¯æ ·å¼å¤çé»è¾ |
| | | set = Array.sort(set) |
| | | set.forEach(b => { |
| | | let arr = [] |
| | | a.template.forEach(c => { |
| | | if (c.r === b) { |
| | | arr.push(c) |
| | | } |
| | | }) |
| | | arrs.push(arr) |
| | | }) |
| | | a.arr = arrs |
| | | this.tableWidth = 0 |
| | | for (let i = 0; i < arrs[0].length; i++) { |
| | | this.tableWidth += (a.style.columnlen[i] === undefined ? 100 : a.style.columnlen[i]) |
| | | } |
| | | }) |
| | | // æ¬æ¬¡å¾ªç¯ä¸»è¦æ¯å¯¹é¡µé¢ååç«¯ä¼ åè¿è¡åå§åèµå¼ |
| | | this.currentSample.insProduct.forEach(async a => { |
| | | try { |
| | | // 计ç®å¼èµå¼ |
| | | let comValue = JSON.parse(a.insProductResult.comValue) |
| | | for (var i = 0; i < comValue.length; i++) { |
| | | this.param[a.id].comValue[i].v.v = this.toFixed(comValue[i].v,this.param[a.id].comValue[i].v.ct) |
| | | } |
| | | } catch (e) {} |
| | | try { |
| | | // æ£éªå¼èµå¼ |
| | | let insValue = JSON.parse(a.insProductResult.insValue) |
| | | for (let i = 0; i < insValue.length; i++) { |
| | | if(this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r)){ |
| | | this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r).v.v = this.toFixed(insValue[i].v,this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r).v.ct) |
| | | this.param[a.id].insValue.find(m=>m.c==insValue[i].c&&m.r==insValue[i].r).u = insValue[i].u |
| | | // this.param[a.id].insValue[i].v.v = insValue[i].v |
| | | // this.param[a.id].insValue[i].u = insValue[i].u |
| | | } |
| | | } |
| | | } catch (e) {} |
| | | try { |
| | | // 设å¤ç¼å·èµå¼ |
| | | let equipValue = JSON.parse(a.insProductResult.equipValue) |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('ç循ç¯')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('温åè¯éª'))){ |
| | | // ç¹æ®é¡¹ç®åå§å |
| | | this.param[a.id].equipValue = [] |
| | | for (let i = 0; i < equipValue.length; i++) { |
| | | this.param[a.id].equipValue.push({ |
| | | v:{ |
| | | v:'' |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | for (let i = 0; i < equipValue.length; i++) { |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('ç循ç¯')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('温åè¯éª'))){ |
| | | // 温度循ç¯è®¾å¤èµå¼ |
| | | this.$set(this.equipForm,`code`+i,equipValue[i].v) |
| | | this.param[a.id].equipValue[i].v.v = equipValue[i].v |
| | | }else{ |
| | | // æ®é设å¤èµå¼ |
| | | this.param[a.id].equipValue[i].v.v = equipValue[i].v |
| | | } |
| | | } |
| | | } catch (e) {} |
| | | try { |
| | | // 设å¤åç§°èµå¼ |
| | | let equipName = JSON.parse(a.insProductResult.equipName) |
| | | for (let i = 0; i < equipName.length; i++) { |
| | | equipName[i].v !== '' && equipName[i].v.map(val => { |
| | | const index = this.equipOptions.findIndex(item => item.value === val) |
| | | if (index > -1) { |
| | | // æ ¹æ®è®¾å¤ç¼ç 转æ¢ä¸ºç¸åºç设å¤åç§° |
| | | val = this.equipOptions[index].deviceName |
| | | } |
| | | }) |
| | | } |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('ç循ç¯')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('温åè¯éª'))){ |
| | | // 设å¤åç§°åå§å |
| | | this.param[a.id].equipName = [] |
| | | for (let i = 0; i < equipName.length; i++) { |
| | | this.param[a.id].equipName.push({ |
| | | v:{ |
| | | v:'' |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | for (let i = 0; i < equipName.length; i++) { |
| | | if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('ç循ç¯')||this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('温åè¯éª'))){ |
| | | // 温度循ç¯èµå¼ |
| | | this.$set(this.equipForm,`value`+i,equipName[i].v) |
| | | this.param[a.id].equipName[i].v.v = equipName[i].v |
| | | }else{ |
| | | // æ®é设å¤åç§°èµå¼ |
| | | this.param[a.id].equipName[i].v.v = equipName[i].v |
| | | } |
| | | } |
| | | } catch (e) { |
| | | console.log('设å¤åç§°èµå¼----', e) |
| | | } |
| | | try { |
| | | // æç»å¼èµå¼ |
| | | this.param[a.id].resValue.v.v = this.toFixed(a.lastValue,this.param[a.id].resValue.v.ct) |
| | | // ç»è®ºèµå¼ |
| | | this.param[a.id].insResult.v.v = a.insResult |
| | | } catch (e) {} |
| | | }) |
| | | // 对excel彿°è¿è¡å¤ç |
| | | this.handleExcelMethod() |
| | | }, |
| | | // æ£éªå¼è¾å
¥å触åç彿° |
| | | changeInput(m, code, n,getDataType) { |
| | | // 为æ°éå®ä¹ä¸ä¸ªé»è¾åæ° |
| | | if(getDataType=='getDataType'){ |
| | | this.getDataType = 2; |
| | | } |
| | | let currentInsItemId = null//å½åæ£éªé¡¹id |
| | | if (n) { |
| | | currentInsItemId = JSON.parse(JSON.stringify(n.i)) |
| | | // å®ä¹ä¸ä¸ªå½æ°æ¥éªè¯åæ°æ¯å¦ææ |
| | | if (typeof n.v.v == 'string') { |
| | | function isValidFraction(fraction) { |
| | | const [numerator, denominator] = fraction.split('/'); // ååå忝 |
| | | return !(!denominator || !numerator); |
| | | } |
| | | const isTrue = isValidFraction(n.v.v) |
| | | if (!isTrue) { |
| | | n.v.v = n.v.v.replace('/', '') |
| | | } |
| | | } |
| | | } |
| | | try { |
| | | // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ |
| | | this.worker.postMessage(JSON.stringify({ |
| | | code: code, |
| | | tableList:this.tableList, |
| | | excelMethodList:this.excelMethodList, |
| | | comparisonList:this.comparisonList, |
| | | currentSample:this.currentSample, |
| | | PROJECT:this.PROJECT, |
| | | param:this.param, |
| | | currentTable:this.currentTable, |
| | | getDataTypeId:this.getDataTypeId, |
| | | modelType: this.sampleProduct[0].model, |
| | | currentInsItem: n |
| | | })); |
| | | } catch (error) { |
| | | console.log(444,error); |
| | | } |
| | | |
| | | // çå¬ Worker è¿åçç»æ |
| | | this.worker.onmessage = (event) => { |
| | | this.result = JSON.parse(event.data); |
| | | switch (this.result.method){ |
| | | case 'saveInsContext': |
| | | console.log(`output->`,11111111111111) |
| | | this.$nextTick(()=>{ |
| | | // this.$delete(this.tableList[0],'arr') |
| | | this.$set(this.tableList[0],'arr',this.result.value.tableList[0].arr) |
| | | this.param = this.result.value.param |
| | | if(this.result.value.currentInsItem){ |
| | | currentInsItemId = this.result.value.currentInsItem.i |
| | | } |
| | | // ç¹æ®å¤çä¸ä¸ç»è®º,伿è¿ç§ç¹æ®æ
åµ |
| | | for (var i in this.param){ |
| | | if(this.param[i].insResult&&this.param[i].insResult.v&&this.param[i].insResult.v.v){ |
| | | if(this.param[i].insResult.v.v=='åæ ¼'){ |
| | | this.$set(this.param[i].insResult.v,'v',1) |
| | | }else if(this.param[i].insResult.v.v=='ä¸åæ ¼'){ |
| | | this.$set(this.param[i].insResult.v,'v',0) |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | break; |
| | | case 'tableList': |
| | | this.$nextTick(()=>{ |
| | | // æ´æ°æ°æ® |
| | | this.$delete(this.tableList[0],'arr') |
| | | this.$set(this.tableList[0],'arr',this.result.value[0].arr) |
| | | // this.param = this.result.value.param |
| | | if(this.result.value.currentInsItem){ |
| | | currentInsItemId = this.result.value.currentInsItem.i |
| | | } |
| | | }) |
| | | break; |
| | | case 'getCurrentInsProduct': |
| | | // æ´æ°é¡µé¢æ°æ® |
| | | this.getCurrentInsProduct(this.result.value) |
| | | break; |
| | | } |
| | | }; |
| | | // ä¿åæ°æ® |
| | | setTimeout(()=>{ |
| | | this.saveInsContext(currentInsItemId) |
| | | },200) |
| | | }, |
| | | // æ¯å¦éè¦æ°é |
| | | async determineWhetherToCollectData(){ |
| | | let res = determineWhetherToCollectData({managementNumber: ''}) |
| | | this.isGet = res.data |
| | | }, |
| | | // æ ¹æ®åç«¯ä¼ åæ´æ°é¡µé¢æ°æ® param => this.tableList[0].insProductResult |
| | | getCurrentInsProduct(pId) { |
| | | if (!this.tableList[0].insProductResult) { |
| | | this.tableList[0].insProductResult = {} |
| | | } |
| | | for (let m in this.param[pId]) { |
| | | let value = this.param[pId][m] |
| | | switch (m) { |
| | | case 'comValue': |
| | | // èµå¼è®¡ç®å¼ |
| | | if (value && value.length > 0) { |
| | | this.tableList[0].insProductResult[m] = []; |
| | | value.forEach((a, i) => { |
| | | let obj = { |
| | | v: a.v.v, |
| | | } |
| | | this.tableList[0].insProductResult[m].push(obj); |
| | | }) |
| | | try { |
| | | this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) |
| | | } catch (error) { |
| | | console.log(555,error); |
| | | } |
| | | } |
| | | break; |
| | | // èµå¼æ£éªå¼ |
| | | case 'insValue': |
| | | if (value && value.length > 0) { |
| | | this.tableList[0].insProductResult[m] = []; |
| | | value.forEach((a, i) => { |
| | | let obj = { |
| | | v: a.v.v, |
| | | u: a.u, |
| | | } |
| | | this.tableList[0].insProductResult[m].push(obj); |
| | | }) |
| | | try { |
| | | this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) |
| | | } catch (error) { |
| | | console.log(666,error); |
| | | } |
| | | } |
| | | break; |
| | | // èµå¼è®¾å¤ç¼å· |
| | | case 'equipValue': |
| | | if (value && value.length > 0) { |
| | | this.tableList[0].insProductResult[m] = []; |
| | | value.forEach((a, i) => { |
| | | let obj = { |
| | | v: a.v.v, |
| | | } |
| | | this.tableList[0].insProductResult[m].push(obj); |
| | | }) |
| | | try { |
| | | this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) |
| | | } catch (error) { |
| | | console.log(777,error); |
| | | } |
| | | } |
| | | break; |
| | | // èµå¼è®¾å¤åç§° |
| | | case 'equipName': |
| | | if (value && value.length > 0) { |
| | | this.tableList[0].insProductResult[m] = []; |
| | | value.forEach((a, i) => { |
| | | let obj = { |
| | | v: a.v.v, |
| | | } |
| | | this.tableList[0].insProductResult[m].push(obj); |
| | | }) |
| | | try { |
| | | this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m]) |
| | | } catch (error) { |
| | | console.log(888,error); |
| | | } |
| | | } |
| | | break; |
| | | // èµå¼æç»å¼ |
| | | case 'resValue': |
| | | this.tableList[0].lastValue = value?value.v.v:'' |
| | | break; |
| | | // èµå¼ç»è®º |
| | | case 'insResult': |
| | | this.tableList[0].insResult = value?value.v.v:'' |
| | | break; |
| | | } |
| | | } |
| | | }, |
| | | // 对EXCEL彿°è¿è¡å¤ç |
| | | handleExcelMethod() { |
| | | if (this.excelMethodList.length > 0) { |
| | | this.excelMethodList.map(item => { |
| | | // å¾å°æ¯ä¸ªå½æ°çåæ°å表 |
| | | item.valueList = excelFunction.changeParameter(item.v.f); |
| | | return item; |
| | | }) |
| | | } |
| | | }, |
| | | getValue(v){ |
| | | // 对页é¢å±ç¤ºæ°æ®è¿è¡å¤ç,@,代表æ¢è¡ |
| | | let str = v.v?v.v:(v.v===0?v.v:(v.ct&&v.ct.s?v.ct.s.length>0&&v.ct.s[0].v.replace(new RegExp('\n', 'g'), '<br/>').replace(new RegExp('@', 'g'), '<br/>'):'')) |
| | | // å¯¹æ°æ®ä¿çå°æ°ç¹è¿è¡å¤ç |
| | | if(v.ct&&v.ct.fa&&v.ct.fa.includes('.')&&str){ |
| | | let num = 0 |
| | | let str0 = v.ct.fa.split('.')[1] |
| | | num = str0.length |
| | | str = Number(str).toFixed(num) |
| | | } |
| | | if(v.v&&typeof v.v == 'string'&&v.v.includes('@')){ |
| | | str = v.v.replace(new RegExp('@', 'g'), '<br/>') |
| | | } |
| | | return str |
| | | }, |
| | | // è·åå½åè¾å
¥æ¡ç±»å |
| | | getInspectionValueType(id) { |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == id) { |
| | | return this.currentSample.insProduct[a].inspectionValueType |
| | | } |
| | | } |
| | | }, |
| | | // è·åè¦æ±æè¿° |
| | | getTell(id) { |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == id) { |
| | | return this.currentSample.insProduct[a].tell |
| | | } |
| | | } |
| | | }, |
| | | // 卿è·ååå
æ ¼å®½åº¦ |
| | | handleWidth(n) { |
| | | let sum = 0; |
| | | if (n.v.mc && n.v.mc.cs && n.v.mc.c != undefined) { |
| | | for (let i = 0; i < n.v.mc.cs; i++) { |
| | | let num = this.widthList[i + n.v.mc.c] ? this.widthList[i + n.v.mc.c] : 100 |
| | | sum += num; |
| | | } |
| | | } else { |
| | | sum = this.widthList[n.c] ? this.widthList[n.c] : 100 |
| | | } |
| | | return sum |
| | | }, |
| | | // 对è¾å
¥å¼è¿è¡æ ¼å¼æ ¡éª |
| | | handleInput (n) { |
| | | try { |
| | | n.v.v = n.v.v.replace(/[^\d.^e>\-/+]/g, ''); |
| | | n.v.v = n.v.v.replace(/\.{2,}/g,"."); //åªä¿ç第ä¸ä¸ª. æ¸
é¤å¤ä½ç |
| | | n.v.v = n.v.v.replace(".","$#$").replace(/\./g,"").replace("$#$","."); |
| | | n.v.v = n.v.v.replace(/\/{2,}/g,"/"); //åªä¿ç第ä¸ä¸ª/æ¸
é¤å¤ä½ç |
| | | n.v.v = n.v.v.replace("/","$#$").replace(/\//g,"").replace("$#$","/"); |
| | | } catch (error) { |
| | | console.log(error); |
| | | } |
| | | |
| | | }, |
| | | getInspectionItemType(id) { |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == id) { |
| | | return this.currentSample.insProduct[a].inspectionItemType |
| | | } |
| | | } |
| | | }, |
| | | // è·åè¦æ±å¼ |
| | | getAsk(id) { |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == id) { |
| | | return this.currentSample.insProduct[a].ask |
| | | } |
| | | } |
| | | }, |
| | | getSystemValue(n) { |
| | | let code = null |
| | | try { |
| | | this.param[n.i].equipValue.forEach(a=>{ |
| | | if(a.r === n.r){ |
| | | if (a.v.v == null || a.v.v == '') { |
| | | this.$message.error('请å
éæ©ééç设å¤') |
| | | return |
| | | }else{ |
| | | code = a.v.v |
| | | } |
| | | } |
| | | }) |
| | | } catch (e) { |
| | | // console.log(e); |
| | | this.$message.error('æ¾ä¸å°è®¾å¤å
容') |
| | | } |
| | | // console.log(n, code); |
| | | fetch('http://localhost:82/微信å¾ç_20240518100811.png').then(res=>res.blob()).then(blob=>{ |
| | | // console.log(blob); |
| | | const url = URL.createObjectURL(blob) |
| | | // console.log(url); |
| | | }) |
| | | /* this.$message.error('éé失败ã已弿¾æå¨æ¹å¼ã') |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == n.i) { |
| | | this.currentSample.insProduct[a].inspectionItemType = 0 |
| | | } |
| | | } */ |
| | | }, |
| | | // è·åææè®¾å¤ |
| | | getEquipOptions(e, id) { |
| | | if (e) { |
| | | this.equipOptions = [] |
| | | search({ status: 0 }).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data.map(m => { |
| | | m.value = m.managementNumber |
| | | m.label = m.deviceName |
| | | return m |
| | | }) |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | }) |
| | | } |
| | | }, |
| | | getUserInfo() { |
| | | getUserNow().then(res => { |
| | | this.userId = res.data.id |
| | | }) |
| | | }, |
| | | // 夿 ¸ |
| | | upInsReview(e) { |
| | | if (e == 1) { |
| | | // éè¿ |
| | | this.reviewLoading = true; |
| | | verifyPlan({ |
| | | orderId: this.orderId, |
| | | type: 1, |
| | | laboratory: this.sonLaboratory, |
| | | tell: null, |
| | | userId: this.checkUser |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("æä½æå") |
| | | this.$emit('goback') |
| | | this.addCheck = false |
| | | } |
| | | this.reviewLoading = false; |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.reviewLoading = false; |
| | | }) |
| | | } else { |
| | | // ä¸éè¿ |
| | | this.reviewDia = true; |
| | | } |
| | | }, |
| | | handleReviewDia() { |
| | | if (this.noReason) { |
| | | this.reviewLoading = true; |
| | | verifyPlan({ |
| | | orderId: this.orderId, |
| | | type: 0, |
| | | laboratory: this.sonLaboratory, |
| | | tell: this.noReason |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("æä½æå") |
| | | this.$emit('goback') |
| | | } |
| | | this.reviewLoading = false; |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.reviewLoading = false; |
| | | }) |
| | | } else { |
| | | this.$message.error('æªè¾å
¥ä¸éè¿åå ') |
| | | } |
| | | }, |
| | | submit() { |
| | | if (this.verifyUser === null || this.verifyUser === '') { |
| | | this.$message.error("请æå®å¤æ ¸äººå") |
| | | return |
| | | } |
| | | if(!this.otherForm.humidity){ |
| | | this.$message.error("请è¾å
¥æ¹¿åº¦") |
| | | return |
| | | } |
| | | if(!this.otherForm.temperature){ |
| | | this.$message.error("请è¾å
¥æ¸©åº¦") |
| | | return |
| | | } |
| | | this.submitLoading = true; |
| | | checkSubmitPlan({ |
| | | orderId: this.orderId, |
| | | laboratory: this.sonLaboratory, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | if(!res.data||res.data.length==0){ |
| | | this.submitLoading = true; |
| | | submitPlan({ |
| | | orderId: this.orderId, |
| | | laboratory: this.sonLaboratory, |
| | | verifyUser: this.verifyUser, |
| | | entrustCode: this.insOrder.entrustCode |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("æä½æå") |
| | | this.$emit('goback') |
| | | this.submitLoading = false; |
| | | this.addVerifyDia = false |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.submitLoading = false; |
| | | }) |
| | | }else{ |
| | | let newData = [] |
| | | const h = this.$createElement |
| | | for (let i in res.data) { |
| | | const lastChar = res.data[i].slice(-1); |
| | | if(lastChar=='-'){ |
| | | res.data[i] = res.data[i].slice(0, -1); |
| | | } |
| | | newData.push(h('p', {style: 'font-size: 14px;color: red;'}, (Number(i)+1)+'ã'+res.data[i])) |
| | | } |
| | | newData.push(h('p', { style: 'font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh' },'以ä¸é¡¹ç®ä¸åæ ¼ï¼ç¡®å®æäº¤ï¼')) |
| | | this.$confirm('æç¤º',{ |
| | | title:'æç¤º', |
| | | message: h('div', null, newData), |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "" |
| | | }).then(() => { |
| | | this.submitLoading = true; |
| | | submitPlan({ |
| | | orderId: this.orderId, |
| | | laboratory: this.sonLaboratory, |
| | | verifyUser: this.verifyUser |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("æä½æå") |
| | | this.addVerifyDia = false |
| | | this.$emit('goback') |
| | | } |
| | | this.submitLoading = false; |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.submitLoading = false; |
| | | }) |
| | | }).catch(() => {}) |
| | | } |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | this.submitLoading = false; |
| | | }) |
| | | return |
| | | }, |
| | | // ç»ä¸å¨è¿éä¿åæ°æ® |
| | | saveInsContext(currentInsItemId) { |
| | | try { |
| | | if(this.param){ |
| | | let param = null |
| | | if(currentInsItemId){ |
| | | param = {[currentInsItemId] : this.param[currentInsItemId]} |
| | | }else{ |
| | | param = this.param |
| | | } |
| | | saveUnqualifiedContext({ |
| | | param: JSON.stringify(param), |
| | | currentTable:this.currentTable, |
| | | sampleId:this.currentSample.id |
| | | }).then(res => { |
| | | if (res.code == 201) { |
| | | this.$message.error('ä¿å失败') |
| | | return |
| | | } |
| | | this.$message.success('å·²ä¿å') |
| | | }) |
| | | // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ |
| | | this.worker.postMessage(JSON.stringify({ |
| | | modelType: this.sampleProduct[0].model, |
| | | type: 'saveData', |
| | | tableList:this.tableList, |
| | | param:this.param, |
| | | currentTable:this.currentTable |
| | | })); |
| | | } |
| | | }catch (error) { |
| | | console.log(999,error); |
| | | } |
| | | }, |
| | | // è®¾å¤æ¹å |
| | | changeEquip(val, n, v) { |
| | | try { |
| | | // this.$set(n.v,'v',val) |
| | | this.tableList[0].arr.forEach((item,index)=>{ |
| | | item.forEach((m,i)=>{ |
| | | if(this.param[m.i]){ |
| | | this.param[m.i].state = 1 |
| | | } |
| | | // if(m.i==n.i&&m.v.ps&&m.v.ps.value=='设å¤åç§°'&&v){ |
| | | // this.$set(m.v,'v',v) |
| | | // } |
| | | }) |
| | | }) |
| | | for (let i in this.param) { |
| | | if(this.param[i].state!=1){ |
| | | delete this.param[i] |
| | | } |
| | | } |
| | | // if(val&&v){ |
| | | // for (let i1 in this.param[n.i].equipName) { |
| | | // if (this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r) { |
| | | // this.$delete(this.param[n.i].equipValue[i1].v,'v') |
| | | // this.$set(this.param[n.i].equipValue[i1].v,'v',val) |
| | | // this.$delete(this.param[n.i].equipName[i1].v,'v') |
| | | // this.$set(this.param[n.i].equipName[i1].v,'v',v) |
| | | // } |
| | | // } |
| | | // } |
| | | // this.equipOptions为设å¤åç§°ä¸ææ¡éé¡¹æ°æ® |
| | | for (let i1 in this.param[n.i].equipName) { |
| | | if (this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r) { |
| | | this.$delete(this.param[n.i].equipValue[i1].v,'v') |
| | | // å°æ°ç»èµå¼ç»è®¾å¤ç¼ç |
| | | this.$set(this.param[n.i].equipValue[i1].v,'v',val.join('ï¼')) |
| | | this.$delete(this.param[n.i].equipName[i1].v,'v') |
| | | // å°æ°ç»èµå¼ç»è®¾å¤ç¼ç |
| | | this.$set(this.param[n.i].equipName[i1].v,'v',val) |
| | | this.tableList[0].arr.forEach((item,index)=>{ |
| | | item.forEach((m)=>{ |
| | | if(m.i==n.i&&m.v.ps&&m.v.ps.value=='设å¤ç¼ç '){ |
| | | this.$set(m.v,'v',val.join('ï¼')) |
| | | } |
| | | if(m.i==n.i&&m.v.ps&&m.v.ps.value=='设å¤åç§°'){ |
| | | this.$set(m.v,'v',val) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | // ä¿åæ°æ® |
| | | this.saveInsContext(n.i) |
| | | } catch (e) { |
| | | console.log('changeEquip----', e) |
| | | } |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.personList = data; |
| | | }); |
| | | }, |
| | | scrollInit() { |
| | | // è·åè¦ç»å®äºä»¶çå
ç´ |
| | | const nav = document.getElementById("tableBox") |
| | | let flag; // é¼ æ æä¸ |
| | | let downX; // é¼ æ ç¹å»çx䏿 |
| | | let scrollLeft; // å½åå
ç´ æ»å¨æ¡çåç§»é |
| | | nav.addEventListener("mousedown", function(event) { |
| | | flag = true; |
| | | downX = event.clientX; // è·åå°ç¹å»çx䏿 |
| | | scrollLeft = this.scrollLeft; // è·åå½åå
ç´ æ»å¨æ¡çåç§»é |
| | | }); |
| | | nav.addEventListener("mousemove", function(event) { |
| | | if (flag) { // 夿æ¯å¦æ¯é¼ æ æä¸æ»å¨å
ç´ åºå |
| | | let moveX = event.clientX; // è·åç§»å¨çxè½´ |
| | | let scrollX = moveX - downX; // å½åç§»å¨çxè½´ä¸æ åå»åç¹å»ä¸å»çxè½´ä¸æ å¾å°é¼ æ æ»å¨è·ç¦» |
| | | this.scrollLeft = scrollLeft - scrollX // é¼ æ æä¸çæ»å¨æ¡åç§»éåå»å½åé¼ æ çæ»å¨è·ç¦» |
| | | } |
| | | }); |
| | | // é¼ æ æ¬èµ·åæ¢æå¨ |
| | | nav.addEventListener("mouseup", function() { |
| | | flag = false; |
| | | }); |
| | | // é¼ æ 离å¼å
ç´ åæ¢æå¨ |
| | | nav.addEventListener("mouseleave", function(event) { |
| | | flag = false; |
| | | }); |
| | | }, |
| | | async caretTape(num){ |
| | | let index = this.currentKey1 + num |
| | | if(index < 1){ |
| | | this.$message.error('å½åæ¯ç¬¬ä¸ä¸ªå
纤带') |
| | | return |
| | | } else if(index > this.fiberOpticTape.length){ |
| | | this.$message.error('å½åæ¯æåä¸ä¸ªå
纤带') |
| | | return |
| | | } |
| | | this.currentKey1 = index |
| | | this.currentFiberOpticTape = this.HaveJson(this.fiberOpticTape[index - 1]) |
| | | this.param = {} |
| | | this.fiberOptic = [] |
| | | this.currentFiberOptic = null; |
| | | this.currentFiberOpticTape.productList.forEach(a => { |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | | resValue: null, |
| | | equipValue: [], |
| | | equipName: [], |
| | | insResult: null |
| | | } |
| | | }) |
| | | this.fiberOpticTapeVisible = false; |
| | | let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1) |
| | | this.getTableLists0(list) |
| | | if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){ |
| | | // é
ç½®å
纤 |
| | | this.fiberOptic = this.currentFiberOpticTape.fiber; |
| | | } |
| | | }, |
| | | async caretOptic(num){ |
| | | let index = this.currentKey2 + num |
| | | if(index < 1){ |
| | | this.$message.error('å½åæ¯ç¬¬ä¸ä¸ªå
纤') |
| | | return |
| | | } else if(index > this.fiberOptic.length){ |
| | | this.$message.error('å½åæ¯æåä¸ä¸ªå
纤') |
| | | return |
| | | } |
| | | this.currentKey2 = index |
| | | this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1]) |
| | | this.currentFiberOptic.productList.forEach(a => { |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | | resValue: null, |
| | | equipValue: [], |
| | | equipName: [], |
| | | insResult: null |
| | | } |
| | | }) |
| | | let list = await this.getCurrentProduct(this.currentFiberOptic.id,2) |
| | | this.getTableLists0(list) |
| | | }, |
| | | beforeUpload(file) { |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | return false; |
| | | } else { |
| | | this.upLoading = true; |
| | | return true; |
| | | } |
| | | }, |
| | | onError(err, file, fileList) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleDown(row){ |
| | | downFile({ |
| | | id: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | let url = ''; |
| | | if(res.data.type==1){ |
| | | url = this.javaApi+'/img/'+res.data.fileUrl |
| | | file.downloadIamge(url,row.fileName) |
| | | }else{ |
| | | url = this.javaApi+'/word/'+res.data.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | | link.click(); |
| | | } |
| | | } |
| | | }).catch(error => { |
| | | |
| | | }) |
| | | }, |
| | | /** |
| | | * å°æ°å¼vä¿çct.faä¸'##'åçæå®å°æ°ä½æ°ï¼å¹¶è¿åæ ¼å¼ååçå符串ã |
| | | * |
| | | * @param v è¦æ ¼å¼åçæ°å¼ |
| | | * @param ct å
嫿 ¼å¼åé
ç½®ç对象 |
| | | * @param ct.fa æ ¼å¼åé
ç½®å符串ï¼è¥å
å«'##'åæç
§å
¶åçå
容确å®å°æ°ä½æ° |
| | | * @returns æ ¼å¼ååçå符串æåå§æ°å¼ï¼è¥é
ç½®ä¸ç¬¦åè¦æ±ï¼ |
| | | */ |
| | | toFixed(v,ct){ |
| | | if(v&&ct&&ct.fa){ |
| | | if(ct.fa.includes('.')){ |
| | | let num = ct.fa.slice(4).length |
| | | return Number(v).toFixed(num) |
| | | }else{ |
| | | return v |
| | | } |
| | | }else{ |
| | | return v |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .custom-table .el-table__header-wrapper th { |
| | | background-color: #87CEEB; /* åªå¯¹å¸¦æmy-custom-tableç±»çè¡¨æ ¼çæ */ |
| | | color: #fff; |
| | | } |
| | | .container { |
| | | overflow: auto; /* ç¡®ä¿å®¹å¨è½å
裹浮å¨å
ç´ */ |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .right-button { |
| | | float: right; |
| | | } |
| | | .inspection { |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .inspection::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .search .form-inline { |
| | | padding-top: 20px; |
| | | padding-left: 0px; |
| | | text-align: left; |
| | | } |
| | | |
| | | .center { |
| | | width: calc(100% - 40px); |
| | | /* max-height: 580px; */ |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .center-box { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-direction: column; |
| | | flex-wrap: wrap; |
| | | width: 100%; |
| | | overflow-x: auto; |
| | | /* overflow-x: scroll; */ |
| | | cursor: grab; |
| | | } |
| | | |
| | | .center-box:active{ |
| | | cursor: grabbing; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | margin: 5px 5px 16px; |
| | | } |
| | | |
| | | .tables td { |
| | | height: 40px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | .thermal-table{ |
| | | min-width: calc(100% - 10px); |
| | | margin: 5px 5px 0; |
| | | table-layout: fixed; |
| | | } |
| | | .thermal-table td { |
| | | min-width: 70px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 5px; |
| | | } |
| | | .table-container { |
| | | overflow-x: auto; /* ä½¿å®¹å¨æ¯ææ¨ªåæ»å¨ */ |
| | | max-width: 100%; /* éå¶å®¹å¨çæå¤§å®½åº¦ */ |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 100%; |
| | | align-items: center; |
| | | justify-content: left; |
| | | padding: 5px; |
| | | box-sizing: border-box; |
| | | overflow: hidden; |
| | | user-select: none; |
| | | } |
| | | |
| | | .content *{ |
| | | user-select: none; |
| | | } |
| | | |
| | | .content-h-0 { |
| | | justify-content: center; |
| | | } |
| | | |
| | | .content-h-1 { |
| | | justify-content: start; |
| | | } |
| | | |
| | | .content-h-2 { |
| | | justify-content: end; |
| | | } |
| | | |
| | | .content-v-0 { |
| | | align-items: center; |
| | | } |
| | | |
| | | .content-v-1 { |
| | | align-items: start; |
| | | } |
| | | |
| | | .content-v-2 { |
| | | align-items: end; |
| | | } |
| | | |
| | | .table_input { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .table_input >>>.el-input__inner{ |
| | | border-color: rgba(0, 0, 0, 0.5) !important; |
| | | } |
| | | |
| | | .collection { |
| | | width: 50px; |
| | | height: 100%; |
| | | margin-left: 5px; |
| | | border-color: transparent; |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .collection:active { |
| | | opacity: .7; |
| | | } |
| | | .table_caret{ |
| | | font-size: 16px; |
| | | margin: 0 5px; |
| | | color: rgba(0, 0, 0, 0.5); |
| | | } |
| | | .table_caret:hover{ |
| | | color: #409eff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .table_caret:active{ |
| | | opacity: .8; |
| | | } |
| | | >>>input::-webkit-inner-spin-button { |
| | | -webkit-appearance: none !important; /* éèå¾®è°æé® */ |
| | | margin: 0 !important; /* ç§»é¤å¾®è°æé®çè¾¹è· */ |
| | | } |
| | | |
| | | >>>input[type=number] { |
| | | -moz-appearance: textfield !important; /* é对 Firefox */ |
| | | } |
| | | >>>.el-form-item__content{ |
| | | display: inline-flex; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | | <style> |
| | | .inspection .el-form-item__label { |
| | | color: #000; |
| | | } |
| | | |
| | | .inspection .el-drawer__header::before { |
| | | content: ""; |
| | | display: inline-block; |
| | | width: 4px; |
| | | height: 30.24px; |
| | | background: #3A7BFA; |
| | | border-radius: 10px; |
| | | margin-left: 32px; |
| | | margin-right: 8.5px; |
| | | } |
| | | |
| | | .inspection .el-drawer__header { |
| | | color: #303133; |
| | | text-align: left; |
| | | } |
| | | |
| | | .inspection .el-input-group__append { |
| | | padding: 0 14px; |
| | | color: #3A7BFA; |
| | | background-color: #fff; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .inspection .center-box .el-input__inner { |
| | | font-size: 12px; |
| | | padding: 0 6px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .inspection .el-textarea__inner { |
| | | padding: 2px; |
| | | } |
| | | |
| | | .inspection .el-textarea__inner::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .inspection .el-select { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .inspection .el-textarea__inner { |
| | | min-height: 100% !important; |
| | | } |
| | | |
| | | .inspection .tables .el-input{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .thermal-table .el-input{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .custom-dialog .el-dialog__body { |
| | | max-width: 1000px; /* 设置æå¤§å®½åº¦ */ |
| | | } |
| | | .unPassCheck .el-dialog__body { |
| | | overflow: auto; |
| | | max-height: 800px; /* 设置æå¤§å®½åº¦ */ |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | mounted() { |
| | | this.queryParams.userId = this.userId; |
| | | // this.getPower(); |
| | | this.refreshTable(); |
| | | }, |
| | | methods: { |
| | |
| | | handleDataLook(row) { |
| | | this.lookInfo = row; |
| | | this.getLookList(); |
| | | }, |
| | | // æéåé
|
| | | getPower(radio) { |
| | | let power = JSON.parse(sessionStorage.getItem("power")); |
| | | let inspection = false; |
| | | let connect = false; |
| | | let review = false; |
| | | let claim = false; |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == "doInsOrder") { |
| | | inspection = true; |
| | | } |
| | | if (power[i].menuMethod == "upPlanUser") { |
| | | connect = true; |
| | | } |
| | | if (power[i].menuMethod == "verifyPlan") { |
| | | review = true; |
| | | } |
| | | if (power[i].menuMethod == "claimInsOrderPlan") { |
| | | claim = true; |
| | | } |
| | | } |
| | | if (!claim) { |
| | | this.componentData.do.splice(3, 1); |
| | | } |
| | | if (!review) { |
| | | this.componentData.do.splice(2, 1); |
| | | } |
| | | if (!connect) { |
| | | this.componentData.do.splice(1, 1); |
| | | } |
| | | if (!inspection) { |
| | | this.componentData.do.splice(0, 1); |
| | | } |
| | | }, |
| | | changeCheckBox(val) { |
| | | this.queryParams.userId = val ? 0 : null; |
| | |
| | | </el-col> |
| | | <el-col :span="16" style="text-align: right"> |
| | | <el-button size="small" type="primary" @click="refreshView">å·æ°</el-button> |
| | | <el-button v-if="typeSource === 1" size="small" type="primary" @click="openPurchase">è¿è´§éªè¯</el-button> |
| | | <el-button v-if="state === 1 && typeSource === 1" size="small" type="primary" |
| | | @click="openUnPassDialog('add')">ä¸åæ ¼å¤ç</el-button> |
| | | <el-button size="small" type="primary" @click=" |
| | | sampleVisible = true; |
| | | uploadSample(); |
| | | ">æ ·å忢</el-button> |
| | | <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">è¿è´§éªè¯</el-button> |
| | | <el-button v-if="state == 1 && typeSource == 1" size="small" type="primary" @click="openUnPassDialog('add')">ä¸åæ ¼å¤ç</el-button> |
| | | <el-button size="small" type="primary" @click="sampleVisible = true;uploadSample();">æ ·å忢</el-button> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">ä»»å¡åæ¢</el-button> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">æäº¤</el-button> |
| | | <!-- 夿 ¸ --> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨:"> |
| | | <!-- <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>--> |
| | | <el-input v-model="insOrder.remark" :disabled="state !== 1" clearable placeholder="请è¾å
¥" size="small" |
| | | <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请è¾å
¥" size="small" |
| | | @blur="subOtherForm(insOrder.remark, 'remark')"></el-input> |
| | | <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> --> |
| | | </el-form-item> |
| | |
| | | </el-radio-group> |
| | | </div> |
| | | <div style="display: flex; align-items: center"> |
| | | <el-button v-if="state === 1" size="small" type="primary" @click="openAddUnpass">æ°å¢ä¸åæ ¼å¤æµ</el-button> |
| | | <el-button v-if="state === 1" size="small" type="primary" @click="unpassCheck">ä¸åæ ¼å¤æµ</el-button> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="openAddUnpass">æ°å¢ä¸åæ ¼å¤æµ</el-button> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="unpassCheck">ä¸åæ ¼å¤æµ</el-button> |
| | | <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">æ¥çä¸åæ ¼å¤æµ</el-button> |
| | | <span v-if="cableTagList.length > 0"> çµç¼é
ç½®ï¼</span> |
| | | <el-select v-if="cableTagList.length > 0" v-model="currentTab" clearable placeholder="è¯·éæ©" size="small" |
| | |
| | | </div> |
| | | <el-upload v-if="state == 1" ref="upload" :action="action" :before-upload="beforeUpload" :data="{ |
| | | orderId: id, |
| | | }" :headers="headers" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | }" :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar" |
| | | style="width: 80px !important;margin-top: 10px;"> |
| | | <el-button v-if="state == 1" size="small" type="primary">éä»¶ä¸ä¼ </el-button></el-upload> |
| | |
| | | @resetAddUnPass="resetAddUnPass"></add-un-pass> |
| | | <UnPassDialog v-if="unPassDialog" ref="unPassDialog" :orderId="orderId" :unPassDialog="unPassDialog" |
| | | @resetForm="resetForm"></UnPassDialog> |
| | | <!-- <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" |
| | | <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" |
| | | :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource" |
| | | :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> --> |
| | | :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> |
| | | <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId" |
| | | :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification> |
| | | </div> |
| | |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import UnPassDialog from "../unpass/components/addUnPass.vue"; |
| | | import AddUnPass from "../unpass/components/addUnPass.vue"; |
| | | // import InspectionWord from "./components/InspectionWord.vue"; |
| | | import InspectionWord from "./components/InspectionWord.vue"; |
| | | import PurchaseVerification from "../unpass/components/PurchaseVerification.vue"; |
| | | import { |
| | | doInsOrder, |
| | |
| | | import DataWorker from '../../../DataWorker.worker'; |
| | | import html2canvas from "html2canvas"; |
| | | import { mapGetters } from "vuex"; |
| | | import { getToken } from "@/utils/auth"; |
| | | export default { |
| | | name: 'inspection', |
| | | components: { |
| | |
| | | AddUnPass, |
| | | limsTable, |
| | | UnPassDialog, |
| | | // InspectionWord, |
| | | InspectionWord, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | ...mapGetters(["userId"]), |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | }; |
| | | }, |
| | | action() { |
| | | return this.javaApi + "/insOrderPlan/uploadFile"; |
| | | }, |
| | |
| | | }, |
| | | // æå¼è¿è´§éªè¯å¼¹æ¡ |
| | | openPurchase() { |
| | | const operationType = this.state === 1 ? "add" : "view"; |
| | | const operationType = this.state == 1 ? "add" : "view"; |
| | | this.purchaseDialog = true; |
| | | const item = { |
| | | id: this.currentSample.id, |
| | |
| | | align-items: center; |
| | | } |
| | | </style> |
| | | <style> |
| | | <style scoped> |
| | | /* .inspection .el-form-item__label { |
| | | color: #000; |
| | | } */ |
| | |
| | | dicts: ['check_type', 'urgency_level'], |
| | | components: {}, |
| | | props: { |
| | | isReport: { |
| | | type: Number, |
| | | default: () => null |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | orderType: '', |
| | | active: 0, |
| | | currentId: 0, |
| | | isReport: '', |
| | | editTable:[], // åºé´ç¹æ®å¼å¡«å |
| | | template: null, |
| | | saveLoad: false, // ä¿åæé®loading |
| | |
| | | this.active = this.$route.query.active |
| | | this.orderType = this.$route.query.orderType |
| | | this.currentId = this.$route.query.currentId |
| | | this.isReport = this.$route.query.isReport |
| | | this.customsInspection = this.$route.query.customsInspection |
| | | this.getUserNowList() // è·åå½åç¨æ·ä¿¡æ¯ |
| | | this.selectStandardMethods() // è·åæ£éªæ åä¸ææ¡æ°æ® |
| | |
| | | orderId = this.dataIndex === 0 ? this.customsInspection.enterOrderId : this.customsInspection.quarterOrderId |
| | | } else if (!this.customsInspection.enterOrderId && !this.customsInspection.quarterOrderId) { |
| | | this.isShowTab = false |
| | | orderId = this.isReport === 1 ? this.customsInspection.insOrderId : this.customsInspection.id |
| | | orderId = this.isReport == 1 ? this.customsInspection.insOrderId : this.customsInspection.id |
| | | } |
| | | // æ¥ç |
| | | // è¯·æ±æ¥å£ï¼åæ¾æ°æ® |
| | |
| | | this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas) |
| | | this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo) |
| | | this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc) |
| | | console.log('this.orderType----', this.orderType) |
| | | if (this.orderType == 1) { |
| | | this.$set(this.addObj, 'orderType', 'Quarterly inspection') |
| | | } |
| | |
| | | <div class="app-container"> |
| | | <div> |
| | | <div class="search"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"><el-form-item label="æ¹å·" prop="updateBatchNo"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="æ¹å·" prop="updateBatchNo"> |
| | | <el-input v-model="entity.updateBatchNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item><el-form-item label="å§æç¼å·" prop="entrustCode"> |
| | | </el-form-item> |
| | | <el-form-item label="å§æç¼å·" prop="entrustCode"> |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item><el-form-item label="é¶ä»¶å·" prop="partNo"> |
| | | </el-form-item> |
| | | <el-form-item label="é¶ä»¶å·" prop="partNo"> |
| | | <el-input v-model="entity.partNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item><el-form-item label="é¶ä»¶æè¿°" prop="partDesc"> |
| | | </el-form-item> |
| | | <el-form-item label="é¶ä»¶æè¿°" prop="partDesc"> |
| | | <el-input v-model="entity.partDesc" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | |
| | | <el-upload :action="action" :auto-upload="true" |
| | | :data="{ orderId: dataVisibleIndex === 0 ? filesLookInfo.enterOrderId : filesLookInfo.quarterOrderId }" |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="uploadHeader" |
| | | :before-upload="beforeUpload" style="width: 80px !important;" :on-error="onError" ref='upload'> |
| | | <el-button size="small" type="primary" style="height: 38px">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | |
| | | import file from "@/utils/file"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { delfile, downFile, getFileList } from "@/api/business/rawMaterialOrder"; |
| | | import { getToken } from "@/utils/auth"; |
| | | export default { |
| | | name: "filesLookVisible", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.$refs.fileList.selectList() |
| | | this.getFileList() |
| | | } |
| | | }, |
| | | beforeUpload(file) { |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + '/insOrderPlan/uploadFile' |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .ins_order_add .el-input-group__append, |
| | | .el-input-group__prepend { |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | .ins_order_add .el-tree-node__content { |
| | | height: 32px; |
| | | font-size: 14px; |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .ins_order_add .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { |
| | | .el-table .warning-row .cell { |
| | | color: #3A7BFA; |
| | | } |
| | | |
| | | .ins_order_add .has-gutter .el-table__cell .cell { |
| | | line-height: 30px; |
| | | background-color: #fafafa; |
| | | } |
| | | |
| | | .ins_order_add .has-gutter .el-table__cell { |
| | | background-color: #fafafa !important; |
| | | } |
| | | |
| | | .ins_order_add .el-table__row .cell { |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .ins_order_add .el-table .warning-row .cell { |
| | | color: #3A7BFA; |
| | | } |
| | | |
| | | .ins_order_add .el-select .is-disabled { |
| | | background: transparent !important; |
| | | } |
| | | |
| | | .ins_order_add .el-select .is-disabled .el-input__inner { |
| | | background: transparent !important; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="ins_order_config"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="6" style="padding-left: 20px;text-align: left;">è¾
å©çº¿è¯é
ç½®</el-col> |
| | | <el-col :span="18" style="text-align: right;"> |
| | | <el-button size="medium" @click="outConfig"> |
| | | <span style="color: #3A7BFA;">è¿ å</span> |
| | | </el-button> |
| | | <el-button size="medium" type="primary" @click="save">ä¿ å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;" @input="changeTab"> |
| | | <div class="search_form"> |
| | | <div class="search_input"> |
| | | <el-radio-group v-model="currentTab" size="small" style="margin-right: 20px;" @input="changeTab"> |
| | | <el-radio-button label="ç»ç¼">ç» ç¼</el-radio-button> |
| | | <!-- <el-radio-button label="æ¤å¥">æ¤ å¥</el-radio-button>--> |
| | | </el-radio-group> |
| | | <div v-if="currentTab=='ç»ç¼'" class="search_thing"> |
| | | <div class="search_label">è¯æ°ï¼</div> |
| | | <el-form :model="auxiliaryWireCore" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="è¯æ°" prop="num"> |
| | | <el-select v-model="auxiliaryWireCore.num" allow-create |
| | | clearable |
| | | default-first-option |
| | |
| | | size="small"> |
| | | <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <!-- <div v-if="currentTab=='ç»ç¼'" class="search_thing">--> |
| | | <!-- <div class="search_label">åå·åæ°ï¼</div>--> |
| | | <!-- <el-input v-model="auxiliaryWireCore.modelNum" clearable size="small"--> |
| | | <!-- @input="methodChange(auxiliaryWireCore.standardMethodListId)"></el-input>--> |
| | | <!-- </div>--> |
| | | <div v-if="currentTab=='ç»ç¼'" class="search_thing"> |
| | | <div class="search_label">æ£éªæ åï¼</div> |
| | | <el-select v-model="auxiliaryWireCore.standardMethodListId" disabled placeholder="è¯·éæ©æ£éªæ å" |
| | | size="small" |
| | | @change="(value)=>methodChange(value)"> |
| | | <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id"> |
| | | </el-option> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªæ å" prop="standardMethodListId"> |
| | | <el-select v-model="auxiliaryWireCore.standardMethodListId" allow-create |
| | | clearable |
| | | default-first-option |
| | | filterable |
| | | multiple |
| | | size="small"> |
| | | <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- <div class="search_thing" v-if="currentTab=='æ¤å¥'">--> |
| | | <!-- <div class="search_label">æ£éªæ åï¼</div>--> |
| | | <!-- <el-select v-model="sheath.standardMethodListId" placeholder="è¯·éæ©æ£éªæ å" size="small"--> |
| | | <!-- disabled--> |
| | | <!-- @change="(value)=>methodChange(value)">--> |
| | | <!-- <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id">--> |
| | | <!-- </el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </div>--> |
| | | <div> |
| | | <el-button size="small" @click="outConfig">è¿ å</el-button> |
| | | <el-button size="small" type="primary" @click="save">ä¿ å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <el-table ref="productTable" v-loading="getProductLoad" :data="productList" |
| | | :row-class-name="tableRowClassName" border class="el-table" height="100%" |
| | | style="margin-bottom: 10px;" tooltip-effect="dark" @select="upProductSelect" |
| | | :row-class-name="tableRowClassName" border class="el-table" :height="'calc(100vh - 200px)'" |
| | | tooltip-effect="dark" @select="upProductSelect" |
| | | @selection-change="selectProduct" @select-all="handleAll"> |
| | | <el-table-column :selectable="selectable" type="selection" width="65"></el-table-column> |
| | | <el-table-column label="æ£éªé¡¹åç±»" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> |
| | |
| | | |
| | | <script> |
| | | import { Tree } from 'element-ui' |
| | | import {selectsStandardMethodByFLSSM, selectStandardProductList} from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | props: { |
| | | active: { |
| | | type: Number, |
| | | default: () => 0 |
| | | type: String, |
| | | default: () => '0' |
| | | }, |
| | | sampleSelectionList: { |
| | | type: Array, |
| | |
| | | }, |
| | | selectsStandardMethodByFLSSM2() { |
| | | this.standards = [] |
| | | this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { |
| | | selectsStandardMethodByFLSSM({ |
| | | tree: this.$parent.selectTree |
| | | }).then(res => { |
| | | try { |
| | |
| | | let arr = this.selectTree.split('-') |
| | | let arr0 = arr.slice(0, arr.length - 1) |
| | | let selectTree = arr0.join('-').substring(0, arr0.join('-').length - 1) |
| | | this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { |
| | | selectsStandardMethodByFLSSM({ |
| | | tree: selectTree |
| | | }).then(ress => { |
| | | this.standards = ress.data.standardMethodList |
| | |
| | | const conductorMaterial = this.sampleSelectionList[0].conductorMaterial |
| | | const conductorType = this.sampleSelectionList[0].conductorType |
| | | const modelNum = this.sampleSelectionList[0].modelNum |
| | | this.$axios.post(this.$api.standardTree.selectStandardProductList, { |
| | | selectStandardProductList({ |
| | | model: this.$parent.addObj.model ? this.$parent.addObj.model : model, |
| | | modelNum: modelNum, |
| | | standardMethodListId: val, |
| | |
| | | this.$refs.productTable.toggleRowSelection(row, true); |
| | | }, |
| | | save() { |
| | | // if(this.auxiliaryWireCore.insProduct.length === 0 && this.sheath.insProduct.length === 0){ |
| | | // this.$message.error('缺å°é
ç½®æ æ³ä¿å') |
| | | // return |
| | | // } |
| | | if (this.auxiliaryWireCore.insProduct.length !== 0) { |
| | | if (this.auxiliaryWireCore.num.length === 0) { |
| | | this.$message.error('缺å°è¯æ°æ æ³ä¿å') |
| | | return |
| | | } |
| | | } |
| | | // this.sample.forEach(a=>{ |
| | | // a.auxiliaryWireCore = this.auxiliaryWireCore |
| | | // a.sheath = this.sheath |
| | | // }) |
| | | this.auxiliaryWireCore.insProduct = this.productList |
| | | this.auxiliaryWireCore.insProduct = this.HaveJson(this.productList) |
| | | this.auxiliaryWireCore.insProduct.forEach(a => { |
| | | delete a.id |
| | | }) |
| | | if (this.currentTab === 'ç»ç¼') { |
| | | this.sample.forEach(a => { |
| | | a.auxiliaryWireCore = this.auxiliaryWireCore |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .ins_order_config { |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | overflow-x: hidden; |
| | | } |
| | | |
| | | .ins_order_config::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | .search_form { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 300px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 100px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 70px); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 26px - 24px); |
| | | padding: 20px; |
| | | } |
| | | </style> |
| | | <style> |
| | | .ins_order_config .has-gutter .el-table__cell .cell { |
| | | line-height: 30px; |
| | | background-color: #fafafa; |
| | |
| | | <template> |
| | | <div class="ins_order_config"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="6" style="padding-left: 20px;text-align: left;">çµç¼é
ç½®</el-col> |
| | | <el-col :span="18" style="text-align: right;"> |
| | | <el-button size="medium" @click="outConfig"> |
| | | <span style="color: #3A7BFA;">è¿ å</span> |
| | | </el-button> |
| | | <el-button size="medium" type="primary" @click="save">ä¿ å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;" @input="changeTab"> |
| | | <div class="search_form"> |
| | | <div v-if="currentTab=='ç»ç¼'"> |
| | | <el-radio-group v-model="currentTab" size="small" style="margin-right: 20px;" @input="changeTab"> |
| | | <el-radio-button label="ç»ç¼">ç» ç¼</el-radio-button> |
| | | <!-- <el-radio-button label="æ¤å¥">æ¤ å¥</el-radio-button>--> |
| | | </el-radio-group> |
| | | <div v-if="currentTab=='ç»ç¼'" class="search_thing"> |
| | | <div class="search_label">è¯æ°ï¼</div> |
| | | <el-form :model="insulating" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="è¯æ°" prop="num"> |
| | | <el-select v-model="insulating.num" allow-create |
| | | clearable |
| | | default-first-option |
| | |
| | | size="small"> |
| | | <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div v-if="currentTab=='ç»ç¼'" class="search_thing"> |
| | | <div class="search_label">æ£éªæ åï¼</div> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªæ å" prop="standardMethodListId"> |
| | | <el-select v-model="insulating.standardMethodListId" disabled placeholder="è¯·éæ©æ£éªæ å" |
| | | size="small" |
| | | @change="(value)=>methodChange(value)"> |
| | | <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <!-- <div class="search_thing" v-if="currentTab=='æ¤å¥'">--> |
| | | <!-- <div class="search_label">æ£éªæ åï¼</div>--> |
| | | <!-- <el-select v-model="sheath.standardMethodListId" placeholder="è¯·éæ©æ£éªæ å" size="small"--> |
| | | <!-- disabled--> |
| | | <!-- @change="(value)=>methodChange(value)">--> |
| | | <!-- <el-option v-for="item in standards" :key="item.id" :label="item.code" :value="item.id">--> |
| | | <!-- </el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </div>--> |
| | | <div> |
| | | <el-button size="small" @click="outConfig">è¿ å</el-button> |
| | | <el-button size="small" type="primary" @click="save">ä¿ å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <el-table ref="productTable" :data="productList" :row-class-name="tableRowClassName" |
| | | border class="el-table" height="100%" |
| | | style="margin-bottom: 10px;" tooltip-effect="dark" @select="upProductSelect" |
| | | <el-table ref="productTable" :data="productList" :row-class-name="tableRowClassName" border |
| | | class="el-table" :height="'calc(100vh - 200px)'" tooltip-effect="dark" @select="upProductSelect" |
| | | @selection-change="selectProduct" @select-all="handleAll"> |
| | | <el-table-column :selectable="selectable" type="selection" width="65"></el-table-column> |
| | | <el-table-column label="æ£éªé¡¹åç±»" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { Tree } from 'element-ui' |
| | | import {selectsStandardMethodByFLSSM, selectStandardProductList} from "@/api/business/rawMaterialOrder"; |
| | | |
| | | export default { |
| | | props: { |
| | | active: { |
| | | type: Number, |
| | | default: () => 0 |
| | | type: String, |
| | | default: () => '0' |
| | | }, |
| | | sampleSelectionList: { |
| | | type: Array, |
| | |
| | | insProduct: [], |
| | | num: [] |
| | | }, |
| | | // sheath: { |
| | | // standardMethodListId: null, |
| | | // insProduct: [] |
| | | // }, |
| | | isAskOnlyRead: false, |
| | | inspectionItem:null, |
| | | inspectionItemSubclass:null, |
| | |
| | | if(this.$parent.sampleList[i].insulating !== undefined && this.$parent.sampleList[i].insulating !== null){ |
| | | this.insulating = this.$parent.sampleList[i].insulating |
| | | } |
| | | // if(this.$parent.sampleList[i].sheath !== undefined && this.$parent.sampleList[i].sheath !== null){ |
| | | // this.sheath = this.$parent.sampleList[i].sheath |
| | | // } |
| | | break |
| | | } |
| | | } |
| | |
| | | this.productList = this.productList0 |
| | | } |
| | | }, |
| | | // è¦æ±å¼ååæ¶ |
| | | requestChange(e, row,type) { |
| | | this.sampleList.map(item => { |
| | | if (this.sampleIds.indexOf(item.id) > -1) { |
| | | item.insProduct.map(i => { |
| | | if(i.id == row.id){ |
| | | if(row.repetitionTag){ |
| | | if(row.repetitionTag==i.repetitionTag){ |
| | | i[type] = e |
| | | } |
| | | }else{ |
| | | if(!i.repetitionTag){ |
| | | i[type] = e |
| | | } |
| | | } |
| | | } |
| | | return i |
| | | }) |
| | | } |
| | | return item |
| | | }) |
| | | }, |
| | | outConfig() { |
| | | this.$parent.cableConfigShow = false |
| | | }, |
| | |
| | | this.$refs.productTable.doLayout() |
| | | }) |
| | | }, |
| | | tableRowClassName({ |
| | | row, |
| | | rowIndex |
| | | }) { |
| | | tableRowClassName({row, rowIndex}) { |
| | | if (row.state === 0) { |
| | | return ''; |
| | | } |
| | |
| | | }, |
| | | selectsStandardMethodByFLSSM2() { |
| | | this.standards = [] |
| | | this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { |
| | | selectsStandardMethodByFLSSM({ |
| | | tree: this.$parent.selectTree |
| | | }).then(res => { |
| | | try { |
| | |
| | | let arr = this.selectTree.split('-') |
| | | let arr0 = arr.slice(0, arr.length - 1) |
| | | let selectTree = arr0.join('-').substring(0, arr0.join('-').length - 1) |
| | | this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM, { |
| | | selectsStandardMethodByFLSSM({ |
| | | tree: selectTree |
| | | }).then(ress => { |
| | | this.standards = ress.data.standardMethodList |
| | |
| | | const cores = this.sampleSelectionList[0].cores |
| | | const conductorMaterial = this.sampleSelectionList[0].conductorMaterial |
| | | const conductorType = this.sampleSelectionList[0].conductorType |
| | | this.$axios.post(this.$api.standardTree.selectStandardProductList, { |
| | | selectStandardProductList({ |
| | | model: this.$parent.addObj.model?this.$parent.addObj.model:model, |
| | | modelNum: modelNum, |
| | | cores: cores, |
| | |
| | | res.data.forEach(a => { |
| | | a.state = 0 |
| | | }) |
| | | // this.insulating.insProduct = res.data |
| | | // this.sheath.insProduct = res.data |
| | | this.productList = res.data |
| | | }) |
| | | }, |
| | |
| | | this.$refs.productTable.toggleRowSelection(row, true); |
| | | }, |
| | | save(){ |
| | | // if(this.insulating.insProduct.length === 0 && this.sheath.insProduct.length === 0){ |
| | | // this.$message.error('缺å°é
ç½®æ æ³ä¿å') |
| | | // return |
| | | // } |
| | | this.insulating.insProduct = this.productList |
| | | this.insulating.insProduct = this.HaveJson(this.productList) |
| | | if(this.insulating.insProduct.length !== 0){ |
| | | if(this.insulating.num.length === 0){ |
| | | this.$message.error('缺å°è¯æ°æ æ³ä¿å') |
| | | return |
| | | } |
| | | } |
| | | // this.sample.forEach(a=>{ |
| | | // a.insulating = this.insulating |
| | | // a.sheath = this.sheath |
| | | // }) |
| | | this.insulating.insProduct.forEach(a => { |
| | | delete a.id |
| | | }) |
| | | if (this.currentTab === 'ç»ç¼') { |
| | | this.sample.forEach(a => { |
| | | a.insulating = this.insulating |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .ins_order_config { |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | overflow-x: hidden; |
| | | } |
| | | |
| | | .ins_order_config::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | .search_form { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 300px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 100px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 70px); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 26px - 24px); |
| | | padding: 20px; |
| | | } |
| | | </style> |
| | | <style> |
| | | .ins_order_config .has-gutter .el-table__cell .cell { |
| | | line-height: 30px; |
| | | background-color: #fafafa; |
| | | } |
| | | |
| | | .ins_order_config .has-gutter .el-table__cell { |
| | | background-color: #fafafa !important; |
| | | } |
| | | |
| | | .ins_order_config .el-table__row .cell { |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .ins_order_config .el-table .warning-row .cell { |
| | | .el-table .warning-row .cell { |
| | | color: #3A7BFA; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="æ¥åç¼å·" prop="code"> |
| | | <el-input v-model="entity.code" clearable placeholder="请è¾å
¥" |
| | | size="small" @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="queryStatus"> |
| | | <el-select v-model="entity.queryStatus" clearable size="small" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åç±»å«" prop="typeSource"> |
| | | <el-select v-model="entity.typeSource" clearable size="small" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªç±»å«" prop="orderType"> |
| | | <el-select v-model="entity.orderType" clearable size="small" @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="mini" @click="refresh()">éç½®</el-button> |
| | | <el-button size="mini" type="primary" @click="refreshTable()">æ¥è¯¢</el-button> |
| | | <el-button :loading="outLoading" size="mini" type="primary" @click="handleDowns">æ¹éä¸è½½</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="valueTableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :isSelection="true" :handleSelectionChange="handleChange" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination" key="valueTableData"> |
| | | <div slot="action" slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="viewIssued(scope.row)">æ¥çæ¥å</el-button> |
| | | <el-upload ref='upload1' |
| | | style="display: inline;margin: 0 6px" |
| | | :action="fileAction1 +'?id='+ scope.row.id" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload1" |
| | | :headers="uploadHeader" :on-error="onError1" |
| | | :on-success="handleSuccessUp1" |
| | | :show-file-list="false" |
| | | accept='.doc,.docx'> |
| | | <el-button size="small" type="text" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName">ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handleRestore(scope.row)">è¿å</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">éåä»»å¡</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || userName !== scope.row.writeUserName" @click="handle(scope.row)">æäº¤</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || userName !== scope.row.examineUser" @click="handleIssued(scope.row)">å®¡æ ¸</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || userName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">æ¹å</el-button> |
| | | <el-popover placement="bottom" trigger="hover" style="margin-left: 6px"> |
| | | <template #reference> |
| | | <el-button link type="text" size="small">æ´å¤</el-button> |
| | | </template> |
| | | <div> |
| | | <el-button style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">ä¸è½½</el-button> |
| | | <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">åå§è®°å½</el-button> |
| | | <el-button type="text" size="small" @click="handleFileLook(scope.row)">éä»¶ä¸ä¼ </el-button> |
| | | </div> |
| | | </el-popover> |
| | | </div> |
| | | </lims-table> |
| | | </div> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="å¨çº¿ç¼å¶" |
| | | width="22cm"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" |
| | | @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;"> |
| | | </div> |
| | | <Word v-if="claimVisible" ref="Word" :class="{fullscreen:fullscreen}" :value="value" style="height:70vh" /> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="claimVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="confirmClaim">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="issuedVisible" title="æ¥åå®¡æ ¸" |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > |
| | | </div> |
| | | <div v-if="issuedVisible" style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingIssued" @click="issuedReasonVisible=true">ä¸éè¿</el-button> |
| | | <el-button type="primary" @click="subIssued">é è¿</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :modal-append-to-body="false" :visible.sync="issuedReasonVisible" title="ä¸éè¿åå " width="400px"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ä¸éè¿åå ï¼</div> |
| | | <div class="search_input"><el-input v-model="reason" clearable placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible=false">åæ¶</el-button> |
| | | <el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">ç¡®å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="æ¥åæ¹å" width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > |
| | | </div> |
| | | <div v-if="approveVisible" style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingApprove" @click="approveReasonVisible=true">䏿¹å</el-button> |
| | | <el-button :loading="loadingApprove" type="primary" @click="subApprove">æ¹ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :modal-append-to-body="false" :visible.sync="approveReasonVisible" title="䏿¹ååå " width="400px"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">䏿¹ååå ï¼</div> |
| | | <div class="search_input"><el-input v-model="reason" clearable placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingApproveReason" @click="approveReasonVisible=false">åæ¶</el-button> |
| | | <el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">ç¡®å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="æå®æ¹å人å" |
| | | width="400px" |
| | | @close="closeAddApproverDia"> |
| | | <div class="body" style="display: flex;padding: 10px;align-items: center;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">*</span>æ¹å人ï¼</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-select v-model="approver" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeAddApproverDia">å æ¶</el-button> |
| | | <el-button :loading="loadingIssued" type="primary" @click="submitAddApprover">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia" |
| | | title="æå®å®¡æ ¸äººå" |
| | | width="400px" |
| | | @close="closeAddVerifyDia"> |
| | | <div class="body" style="display: flex;padding: 10px;align-items: center;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">*</span>å®¡æ ¸äººï¼</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-select v-model="verifyUser" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeAddVerifyDia">å æ¶</el-button> |
| | | <el-button :loading="loadingVerify" type="primary" @click="handleSubmit">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--产ä¸é¾ä¿¡æ¯æ¥ç--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> |
| | | <!--æ¥åæ¥ç--> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="æ¥åæ¥ç" |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > |
| | | </div> |
| | | <div v-if="viewIssuedVisible" style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | </el-dialog> |
| | | <!--éä»¶æ¥ç--> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="éä»¶æ¥ç" width="80%" @closed="closeFilesLook"> |
| | | <div style="margin-bottom: 10px"> |
| | | <el-upload ref='upload' |
| | | :action="fileAction" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}" |
| | | :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-button size="small" style="height: 38px" type="primary">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </div> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" @pagination="paginationFile" height="500px" |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; |
| | | // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; |
| | | import file from "@/utils/file"; |
| | | import { |
| | | downAll, |
| | | examineReport, |
| | | pageInsReport, |
| | | ratifyReport, |
| | | sendBackTask, |
| | | upReportUrl, |
| | | writeReport |
| | | } from "@/api/business/insReport"; |
| | | import {mapGetters} from "vuex"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {delfile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | components: {limsTable, onlyoffice}, |
| | | data() { |
| | | return { |
| | | entity: { |
| | | queryStatus: null, |
| | | code: null, |
| | | typeSource: null, |
| | | }, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0 |
| | | }, |
| | | upIndex: 0, |
| | | statusList: [], |
| | | claimVisible: false, |
| | | issuedVisible: false, |
| | | issuedReasonVisible: false, |
| | | approveVisible: false, |
| | | approveReasonVisible: false, |
| | | fullscreen: false, |
| | | loadingApproveReason: false, |
| | | loadingApprove: false, |
| | | loadingIssuedReason: false, |
| | | loadingIssued: false, |
| | | value: ``, |
| | | reason: '', |
| | | currentInfo: null, |
| | | option:null, |
| | | mutiList:[], |
| | | outLoading:false, |
| | | inLoading:false, |
| | | addApproverDia: false, // æå®å®¡æ¹äººåå¼¹æ¡ |
| | | approver: '', // 审æ¹äººå |
| | | approverId: '', // 审æ¹äººå |
| | | approverList: [], |
| | | addVerifyDia: false, // æå®å®¡æ ¸äººåå¼¹æ¡ |
| | | verifyUser: null, // å®¡æ ¸äººå |
| | | loadingVerify: false, // å®¡æ ¸äººå |
| | | typeSourceList: [ |
| | | {label: 'æåä¸å', value: 0}, |
| | | {label: 'åææä¸å', value: 1}, |
| | | ], |
| | | orderTypeList: [ |
| | | {label: 'å§æè¯éª', value: 'Customer-ordered test'}, |
| | | {label: 'æ½æ£', value: 'æ½æ£'}, |
| | | {label: 'è¿åæ£éª', value: 'è¿åæ£éª'}, |
| | | {label: 'å£åº¦æ£éª', value: 'Quarterly inspection'}, |
| | | ], |
| | | showInfoDialog: false, // 产ä¸é¾ä¿¡æ¯æ¥ç |
| | | isReport: 1, |
| | | activeFace: 0, // 1ï¼ä¸åï¼2ï¼æ¥çï¼3ï¼å®¡æ ¸ï¼é»è®¤ä¸º0 |
| | | customsInspection: {}, |
| | | currentId: null, |
| | | examine: null, |
| | | viewIssuedVisible: false, |
| | | queryStatusList: [ |
| | | {label: 'å¾
æäº¤', value: 0}, |
| | | {label: 'å¾
å®¡æ ¸', value: 1}, |
| | | {label: 'å¾
æ¹å', value: 2}, |
| | | ], |
| | | state: 0, |
| | | orderId: 0, |
| | | inspectorList: [],//æ£éªäººåå表 |
| | | InspectionKey: 1, |
| | | typeSource: null,// 0:æåä¸åï¼1ï¼åææä¸å |
| | | sonLaboratory: '', // è¯éªå®¤ |
| | | filesDialogVisible: false, |
| | | filesLookInfo: {}, |
| | | tableDataFile: [], |
| | | tableLoadingFile: false, |
| | | columnFile: [ |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç±»å', |
| | | prop: 'type', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'å¾ç' |
| | | } else if (params == 2) { |
| | | return 'æä»¶' |
| | | } else { |
| | | return '' |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else if (params == 2) { |
| | | return 'warning' |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | }, |
| | | { label: 'éä»¶åç§°', prop: 'fileName' }, |
| | | { label: 'ä¸ä¼ 人', prop: 'name' }, |
| | | { label: 'ä¸ä¼ æ¶é´', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | width: '170px', |
| | | operation: [ |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row); |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.delete(row); |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | pageFile: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | isCopper: null, |
| | | tableLoading: false, |
| | | valueTableData: [], |
| | | column: [ |
| | | { |
| | | label: "æ¥åç¼å·", |
| | | prop: "code", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "selectAllByOne", |
| | | }, |
| | | { |
| | | label: "ä¸åç±»å«", |
| | | prop: "typeSource", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "æåä¸å"; |
| | | } else { |
| | | return "åææä¸å"; |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: "æ£éªç±»å", |
| | | prop: "orderType", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.orderTypeList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "å建æ¶é´", prop: "createTime" }, |
| | | { label: "æäº¤äºº", prop: "writeUserName" }, |
| | | { label: "æäº¤æ¶é´", prop: "writeTime" }, |
| | | { |
| | | label: "æäº¤ç¶æ", |
| | | prop: "state", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "å¾
æäº¤"; |
| | | } else { |
| | | return "å·²æäº¤"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "success"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "å®¡æ ¸äºº", prop: "examineUser" }, |
| | | { label: "å®¡æ ¸æ¶é´", prop: "examineTime" }, |
| | | { |
| | | label: "å®¡æ ¸ç¶æ", |
| | | prop: "isExamine", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "ä¸éè¿"; |
| | | } else { |
| | | return "éè¿"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "success"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "å®¡æ ¸å¤æ³¨", prop: "examineTell" }, |
| | | { label: "æ¹å人", prop: "ratifyUser" }, |
| | | { label: "æ¹åæ¶é´", prop: "ratifyTime" }, |
| | | { |
| | | label: "æ¹åç¶æ", |
| | | prop: "isRatify", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "䏿¹å"; |
| | | } else { |
| | | return "æ¹å"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "success"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "æ¹å夿³¨", prop: "ratifyTell" }, |
| | | { |
| | | fixed: "right", |
| | | dataType: "slot", |
| | | slot: "action", |
| | | width: '360px', |
| | | label: "æä½" |
| | | } |
| | | ], |
| | | userName: '', |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["nickName", "userId"]), |
| | | action() { |
| | | return this.javaApi + '/insReport/upAll' |
| | | }, |
| | | fileAction() { |
| | | return this.javaApi + '/unqualifiedHandler/uploadFileByUnqualified' |
| | | }, |
| | | fileAction1() { |
| | | return this.javaApi + '/insReport/inReport' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | pageInsReport({ |
| | | ...this.page,...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.body.total |
| | | this.valueTableData = res.data.body.records |
| | | }) |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.refreshTable(); |
| | | }, |
| | | refresh() { |
| | | this.resetForm('entity') |
| | | this.refreshTable(); |
| | | }, |
| | | handleChange(arr){ |
| | | this.mutiList = arr |
| | | }, |
| | | // æ¥çæ£éªæ°æ® |
| | | viewInspectInfo (row) { |
| | | //å½åæ£éªä»»å¡çæ£éªäººå表 |
| | | let inspectorList = [] |
| | | if(row.userName){ |
| | | inspectorList = row.userName.split(',') |
| | | } |
| | | inspectorList.push(this.nickName) |
| | | this.$router.push({ |
| | | path: "/inspectionTask/inspection", |
| | | query: { |
| | | sonLaboratory: row.sonLaboratory, |
| | | state: 3, |
| | | typeSource: row.typeSource, |
| | | orderId: row.insOrderId, |
| | | inspectorList: inspectorList, |
| | | }, |
| | | }) |
| | | }, |
| | | // æå¼æ¥çéä»¶å¼¹æ¡ |
| | | handleFileLook (row) { |
| | | this.filesLookInfo = row |
| | | this.filesDialogVisible = true |
| | | this.getFileList() |
| | | }, |
| | | // æ¥è¯¢éä»¶æ¥çå表åè° |
| | | getFileList() { |
| | | this.tableLoadingFile = true |
| | | getFileList({insOrderId: this.filesLookInfo.insOrderId}).then(res => { |
| | | this.tableLoadingFile = false |
| | | if (res.code === 200) { |
| | | this.tableDataFile = res.data.records |
| | | this.pageFile.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoadingFile = false |
| | | }) |
| | | }, |
| | | paginationFile(page) { |
| | | this.pageFile.size = page.limit |
| | | this.getFileList() |
| | | }, |
| | | closeFilesLook () { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | handleSuccessUp(response, ) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.getFileList() |
| | | } |
| | | }, |
| | | handleSuccessUp1(response, ) { |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | } |
| | | }, |
| | | // ä¸è½½éä»¶çæä»¶ |
| | | handleDown(row){ |
| | | downFile({ |
| | | id: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | let url = ''; |
| | | if(res.data.type==1){ |
| | | url = this.javaApi+'/img/'+res.data.fileUrl |
| | | file.downloadIamge(url,row.fileName) |
| | | }else{ |
| | | url = this.javaApi+'/word/'+res.data.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | | link.click(); |
| | | } |
| | | } |
| | | }).catch(error => { |
| | | |
| | | }) |
| | | }, |
| | | // å é¤éä»¶æä»¶ |
| | | delete(row) { |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | delfile({ id: row.id }).then(res => { |
| | | if (res.code === 500) { |
| | | return |
| | | } |
| | | this.$message.success('å 餿å') |
| | | this.getList() |
| | | }).catch(e => { |
| | | this.$message.error('å é¤å¤±è´¥') |
| | | }) |
| | | }).catch(() => { }) |
| | | }, |
| | | // æ¥ç产ä¸é¾ä¿¡æ¯ |
| | | openInfoDialog (row) { |
| | | this.showInfoDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.showInfoDialog.getInfo(row.ifsInventoryId) |
| | | }) |
| | | }, |
| | | handleDowns(){ |
| | | if(this.mutiList.length==0){ |
| | | this.$message.error('è¯·éæ©æ¥å') |
| | | return |
| | | } |
| | | let str = this.mutiList.map(m=>m.id).join(',') |
| | | this.outLoading = true |
| | | downAll({ids: str}).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | // const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | // const url = URL.createObjectURL(blob); |
| | | // const link = document.createElement('a'); |
| | | // link.href = url; |
| | | // link.download = 'æ¥å.zip'; |
| | | // link.click(); |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + res.message; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }) |
| | | }, |
| | | beforeUpload(file){ |
| | | const isZip = file.type === 'application/zip' || file.name.endsWith('.zip'); |
| | | if (!isZip) { |
| | | this.$message.error('ä¸ä¼ æä»¶åªè½æ¯ ZIP æ ¼å¼!'); |
| | | } |
| | | if(isZip){ |
| | | this.inLoading = true; |
| | | } |
| | | return isZip; |
| | | }, |
| | | fileBeforeUpload(file) { |
| | | let flag = true |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload.clearFiles() |
| | | flag = false |
| | | } |
| | | if (!flag) { |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | fileBeforeUpload1(file) { |
| | | let flag = true |
| | | if (file.size > 1024 * 1024 * 10) { |
| | | this.$message.error('ä¸ä¼ æä»¶ä¸è¶
è¿10M'); |
| | | this.$refs.upload1.clearFiles() |
| | | flag = false |
| | | } |
| | | if (!flag) { |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | handleSuccess(response,){ |
| | | this.inLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('导å
¥æå') |
| | | this.refreshTable() |
| | | }else{ |
| | | this.$message.error(response.message) |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | onError1(err, file, fileList,type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload1.clearFiles() |
| | | }, |
| | | confirmClaim() { |
| | | // console.log(this.$refs.Word.getValue()) |
| | | }, |
| | | selectAllByOne(row) { |
| | | this.isCopper = row.isCopper |
| | | this.customsInspection = row |
| | | this.activeFace = 2; |
| | | this.examine = 1; |
| | | this.isReport = 1 |
| | | this.currentId = parseInt(row.insOrderId) |
| | | switch (row.isCopper) { |
| | | case 0: |
| | | // åææ |
| | | this.$router.push({ |
| | | path: "/materialOrder/customsInspection", query: { |
| | | customsInspection: row, |
| | | active: this.activeFace, |
| | | currentId: row.insOrderId, |
| | | isReport: this.isReport |
| | | } |
| | | }); |
| | | break; |
| | | case null: |
| | | // æå |
| | | this.$router.push({ |
| | | path: "/productOrder/add", query: { |
| | | examine: this.examine, |
| | | active: this.activeFace, |
| | | currentId: row.insOrderId |
| | | } |
| | | }); |
| | | break; |
| | | case 1: |
| | | // éæ |
| | | this.$router.push({ |
| | | path: "/materialOrder/copperOrder", query: { |
| | | active: this.activeFace, |
| | | currentId: row.insOrderId |
| | | } |
| | | }); |
| | | break; |
| | | } |
| | | }, |
| | | download(row) { |
| | | let url = row.urlS ? row.urlS : row.url; |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }, |
| | | // è¿åæä½ |
| | | handleRestore(row) { |
| | | upReportUrl({ |
| | | id: row.id |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æä½æå') |
| | | this.refreshTable('page') |
| | | } |
| | | }) |
| | | }, |
| | | // å®¡æ ¸æé® |
| | | handleIssued(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | | fileType: fileType, |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | this.issuedVisible = true; |
| | | }, |
| | | // æ¥çæ¥å |
| | | viewIssued(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | | fileType: fileType, |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | this.viewIssuedVisible = true; |
| | | }, |
| | | // éåå°ä»»å¡ |
| | | sendBackTask(row) { |
| | | this.$confirm('确认éåå°æ£éªä»»å¡?éååééæ°æäº¤å¤æ ¸', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.upLoad = true |
| | | sendBackTask({id: row.id}).then(res => { |
| | | this.upLoad = false |
| | | this.$message.success('éåæåï¼') |
| | | this.refreshTable('page') |
| | | }).catch(err => { |
| | | this.upLoad = false |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // å®¡æ ¸éè¿ |
| | | submitAddApprover () { |
| | | if (!this.approver) { |
| | | this.$message.error('è¯·éæ©å®¡æ¹äºº') |
| | | return |
| | | } |
| | | this.loadingIssued = true; |
| | | examineReport({ |
| | | id: this.currentInfo.id, |
| | | userId: this.approver, |
| | | isExamine: 1 |
| | | }).then(res => { |
| | | this.loadingIssued = false; |
| | | this.$message.success('æäº¤æå') |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.addApproverDia = false |
| | | this.issuedVisible = false; |
| | | }).catch(e => { |
| | | this.$message.error('æäº¤å¤±è´¥') |
| | | this.loadingIssued = false; |
| | | }) |
| | | }, |
| | | closeAddApproverDia () { |
| | | this.addApproverDia = false |
| | | this.approver = '' |
| | | }, |
| | | // ç¹å»éè¿ï¼éè¦éæ©æ¹å人å |
| | | subIssued() { |
| | | this.getAuthorizedPerson() |
| | | this.addApproverDia = true |
| | | }, |
| | | // è·å人åå表 |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.approverList = data; |
| | | }) |
| | | }, |
| | | // æ¹åæé® |
| | | handleApprove(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | | isEdit: false, |
| | | fileType: fileType, |
| | | title: fileName, |
| | | lang: 'zh-CN', |
| | | isPrint: false, |
| | | user_id: 1, |
| | | user_name: userName, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName |
| | | } |
| | | this.approveVisible = true; |
| | | }, |
| | | // æ¹åéè¿ |
| | | subApprove() { |
| | | this.loadingApprove = true; |
| | | ratifyReport({ |
| | | id: this.currentInfo.id, |
| | | isRatify: 1 |
| | | }).then(res => { |
| | | this.loadingApprove = false; |
| | | this.$message.success('å·²æ¹å') |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.approveVisible = false; |
| | | }) |
| | | }, |
| | | handle (row) { |
| | | this.getAuthorizedPerson() |
| | | this.currentInfo = row; |
| | | this.addVerifyDia = true |
| | | }, |
| | | // æäº¤å®¡æ ¸äººæä½ |
| | | handleSubmit(row) { |
| | | this.loadingVerify = true |
| | | writeReport({ |
| | | id: this.currentInfo.id, |
| | | userId: this.verifyUser, |
| | | }).then(res => { |
| | | this.loadingVerify = false |
| | | this.addVerifyDia = false |
| | | this.$message.success('æäº¤æå') |
| | | this.refreshTable('page') |
| | | }).catch(e => { |
| | | this.loadingVerify = false |
| | | this.$message.error('æäº¤å¤±è´¥') |
| | | }) |
| | | }, |
| | | closeAddVerifyDia () { |
| | | this.addVerifyDia = false |
| | | this.verifyUser = '' |
| | | }, |
| | | // å®¡æ ¸ä¸éè¿åå æäº¤ |
| | | handleIssuedReason() { |
| | | if (!this.reason) { |
| | | return this.$message.error('请è¾å
¥åå ') |
| | | } |
| | | this.loadingIssuedReason = true; |
| | | examineReport({ |
| | | id: this.currentInfo.id, |
| | | isExamine: 0, |
| | | examineTell: this.reason |
| | | }).then(res => { |
| | | this.loadingIssuedReason = false; |
| | | this.$message.success('æä½æå') |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.reason = ''; |
| | | this.issuedVisible = false; |
| | | this.issuedReasonVisible = false; |
| | | }).catch(e => { |
| | | this.$message.error('æä½å¤±è´¥') |
| | | this.loadingIssuedReason = false; |
| | | }) |
| | | }, |
| | | // 䏿¹ååå æäº¤ |
| | | handleApproveReason() { |
| | | if (!this.reason) { |
| | | return this.$message.error('请è¾å
¥åå ') |
| | | } |
| | | this.loadingApproveReason = true |
| | | ratifyReport({ |
| | | id: this.currentInfo.id, |
| | | isRatify: 0, |
| | | examineTell: this.reason |
| | | }).then(res => { |
| | | this.loadingApproveReason = false |
| | | this.$message.success('æä½æå') |
| | | this.refreshTable('page') |
| | | this.currentInfo = null; |
| | | this.reason = ''; |
| | | this.approveVisible = false; |
| | | this.approveReasonVisible = false; |
| | | }).catch(e => { |
| | | this.$message.error('æä½å¤±è´¥') |
| | | this.loadingIssuedReason = false; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .full-screen { |
| | | position: absolute; |
| | | right: 52px; |
| | | top: 22px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 40px; |
| | | top: 50%; |
| | | transform: translate(0, -50%); |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .fullscreen { |
| | | height: 82vh |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div style="width: 100%;height: 100%;overflow-y: auto;" class="detail"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">æ ·å详æ
</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="small" @click="hanldeBack">è¿å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ ·åç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.sampleCode" disabled></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ ·ååç§°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.sample" disabled></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ ·åæ°éï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.num" disabled></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">åä½ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.unit" disabled></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å
¥åºæ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.date" disabled></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å
¥åºäººï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.user" disabled></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" > |
| | | <div class="search_label">åºä½å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.code" disabled style="min-width: 230px;"></el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <h4>æ£éªé¡¹ç®</h4> |
| | | <div class="table"> |
| | | <el-table class="el-table" ref="productTable" :data="products" height="380px" tooltip-effect="dark" border> |
| | | <el-table-column type="index" align="center" label="åºå·" width="70" :key="Math.random()"> |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="100" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹åç±»" min-width="100" show-overflow-tooltip v-if="PROJECT=='è£
å¤çµç¼'"></el-table-column> |
| | | <el-table-column prop="laboratory" label="å®éªå®¤" min-min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="unit" label="åä½" min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="equipValue" label="设å¤" min-width="100" show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | {{handleData(scope.row.equipValue)}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="entrustCode" label="å§æç¼å·" min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="updateUserName" label="æ£éªäºº" min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="updateTime" label="æ£éªæ¶é´" min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="insResult" label="ç»è®º" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-tag |
| | | :type="scope.row.insResult==1?'success':'danger'" size="medium">{{scope.row.insResult==1?'åæ ¼':'ä¸åæ ¼'}}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <h4>åºå
¥åºåå²</h4> |
| | | <div class="table" style="margin-bottom: 20px;"> |
| | | <el-table class="el-table" ref="productTable" :data="histories" height="380px" tooltip-effect="dark" border> |
| | | <el-table-column type="index" align="center" label="åºå·" width="70" :key="Math.random()"> |
| | | </el-table-column> |
| | | <el-table-column prop="state" label="ç±»å" |
| | | show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="scope.row.state==1?'success':'danger'">{{ scope.row.state==1?'å
¥åº':'åºåº' }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createUserName" label="æä½äºº" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="createTime" label="æä½æ¶é´" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="warehouseCode" label="åºä½å·" show-overflow-tooltip></el-table-column> |
| | | <!-- <el-table-column prop="price" label="忾卿ï¼hï¼" show-overflow-tooltip></el-table-column> --> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props:['id'], |
| | | data(vm) { |
| | | return{ |
| | | entity:{ |
| | | num:1, |
| | | }, |
| | | products:[], |
| | | histories:[] |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.getInfo() |
| | | }, |
| | | methods:{ |
| | | hanldeBack(){ |
| | | this.$emit('hanldeBack') |
| | | }, |
| | | getInfo(){ |
| | | this.$axios.post(this.$api.warehouse.getSampleRecord, { |
| | | id: this.id |
| | | }).then(res => { |
| | | let {histories,insSample,sampleHistory,products} = res.data; |
| | | this.entity = {num:1,...insSample,...sampleHistory}; |
| | | this.histories = histories; |
| | | this.products = products; |
| | | }) |
| | | }, |
| | | handleData(e){ |
| | | let info = '' |
| | | if(e){ |
| | | info = JSON.parse(e).map(item => { |
| | | return item.v; |
| | | }).join(',') |
| | | } |
| | | return info |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .detail::-webkit-scrollbar{ |
| | | width: 0; |
| | | } |
| | | |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 120px; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 40px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | padding: 20px; |
| | | } |
| | | h4{ |
| | | font-size: 16px; |
| | | font-weight: normal; |
| | | margin-top: 10px; |
| | | margin-left: 20px; |
| | | } |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div v-if="!isDetail"> |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="ä»åºåç§°" prop="warehouseId"> |
| | | <el-select v-model="entity.warehouseId" placeholder="éæ©ä»åº" size="small" @change="warehouseChange"> |
| | | <el-option v-for="item in warehouse" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="è´§æ¶" prop="shelfId"> |
| | | <el-select v-model="entity.shelfId" placeholder="éæ©è´§æ¶" size="small" @change="handleShelf"> |
| | | <el-option v-for="item in shelf" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·åç¼å·" prop="searchSampleCode"> |
| | | <el-input placeholder="请è¾å
¥æ ·åç¼å·" v-model="searchSampleCode" size="small"> |
| | | <el-button slot="append" icon="el-icon-search" @click="handleSearch"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="small" style="color:#3A7BFA" @click="keepVisible=true">ç»´æ¤</el-button> |
| | | <el-button size="small" style="color:#3A7BFA" @click="warehouseVisible=true,isEdit=false">æ·»å ä»åº</el-button> |
| | | <el-button size="small" style="color:#3A7BFA" @click="shelvesVisible=true,isEdit=false" |
| | | :disabled="entity.warehouseId==null">æ·»å è´§æ¶</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="storageVisible=true">å
¥åº</el-button> |
| | | <el-button size="small" type="primary" @click="exportVisible=true">åºåº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table" v-loading="tableLoading"> |
| | | <table border="1" class="tables" cellpadding="10" style="table-layout:fixed;" v-if="tableList.length>0"> |
| | | <tbody> |
| | | <tr v-for="(item,index) in tableList" :key="index"> |
| | | <td v-for="(m,i) in item" :key="i" class="content"> |
| | | <h4 v-if="m.row!=undefined">{{ m.row }} - {{ m.col }}</h4> |
| | | <ul> |
| | | <el-tooltip |
| | | effect="dark" |
| | | placement="top" |
| | | v-for="(n,j) in m.samples" |
| | | :key="j" :disabled="`${n.sample}${n.model}`.length<10"> |
| | | <div slot="content"><span>{{ n.sample }}</span> |
| | | <span> ({{ n.model }}) [{{ n.sampleCode }}]</span></div> |
| | | <li class="green" |
| | | @click="handelDetail(n)"> |
| | | <i></i> |
| | | <span>{{ n.sample }}</span> |
| | | <span> ({{ n.model }}) [{{ n.sampleCode }}]</span> |
| | | <!-- <span class="num"> x{{ n.num }}</span> --> |
| | | </li> |
| | | </el-tooltip> |
| | | </ul> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td v-for="(item,index) in rowList" :key="index" style="background: ghostwhite;height: 20px;">{{ item }} |
| | | </td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | <span v-else style="color: rgb(144, 147, 153);display: inline-block;position: absolute;top: 60%;left: 50%;transform: translate(-50%,-50%);">ææ æ°æ®</span> |
| | | </div> |
| | | </div> |
| | | <Detail v-else @hanldeBack="isDetail=false" :id="currentId" /> |
| | | <el-dialog title="æ ·åå
¥åº" :visible.sync="storageVisible" width="350px"> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="24"> |
| | | <div class="search_label"><span class="required-span">* </span>æ ·åç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="sampleCode" size="small"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-tree :data="storageList" ref="tree" :props="{ children: 'warehouseShelfList', label: 'name' }" node-key="id" |
| | | :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" |
| | | @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="storageVisible" |
| | | empty-text="ææ æ°æ®"> |
| | | <div class="custom-tree-node" slot-scope="{ node, data }"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <span><i |
| | | :class="`node_i ${data.warehouseShelfList != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> |
| | | {{ data.name }}</span> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-tree> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="storageVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="confirmStorage" :loading="upLoadStorage">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="æ ·ååºåº" :visible.sync="exportVisible" width="350px"> |
| | | <!-- <div class="shaoma"> |
| | | <img src="../../../static/img/æ«ç .svg" alt="" style="margin-right: 5px;"> |
| | | <span>æ«ç åºåº</span> |
| | | </div> --> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="24"> |
| | | <div class="search_label"><span class="required-span">* </span>æ ·åç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="sampleCode" size="small"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="exportVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="confirmExport" :loading="upLoadExport">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="åºä½ç»´æ¤" :visible.sync="keepVisible" width="350px" :append-to-body="true"> |
| | | <el-tree :data="warehouse" ref="tree" :props="{ children: 'warehouseShelfList', label: 'name' }" node-key="id" |
| | | :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" |
| | | @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="keepVisible" |
| | | empty-text="ææ æ°æ®"> |
| | | <div class="custom-tree-node" style="width: 100%;" slot-scope="{ node, data }"> |
| | | <el-row style="width: 100%;display: flex;align-items: center;"> |
| | | <el-col :span="20"> |
| | | <span><i |
| | | :class="`node_i ${node.level<2 ? 'el-icon-folder-opened': 'el-icon-tickets'}`"></i> |
| | | {{ data.name }}</span> |
| | | </el-col> |
| | | <el-col :span="4" v-if="node.level<3"> |
| | | <el-button type="text" size="mini" icon="el-icon-edit" @click.stop="handleEdit(data,node.level)"> |
| | | </el-button> |
| | | <el-button type="text" size="mini" icon="el-icon-delete" @click.stop="handleDelete(data,node.level)"> |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-tree> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="keepVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="keepVisible = false" >ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :title="isEdit?'ä»åºä¿®æ¹':'ä»åºæ°å¢'" :visible.sync="warehouseVisible" width="350px"> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="24"> |
| | | <div class="search_label"><span class="required-span">* </span>ä»åºåç§°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="name" size="small" @keyup.enter.native="confirmWarehouse"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="warehouseVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="confirmWarehouse" :loading="upLoadWarehouse">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :title="isEdit?'è´§æ¶ä¿®æ¹':'è´§æ¶æ°å¢'" :visible.sync="shelvesVisible" width="350px"> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="24"> |
| | | <div class="search_label"><span class="required-span">* </span>è´§æ¶åç§°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="shelves.name" size="small"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="24"> |
| | | <div class="search_label"><span class="required-span">* </span>è´§æ¶å±æ°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="shelves.row" size="small"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col class="search_thing" :span="24"> |
| | | <div class="search_label"><span class="required-span">* </span>è´§æ¶åæ°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="shelves.col" size="small"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="shelvesVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="confirmShelves" :loading="upLoadShelves">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Detail from './components/detail.vue' |
| | | import { |
| | | addShelf, |
| | | addWarehouse, delShelf, delWarehouse, getWarehouse, |
| | | inWarehouse, |
| | | outWarehouse, searchSampleId, |
| | | selectWarehouse, |
| | | upShelf, |
| | | upWarehouse |
| | | } from "@/api/business/sample"; |
| | | export default { |
| | | components: { |
| | | Detail |
| | | }, |
| | | data() { |
| | | return { |
| | | entity: { |
| | | warehouseId: null, |
| | | shelfId: null |
| | | }, |
| | | warehouse: [], |
| | | shelf: [], |
| | | storageList:[], |
| | | storageVisible: false, |
| | | exportVisible: false, |
| | | keepVisible: false, |
| | | warehouseVisible: false, |
| | | shelvesVisible: false, |
| | | upLoadStorage: false, |
| | | upLoadExport: false, |
| | | upLoadWarehouse: false, |
| | | upLoadShelves: false, |
| | | tableList: [], |
| | | rowList: [], |
| | | value: '', |
| | | name:'', |
| | | shelves:{}, |
| | | selectTree: [], |
| | | expandedKeys: [], |
| | | isEdit: false, //å¼¹æ¡--æ¯å¦æ¯ä¿®æ¹,é»è®¤ä¸ºfalse |
| | | isDetail: false, //详æ
--æ¯å¦å±ç¤ºä¸ºè¯¦æ
页é¢ï¼é»è®¤ä¸ºfalse |
| | | currentEdit:null,//å½åè¦ç»´æ¤çä¿¡æ¯ |
| | | tableLoading:false, |
| | | sampleCode:'', |
| | | currentId:null, |
| | | searchSampleCode:'' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.selectList() |
| | | }, |
| | | methods: { |
| | | selectList() { |
| | | selectWarehouse().then(res => { |
| | | this.warehouse = res.data |
| | | if(res.data.length==0){ |
| | | this.entity.warehouseId = ''; |
| | | this.entity.shelfId = ''; |
| | | this.tableList = [] |
| | | } |
| | | this.storageList = this.HaveJson(res.data).map(item=>{ |
| | | item.warehouseShelfList&&item.warehouseShelfList.length>0&&item.warehouseShelfList.map(m=>{ |
| | | let warehouseShelfList = []; |
| | | for (let i=1;i<m.row+1;i++){ |
| | | let warehouseShelfList0 = [] |
| | | for (let j=1;j<m.col+1;j++){ |
| | | warehouseShelfList0.push({ |
| | | name:j+' å', |
| | | id:j, |
| | | }) |
| | | } |
| | | warehouseShelfList.push({ |
| | | name:i+' å±', |
| | | id:i, |
| | | warehouseShelfList:warehouseShelfList0 |
| | | }) |
| | | } |
| | | m.warehouseShelfList = warehouseShelfList; |
| | | return m; |
| | | }) |
| | | return item; |
| | | }) |
| | | if(!this.entity.warehouseId&&this.warehouse.length>0){ |
| | | this.entity.warehouseId = this.warehouse[0].id |
| | | this.warehouseChange(this.entity.warehouseId) |
| | | if(this.shelf.length>0){ |
| | | this.entity.shelfId = this.shelf[0].id |
| | | this.handleShelf(this.entity.shelfId) |
| | | }else{ |
| | | this.tableList = [] |
| | | } |
| | | }else if(this.warehouse.length>0){ |
| | | this.warehouseChange(this.entity.warehouseId) |
| | | if(this.shelf.length>0){ |
| | | this.entity.shelfId = this.shelf[0].id |
| | | this.handleShelf(this.entity.shelfId) |
| | | }else{ |
| | | this.tableList = [] |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // å
¥åº |
| | | confirmStorage() { |
| | | if (!this.sampleCode) { |
| | | this.$message.error('è¯·å¡«åæ ·åç¼å·') |
| | | return |
| | | } |
| | | if (this.selectTree.length < 4) { |
| | | this.$message.error('è¯·éæ©æ ·åå
¥åºä½ç½®') |
| | | return |
| | | } |
| | | this.upLoadStorage = true; |
| | | inWarehouse({ |
| | | trees: this.selectTree.join('-'), |
| | | sampleCode:this.sampleCode |
| | | }).then(res => { |
| | | this.upLoadStorage = false; |
| | | this.storageVisible = false |
| | | this.sampleCode = ''; |
| | | this.selectTree = [] |
| | | this.$message.success('å
¥åºæå') |
| | | this.handleShelf(this.entity.shelfId) |
| | | }).catch(err => { |
| | | this.upLoadStorage = false; |
| | | }) |
| | | }, |
| | | // åºåº |
| | | confirmExport() { |
| | | if (!this.sampleCode) { |
| | | this.$message.error('è¯·å¡«åæ ·åç¼å·') |
| | | return |
| | | } |
| | | this.upLoadExport = true; |
| | | outWarehouse({ |
| | | sampleCode:this.sampleCode |
| | | }).then(res => { |
| | | this.upLoadExport = false; |
| | | this.exportVisible = false |
| | | this.sampleCode = ''; |
| | | this.$message.success('åºåºæå') |
| | | this.handleShelf(this.entity.shelfId) |
| | | }).catch(err => { |
| | | this.upLoadExport = false; |
| | | }) |
| | | }, |
| | | // æ·»å /ä¿®æ¹ä»åº |
| | | confirmWarehouse() { |
| | | if (!this.name) { |
| | | this.$message.error('请填åä»åºåç§°') |
| | | return |
| | | } |
| | | this.upLoadWarehouse = true; |
| | | if(this.currentEdit&&this.currentEdit.id){ |
| | | // ä¿®æ¹ä»åº |
| | | upWarehouse({ |
| | | name: this.name, |
| | | id:this.currentEdit.id |
| | | }).then(res => { |
| | | this.upLoadWarehouse = false; |
| | | this.warehouseVisible = false |
| | | // this.keepVisible = false |
| | | this.currentEdit = null; |
| | | this.$message.success('ä¿®æ¹æå') |
| | | this.selectList() |
| | | this.name = '' |
| | | this.warehouseChange(this.entity.warehouseId) |
| | | }).catch(err => { |
| | | this.upLoadWarehouse = false; |
| | | }) |
| | | }else{ |
| | | // æ°å¢ä»åº |
| | | addWarehouse({ |
| | | name: this.name |
| | | }).then(res => { |
| | | this.upLoadWarehouse = false; |
| | | this.warehouseVisible = false |
| | | this.$message.success('æ·»å æå') |
| | | this.selectList() |
| | | this.name = '' |
| | | this.warehouseChange(this.entity.warehouseId) |
| | | }).catch(err => { |
| | | this.upLoadWarehouse = false; |
| | | }) |
| | | } |
| | | }, |
| | | // æ·»å /ä¿®æ¹è´§æ¶ |
| | | confirmShelves() { |
| | | if (!this.shelves.name) { |
| | | this.$message.error('请填åè´§æ¶åç§°') |
| | | return |
| | | } |
| | | if (!this.shelves.row) { |
| | | this.$message.error('请填åè´§æ¶å±æ°') |
| | | return |
| | | } |
| | | if (!this.shelves.col) { |
| | | this.$message.error('请填åè´§æ¶åæ°') |
| | | return |
| | | } |
| | | this.upLoadShelves = true; |
| | | if(this.currentEdit&&this.currentEdit.id){ |
| | | // ä¿®æ¹ |
| | | upShelf({ |
| | | id:this.currentEdit.id,...this.shelves |
| | | }).then(res => { |
| | | this.upLoadShelves = false; |
| | | this.shelvesVisible = false |
| | | this.$message.success('ä¿®æ¹æå') |
| | | this.selectList() |
| | | this.currentEdit ={}; |
| | | }).catch(err => { |
| | | this.upLoadShelves = false; |
| | | }) |
| | | }else{ |
| | | // æ°å¢ |
| | | addShelf({ |
| | | warehouseId: this.entity.warehouseId,...this.shelves |
| | | }).then(res => { |
| | | this.upLoadShelves = false; |
| | | this.shelvesVisible = false |
| | | this.$message.success('æ·»å æå') |
| | | this.selectList() |
| | | this.shelves = {} |
| | | }).catch(err => { |
| | | this.upLoadShelves = false; |
| | | }) |
| | | } |
| | | this.warehouseChange(this.entity.warehouseId) |
| | | }, |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | }, |
| | | handleNodeClick(val, node, el) { //æ çå¼ |
| | | this.selectTree[node.level-1] = val.id; |
| | | }, |
| | | nodeOpen(data, node, el) { |
| | | $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') |
| | | this.selectTree[node.level-1] = data.id; |
| | | }, |
| | | nodeClose(data, node, el) { |
| | | $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder') |
| | | }, |
| | | handleDelete(row, level) { |
| | | this.$confirm('æ¯å¦å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | if (level == 1) { |
| | | // å é¤ä»åº |
| | | delWarehouse({ |
| | | id: row.id |
| | | }).then(res => { |
| | | this.$message.success('æå') |
| | | this.selectList() |
| | | }).catch(e => { |
| | | this.$message.error('失败') |
| | | }) |
| | | }else{ |
| | | // å é¤è´§æ¶ |
| | | delShelf({ |
| | | id: row.id |
| | | }).then(res => { |
| | | this.$message.success('æå') |
| | | this.selectList() |
| | | }).catch(e => { |
| | | this.$message.error('失败') |
| | | }) |
| | | } |
| | | this.warehouseChange(this.entity.warehouseId) |
| | | }).catch(() => {}) |
| | | }, |
| | | handleEdit(data, level) { |
| | | this.isEdit = true; |
| | | // 夿æ¯ç¬¬å å±çº§ï¼ç¬¬ä¸å±çº§ï¼ä¿®æ¹ä»åºï¼ç¬¬äºå±çº§ä¿®æ¹è´§æ¶ |
| | | if (level == 1) { |
| | | this.warehouseVisible = true; |
| | | this.currentEdit = data; |
| | | this.name = data.name |
| | | } else { |
| | | this.shelvesVisible = true; |
| | | this.currentEdit = data; |
| | | this.shelves = { |
| | | name:data.name, |
| | | row:data.row, |
| | | col:data.col, |
| | | warehouseId:data.warehouseId |
| | | } |
| | | } |
| | | }, |
| | | // æ¥ç详æ
|
| | | handelDetail(row) { |
| | | this.currentId = row.id; |
| | | this.isDetail = true; |
| | | }, |
| | | warehouseChange(val) { |
| | | this.tableList = [] |
| | | let map = this.warehouse.find(a => { |
| | | return a.id === val ? a : null |
| | | }) |
| | | this.shelf = map.warehouseShelfList; |
| | | this.entity.shelfId = ''; |
| | | }, |
| | | handleShelf(e){ |
| | | if(e){ |
| | | this.tableLoading = true; |
| | | getWarehouse({shelfId: e}).then(res => { |
| | | this.tableLoading = false; |
| | | let data = res.data; |
| | | let set =new Set() |
| | | this.tableList = []; |
| | | let arr = [] |
| | | data.forEach(m=>{ |
| | | set.add(m.col) |
| | | if(arr.length>0){ |
| | | if(arr.find(n=>n.row==m.row)){ |
| | | arr.push(m) |
| | | }else{ |
| | | this.tableList.push(arr) |
| | | arr = [] |
| | | arr.push(m) |
| | | } |
| | | }else{ |
| | | arr.push(m) |
| | | } |
| | | }) |
| | | this.tableList.push(arr) |
| | | this.rowList = []; |
| | | for(let i=0;i<set.size;i++){ |
| | | this.rowList.push(`${i+1} å`) |
| | | } |
| | | }).catch(e=>{ |
| | | this.tableLoading = false; |
| | | }) |
| | | } |
| | | }, |
| | | handleSearch(){ |
| | | if(!this.searchSampleCode){ |
| | | this.$message.error('请è¾å
¥æ ·åç¼å·') |
| | | return; |
| | | } |
| | | searchSampleId({sampleCode: this.searchSampleCode}).then(res => { |
| | | if(res.code==200){ |
| | | this.currentId = res.data; |
| | | this.isDetail = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 90px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .el-form-item { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 10px; |
| | | top: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | z-index: 9; |
| | | } |
| | | |
| | | .tables { |
| | | width: 100%; |
| | | height: 100%; |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .tables th { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .tables td { |
| | | font-size: 12px; |
| | | text-align: center; |
| | | vertical-align: top; |
| | | border-color: rgb(192, 191, 191) !important; |
| | | padding: 5px; |
| | | box-sizing: border-box; |
| | | height: 120px; |
| | | } |
| | | |
| | | .tables ul { |
| | | list-style-type: none; |
| | | } |
| | | |
| | | .tables ul li { |
| | | border-radius: 3px; |
| | | padding: 4px 10px; |
| | | box-sizing: border-box; |
| | | margin-bottom: 5px; |
| | | font-size: 12px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: start; |
| | | color: #333333; |
| | | cursor: pointer; |
| | | overflow: hidden; /*è¶
åºé¨åéè*/ |
| | | white-space: nowrap; /*ç¦æ¢æ¢è¡*/ |
| | | text-overflow: ellipsis; /*çç¥å·*/ |
| | | } |
| | | |
| | | .tables h4 { |
| | | color: #999999; |
| | | font-size: 14px; |
| | | font-weight: 400; |
| | | padding: 6px 0; |
| | | } |
| | | |
| | | .tables i { |
| | | display: inline-block; |
| | | width: 6px; |
| | | height: 6px; |
| | | border-radius: 50%; |
| | | margin-right: 6px; |
| | | } |
| | | |
| | | li:hover { |
| | | background: rgba(58, 123, 250, 0.18); |
| | | } |
| | | |
| | | li:hover i { |
| | | background: #3A7BFA; |
| | | } |
| | | |
| | | li:hover .num { |
| | | color: #3A7BFA; |
| | | } |
| | | |
| | | .green { |
| | | background: #E0F6EA; |
| | | } |
| | | |
| | | .green i { |
| | | background: #34BD66; |
| | | } |
| | | |
| | | .green .num { |
| | | color: #34BD66; |
| | | } |
| | | |
| | | .el-dialog { |
| | | position: relative; |
| | | } |
| | | |
| | | .shaoma { |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 14px; |
| | | color: #3A7BFA; |
| | | position: absolute; |
| | | top: 23px; |
| | | right: 54px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .node_i { |
| | | color: orange; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .custom-tree-node .el-button { |
| | | opacity: 0; |
| | | } |
| | | |
| | | .custom-tree-node:hover .el-button { |
| | | opacity: 1; |
| | | } |
| | | >>>.el-loading-mask { |
| | | z-index: 10; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-press-escape="false" :visible.sync="isShow" title="ä¸åæ ¼å¤ç" |
| | | width="1040px" |
| | | @close="$emit('closeOAProcess')"> |
| | | |
| | | <table :border='true' class="table"> |
| | | <tr> |
| | | <th class="th-title">1æ£éªå</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{oneOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{oneInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{oneName}}<span v-if="oneName">ï¼</span>{{oneTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">2æ£æµä¸»ç®¡ç¡®è®¤</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{twoOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{twoInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{twoName}}<span v-if="twoName">ï¼</span>{{twoTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">3ç©æµé¨ç¡®è®¤</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{threeOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{threeInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{threeName}}<span v-if="threeName">ï¼</span>{{threeTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">4产åå·¥ç¨å¸å¤çæè§</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{fourOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{fourInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{fourName}}<span v-if="fourName">ï¼</span>{{fourTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">5.æ»å·¥æè
å¯ç»ççå¤çæè§</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{fiveOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{fiveInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{fiveName}}<span v-if="fiveName">ï¼</span>{{fiveTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">6è´¨éé¨</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{sixOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{sixInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{sixName}}<span v-if="sixName">ï¼</span>{{sixTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">7è´¨éé¨ç»ç</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{sevenOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{sevenInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{sevenName}}<span v-if="sevenName">ï¼</span>{{sevenTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">8æ ¸ç®å</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{eightOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{eightInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{eightName}}<span v-if="eightName">ï¼</span>{{eightTime}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="th-title">9ç©æµé¨ç´¢èµç»æ</th> |
| | | <th class="th-titleSec">å¤çç»æ</th> |
| | | <th class="th-info1">{{nineOperation}}</th> |
| | | <th class="th-titleSec">å¤çæè§</th> |
| | | <th class="th-info" colspan="3">{{nineInfo}}</th> |
| | | <th style="display:none;"></th> |
| | | <th style="display:none;"></th> |
| | | <th >{{nineName}}<span v-if="nineName">ï¼</span>{{nineTime}}</th> |
| | | </tr> |
| | | </table> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: "OAProcess", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | props: { |
| | | OAProcess: { |
| | | type: Boolean, |
| | | default: () => false |
| | | }, |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | isShow: this.OAProcess, |
| | | oneInfo: '', |
| | | twoInfo: '', |
| | | threeInfo: '', |
| | | fourInfo: '', |
| | | fiveInfo: '', |
| | | sixInfo: '', |
| | | sevenInfo: '', |
| | | eightInfo: '', |
| | | nineInfo: '', |
| | | oneTime: '', |
| | | twoTime: '', |
| | | threeTime: '', |
| | | fourTime: '', |
| | | fiveTime: '', |
| | | sixTime: '', |
| | | sevenTime: '', |
| | | eightTime: '', |
| | | nineTime: '', |
| | | oneName: '', |
| | | twoName: '', |
| | | threeName: '', |
| | | fourName: '', |
| | | fiveName: '', |
| | | sixName: '', |
| | | sevenName: '', |
| | | eightName: '', |
| | | nineName: '', |
| | | oneOperation: '', |
| | | twoOperation: '', |
| | | threeOperation: '', |
| | | fourOperation: '', |
| | | fiveOperation: '', |
| | | sixOperation: '', |
| | | sevenOperation: '', |
| | | eightOperation: '', |
| | | nineOperation: '', |
| | | } |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | getInfo (id) { |
| | | this.$axios.post(this.$api.unqualifiedHandler.getOaFlow, { |
| | | id: id |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | const data = res.data |
| | | if (data.length > 0) { |
| | | data.forEach(item => { |
| | | if (item.nodeName === '1æ£éªå') { |
| | | this.oneInfo = item.approvalOpinion |
| | | this.oneTime = item.approvalDate |
| | | this.oneName = item.approver |
| | | this.oneOperation = item.operation |
| | | } else if (item.nodeName === '2æ£æµä¸»ç®¡ç¡®è®¤') { |
| | | this.twoInfo = item.approvalOpinion |
| | | this.twoTime = item.approvalDate |
| | | this.twoName = item.approver |
| | | this.twoOperation = item.operation |
| | | } else if (item.nodeName === '3ç©æµé¨ç¡®è®¤') { |
| | | this.threeInfo = item.approvalOpinion |
| | | this.threeTime = item.approvalDate |
| | | this.threeName = item.approver |
| | | this.threeOperation = item.operation |
| | | } else if (item.nodeName === '4产åå·¥ç¨å¸å¤çæè§') { |
| | | this.fourInfo = item.approvalOpinion |
| | | this.fourTime = item.approvalDate |
| | | this.fourName = item.approver |
| | | this.fourOperation = item.operation |
| | | } else if (item.nodeName === '5.æ»å·¥æè
å¯ç»ççå¤çæè§') { |
| | | this.fiveInfo = item.approvalOpinion |
| | | this.fiveTime = item.approvalDate |
| | | this.fiveName = item.approver |
| | | this.fiveOperation = item.operation |
| | | } else if (item.nodeName === '6è´¨éé¨') { |
| | | this.sixInfo = item.approvalOpinion |
| | | this.sixTime = item.approvalDate |
| | | this.sixName = item.approver |
| | | this.sixOperation = item.operation |
| | | } else if (item.nodeName === '7è´¨éé¨ç»ç') { |
| | | this.sevenInfo = item.approvalOpinion |
| | | this.sevenTime = item.approvalDate |
| | | this.sevenName = item.approver |
| | | this.sevenOperation = item.operation |
| | | } else if (item.nodeName === '8æ ¸ç®å') { |
| | | this.eightInfo = item.approvalOpinion |
| | | this.eightTime = item.approvalDate |
| | | this.eightName = item.approver |
| | | this.eightOperation = item.operation |
| | | } else if (item.nodeName === '9ç©æµé¨ç´¢èµç»æ') { |
| | | this.nineInfo = item.approvalOpinion |
| | | this.nineTime = item.approvalDate |
| | | this.nineName = item.approver |
| | | this.nineOperation = item.operation |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }).catch(err => { |
| | | this.submitDeclareLoading = false |
| | | console.log(err) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .table { |
| | | width: 100%; |
| | | height: 500px; |
| | | } |
| | | .th-title { |
| | | width: 160px; |
| | | text-align: left; |
| | | background-color: #e0eaf5; |
| | | font-size: 16px; |
| | | } |
| | | .th-titleSec { |
| | | width: 70px; |
| | | background-color: #e0eaf5; |
| | | font-size: 16px; |
| | | } |
| | | .th-info { |
| | | width: 210px; |
| | | text-align: left; |
| | | font-size: 16px; |
| | | } |
| | | .th-info1 { |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 16px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog title="è¿è´§éªè¯åå§è®°å½" :visible.sync="isShow" width="1000px" :show-close="false" :close-on-click-modal="false" |
| | | style="max-height: 96vh; margin-top: 2vh" :modal-append-to-body="false" :close-on-press-escape="false"> |
| | | <el-dialog title="è¿è´§éªè¯åå§è®°å½" :visible.sync="isShow" width="70%" :show-close="false" :close-on-click-modal="false" |
| | | :modal-append-to-body="false" :close-on-press-escape="false"> |
| | | <div class="search"> |
| | | <el-form :inline="true" :model="purchaseForm" label-position="right" :rules="purchaseFormRules" |
| | | ref="purchaseForm" class="form-inline" label-width="130px"> |
| | | ref="purchaseForm" class="form-inline" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ£éªç¼å·:"> |
| | |
| | | </h4> |
| | | <div class="title">ä¸ã便¹äº§åæ£æµæ¥åçåºæ¬ä¿¡æ¯ç¡®è®¤</div> |
| | | <el-form-item label="ææåç§°:" prop="basicName"> |
| | | <el-radio-group v-model="purchaseForm.basicName" :disabled="operationType === 'view'" v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicName" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·:" prop="basicModel"> |
| | | <el-radio-group v-model="purchaseForm.basicModel" :disabled="operationType === 'view'" v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicModel" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æææ¹å·:" prop="basicBatchNo"> |
| | | <el-radio-group v-model="purchaseForm.basicBatchNo" :disabled="operationType === 'view'" v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicBatchNo" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ§è¡æ å:" prop="basicStandard"> |
| | | <el-radio-group v-model="purchaseForm.basicStandard" :disabled="operationType === 'view'" |
| | | v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicStandard" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="çäº§æ¥æ:" prop="basicDate"> |
| | | <el-radio-group v-model="purchaseForm.basicDate" :disabled="operationType === 'view'" v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicDate" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾è´§æ°é:" prop="basicNumber"> |
| | | <el-radio-group v-model="purchaseForm.basicNumber" :disabled="operationType === 'view'" v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicNumber" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="ææé¢è²:" prop="basicColor"> |
| | | <el-radio-group v-model="purchaseForm.basicColor" :disabled="operationType === 'view'" v-removeAriaHidden> |
| | | <el-radio-group v-model="purchaseForm.basicColor" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | |
| | | <el-table-column prop="inspectionItem" label="éªè¯é¡¹ç®" width="300"></el-table-column> |
| | | <el-table-column prop="result" label="éªè¯ç»æ"> |
| | | <template slot-scope="scope"> |
| | | <el-radio-group v-model="scope.row.result" v-removeAriaHidden :disabled="operationType === 'view'"> |
| | | <el-radio-group v-model="scope.row.result" :disabled="operationType === 'view'"> |
| | | <el-radio label="1">符å</el-radio> |
| | | <el-radio label="2">ä¸ç¬¦å</el-radio> |
| | | <el-radio label="3">ä¸éç¨</el-radio> |
| | |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="$emit('resetPurchaseDialog')">å æ¶</el-button> |
| | | <el-button type="primary" @click="handlePurchase" :loading="handlePurchaseLoading" |
| | | v-if="operationType === 'add'">ç¡® |
| | | å®</el-button> |
| | | <el-button type="primary" @click="handlePurchase" :loading="handlePurchaseLoading" v-if="operationType === 'add'">ç¡®å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="å¾
éªè¯é¡¹ç®" :visible.sync="factoryVerifyItemDia" width="1000px" |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | async getInsOrder(operationType, item) { |
| | | console.log('operationType----', operationType) |
| | | this.operationType = operationType |
| | | this.info = item |
| | | // æ¥è¯¢å·²æäº¤çæ°æ® |
| | |
| | | .headLine>>>.el-form-item__content { |
| | | width: 68%; |
| | | } |
| | | |
| | | >>>.el-form-item__content { |
| | | display: inline-block; |
| | | } |
| | |
| | | } |
| | | |
| | | >>>.el-dialog__body { |
| | | max-height: 700px; |
| | | max-height: 600px; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getInsProductUnqualified } from '@/api/business/unpass.js' |
| | | import {addUnqualifiedRetest, getInsProductUnqualified} from '@/api/business/unpass.js' |
| | | export default { |
| | | name: "addUnPass", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="è§æ ¼åå·" prop="model"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="entity.model" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååç§°" prop="sample"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="entity.sample" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">æ¥ è¯¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <el-dialog |
| | | title="æäº¤" |
| | | :show-close="false" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="dialogVisible" |
| | | width="30%"> |
| | | <span>æ¯å¦ç¡®è®¤æäº¤OAï¼</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitOA" :loading="submitOALoading">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="å é¤" |
| | | :show-close="false" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="deleteVisible" |
| | | width="30%"> |
| | | <span>æ¯å¦ç¡®è®¤<span style="color: #FF4902">å é¤</span>OAï¼</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="deleteVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="cancelOA" :loading="cancelOALoading">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <UnPassDialog ref="unPassDialog" v-if="unPassDialog" |
| | | :orderId="orderId" |
| | | @resetForm="resetForm1" |
| | | :unPassDialog="unPassDialog"></UnPassDialog> |
| | | <OAProcess ref="OAProcess" |
| | | :OAProcess="OAProcess" |
| | | @closeOAProcess="closeOAProcess" |
| | | v-if="OAProcess"></OAProcess> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import UnPassDialog from "./components/unPassDialog.vue"; |
| | | import OAProcess from "./components/OAProcess.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {deleteUnqualifiedHandler, page, pushOA} from "@/api/business/unqualifiedHandler"; |
| | | import ValueTable from "@/components/Table/value-table.vue"; |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | OAProcess, |
| | | UnPassDialog, |
| | | ValueTable |
| | | }, |
| | | data() { |
| | | return { |
| | | handlerId: null, |
| | | entity: { |
| | | sample: null, |
| | | model: null, |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | { label: 'ç¼å·', prop: 'no' }, |
| | | { |
| | | label: "OAå®¡æ ¸ç¶æ", |
| | | prop: "oaState", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return "å¾
å®¡æ ¸"; |
| | | } else if(params == 2) { |
| | | return "å®¡æ ¸ä¸"; |
| | | } else if(params == 3) { |
| | | return "éè¿"; |
| | | } else { |
| | | return "驳å"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return "warning"; |
| | | } else if(params == 2) { |
| | | return "info"; |
| | | } else if(params == 3) { |
| | | return "success"; |
| | | } else { |
| | | return "danger"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: '订åå·', prop: 'orderNo' }, |
| | | { |
| | | label: "é¶ä»¶å·", |
| | | prop: "partNo", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "openUnPassDialog", |
| | | }, |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ç©æåç§°', prop: 'materialName' }, |
| | | { label: 'çäº§æ¹æ¬¡', prop: 'productionBatch' }, |
| | | { label: 'å°è´§æ°é', prop: 'cargoQuantity' }, |
| | | { label: 'è§æ ¼åå·', prop: 'specsModels' }, |
| | | { label: 'æ¥æ£æ¥æ', prop: 'inspectTime' }, |
| | | { label: 'ç¶æ', prop: 'statusDB' }, |
| | | { label: 'åé¦äºº', prop: 'feedbackUser' }, |
| | | { label: 'è¦æ£éªçéè´æ°é', prop: 'qtyToInspect' }, |
| | | { label: 'å馿¥æ', prop: 'feedbackTime' }, |
| | | { |
| | | label: "åç±»", |
| | | prop: "classification", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "ä¸ç±»ä¸åæ ¼"; |
| | | } else if(params == 1) { |
| | | return "äºç±»ä¸åæ ¼"; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "warning"; |
| | | } else if(params == 1) { |
| | | return "info"; |
| | | } else { |
| | | return "null"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { |
| | | label: "ä¸åæ ¼å½å±", |
| | | prop: "offGradeAscription", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "ç产åé¦ä¸åæ ¼"; |
| | | } else if(params == 1) { |
| | | return "æ£æµä¸åæ ¼"; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "warning"; |
| | | } else if(params == 1) { |
| | | return "info"; |
| | | } else { |
| | | return "null"; |
| | | } |
| | | }, |
| | | }, |
| | | { label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | width: '180px', |
| | | operation: [ |
| | | { |
| | | name: 'æäº¤OA', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openOA(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.requestId !== null // ærequestId说æå·²ç»æäº¤è¿OAï¼ä¸å¯å次æäº¤ |
| | | } |
| | | }, |
| | | { |
| | | name: 'æ¥çOAæµç¨', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.OAView(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.deleteOA(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return row.requestId !== null // ærequestId说æå·²ç»æäº¤è¿OAï¼ä¸å¯å次æäº¤ |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | statusList: [], |
| | | dialogVisible: false, // 确认æäº¤OAå¼¹æ¡ |
| | | unPassDialog: false, // ä¸åæ ¼å¤çå¼¹æ¡ |
| | | orderId: '', |
| | | OAProcess: false, // OAæµç¨å¼¹æ¡ |
| | | submitOALoading: false, // OAæµç¨å¼¹æ¡æäº¤æé®loading |
| | | deleteVisible: false, // OAæµç¨å é¤å¼¹æ¡ |
| | | cancelOALoading: false, // OAæµç¨å é¤å¼¹æ¡æäº¤æé®loading |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | page({ ...this.page, ...this.entity }).then(res => { |
| | | this.tableLoading = false |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // éç½® |
| | | refresh() { |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // æå¼ä¸åæ ¼å¤çå¼¹æ¡ |
| | | openUnPassDialog (row) { |
| | | this.unPassDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.unPassDialog.getInsOrder('view', row) |
| | | }) |
| | | }, |
| | | // å
³éä¸åæ ¼å¤çå¼¹æ¡ |
| | | resetForm1 () { |
| | | this.$refs.unPassDialog.$refs['unPassForm'].resetFields(); |
| | | this.unPassDialog = false |
| | | }, |
| | | // æå¼å é¤OAç¡®è®¤å¼¹æ¡ |
| | | deleteOA (row) { |
| | | this.handlerId = row.handlerId |
| | | this.deleteVisible = true |
| | | }, |
| | | // æäº¤å é¤ç³è¯· |
| | | cancelOA () { |
| | | this.de = true |
| | | deleteUnqualifiedHandler({id: this.handlerId,}).then(res => { |
| | | this.cancelOALoading = false |
| | | if (res.code === 200) { |
| | | this.deleteVisible = false |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable('page') |
| | | } |
| | | }).catch(error => { |
| | | this.cancelOALoading = false |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | // æ¥çæäº¤OAçæ°æ® |
| | | openOA (row) { |
| | | this.handlerId = row.handlerId |
| | | this.dialogVisible = true |
| | | }, |
| | | // æ¥çOAæµç¨ |
| | | OAView (row) { |
| | | this.OAProcess = true |
| | | this.$nextTick(() => { |
| | | this.$refs.OAProcess.getInfo(row.handlerId) |
| | | }) |
| | | }, |
| | | // å
³éæ¥çOAæµç¨çå¼¹æ¡ |
| | | closeOAProcess () { |
| | | this.OAProcess = false |
| | | }, |
| | | //æäº¤OA |
| | | submitOA(row) { |
| | | // æäº¤OA |
| | | this.submitOALoading = true |
| | | pushOA({handlerId: this.handlerId,}).then(res => { |
| | | this.submitOALoading = false |
| | | if (res.code === 200) { |
| | | this.dialogVisible = false |
| | | this.$message.success('æäº¤æå') |
| | | this.refreshTable('page') |
| | | } |
| | | }).catch(error => { |
| | | this.submitOALoading = false |
| | | console.error(error); |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="è§æ ¼åå·" prop="model"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="entity.model" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååç§°" prop="sample"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="entity.sample" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">æ¥ è¯¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {pageInsUnPass} from "@/api/business/unpass"; |
| | | |
| | | export default { |
| | | components: {limsTable}, |
| | | data() { |
| | | return { |
| | | entity: { |
| | | sample: null, |
| | | model: null, |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | { label: 'ç¼å·', prop: 'no' }, |
| | | { |
| | | label: "OAå®¡æ ¸ç¶æ", |
| | | prop: "oaState", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "å¦"; |
| | | } else { |
| | | return "æ¯"; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | return "primary"; |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | width: '180px', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openAdd('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.delete(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å°ç« 管ç', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.fileManagement(row); |
| | | }, |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | methods :{ |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | pageInsUnPass({ ...this.page, ...this.entity }).then(res => { |
| | | this.tableLoading = false |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // éç½® |
| | | refresh() { |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
| | |
| | | <div class="title_small">LIMSå®éªå®¤ç®¡çç³»ç»</div> |
| | | <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> |
| | | <el-form-item prop="username"> |
| | | <el-input |
| | | v-model="loginForm.username" |
| | | type="text" |
| | | auto-complete="off" |
| | | placeholder="è´¦å·" |
| | | > |
| | | <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="è´¦å·"> |
| | | <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="password"> |
| | | <el-input |
| | | v-model="loginForm.password" |
| | | type="password" |
| | | auto-complete="off" |
| | | placeholder="å¯ç " |
| | | @keyup.enter.native="handleLogin" |
| | | > |
| | | <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="å¯ç " |
| | | @keyup.enter.native="handleLogin" show-password> |
| | | <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="code" v-if="captchaEnabled"> |
| | | <el-input |
| | | v-model="loginForm.code" |
| | | auto-complete="off" |
| | | placeholder="éªè¯ç " |
| | | style="width: 63%" |
| | | @keyup.enter.native="handleLogin" |
| | | > |
| | | <el-input v-model="loginForm.code" auto-complete="off" placeholder="éªè¯ç " style="width: 63%" |
| | | @keyup.enter.native="handleLogin"> |
| | | <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> |
| | | </el-input> |
| | | <div class="login-code"> |
| | |
| | | </el-form-item> |
| | | <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">è®°ä½å¯ç </el-checkbox> |
| | | <el-form-item style="width:100%;"> |
| | | <el-button |
| | | :loading="loading" |
| | | size="medium" |
| | | type="primary" |
| | | style="width:100%;" |
| | | @click.native.prevent="handleLogin" |
| | | > |
| | | <el-button :loading="loading" size="medium" type="primary" style="width:100%;" |
| | | @click.native.prevent="handleLogin"> |
| | | <span v-if="!loading">ç» å½</span> |
| | | <span v-else>ç» å½ ä¸...</span> |
| | | </el-button> |
| | |
| | | display: flex; |
| | | background-image: url("~@/assets/images/login.png"); |
| | | background-size: 100% 100%; |
| | | |
| | | .leftImg { |
| | | width: calc(100% - 500px); |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | img { |
| | | width: 100%; |
| | | min-height: 100%; |
| | |
| | | align-items: center; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | |
| | | .title_big { |
| | | color: #004EA2; |
| | | font-size: 40px; |
| | |
| | | color: #004EA2; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .login-form { |
| | | border-radius: 6px; |
| | | background: #ffffff; |
| | | width: 400px; |
| | | padding: 25px 25px 5px 25px; |
| | | |
| | | .el-input { |
| | | height: 38px; |
| | | |
| | | input { |
| | | height: 38px; |
| | | } |
| | | } |
| | | |
| | | .input-icon { |
| | | height: 39px; |
| | | width: 14px; |
| | | margin-left: 2px; |
| | | } |
| | | |
| | | .login-code { |
| | | width: 33%; |
| | | height: 38px; |
| | | float: right; |
| | | |
| | | img { |
| | | cursor: pointer; |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | .login-code-img { |
| | | height: 38px; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-login-footer { |
| | | height: 40px; |
| | | line-height: 40px; |
| | |
| | | obtainItemParameterList, |
| | | selectTestObjectByName, |
| | | selectStandardMethods, |
| | | addStandardMethodList, |
| | | addStandardTree, |
| | | updateStandardTree, |
| | | selectsStandardMethodByFLSSM, |
| | | upStandardProductList, |
| | | delStandardMethodByFLSSM, |
| | | delStandardProductByIds, |
| | | addStandardProduct, |
| | | selectStandardProductListByMethodId, |
| | | updateSection, |
| | | upStandardProducts, |
| | |
| | | this.selectTestObjectByName(); |
| | | this.selectStandardMethods(); |
| | | this.selectEnumByCategoryForSonLaboratory(); |
| | | this.selectEnumByCategoryForsampleType(); |
| | | this.getStandardTemplate(); |
| | | this.selectStandardMethodsSec(); |
| | | this.token = { |
| | |
| | | this.standardEnum = data; |
| | | }); |
| | | }, |
| | | addStandardMethodList() { |
| | | if (this.standardId == null || this.standardId == "") { |
| | | this.$message.error("æ åæ¹æ³æªéæ©"); |
| | | return; |
| | | } |
| | | this.addLoad2 = true; |
| | | addStandardMethodList({ |
| | | standardId: this.standardId, |
| | | tree: this.selectTree, |
| | | }).then((res) => { |
| | | this.addLoad2 = false; |
| | | this.addStandardDia = false; |
| | | this.$message.success("æ·»å æå"); |
| | | this.selectsStandardMethodByFLSSM(); |
| | | }); |
| | | }, |
| | | // æäº¤å类添å |
| | | addStandardTree() { |
| | | if (this.addOb.sampleType == null || this.addOb.sampleType == "") { |
| | |
| | | this.$message.success("å·²ä¿å"); |
| | | }); |
| | | }, |
| | | delStandardMethodByFLSSM(id) { |
| | | this.$confirm("æ¯å¦å é¤å½åæ°æ®?", "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | this.tableLoad = true; |
| | | delStandardMethodByFLSSM({ id: id }).then((res) => { |
| | | if (res.code == 201) { |
| | | return; |
| | | } |
| | | this.$message.success("å·²å é¤"); |
| | | this.selectsStandardMethodByFLSSM(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | handleSelectionChange(val) { |
| | | this.selects = []; |
| | | val.forEach((a) => { |
| | | this.selects.push(a.id); |
| | | }); |
| | | }, |
| | | delStandardProductByIds() { |
| | | if (this.selects.length == 0) { |
| | | this.$message.error("æªé䏿°æ®"); |
| | | return; |
| | | } |
| | | this.$confirm( |
| | | "æ¯å¦å é¤å½åéä¸ " + this.selects.length + " æ¡æ°æ®?", |
| | | "è¦å", |
| | | { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | } |
| | | ) |
| | | .then(() => { |
| | | this.tableLoad = true; |
| | | delStandardProductByIds({ |
| | | ids: JSON.stringify(this.selects), |
| | | }).then((res) => { |
| | | if (res.code == 201) { |
| | | return; |
| | | } |
| | | this.$message.success("å·²å é¤"); |
| | | this.selectsStandardMethodByFLSSM(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | addStandardProductDo() { |
| | | let selects = this.$refs.ValueTable.multipleSelection; |
| | | if (selects.length == 0) { |
| | | this.$message.error("æªéæ©æ°æ®"); |
| | | return; |
| | | } |
| | | let select = []; |
| | | selects.forEach((a) => { |
| | | select.push(a.id); |
| | | }); |
| | | this.tableLoad = true; |
| | | addStandardProduct({ |
| | | ids: JSON.stringify(select), |
| | | tree: this.selectTree, |
| | | }).then((res) => { |
| | | if (res.code == 201) { |
| | | return; |
| | | } |
| | | this.$message.success("æ·»å æå"); |
| | | this.selectsStandardMethodByFLSSM(); |
| | | }); |
| | | this.addProductDia = false; |
| | | }, |
| | | |
| | | refreshList() { |
| | | this.batchCopyDia = false; |
| | | const index = this.standardList.findIndex( |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | <lims-table :tableData="tableData" :column="column" |
| | | :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!-- æ°å¢å®éªå®¤--> |
| | |
| | | placeholder="è¯·éæ©" size="small" style="width:100%" collapse-tags clearable></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="å°ç« å¾ç" prop="address"> |
| | | <el-upload class="avatar-uploader" :action="action" :headers="headers" accept='image/jpg,image/jpeg,image/png' |
| | | :show-file-list="false" :on-success="handleSuccess" :on-change="beforeUpload" ref="upload" |
| | | :on-error="onError"> |
| | | <el-upload class="avatar-uploader" :action="action" :headers="uploadHeader" |
| | | accept='image/jpg,image/jpeg,image/png' :show-file-list="false" :on-success="handleSuccess" |
| | | :on-change="beforeUpload" ref="upload" :on-error="onError"> |
| | | <img v-if="dataForm.address" :src="javaApi + '/img/' + dataForm.address" class="avatar"> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | |
| | | upParameter |
| | | } from "@/api/structural/laboratoryScope"; |
| | | import { getCertificationDetail } from "@/api/structural/laboratory"; |
| | | import { getToken } from "@/utils/auth"; |
| | | export default { |
| | | components: { |
| | | limsTable |
| | | |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi |
| | | } |
| | |
| | | <pane size="12"> |
| | | <el-col> |
| | | <div class="head-container addButton"> |
| | | <el-input v-model="deptName" placeholder="é¨é¨åç§°" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px" /> |
| | | <el-button style="margin-left: 4px" type="primary" plain icon="el-icon-plus" size="mini" circle @click="addSchema"></el-button> |
| | | <el-input v-model="deptName" placeholder="é¨é¨åç§°" clearable size="small" prefix-icon="el-icon-search" |
| | | style="margin-bottom: 20px" /> |
| | | <el-button style="margin-left: 4px" type="primary" plain icon="el-icon-plus" size="mini" circle |
| | | @click="addSchema"></el-button> |
| | | </div> |
| | | <div class="head-container"> |
| | | <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current @node-click="handleNodeClick" /> |
| | | <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" |
| | | :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current |
| | | @node-click="handleNodeClick" /> |
| | | </div> |
| | | </el-col> |
| | | </pane> |
| | |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> |
| | | <el-form-item label="ç¨æ·åç§°" prop="nickName"> |
| | | <el-input v-model="queryParams.nickName" placeholder="请è¾å
¥ç¨æ·åç§°" clearable @keyup.enter.native="handleQuery" /> |
| | | <el-input v-model="queryParams.nickName" placeholder="请è¾å
¥ç¨æ·åç§°" clearable |
| | | @keyup.enter.native="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-select v-model="queryParams.status" placeholder="ç¨æ·ç¶æ" clearable> |
| | | <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" /> |
| | | <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" |
| | | :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </el-form> |
| | | </div> |
| | | <div class="options_button"> |
| | | <el-button type="primary" size="mini" @click="openthirdParty" v-hasPermi="['system:user:add']">è·å䏿¹äººå</el-button> |
| | | <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">æ°å¢ç¨æ·</el-button> |
| | | <el-button type="primary" size="mini" @click="openthirdParty" |
| | | v-hasPermi="['system:user:add']">è·å䏿¹äººå</el-button> |
| | | <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" |
| | | v-hasPermi="['system:user:add']">æ°å¢ç¨æ·</el-button> |
| | | </div> |
| | | </div> |
| | | <el-col> |
| | |
| | | <el-table-column label="è´¦å·" align="center" key="userName" prop="userName" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="ç¶æ" align="center" key="status"> |
| | | <template slot-scope="scope"> |
| | | <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch> |
| | | <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" |
| | | @change="handleStatusChange(scope.row)"></el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ææºå·ç " align="center" key="phonenumber" prop="phonenumber" width="120" /> |
| | | <el-table-column label="æä½" align="center" width="160" class-nickName="small-padding fixed-width"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">ä¿®æ¹</el-button> |
| | | <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" |
| | | v-hasPermi="['system:user:edit']">ä¿®æ¹</el-button> |
| | | <!-- <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">å é¤</el-button>--> |
| | | <!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">--> |
| | | <!-- <el-button size="mini" type="text" icon="el-icon-d-arrow-right">æ´å¤</el-button>--> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> |
| | | <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" @pagination="getList" /> |
| | | </el-col> |
| | | </pane> |
| | | </splitpanes> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-radio-group v-model="form.status"> |
| | | <el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio> |
| | | <el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ |
| | | dict.label |
| | | }}</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="è§è²" prop="roleIds"> |
| | | <el-select v-model="form.roleIds" multiple placeholder="è¯·éæ©è§è²" clearable> |
| | | <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option> |
| | | <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" |
| | | :disabled="item.status == 1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="åä½" prop="company"> |
| | | <el-select v-model="form.company" placeholder="è¯·éæ©åä½" style="width: 100%" clearable> |
| | | <el-option v-for="item in postOptions" :key="item.id" :label="item.company" :value="item.id"></el-option> |
| | | <el-option v-for="item in postOptions" :key="item.id" :label="item.company" |
| | | :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç¾å"> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | :action="uploadAction" |
| | | :show-file-list="false" |
| | | accept=".png, .jpg, .jpeg, .gif" |
| | | :on-error="handleUploadError" |
| | | :on-success="handleUploadSuccess" |
| | | :before-upload="handleBeforeUpload"> |
| | | <img v-if="signatureUrl" :src="signatureUrl" class="avatar" alt=""> |
| | | <el-upload class="avatar-uploader" :action="uploadAction" :show-file-list="false" |
| | | :headers="upload.headers" accept=".png, .jpg, .jpeg, .gif" :on-error="handleUploadError" |
| | | :on-success="handleUploadSuccess" :before-upload="handleBeforeUpload"> |
| | | <img v-if="form.signatureUrl" :src="javaApi + '/img/' + form.signatureUrl" class="avatar" alt=""> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="个人ç
§ç"> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | :action="uploadAction" |
| | | :show-file-list="false" |
| | | accept=".png, .jpg, .jpeg, .gif" |
| | | :on-error="handleUploadError1" |
| | | :on-success="handleUploadSuccess1" |
| | | :before-upload="handleBeforeUpload1"> |
| | | <img v-if="pictureUrl" :src="pictureUrl" class="avatar" alt=""> |
| | | <el-upload class="avatar-uploader" :action="uploadAction" :show-file-list="false" |
| | | :headers="upload.headers" accept=".png, .jpg, .jpeg, .gif" :on-error="handleUploadError1" |
| | | :on-success="handleUploadSuccess1" :before-upload="handleBeforeUpload1"> |
| | | <img v-if="form.pictureUrl" :src="javaApi + '/img/' + form.pictureUrl" class="avatar" alt=""> |
| | | <i v-else class="el-icon-plus avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | |
| | | |
| | | <!-- ç¨æ·å¯¼å
¥å¯¹è¯æ¡ --> |
| | | <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> |
| | | <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag> |
| | | <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" |
| | | :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" |
| | | :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | <div class="el-upload__tip text-center" slot="tip"> |
| | |
| | | <el-checkbox v-model="upload.updateSupport" />æ¯å¦æ´æ°å·²ç»åå¨çç¨æ·æ°æ® |
| | | </div> |
| | | <span>ä»
å
许导å
¥xlsãxlsxæ ¼å¼æä»¶ã</span> |
| | | <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">ä¸è½½æ¨¡æ¿</el-link> |
| | | <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" |
| | | @click="importTemplate">ä¸è½½æ¨¡æ¿</el-link> |
| | | </div> |
| | | </el-upload> |
| | | <div slot="footer" class="dialog-footer"> |
| | |
| | | <div class="body" v-loading="thirdPartyLoading"> |
| | | <el-row> |
| | | <el-col :span="8" style="height: 70vh;overflow: hidden;" v-if="companiesList.length!=1"> |
| | | <el-input v-model="search2" placeholder="è¾å
¥å
³é®åæç´¢" clearable size="small" |
| | | @clear="searchFilter2" @keyup.enter.native="searchFilter2" |
| | | prefix-icon="el-icon-search" style="margin-bottom: 20px;width: 90%"/> |
| | | <el-input v-model="search2" placeholder="è¾å
¥å
³é®åæç´¢" clearable size="small" @clear="searchFilter2" |
| | | @keyup.enter.native="searchFilter2" prefix-icon="el-icon-search" style="margin-bottom: 20px;width: 90%" /> |
| | | <el-tree :data="datathirdParty" node-key="companyId" :props="defaultProps" @node-click="nodeClick2" |
| | | style="height: calc(100% - 42px);" @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2" |
| | | highlight-current> |
| | |
| | | <div style="display: flex;align-items: center;margin-bottom: 10px"> |
| | | <span style="width: 140px">åå·¥å·/åå·¥å§å:</span> |
| | | <el-input size="small" placeholder="请è¾å
¥åå·¥å·/åå·¥å§å" @clear="searchPerson" clearable v-model="userSearch2" |
| | | style="width: 50%" |
| | | @keyup.enter.native="searchPerson()"></el-input> |
| | | style="width: 50%" @keyup.enter.native="searchPerson()"></el-input> |
| | | </div> |
| | | <el-table height="67vh" stripe :data="personList" v-loading="personLoad" ref="personTable" |
| | | @selection-change="handleSelectionChange"> |
| | |
| | | url: process.env.VUE_APP_BASE_API + "/system/user/importData" |
| | | }, |
| | | uploadAction: process.env.VUE_APP_BASE_API + '/deviceScope/uploadFile', |
| | | signatureUrl: '', |
| | | pictureUrl: '', |
| | | // æ¥è¯¢åæ° |
| | | queryParams: { |
| | | pageNum: 1, |
| | |
| | | userName: [ |
| | | { required: true, message: "请填åè´¦å·", trigger: "blur" } |
| | | ], |
| | | nameEn: [ |
| | | { required: true, message: "请è¾å
¥å§åEN", trigger: "blur" } |
| | | ], |
| | | // nameEn: [ |
| | | // { required: true, message: "请è¾å
¥å§åEN", trigger: "blur" } |
| | | // ], |
| | | status: [ |
| | | { required: true, message: "è¯·éæ©ç¶æ", trigger: "change" } |
| | | ], |
| | | roleIds: [ |
| | | { required: true, message: "è¯·éæ©è§è²", trigger: "change" } |
| | | ], |
| | | password: [ |
| | | { required: true, message: "å¯ç ä¸è½ä¸ºç©º", trigger: "blur" }, |
| | | ], |
| | | // password: [ |
| | | // { required: true, message: "å¯ç ä¸è½ä¸ºç©º", trigger: "blur" }, |
| | | // ], |
| | | phonenumber: [ |
| | | { |
| | | required: true, |
| | |
| | | sex: undefined, |
| | | status: "0", |
| | | company: '', |
| | | roleIds: [] |
| | | roleIds: [], |
| | | signatureUrl: '', |
| | | pictureUrl: '' |
| | | }; |
| | | // this.signatureUrl = ''; |
| | | // this.pictureUrl = '' |
| | | this.resetForm("form"); |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | |
| | | const userId = row.userId || this.ids; |
| | | getUser(userId).then(response => { |
| | | this.form = response.data; |
| | | this.form.password = '' |
| | | this.roleOptions = response.roles; |
| | | this.$set(this.form, "roleIds", response.roleIds); |
| | | this.open = true; |
| | |
| | | // 妿ä¸ä¼ æå |
| | | if (res.code == 200) { |
| | | // è·å坿æ¬ç»ä»¶å®ä¾ |
| | | let quill = this.Quill; |
| | | // è·åå
æ æå¨ä½ç½® |
| | | let length = quill.getSelection().index; |
| | | // æå
¥å¾ç res.url为æå¡å¨è¿åçå¾çå°å |
| | | quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName); |
| | | // è°æ´å
æ å°æå |
| | | quill.setSelection(length + 1); |
| | | this.signatureUrl = res.data.url |
| | | // let quill = this.Quill; |
| | | // // è·åå
æ æå¨ä½ç½® |
| | | // let length = quill.getSelection().index; |
| | | // // æå
¥å¾ç res.url为æå¡å¨è¿åçå¾çå°å |
| | | // quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName); |
| | | // // è°æ´å
æ å°æå |
| | | // quill.setSelection(length + 1); |
| | | this.form.signatureUrl = res.data.url |
| | | } else { |
| | | this.$message.error("å¾çæå
¥å¤±è´¥"); |
| | | } |
| | |
| | | // 妿ä¸ä¼ æå |
| | | if (res.code == 200) { |
| | | // è·å坿æ¬ç»ä»¶å®ä¾ |
| | | let quill = this.Quill; |
| | | // è·åå
æ æå¨ä½ç½® |
| | | let length = quill.getSelection().index; |
| | | // æå
¥å¾ç res.url为æå¡å¨è¿åçå¾çå°å |
| | | quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName); |
| | | // è°æ´å
æ å°æå |
| | | quill.setSelection(length + 1); |
| | | this.pictureUrl = res.data.url |
| | | // let quill = this.Quill; |
| | | // // è·åå
æ æå¨ä½ç½® |
| | | // let length = quill.getSelection().index; |
| | | // // æå
¥å¾ç res.url为æå¡å¨è¿åçå¾çå°å |
| | | // quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName); |
| | | // // è°æ´å
æ å°æå |
| | | // quill.setSelection(length + 1); |
| | | this.form.pictureUrl = res.data.url |
| | | } else { |
| | | this.$message.error("å¾çæå
¥å¤±è´¥"); |
| | | } |
| | |
| | | .search_form { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .options_button { |
| | | margin-top: 3px; |
| | | } |
| | | } |
| | | |
| | | .avatar-uploader ::v-deep .el-upload { |
| | | border: 1px dashed #666666; |
| | | border-radius: 6px; |
| | |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .avatar-uploader ::v-deep .el-upload:hover { |
| | | border-color: #409EFF; |
| | | } |
| | | |
| | | .avatar-uploader-icon { |
| | | font-size: 20px; |
| | | color: #8c939d; |
| | |
| | | line-height: 90px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 90px; |
| | | height: 90px; |
| | | display: block; |
| | | } |
| | | |
| | | .addButton { |
| | | display: flex; |
| | | align-items: flex-start; |