Merge remote-tracking branch 'origin/dev' into dev
¶Ô±ÈÐÂÎļþ |
| | |
| | | // å®éªå®¤çæ£æµè½åæ¡£æ¡ç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | // æ åæ¹æ³æ´æ°éªè¯å表 |
| | | export function pagesMethodVerify(query) { |
| | | return request({ |
| | | url: "/processMethodVerify/pagesMethodVerify", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å 餿 åæ¹æ³æ´æ°éªè¯ |
| | | export function delMethodVerify(query) { |
| | | return request({ |
| | | url: '/processMethodVerify/delMethodVerify', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // å¯¼åºæ åæ¹æ³æ´æ°éªè¯ |
| | | export function exportMethodVerify(query) { |
| | | return request({ |
| | | url: '/processMethodVerify/exportMethodVerify', |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }) |
| | | } |
| | | |
| | | //æ¥è¯¢æ åæ¹æ³éªè¯è¯¦æ
|
| | | export function getMethodVerifyOne(query) { |
| | | return request({ |
| | | url: "/processMethodVerify/getMethodVerifyOne", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹æ åæ¹æ³éªè¯ |
| | | export function updateMethodVerify(data) { |
| | | return request({ |
| | | url: "/processMethodVerify/updateMethodVerify", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢æ åæ¹æ³éªè¯ |
| | | export function addMethodVerify(data) { |
| | | return request({ |
| | | url: "/processMethodVerify/addMethodVerify", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // éªè¯ç¡®è®¤ |
| | | export function methodVerifyAffirm(query) { |
| | | return request({ |
| | | url: '/processMethodVerify/methodVerifyAffirm', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | //使ç¨è®°å½ å¯¼åº |
| | | export function exportUseRecord(query) { |
| | | return request({ |
| | | url: "/deviceRecord/exportUseRecord", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ°å¢è®¾å¤æ¡£æ¡ |
| | | export function addDocument(data) { |
| | |
| | | } |
| | | |
| | | //设å¤éªæ¶ï¼è£
å¤ï¼å¯¼åº |
| | | export function exportUseRecord(query) { |
| | | export function exportDeviceAcceptance(query) { |
| | | return request({ |
| | | url: "/deviceRecord/exportUseRecord", |
| | | url: "/deviceAcceptance/exportDeviceAcceptance", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | |
| | | }); |
| | | } |
| | | |
| | | //è®¾å¤æä½æ¥å¿åè®°å½ |
| | | export function deviceLog(query) { |
| | | //è®¾å¤æ ¡å æ°å¢ æ´æ° |
| | | export function saveOrUpdateDeviceMetric(data) { |
| | | return request({ |
| | | url: "/api/deviceLog/" + query, |
| | | method: "get", |
| | | // params: query, |
| | | url: "/deviceMetrics/saveOrUpdateDeviceMetric", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | //设å¤ç»´æ¤å é¤ |
| | | export function deviceMaintainDelete(query) { |
| | | export function deleteDeviceMaintenance(query) { |
| | | return request({ |
| | | url: "/deviceMaintain/delete/" + query, |
| | | url: "/deviceMaintain/deleteDeviceMaintenance", |
| | | method: "delete", |
| | | // params: query, |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢è®¾å¤ç»´æ¤ä¿å
» |
| | | export function addDeviceMaintenance(data) { |
| | | return request({ |
| | | url: "/deviceMaintain/addDeviceMaintenance", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | //设å¤ç»´æ¤è¡¨ æ¥è¯¢ |
| | | export function getDeviceMaintenancePage(query) { |
| | | return request({ |
| | | url: "/deviceMaintain/getDeviceMaintenancePage", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // åç¨-ä¿å |
| | | export function saveDeviceBorrow(data) { |
| | | return request({ |
| | | url: "/deviceBorrow/saveDeviceBorrow", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //åç¨-æ¥ç |
| | | export function getDeviceBorrow(query) { |
| | | return request({ |
| | | url: "/deviceBorrow/getDeviceBorrow", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //åç¨-å¯¼åº |
| | | export function deviceBorrowExport(query) { |
| | | return request({ |
| | | url: "/deviceBorrow/deviceBorrowExport", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //åç¨-å é¤ |
| | | export function deleteDeviceBorrow(query) { |
| | | return request({ |
| | | url: "/deviceBorrow/deleteDeviceBorrow", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //åç¨-å表 |
| | | export function deviceBorrowPage(query) { |
| | | return request({ |
| | | url: "/deviceBorrow/deviceBorrowPage", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 设å¤å¯ç¨/åç¨ ä¿åï¼æäº¤ï¼é©³åï¼éè¿æ¥å£ |
| | | export function saveDeviceState(data) { |
| | | return request({ |
| | | url: "/deviceState/saveDeviceState", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | |
| | | }); |
| | | } |
| | | |
| | | // åç¨-ä¿å |
| | | export function saveDeviceBorrow(data) { |
| | | //设å¤åå¯ç¨åæ¡å¯¼åº |
| | | export function exportDeviceStatus(query) { |
| | | return request({ |
| | | url: "/deviceBorrow/saveDeviceBorrow", |
| | | url: "/deviceState/exportDeviceStatus", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //设å¤å¯ç¨/åç¨ å é¤ |
| | | export function deleteDeviceState(query) { |
| | | return request({ |
| | | url: "/deviceState/deleteDeviceState", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //设å¤ç¶æå¯¼åº |
| | | export function deviceStateExport(query) { |
| | | return request({ |
| | | url: "/deviceState/deviceStateExport", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //设å¤å¯ç¨/åç¨ å页 |
| | | export function getDeviceStatePage(query) { |
| | | return request({ |
| | | url: "/deviceState/getDeviceStatePage", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //è®¾å¤æ¥åºç³è¯·å表 |
| | | export function pageDeviceScrapped(query) { |
| | | return request({ |
| | | url: "/deviceScrapped/pageDeviceScrapped", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // å¯¼åº |
| | | export function exportDeviceScrapped(query) { |
| | | return request({ |
| | | url: "/deviceScrapped/exportDeviceScrapped", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤è®¾å¤æ¥åºç³è¯· |
| | | export function delDeviceScrapped(query) { |
| | | return request({ |
| | | url: "/deviceScrapped/delDeviceScrapped", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢è®¾å¤æ¥åºç³è¯· |
| | | export function getDeviceScrapped(query) { |
| | | return request({ |
| | | url: "/deviceScrapped/getDeviceScrapped", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢è®¾å¤æ¥åºç³è¯· |
| | | export function addDeviceScrapped(data) { |
| | | return request({ |
| | | url: "/deviceScrapped/addDeviceScrapped", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //è®¾å¤æ
éç»´ä¿®å表 |
| | | export function pageDeviceBreakdownMaintenance(query) { |
| | | return request({ |
| | | url: "/deviceBreakdownMaintenance/pageDeviceBreakdownMaintenance", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // è®¾å¤æ
éä¸ç»´ä¿®-å¯¼åº |
| | | export function exportDeviceBreakdownMaintenance(query) { |
| | | return request({ |
| | | url: "/deviceBreakdownMaintenance/exportDeviceBreakdownMaintenance", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤è®¾å¤æ
éç»´ä¿® |
| | | export function delDeviceBreakdownMaintenance(query) { |
| | | return request({ |
| | | url: "/deviceBreakdownMaintenance/delDeviceBreakdownMaintenance", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢è®¾å¤æ
éç»´ä¿® |
| | | export function getDeviceBreakdownMaintenance(query) { |
| | | return request({ |
| | | url: "/deviceBreakdownMaintenance/getDeviceBreakdownMaintenance", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢è®¾å¤æ
éç»´ä¿® |
| | | export function addDeviceBreakdownMaintenance(data) { |
| | | return request({ |
| | | url: "/deviceBreakdownMaintenance/addDeviceBreakdownMaintenance", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //å页æ¥è¯¢è®¾å¤ç¹æ£è®°å½ |
| | | export function getDeviceInspectionRecordByPage(query) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/getDeviceInspectionRecordByPage", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 导åºè®¾å¤ç¹æ£è®°å½ |
| | | export function exportDeviceInspectionRecord(query) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/exportDeviceInspectionRecord", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤è®¾å¤ç¹æ£è®°å½ |
| | | export function deleteDeviceInspectionRecord(query) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/deleteDeviceInspectionRecord", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //设å¤ç¹æ£è®°å½è¯¦æ
|
| | | export function getDeviceInspectionRecord(query) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/getDeviceInspectionRecord", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢è®¾å¤ç¹æ£è®°å½ |
| | | export function addDeviceInspectionRecord(data) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/addDeviceInspectionRecord", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹è®¾å¤ç¹æ£è®°å½ |
| | | export function updateDeviceInspectionRecord(data) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/updateDeviceInspectionRecord", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // 夿 ¸è®¾å¤ç¹æ£è®°å½ |
| | | export function reviewDeviceInspectionRecord(data) { |
| | | return request({ |
| | | url: "/deviceInspectionRecord/reviewDeviceInspectionRecord", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //设å¤äºæ
æ¥åå表 |
| | | export function pageDeviceAccidentReport(query) { |
| | | return request({ |
| | | url: "/deviceAccidentReport/pageDeviceAccidentReport", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 导åºè®¾å¤äºæ
|
| | | export function exportDeviceAccidentReport(query) { |
| | | return request({ |
| | | url: "/deviceAccidentReport/exportDeviceAccidentReport", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å é¤è®¾å¤äºæ
æ¥å |
| | | export function delDeviceAccidentReport(query) { |
| | | return request({ |
| | | url: "/deviceAccidentReport/delDeviceAccidentReport", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //æ¥è¯¢è®¾å¤äºæ
æ¥å |
| | | export function getDeviceAccidentReport(query) { |
| | | return request({ |
| | | url: "/deviceAccidentReport/getDeviceAccidentReport", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢è®¾å¤äºæ
æ¥å |
| | | export function addDeviceAccidentReport(data) { |
| | | return request({ |
| | | url: "/deviceAccidentReport/addDeviceAccidentReport", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //ä½ä¸æå¯¼ä¹¦ å®¡æ¹ |
| | | export function approvalOfHomeworkInstructionManual(data) { |
| | | return request({ |
| | | url: "/deviceInstruction/approvalOfHomeworkInstructionManual", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //ä½ä¸æå¯¼ä¹¦ å é¤ |
| | | export function homeworkGuidebook(query) { |
| | | return request({ |
| | | url: "/deviceInstruction/homeworkGuidebook", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //ä½ä¸æå¯¼ä¹¦ ç¼è¾æ¥è¯¢ |
| | | export function homeworkGuidebookEditor(query) { |
| | | return request({ |
| | | url: "/deviceInstruction/homeworkGuidebookEditor", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //ä½ä¸æå¯¼ä¹¦æ°å¢ |
| | | export function newHomeworkGuidebookAdded(data) { |
| | | return request({ |
| | | url: "/deviceInstruction/newHomeworkGuidebookAdded", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | //ä½ä¸æå¯¼ä¹¦åæ§æä»¶å é¤ |
| | | export function deleteHomeworkGuidebook(query) { |
| | | return request({ |
| | | url: "/deviceInstruction/deleteHomeworkGuidebook", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //ä½ä¸æå¯¼ä¹¦ æ¥è¯¢ |
| | | export function pageByPageQueryOfHomeworkInstructions(query) { |
| | | return request({ |
| | | url: "/deviceInstruction/pageByPageQueryOfHomeworkInstructions", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // é¦é¡µç¸å
³æ¥å£ |
| | | import request from '@/utils/request' |
| | | |
| | | //é¦é¡µ-->æ¥åä»»å¡å¾ |
| | | export function calendarWorkByWeek() { |
| | | return request({ |
| | | url: '/report/calendarWorkByWeek', |
| | | method: 'get' |
| | | }) |
| | | } |
| | | //é¦é¡µ-->é¦é¡µå·¥æ¶ç»è®¡ |
| | | export function manHourByStation(query) { |
| | | return request({ |
| | | url: '/report/manHourByStation', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | //é¦é¡µ-->é¦é¡µå·¥æ¶ç»è®¡ |
| | | export function manHourByPerson() { |
| | | return request({ |
| | | url: '/report/manHourByPerson', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | // ç»è®¡å¾è¡¨ |
| | | import request from "@/utils/request"; |
| | | |
| | | //åæ ¼çç»è®¡ |
| | | export function getRawPassRateByBarChart(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawPassRateByBarChart", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | //åææç»è®¡ |
| | | export function getRawPassRateByCake(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawPassRateByCake", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | //æ¬ææ£éªç±»åæ°é |
| | | export function getOrderTypeCookie() { |
| | | return request({ |
| | | url: "/dataAnalysis/getOrderTypeCookie", |
| | | method: "get", |
| | | }); |
| | | } |
| | | //æ¬ææ£éªç±»åæ°é |
| | | export function getRawUpMonth() { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawUpMonth", |
| | | method: "get", |
| | | }); |
| | | } |
| | | //æ¥è¯¢åææé¡¹æ£åæ |
| | | export function getRawProductAnalysis(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawProductAnalysis", |
| | | method: "post", |
| | | data: query, |
| | | }); |
| | | } |
| | | //æ¥è¯¢åææé¡¹æ£åæåæ ¼ç |
| | | export function getRawProductAnalysisRawPass(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawProductAnalysisRawPass", |
| | | method: "post", |
| | | data: query, |
| | | }); |
| | | } |
| | | //æ¥è¯¢åææé¡¹æ£åæå表 |
| | | export function getRawProductAnalysisAllList(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawProductAnalysisAllList", |
| | | method: "post", |
| | | data: query, |
| | | }); |
| | | } |
| | | //æ¥è¯¢æ£éªé¡¹ |
| | | export function getRawItemNames(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawItemNames", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | //æ¥è¯¢åææé¡¹æ£ååå®¶æ°æ®å¯¹æ¯ |
| | | export function getRawSupplierCompare(query) { |
| | | return request({ |
| | | url: "/dataAnalysis/getRawSupplierCompare", |
| | | method: "post", |
| | | data: query, |
| | | }); |
| | | } |
| | |
| | | export function delCustomById(query) { |
| | | return request({ |
| | | url: '/system/custom/delCustomById', |
| | | method: 'post', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | |
| | | import request from '@/utils/request' |
| | | import request from "@/utils/request"; |
| | | import { parseStrEmpty } from "@/utils/ruoyi"; |
| | | |
| | | // æ¥è¯¢ç¨æ·å表 |
| | | export function listUser(query) { |
| | | return request({ |
| | | url: '/system/user/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | url: "/system/user/list", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ç¨æ·è¯¦ç» |
| | | export function getUser(userId) { |
| | | return request({ |
| | | url: '/system/user/' + parseStrEmpty(userId), |
| | | method: 'get' |
| | | }) |
| | | url: "/system/user/" + parseStrEmpty(userId), |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢ç¨æ· |
| | | export function addUser(data) { |
| | | return request({ |
| | | url: '/system/user', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | url: "/system/user", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹ç¨æ· |
| | | export function updateUser(data) { |
| | | return request({ |
| | | url: '/system/user', |
| | | method: 'put', |
| | | data: data |
| | | }) |
| | | url: "/system/user", |
| | | method: "put", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å é¤ç¨æ· |
| | | export function delUser(userId) { |
| | | return request({ |
| | | url: '/system/user/' + userId, |
| | | method: 'delete' |
| | | }) |
| | | url: "/system/user/" + userId, |
| | | method: "delete", |
| | | }); |
| | | } |
| | | |
| | | // ç¨æ·å¯ç éç½® |
| | | export function resetUserPwd(userId, password) { |
| | | const data = { |
| | | userId, |
| | | password |
| | | } |
| | | password, |
| | | }; |
| | | return request({ |
| | | url: '/system/user/resetPwd', |
| | | method: 'put', |
| | | data: data |
| | | }) |
| | | url: "/system/user/resetPwd", |
| | | method: "put", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ç¨æ·ç¶æä¿®æ¹ |
| | | export function changeUserStatus(userId, status) { |
| | | const data = { |
| | | userId, |
| | | status |
| | | } |
| | | status, |
| | | }; |
| | | return request({ |
| | | url: '/system/user/changeStatus', |
| | | method: 'put', |
| | | data: data |
| | | }) |
| | | url: "/system/user/changeStatus", |
| | | method: "put", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ç¨æ·ä¸ªäººä¿¡æ¯ |
| | | export function getUserProfile() { |
| | | return request({ |
| | | url: '/system/user/profile', |
| | | method: 'get' |
| | | }) |
| | | url: "/system/user/profile", |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹ç¨æ·ä¸ªäººä¿¡æ¯ |
| | | export function updateUserProfile(data) { |
| | | return request({ |
| | | url: '/system/user/profile', |
| | | method: 'put', |
| | | data: data |
| | | }) |
| | | url: "/system/user/profile", |
| | | method: "put", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ç¨æ·å¯ç éç½® |
| | | export function updateUserPwd(oldPassword, newPassword) { |
| | | const data = { |
| | | oldPassword, |
| | | newPassword |
| | | } |
| | | newPassword, |
| | | }; |
| | | return request({ |
| | | url: '/system/user/profile/updatePwd', |
| | | method: 'put', |
| | | data: data |
| | | }) |
| | | url: "/system/user/profile/updatePwd", |
| | | method: "put", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ç¨æ·å¤´åä¸ä¼ |
| | | export function uploadAvatar(data) { |
| | | return request({ |
| | | url: '/system/user/profile/avatar', |
| | | method: 'post', |
| | | headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, |
| | | data: data |
| | | }) |
| | | url: "/system/user/profile/avatar", |
| | | method: "post", |
| | | headers: { "Content-Type": "application/x-www-form-urlencoded" }, |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ææè§è² |
| | | export function getAuthRole(userId) { |
| | | return request({ |
| | | url: '/system/user/authRole/' + userId, |
| | | method: 'get' |
| | | }) |
| | | url: "/system/user/authRole/" + userId, |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | // ä¿åææè§è² |
| | | export function updateAuthRole(data) { |
| | | return request({ |
| | | url: '/system/user/authRole', |
| | | method: 'put', |
| | | params: data |
| | | }) |
| | | url: "/system/user/authRole", |
| | | method: "put", |
| | | params: data, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢é¨é¨ä¸ææ ç»æ |
| | | export function deptTreeSelect() { |
| | | return request({ |
| | | url: '/system/user/deptTree', |
| | | method: 'get' |
| | | }) |
| | | url: "/system/user/deptTree", |
| | | method: "get", |
| | | }); |
| | | } |
| | | |
| | | // è·å人äºç³»ç»ç»ç» |
| | | export function selectCompaniesList() { |
| | | return request({ |
| | | url: '/companies/selectCompaniesList', |
| | | method: 'get' |
| | | }) |
| | | url: "/companies/selectCompaniesList", |
| | | method: "get", |
| | | }); |
| | | } |
| | | // è·å人äºç³»ç»ç»ç»ä¸ç人å |
| | | export function selectSimpleList(data) { |
| | | return request({ |
| | | url: '/companies/selectSimpleList', |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | url: "/companies/selectSimpleList", |
| | | method: "post", |
| | | params: data, |
| | | }); |
| | | } |
| | | // è·å人äºç³»ç»ç»ç»ä¸ç人å |
| | | export function addPersonUser(data) { |
| | | return request({ |
| | | url: '/companies/addPersonUser', |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | url: "/companies/addPersonUser", |
| | | method: "post", |
| | | params: data, |
| | | }); |
| | | } |
| | | // è·åè§è² |
| | | export function selectRoleList() { |
| | | return request({ |
| | | url: '/role/selectRoleList', |
| | | method: 'get', |
| | | }) |
| | | url: "/role/selectRoleList", |
| | | method: "get", |
| | | }); |
| | | } |
| | | // è·ååä½ |
| | | export function selectCustomEnum() { |
| | | return request({ |
| | | url: '/system/custom/selectCustomEnum', |
| | | method: 'get', |
| | | }) |
| | | url: "/system/custom/selectCustomEnum", |
| | | method: "get", |
| | | }); |
| | | } |
| | | // æäº¤æ·»å æ¶æä¿¡æ¯ |
| | | export function addDepartment(params) { |
| | | export function addDepartment(data) { |
| | | return request({ |
| | | url: '/department/addDepartment', |
| | | method: 'post', |
| | | params: params |
| | | }) |
| | | url: "/department/addDepartment", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | // è·åå½åç»å½äººåé¨é¨ |
| | | export function selectUserDepartmentLimsName(query) { |
| | | return request({ |
| | | url: '/system/newUser/selectUserDepartmentLimsName', |
| | | method: 'get' |
| | | }) |
| | | url: "/system/newUser/selectUserDepartmentLimsName", |
| | | method: "get", |
| | | }); |
| | | } |
| | | // è·åç¨æ·å表 |
| | | export function selectUserCondition(query) { |
| | |
| | | </div> |
| | | <div v-if="isPdf"> |
| | | <object :data="fileUrl" type="application/pdf" width="100%" height="750px"> |
| | | <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;">ä¸è½½ PDF æä»¶</a></p> |
| | | <p>æ¨çæµè§å¨ä¸æ¯æ PDF é¢è§ã<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">ä¸è½½ PDF æä»¶</a></p> |
| | | </object> |
| | | </div> |
| | | <div v-if="isDoc"> |
| | |
| | | :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' || item.dataType === 'slot' ? false : true" |
| | | :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType === 'action' ? getWidth(item.operation) : item.width |
| | | " align="center"> |
| | | :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 == ''"> --> |
| | | <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope"> |
| | | <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" /> |
| | |
| | | </div> |
| | | <!-- å¾ç --> |
| | | <div v-else-if="item.dataType == 'image'"> |
| | | <img :src="javaApi + '/img/' + item.prop" alt="" style="width: 40px; height: 40px; margin-top: 10px" /> |
| | | <img :src="javaApi + '/img/' + scope.row[item.prop]" alt="" |
| | | style="width: 40px; height: 40px; margin-top: 10px" /> |
| | | </div> |
| | | |
| | | <!-- tag --> |
| | |
| | | }, |
| | | mounted() { |
| | | this.calculateSpanInfo(); |
| | | this.$nextTick(() => { |
| | | this.$refs.multipleTable.doLayout(); |
| | | }); |
| | | }, |
| | | methods: { |
| | | getWidth(row) { |
| | | let count = 0; |
| | | row.forEach((a) => { |
| | | count += a.name.length; |
| | | if (a.showHide!==undefined && a.showHide()) { |
| | | count += a.name.length; |
| | | } else if(!a.showHide) { |
| | | count += a.name.length; |
| | | } |
| | | }); |
| | | return count * 15 + 70 + "px"; |
| | | }, |
| | |
| | | } |
| | | |
| | | >>>.el-table__body-wrapper::-webkit-scrollbar { |
| | | height: 14px; |
| | | height: 10px; |
| | | /* 设置æ»å¨æ¡å®½åº¦ */ |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <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="$emit('goBack')">è¿å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="container"> |
| | | <div> |
| | | <div style="padding: 0 0 10px 10px">å¡«ååå®¶æ°æ®</div> |
| | | <el-form ref="supplierForm" :model="supplierForm" :rules="rules" class="demo-ruleForm" label-width="40px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="3"> |
| | | <el-form-item label="1ï¼" prop="one"> |
| | | <el-input v-model="supplierForm.one" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-form-item label="2ï¼" prop="two"> |
| | | <el-input v-model="supplierForm.two" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-form-item label="3ï¼" prop="three"> |
| | | <el-input v-model="supplierForm.three" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-form-item label="4ï¼" prop="four"> |
| | | <el-input v-model="supplierForm.four" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-form-item label="5ï¼" prop="five"> |
| | | <el-input v-model="supplierForm.five" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item> |
| | | <el-button size="small" type="primary" @click="submitForm()">æ°æ®åæ</el-button> |
| | | <el-button size="small" @click="resetForm()">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <table :border='true' class="table"> |
| | | <tr> |
| | | <th class="thTitle"> </th> |
| | | <th class="thTitle">1</th> |
| | | <th class="thTitle">2</th> |
| | | <th class="thTitle">3</th> |
| | | <th class="thTitle">4</th> |
| | | <th class="thTitle">5</th> |
| | | <th class="thTitle">å¹³åå¼</th> |
| | | <th class="thTitle">æ ååå·®</th> |
| | | <th class="thTitle">ç¸å¯¹åå·®</th> |
| | | <th class="thTitle">å¹³åæ ååå·®</th> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">åå®¶æ£æµæ°æ®</td> |
| | | <td v-for="(item,index) in supplierData" :key="index" class="tdData">{{item}}</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">æ£æµä¸å¿æ°æ®</td> |
| | | <td v-for="(item,index) in localData" :key="index" class="tdData">{{item}}</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">ç»å¯¹åå·®</td> |
| | | <td v-for="(item,index) in absoluteDeviation" :key="index" class="tdData">{{item}}</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">å¹³åå¼</td> |
| | | <td v-for="(item,index) in average" :key="index" class="tdData">{{item}}</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack2">åå®¶</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">UCL</td> |
| | | <td v-for="(item,index) in supplierULC" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'a' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">LCL</td> |
| | | <td v-for="(item,index) in supplierLCL" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'b' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">å¹³åå¼</td> |
| | | <td v-for="(item,index) in supplierAverage" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'c' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">æå·®</td> |
| | | <td v-for="(item,index) in supplierRange" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'d' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack2">æ£æµä¸å¿</td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">UCL</td> |
| | | <td v-for="(item,index) in localULC" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'e' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">LCL</td> |
| | | <td v-for="(item,index) in localLCL" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'f' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">å¹³åå¼</td> |
| | | <td v-for="(item,index) in localAverage" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'g' + index" class="tdData"></td> |
| | | </tr> |
| | | <tr> |
| | | <td class="thBack">æå·®</td> |
| | | <td v-for="(item,index) in localRange" :key="index" class="tdData">{{item}}</td> |
| | | <td v-for="(item,index) in empty" :key="'h' + index" class="tdData"></td> |
| | | </tr> |
| | | </table> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <div class="inspection-card"> |
| | | <div class="echartsTitle">æ£æµæ°æ®å¯¹æ¯</div> |
| | | <Echarts ref="chart" |
| | | :grid="grid" |
| | | :legend="legend" |
| | | :lineColors="lineColors" |
| | | :series="echartsSeries" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis" |
| | | :yAxis="yAxis" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="inspection-card"> |
| | | <div class="echartsTitle">æµéæ°æ®æ å差对æ¯</div> |
| | | <Echarts ref="chart" |
| | | :barColors="barColors" |
| | | :chartStyle="chartStyle" |
| | | :grid="grid" |
| | | :legend="legend1" |
| | | :series="echartsSeries1" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis1" |
| | | :yAxis="yAxis1" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <div class="inspection-card"> |
| | | <div class="echartsTitle">åå·®åæ</div> |
| | | <Echarts ref="chart" |
| | | :grid="grid" |
| | | :legend="legend2" |
| | | :lineColors="lineColors" |
| | | :series="echartsSeries2" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis" |
| | | :yAxis="yAxis2" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="inspection-card"> |
| | | <div class="echartsTitle">æ£æµä¸å¿æ°æ®</div> |
| | | <Echarts ref="chart" |
| | | :grid="grid" |
| | | :legend="legend" |
| | | :lineColors="lineColors" |
| | | :series="echartsSeries3" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis" |
| | | :yAxis="yAxis" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Echarts from "./echarts.vue"; |
| | | |
| | | export default { |
| | | name: "DataComparison", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {Echarts}, |
| | | props: { |
| | | comparisonData : { |
| | | type: Object, |
| | | default: () => {} |
| | | }, |
| | | selectRow : { |
| | | type: Object, |
| | | default: () => {} |
| | | } |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | supplierForm: { |
| | | one: '', |
| | | two: '', |
| | | three: '', |
| | | four: '', |
| | | five: '', |
| | | }, |
| | | rules: { |
| | | one: [{ required: true, message: 'å¿
å¡«', trigger: 'blur' }], |
| | | two: [{ required: true, message: 'å¿
å¡«', trigger: 'blur' }], |
| | | three: [{ required: true, message: 'å¿
å¡«', trigger: 'blur' }], |
| | | four: [{ required: true, message: 'å¿
å¡«', trigger: 'blur' }], |
| | | five: [{ required: true, message: 'å¿
å¡«', trigger: 'blur' }], |
| | | }, |
| | | comparisonData1: {}, |
| | | supplierData: [], // åå®¶æ°æ® |
| | | localData: [], // æ£æµä¸å¿æ£æµæ°æ® |
| | | absoluteDeviation: [], // ç»å¯¹åå·® |
| | | average: [], // å¹³åå¼ |
| | | supplierULC: [], // åå®¶UCL |
| | | supplierLCL: [], // åå®¶LCL |
| | | supplierAverage: [], // åå®¶å¹³åå¼ |
| | | supplierRange: [], // åå®¶æå·® |
| | | localULC: [], // æ£æµä¸å¿UCL |
| | | localLCL: [], // æ£æµä¸å¿LCL |
| | | localAverage: [], // æ£æµä¸å¿å¹³åå¼ |
| | | localRange: [], // æ£æµä¸å¿æå·® |
| | | manufacturerData: [], |
| | | manufacturer: [ |
| | | {value: '1.1'}, |
| | | {value: '2.2'}, |
| | | {value: '3.3'}, |
| | | {value: '4.4'}, |
| | | {value: '5.5'}, |
| | | ], |
| | | testCenter: [ |
| | | {value: '1.2'}, |
| | | {value: '2.33'}, |
| | | {value: '3.64'}, |
| | | {value: '4.3'}, |
| | | {value: '5.9'}, |
| | | ], |
| | | empty: [ |
| | | {data: '1'}, |
| | | {data: '2'}, |
| | | {data: '3'}, |
| | | {data: '4'}, |
| | | ], |
| | | lineColors: ['#ed7d31', '#409EFF'], |
| | | barColors: ['#ed7d31', '#409EFF', '#a5a5a5'], |
| | | chartStyle: { |
| | | width: '100%', |
| | | height: '96%' // 设置å¾è¡¨å®¹å¨çé«åº¦ |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | data: ['åå®¶æ£æµæ°æ®','æ£æµä¸å¿æ£æµæ°æ®'] |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | } |
| | | }, |
| | | xAxis: [{ |
| | | type: 'category', |
| | | data: ['1', '2', '3', '4', '5'] |
| | | }], |
| | | yAxis: [{ |
| | | type: 'value' |
| | | }], |
| | | echartsSeries: [ |
| | | { |
| | | name: 'åå®¶æ£æµæ°æ®', |
| | | type: 'line', |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | }, |
| | | data: [] |
| | | }, |
| | | { |
| | | name: 'æ£æµä¸å¿æ£æµæ°æ®', |
| | | type: 'line', |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | }, |
| | | data: [] |
| | | } |
| | | ], |
| | | xAxis1: [{ |
| | | type: 'category', |
| | | data: ['åå®¶', 'æ£æµä¸å¿'] |
| | | }], |
| | | legend1: { |
| | | data: ['UCL','LCL', 'å¹³åå¼'] |
| | | }, |
| | | yAxis1: [ |
| | | { |
| | | type: 'value', |
| | | }, |
| | | ], |
| | | echartsSeries1: [ |
| | | { |
| | | name: 'UCL', |
| | | type: 'bar', |
| | | label: { |
| | | show: true, |
| | | position: 'top' |
| | | }, |
| | | data: [] |
| | | }, |
| | | { |
| | | name: 'LCL', |
| | | type: 'bar', |
| | | label: { |
| | | show: true, |
| | | position: 'top' |
| | | }, |
| | | data: [] |
| | | }, |
| | | { |
| | | name: 'å¹³åå¼', |
| | | type: 'bar', |
| | | label: { |
| | | show: true, |
| | | position: 'top' |
| | | }, |
| | | data: [] |
| | | }, |
| | | ], |
| | | legend2: { |
| | | data: ['å¹³åå¼','ç»å¯¹åå·®'] |
| | | }, |
| | | yAxis2: [{ |
| | | type: 'value', |
| | | min: 0, |
| | | max: 1, |
| | | }], |
| | | echartsSeries2: [ |
| | | { |
| | | name: 'å¹³åå¼', |
| | | type: 'line', |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: (params) => Math.round(params.value * 1000) / 10 + '%' |
| | | }, |
| | | data: [], |
| | | }, |
| | | { |
| | | name: 'ç»å¯¹åå·®', |
| | | type: 'line', |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: (params) => Math.round(params.value * 1000) / 10 + '%' |
| | | }, |
| | | data: [], |
| | | } |
| | | ], |
| | | echartsSeries3: [ |
| | | { |
| | | name: 'æ£æµä¸å¿æ£æµæ°æ®', |
| | | type: 'line', |
| | | data: [] |
| | | } |
| | | ], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getInfo() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | getInfo () { |
| | | this.localData = this.comparisonData.localData === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData.localData |
| | | this.localData = this.localData.map((number, index) => index === 7 ? `${Math.round(number * 100)}%` : number) |
| | | this.echartsSeries3[0].data = this.localData.slice(0, 5) |
| | | this.localULC = this.comparisonData.localULC |
| | | this.localLCL = this.comparisonData.localLCL |
| | | this.localAverage = this.comparisonData.localAverage |
| | | this.localRange = this.comparisonData.localRange |
| | | }, |
| | | getInfo1 () { |
| | | this.echartsSeries1[0].data = [] |
| | | this.supplierData = this.comparisonData1.supplierData === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.supplierData |
| | | this.localData = this.comparisonData1.localData === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.localData |
| | | this.localData = this.localData.map((number, index) => index === 7 ? `${Math.round(number * 100)}%` : number) |
| | | this.echartsSeries3[0].data = this.localData.slice(0, 5) |
| | | this.echartsSeries[0].data = this.supplierData |
| | | this.echartsSeries[1].data = this.localData |
| | | this.absoluteDeviation = this.comparisonData1.absoluteDeviation === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.absoluteDeviation |
| | | this.echartsSeries2[1].data = this.absoluteDeviation |
| | | this.absoluteDeviation = this.absoluteDeviation.map(number => `${Math.round(number * 100)}%`) // ç»å¯¹åå·®ç¾åæ¯è½¬æ¢ |
| | | this.average = this.comparisonData1.average === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.average |
| | | this.echartsSeries2[0].data = this.average |
| | | this.average = this.average.map(number => `${Math.round(number * 100)}%`) // å¹³åå¼ç¾åæ¯è½¬æ¢ |
| | | this.supplierULC = this.comparisonData1.supplierULC === null ? ['', '', '', '', ''] : this.comparisonData1.supplierULC |
| | | this.echartsSeries1[0].data.push(this.supplierULC[0]) // æµéæ°æ®æ åå·®å¯¹æ¯æ±ç¶å¾æ°æ® |
| | | this.supplierLCL = this.comparisonData1.supplierLCL === null ? ['', '', '', '', ''] : this.comparisonData1.supplierLCL |
| | | this.echartsSeries1[1].data.push(this.supplierLCL[0]) // æµéæ°æ®æ åå·®å¯¹æ¯æ±ç¶å¾æ°æ® |
| | | this.supplierAverage = this.comparisonData1.supplierAverage === null ? ['', '', '', '', ''] : this.comparisonData1.supplierAverage |
| | | this.echartsSeries1[2].data.push(this.supplierAverage[0]) // æµéæ°æ®æ åå·®å¯¹æ¯æ±ç¶å¾æ°æ® |
| | | this.supplierRange = this.comparisonData1.supplierRange === null ? ['', '', '', '', ''] : this.comparisonData1.supplierRange |
| | | this.localULC = this.comparisonData1.localULC |
| | | this.echartsSeries1[0].data.push(this.localULC[0]) // æµéæ°æ®æ åå·®å¯¹æ¯æ±ç¶å¾æ°æ® |
| | | this.localLCL = this.comparisonData1.localLCL |
| | | this.echartsSeries1[1].data.push(this.localLCL[0]) // æµéæ°æ®æ åå·®å¯¹æ¯æ±ç¶å¾æ°æ® |
| | | this.localAverage = this.comparisonData1.localAverage |
| | | this.echartsSeries1[2].data.push(this.localAverage[0]) // æµéæ°æ®æ åå·®å¯¹æ¯æ±ç¶å¾æ°æ® |
| | | this.localRange = this.comparisonData1.localRange |
| | | }, |
| | | submitForm () { |
| | | this.$refs['supplierForm'].validate((valid) => { |
| | | if (valid) { |
| | | const params = { |
| | | orderIds: this.selectRow.orderIds, |
| | | itemNames: this.selectRow.itemNames, |
| | | supplierDataList: Object.values(this.supplierForm) |
| | | } |
| | | this.$axios.post(this.$api.dataAnalysis.getRawSupplierCompare, params, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.comparisonData1 = res.data |
| | | this.getInfo1() |
| | | }) |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | resetForm () { |
| | | this.$refs['supplierForm'].resetFields(); |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | .container { |
| | | width: calc(100% - 20px); |
| | | height: calc(100vh - 170px); |
| | | background-color: #fff; |
| | | padding: 10px; |
| | | overflow-y: auto; |
| | | } |
| | | .table { |
| | | width: 100%; |
| | | } |
| | | .thTitle { |
| | | background-color: #e0eaf5; |
| | | padding: 6px 2px; |
| | | } |
| | | .thBack { |
| | | text-align: center; |
| | | background-color: #e0eaf5; |
| | | padding: 2px; |
| | | } |
| | | .thBack2 { |
| | | text-align: center; |
| | | background-color: #e4f2da; |
| | | padding: 2px; |
| | | } |
| | | .tdData { |
| | | padding: 4px; |
| | | text-align: center; |
| | | font-size: 13px; |
| | | width: 10%; |
| | | } |
| | | .inspection-card{ |
| | | width: 100%; |
| | | background: #FFFFFF; |
| | | margin-top: 10px; |
| | | } |
| | | .echartsTitle { |
| | | text-align: center; |
| | | padding-bottom: 10px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <div> |
| | | <div class="echart_size" :id="id" :style="`height:${config.height};width:${config.width}`"></div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | import ResizeListener from 'element-resize-detector'; |
| | | import {iuCharts} from '@/utils/echarts' |
| | | export default { |
| | | props: { |
| | | id: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | config:{ |
| | | type: Object, |
| | | default: () => {} |
| | | }, |
| | | datas: { |
| | | type: Object, |
| | | default: () => {} |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | chart:null, |
| | | } |
| | | }, |
| | | watch: { |
| | | /* 妿å¾è¡¨æ°æ®æ¯åå°è·åçï¼çå¬ç¶ç»ä»¶ä¸çæ°æ®ååï¼éæ°è§¦åEcharts */ |
| | | datas: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.init(); |
| | | }) |
| | | }, |
| | | }, |
| | | }, |
| | | created() { |
| | | this.$nextTick(() => { |
| | | this.init() |
| | | }) |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.windowResizeListener); |
| | | this.chartEleResizeListener(); |
| | | }, |
| | | beforeDestroy() { |
| | | if (!this.chart) { |
| | | return; |
| | | } |
| | | this.chart.dispose(); |
| | | this.chart = null; |
| | | }, |
| | | methods: { |
| | | init() { |
| | | // å®ä¾å对象 |
| | | this.chart = echarts.init(document.getElementById(this.id)) |
| | | this.chart.showLoading({ |
| | | text: 'loading', |
| | | color: '#3A7BFA', |
| | | textColor: '#000', |
| | | maskColor: 'rgba(255, 255, 255, 0.2)', |
| | | zlevel: 0, |
| | | }); |
| | | if (this.config.isLoading) { |
| | | this.chart.hideLoading(); |
| | | switch (this.config.type){ |
| | | case 'bar': |
| | | iuCharts.drawBar(this.chart,this.datas) |
| | | break; |
| | | case 'line': |
| | | iuCharts.drawLine(this.chart,this.datas) |
| | | break; |
| | | case 'pie': |
| | | iuCharts.drawPie(this.chart,this.datas) |
| | | break; |
| | | case 'gauge': |
| | | iuCharts.drawGauge(this.chart,this.datas) |
| | | break; |
| | | case 'pie0': |
| | | iuCharts.drawPie0(this.chart,this.datas) |
| | | default: |
| | | break; |
| | | } |
| | | setTimeout(()=>{ |
| | | this.chart.resize() |
| | | },200) |
| | | } |
| | | }, |
| | | /* 对chartå
ç´ å°ºå¯¸è¿è¡çå¬ï¼å½åçååæ¶åæ¥æ´æ°echartè§å¾ */ |
| | | chartEleResizeListener() { |
| | | const chartInstance = ResizeListener({ |
| | | strategy: 'scroll', |
| | | callOnAdd: true |
| | | }); |
| | | chartInstance.listenTo(this.$el, () => { |
| | | if (!this.chart) return; |
| | | this.chart.resize(); |
| | | }); |
| | | }, |
| | | /* å½çªå£ç¼©æ¾æ¶ï¼echartå¨æè°æ´èªèº«å¤§å° */ |
| | | windowResizeListener() { |
| | | if (!this.chart) return; |
| | | this.chart.resize(); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .echart_size{ |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div id="id" ref="chart" :style="chartStyle"></div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | import ResizeListener from 'element-resize-detector'; |
| | | |
| | | export default { |
| | | name: 'EChart', |
| | | props: { |
| | | options: { |
| | | type: Object, |
| | | default: () => ({}) |
| | | }, |
| | | chartStyle: { |
| | | type: Object, |
| | | default: () => ({ |
| | | height: '80%', |
| | | width: '100%' |
| | | }) |
| | | }, |
| | | dataset: { |
| | | type: Object, |
| | | default: () => {} |
| | | }, |
| | | xAxis: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | yAxis: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | series: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | grid: { |
| | | type: Object, |
| | | default: () => ({}) |
| | | }, |
| | | legend: { |
| | | type: Object, |
| | | default: () => ({}) |
| | | }, |
| | | tooltip: { |
| | | type: Object, |
| | | default: () => ({}) |
| | | }, |
| | | lineColors: { |
| | | type: Array, |
| | | default: () => ['#00BAFF', '#3DE7C9', '#CCEDF0', '#FFB71C', '#FF5A5A'] |
| | | }, |
| | | barColors: { |
| | | type: Array, |
| | | default: () => ['#ff8800', '#3DE7C9', '#CCEDF0', '#FFB71C', '#FF5A5A'] |
| | | }, |
| | | loadingOption: { |
| | | type: Object, |
| | | default: () => ({ |
| | | text: 'æ°æ®å è½½ä¸...', |
| | | color: '#00BAFF', |
| | | textColor: '#000', |
| | | maskColor: 'rgba(255, 255, 255, 0.8)', |
| | | zlevel: 0 |
| | | }) |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | chartInstance: null, |
| | | } |
| | | }, |
| | | watch: { |
| | | options: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | series: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | dataset: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | xAxis: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | grid: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | legend: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | lineColors: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | barColors: { |
| | | deep: true, |
| | | // immediate: true, |
| | | handler(val) { |
| | | this.$nextTick(() => { |
| | | this.renderChart() |
| | | }) |
| | | }, |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.chartInstance = echarts.init(this.$refs.chart) |
| | | this.renderChart() |
| | | window.addEventListener('resize', this.windowResizeListener); |
| | | }, |
| | | beforeDestroy() { |
| | | this.dispose() |
| | | }, |
| | | methods: { |
| | | /* å½çªå£ç¼©æ¾æ¶ï¼echartå¨æè°æ´èªèº«å¤§å° */ |
| | | windowResizeListener() { |
| | | if (!this.chartInstance) return; |
| | | this.dispose() |
| | | this.chartInstance = echarts.init(this.$refs.chart) |
| | | this.renderChart() |
| | | this.chartInstance.resize(); |
| | | }, |
| | | renderChart() { |
| | | const option = { |
| | | backgroundColor: this.options.backgroundColor || '#fff', |
| | | xAxis: this.xAxis, |
| | | yAxis: this.yAxis, |
| | | dataset: this.dataset, |
| | | series: this.series, |
| | | grid: this.grid, |
| | | legend: this.legend, |
| | | tooltip: this.tooltip |
| | | } |
| | | // æ ¹æ®ä¼ å
¥çæ°æ®åé
ç½®åæ°çæå¾è¡¨ |
| | | this.generateChart(option) |
| | | }, |
| | | |
| | | generateChart(option) { |
| | | // é
ç½®æçº¿å¾åæ±ç¶å¾çæ ·å¼ |
| | | if (option.series && option.series.length > 0) { |
| | | option.series.forEach((s, index) => { |
| | | if (s.type === 'line') { |
| | | s.itemStyle = { |
| | | color: this.lineColors[index] || this.lineColors[0] |
| | | } |
| | | s.lineStyle = { |
| | | color: this.lineColors[index] || this.lineColors[0] |
| | | } |
| | | } else if (s.type === 'bar') { |
| | | s.itemStyle = { |
| | | color: this.barColors[index] || this.barColors[0] |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | this.chartInstance.clear() |
| | | |
| | | // 渲æå¾è¡¨ |
| | | this.chartInstance.setOption(option) |
| | | }, |
| | | |
| | | dispose() { |
| | | if (this.chartInstance) { |
| | | window.removeEventListener('resize', this.chartInstance.resize);//鿝å¾è¡¨çå¬äºä»¶ |
| | | this.chartInstance.dispose() |
| | | this.chartInstance = null |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* å¨è¿éå¯ä»¥åæ ·å¼ï¼æ¯å¦è®¾ç½®å¾è¡¨å®¹å¨ç宽度åé«åº¦ */ |
| | | </style> |
| | |
| | | <div class="avatar-wrapper"> |
| | | <img :src="avatar" class="user-avatar" /> |
| | | <span class="userName">{{ nickName }}</span> |
| | | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> |
| | | <div class="avatar-wrapper"> |
| | | <i class="el-icon-caret-bottom" /> |
| | | </div> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <router-link to="/user/profile"> |
| | | <el-dropdown-item>个人ä¸å¿</el-dropdown-item> |
| | | </router-link> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <img |
| | | class="logoout" |
| | | src="@/assets/images/logoout.png" |
| | |
| | | } |
| | | } |
| | | |
| | | .avatar-container { |
| | | margin-right: 30px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | }; |
| | | Vue.prototype.javaApi = process.env.VUE_APP_BASE_API |
| | | ? process.env.VUE_APP_BASE_API |
| | | : "http://192.168.0.170:8002"; |
| | | : "http://192.168.1.36:8002"; |
| | | Vue.prototype.checkPermi = checkPermi; |
| | | Vue.prototype.uploadHeader = { |
| | | Authorization: "Bearer " + getToken(), |
| | |
| | | import axios from 'axios' |
| | | import {Loading, Message} from 'element-ui' |
| | | import { saveAs } from 'file-saver' |
| | | import { getToken } from '@/utils/auth' |
| | | import errorCode from '@/utils/errorCode' |
| | | import axios from "axios"; |
| | | import { Loading, Message } from "element-ui"; |
| | | import { saveAs } from "file-saver"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import errorCode from "@/utils/errorCode"; |
| | | import { blobValidate } from "@/utils/ruoyi"; |
| | | |
| | | const baseURL = process.env.VUE_APP_BASE_API |
| | | const baseURL = process.env.VUE_APP_BASE_API; |
| | | let downloadLoadingInstance; |
| | | |
| | | export default { |
| | | name(name, isDelete = true) { |
| | | var url = baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete |
| | | var url = |
| | | baseURL + |
| | | "/common/download?fileName=" + |
| | | encodeURIComponent(name) + |
| | | "&delete=" + |
| | | isDelete; |
| | | axios({ |
| | | method: 'get', |
| | | method: "get", |
| | | url: url, |
| | | responseType: 'blob', |
| | | headers: { 'Authorization': 'Bearer ' + getToken() } |
| | | responseType: "blob", |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | }).then((res) => { |
| | | const isBlob = blobValidate(res.data); |
| | | if (isBlob) { |
| | | const blob = new Blob([res.data]) |
| | | this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) |
| | | const blob = new Blob([res.data]); |
| | | this.saveAs(blob, decodeURIComponent(res.headers["download-filename"])); |
| | | } else { |
| | | this.printErrMsg(res.data); |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | resource(resource) { |
| | | var url = baseURL + "/common/download/resource?resource=" + encodeURIComponent(resource); |
| | | var url = |
| | | baseURL + |
| | | "/common/download/resource?resource=" + |
| | | encodeURIComponent(resource); |
| | | axios({ |
| | | method: 'get', |
| | | method: "get", |
| | | url: url, |
| | | responseType: 'blob', |
| | | headers: { 'Authorization': 'Bearer ' + getToken() } |
| | | responseType: "blob", |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | }).then((res) => { |
| | | const isBlob = blobValidate(res.data); |
| | | if (isBlob) { |
| | | const blob = new Blob([res.data]) |
| | | this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) |
| | | const blob = new Blob([res.data]); |
| | | this.saveAs(blob, decodeURIComponent(res.headers["download-filename"])); |
| | | } else { |
| | | this.printErrMsg(res.data); |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | zip(url, name) { |
| | | var url = baseURL + url |
| | | downloadLoadingInstance = Loading.service({ text: "æ£å¨ä¸è½½æ°æ®ï¼è¯·ç¨å", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }) |
| | | var url = baseURL + url; |
| | | downloadLoadingInstance = Loading.service({ |
| | | text: "æ£å¨ä¸è½½æ°æ®ï¼è¯·ç¨å", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | axios({ |
| | | method: 'get', |
| | | method: "get", |
| | | url: url, |
| | | responseType: 'blob', |
| | | headers: { 'Authorization': 'Bearer ' + getToken() } |
| | | }).then((res) => { |
| | | const isBlob = blobValidate(res.data); |
| | | if (isBlob) { |
| | | const blob = new Blob([res.data], { type: 'application/zip' }) |
| | | this.saveAs(blob, name) |
| | | } else { |
| | | this.printErrMsg(res.data); |
| | | } |
| | | downloadLoadingInstance.close(); |
| | | }).catch((r) => { |
| | | console.error(r) |
| | | Message.error('ä¸è½½æä»¶åºç°é误ï¼è¯·è系管çåï¼') |
| | | downloadLoadingInstance.close(); |
| | | responseType: "blob", |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | }) |
| | | .then((res) => { |
| | | const isBlob = blobValidate(res.data); |
| | | if (isBlob) { |
| | | const blob = new Blob([res.data], { type: "application/zip" }); |
| | | this.saveAs(blob, name); |
| | | } else { |
| | | this.printErrMsg(res.data); |
| | | } |
| | | downloadLoadingInstance.close(); |
| | | }) |
| | | .catch((r) => { |
| | | console.error(r); |
| | | Message.error("ä¸è½½æä»¶åºç°é误ï¼è¯·è系管çåï¼"); |
| | | downloadLoadingInstance.close(); |
| | | }); |
| | | }, |
| | | saveAs(text, name, opts) { |
| | | saveAs(text, name, opts); |
| | | if (typeof text === "string") { |
| | | // è·¯å¾ä¸è½½ |
| | | saveAs(text, name, opts); |
| | | Message.success("æ°æ®å¯¼åºæå"); |
| | | } else { |
| | | // æµä¸è½½ |
| | | blobToText(text) |
| | | .then((result) => { |
| | | Message.error(result.msg); |
| | | }) |
| | | .catch(() => { |
| | | saveAs(text, name, opts); |
| | | Message.success("æ°æ®å¯¼åºæå"); |
| | | }); |
| | | } |
| | | }, |
| | | async printErrMsg(data) { |
| | | const resText = await data.text(); |
| | | const rspObj = JSON.parse(resText); |
| | | const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] |
| | | const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"]; |
| | | Message.error(errMsg); |
| | | } |
| | | } |
| | | }, |
| | | }; |
| | | |
| | | // å°blobè½¬æææ¬ |
| | | function blobToText(blob) { |
| | | return new Promise((resolve, reject) => { |
| | | const fileReader = new FileReader(); |
| | | fileReader.readAsText(blob); |
| | | fileReader.onload = function () { |
| | | try { |
| | | const result = JSON.parse(this.result); |
| | | if (result && result["code"] !== 200) { |
| | | resolve(result); |
| | | } else { |
| | | reject(); |
| | | } |
| | | } catch (e) { |
| | | reject(); |
| | | } |
| | | }; |
| | | }); |
| | | } |
| | |
| | | path: "inspection", |
| | | component: () => import("@/views/business/inspectionTask/inspection"), |
| | | name: "inspection", |
| | | meta: { title: "æ£éªå详æ
", activeMenu: "/business/inspectionTask" }, |
| | | meta: { title: "æ£éªå详æ
", activeMenu: "/business/inspectionTask", keepAlive: false }, |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | </div> |
| | | </template> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="columns" |
| | | :currentChange="rowClick" |
| | | :height="'25vh'" |
| | | :highlightCurrentRow="true" |
| | | :isSelection="false" |
| | | :rowStyle="tableRowStyle" |
| | | :table-data="tableData" |
| | | rowKey="id" |
| | | style="margin-top: 18px; padding: 0 15px;" |
| | | > |
| | | <template v-slot:consumablesTypeSlot="{row}"> |
| | | <limsTable :column="columns" :currentChange="rowClick" :height="'25vh'" :highlightCurrentRow="true" |
| | | :isSelection="false" :rowStyle="tableRowStyle" :table-data="tableData" rowKey="id" |
| | | style="margin-top: 18px; padding: 0 15px;"> |
| | | <template v-slot:consumablesTypeSlot="{ row }"> |
| | | {{ findType(row.consumablesType) }} |
| | | </template> |
| | | <template v-slot:operation="scope"> |
| | |
| | | </limsTable> |
| | | <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 :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> |
| | | </template> |
| | |
| | | <div> |
| | | <ConsumableProject ref="consumableProject"></ConsumableProject> |
| | | </div> |
| | | <Edit ref="editRef" :contentsId="contentsId" @submit="fetchData"/> |
| | | <Edit ref="editRef" :contentsId="contentsId" @submit="fetchData" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | dicts: ["consumables_type"], |
| | | components: { |
| | | TableCard, limsTable,Edit, ConsumableProject |
| | | TableCard, limsTable, Edit, ConsumableProject |
| | | }, |
| | | props: { |
| | | contentsId: { |
| | |
| | | }, |
| | | methods: { |
| | | async fetchData() { |
| | | procurementSuppliesList({ contentId: this.contentsId}).then(res => { |
| | | procurementSuppliesList({ contentId: this.contentsId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | if (this.tableData.length > 0) { |
| | |
| | | this.$nextTick() |
| | | let res |
| | | const e = this.options.find(item => item.value == val) |
| | | if(e) { |
| | | if (e) { |
| | | res = e.label |
| | | } else { |
| | | res = '-' |
| | |
| | | this.$refs.editRef.openDialog(row); |
| | | }, |
| | | async exportExcel() { |
| | | exportProcurementSuppliesList({parentId:this.contentsId}).then(res => { |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | exportProcurementSuppliesList({ parentId: this.contentsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'èæå表.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | handleCurrent() { |
| | |
| | | handleSize() { |
| | | }, |
| | | handleDelete(row) { |
| | | deleteProcurementSuppliesList({ id:row.id }).then(res => { |
| | | deleteProcurementSuppliesList({ id: row.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.fetchData() |
| | |
| | | rowClick(row) { |
| | | this.$refs.consumableProject.fetchListId(row) |
| | | }, |
| | | tableRowStyle({row}) { |
| | | if(row.currentAmount <= row.lowerLimit) { |
| | | tableRowStyle({ row }) { |
| | | if (row.currentAmount <= row.lowerLimit) { |
| | | return { background: '#ffcaca' } |
| | | } else { |
| | | return {} |
| | |
| | | </el-button> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="storageTableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 10px;margin-bottom: 16px" |
| | | :page="page" |
| | | @pagination="pagination"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 20em)'" :table-data="storageTableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | |
| | | <!-- ç¼è¾-æ°å¢å¼¹æ¡ --> |
| | | <el-dialog :before-close="handleClose" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" :title="title" |
| | | :visible.sync="dialogVisible" width="70%"> |
| | | <el-dialog :before-close="handleClose" :close-on-click-modal="false" :close-on-press-escape="false" :title="title" |
| | | :visible.sync="dialogVisible" width="70%"> |
| | | <!-- å
¥åºå --> |
| | | <div> |
| | | <div style="display: flex; align-items: center"> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å
¥åºæ¥æ"> |
| | | <el-date-picker v-model="form.storageTime" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | <el-date-picker v-model="form.storageTime" 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="å
¥åºäºº"> |
| | | <el-select v-model="form.storageUser" size="small" style="width: 100%"> |
| | | <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å
¥åºäºº"> |
| | | <el-select v-model="form.storageUser" size="small" style="width: 100%"> |
| | | <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å
¥åºè¯´æ"> |
| | | <el-input v-model="form.remark" :rows="2" placeholder="请è¾å
¥å
容" type="textarea"> |
| | |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | <el-button size="mini" type="primary" |
| | | @click="addTableData">æ·»å |
| | | <el-button size="mini" type="primary" @click="addTableData">æ·»å |
| | | </el-button> |
| | | </div> |
| | | <el-table :data="consumables" style="margin-top: 10px"> |
| | |
| | | label: 'ç»è®°äºº', |
| | | prop: 'registrantName', |
| | | minWidth: '160' |
| | | },{ |
| | | }, { |
| | | label: 'ç»è®°æ¥æ', |
| | | prop: 'registrantTime', |
| | | minWidth: '100' |
| | |
| | | // æ·»å è¡¨æ ¼æ°æ® |
| | | addTableData() { |
| | | this.$nextTick() |
| | | console.log('this.consumableOptions',this.consumableOptions) |
| | | console.log('this.consumableOptions', this.consumableOptions) |
| | | this.consumableOptions.forEach(item => { |
| | | if (item.id === this.formTwo.id) { |
| | | this.consumables.push({ |
| | |
| | | this.consumables.splice(index, 1); |
| | | }, |
| | | // æå¼å¼¹æ¡ |
| | | addOrUpdateStore(type,row) { |
| | | addOrUpdateStore(type, row) { |
| | | if (type === 'edit') { |
| | | this.dialogType = "update"; |
| | | selectStoreById({id:row.id}).then(res => { |
| | | selectStoreById({ id: row.id }).then(res => { |
| | | if (res.code === 201) return |
| | | this.consumables = res.data.consumables |
| | | this.form = {...res.data.store} |
| | | this.form = { ...res.data.store } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | |
| | | this.dialogVisible = true; |
| | | }, |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | storeList({...this.page,...this.searchForm}).then(res => { |
| | | storeList({ ...this.page, ...this.searchForm }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.storageTableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }, |
| | | // 导åºexcel |
| | | async importExcel() { |
| | | exportProcurementSuppliesStoreExcel({parentId:this.contentsId}).then(res => { |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | exportProcurementSuppliesStoreExcel({ parentId: this.contentsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'èæå
¥åº.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | handleClose() { |
| | |
| | | // è·åææç¨æ· |
| | | getUserList() { |
| | | selectUserCondition().then((res) => { |
| | | this.users = res.data; |
| | | }); |
| | | this.users = res.data; |
| | | }); |
| | | }, |
| | | async fetchListOptions() { |
| | | procurementSuppliesList({contentsId: this.contentsId}).then(res => { |
| | | procurementSuppliesList({ contentsId: this.contentsId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.consumableOptions = res.data.records |
| | | } |
| | |
| | | |
| | | }, |
| | | // å é¤ |
| | | deleteStore (row) { |
| | | deleteStore(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | console.log('row>>>>>>>>>>>>>>s',row) |
| | | console.log('row>>>>>>>>>>>>>>s', row) |
| | | deleteStore({ |
| | | id:row.id, |
| | | consumablesId:row.consumablesId |
| | | id: row.id, |
| | | consumablesId: row.consumablesId |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | |
| | | .el-dialog { |
| | | margin: 6vh auto 50px !important; |
| | | } |
| | | |
| | | .el-dialog__body { |
| | | max-height: 42em; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .input-form { |
| | | display: flex; |
| | | margin: 10px 0; |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <form-dia ref="formDia" v-if="formDia" @closeDia="closeDia"></form-dia> |
| | | </div> |
| | |
| | | async getTableData() { |
| | | this.tableLoading = true; |
| | | selectQualifiedSupplierManagementPage(this.searchForm).then(res => { |
| | | this.tableLoading = false; |
| | | if(res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total |
| | | } |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // éç½® |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.pagination.current = 1 |
| | | this.pagination.pageSize = 20 |
| | | this.searchForm.supplierName = '' |
| | |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.getTableData() |
| | | }, |
| | | // å é¤è®°å½ |
| | | deleteRow (row) { |
| | | deleteRow(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æä»¶, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delSupplierManagement({supplierManagementId:row.supplierManagementId}).then(res => { |
| | | delSupplierManagement({ supplierManagementId: row.supplierManagementId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿åï¼') |
| | | this.getTableData() |
| | |
| | | }, |
| | | // 导åºexcel |
| | | async exportExcel() { |
| | | exportSupplierManagement({deviceId:this.clickNodeVal.value}).then(res => { |
| | | exportSupplierManagement({ deviceId: this.clickNodeVal.value }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'åæ ¼ä¾åºå.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | } |
| | | }, |
| | |
| | | <el-table-column fixed="right" label="æä½" width="140" align="center"> |
| | | <template v-slot="scope"> |
| | | <el-button v-if="!isDepartment || scope.row.currentState === 'å
³é'" size="small" type="text" |
| | | @click="handleViewClick(scope.row, 'view')">æ¥ç |
| | | @click="handleViewClick(scope.row, 'view')">æ¥ç |
| | | </el-button> |
| | | <el-button v-if="isDepartment && scope.row.currentState !== 'å
³é'" size="small" type="text" |
| | | @click="handleViewClick(scope.row, 'edit')">ç¼è¾ |
| | | @click="handleViewClick(scope.row, 'edit')">ç¼è¾ |
| | | </el-button> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导åº</el-button> |
| | | <el-button v-if="isDepartment" size="small" style="color: #f56c6c" type="text" @click="deletePost(scope.row)">å é¤</el-button> |
| | | <el-button v-if="isDepartment" size="small" style="color: #f56c6c" type="text" |
| | | @click="deletePost(scope.row)">å é¤</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" |
| | | background |
| | | style="margin-top: 10px" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" background style="margin-top: 10px" |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <!-- æ°å¢å²ä½èè´£ --> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" |
| | | title="æ°å¢å²ä½èè´£" |
| | | width="50%" @close="resetForm"> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="æ°å¢å²ä½èè´£" |
| | | width="50%" @close="resetForm"> |
| | | <el-steps :active="currentStep" align-center finish-status="success"> |
| | | <el-step v-for="(v, i) in steps" :key="i" :title="v" style="cursor:pointer" |
| | | @click.native="choiceStep(i)"></el-step> |
| | | @click.native="choiceStep(i)"></el-step> |
| | | </el-steps> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="130px"> |
| | | <div> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="å²ä½åç§°ï¼" prop="postName"> |
| | | <el-input v-model="form.postName" :disabled="currentStep !== 0 || operationType === 'view'" |
| | | size="small"></el-input> |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å·¥ä½ç®æ ï¼" prop="jobObjective"> |
| | | <el-input v-model="form.jobObjective" :disabled="currentStep !== 0 || operationType === 'view'" |
| | | size="small" |
| | | type="textarea"></el-input> |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="å²ä½èè´£ï¼" prop="jobResponsibilities"> |
| | | <el-input v-model="form.jobResponsibilities" :disabled="currentStep !== 0 || operationType === 'view'" |
| | | size="small" |
| | | type="textarea"></el-input> |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="currentStep === 0 || operationType === 'view'" :span="12"> |
| | | <el-form-item |
| | | :rules="[{ required: currentStep === 0, message: 'è¯·éæ©ä»»è人', trigger: 'change' }]" |
| | | label="ä»»è人ï¼" |
| | | prop="incumbentId"> |
| | | <el-select v-model="form.incumbentId" :disabled="operationType === 'view'" clearable |
| | | filterable |
| | | placeholder="è¯·éæ©ä»»è人" size="small" style="width: 100%;"> |
| | | <el-form-item :rules="[{ required: currentStep === 0, message: 'è¯·éæ©ä»»è人', trigger: 'change' }]" |
| | | label="ä»»è人ï¼" prop="incumbentId"> |
| | | <el-select v-model="form.incumbentId" :disabled="operationType === 'view'" clearable filterable |
| | | placeholder="è¯·éæ©ä»»è人" size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="currentStep === 1 || operationType === 'view'" :span="12"> |
| | | <el-form-item |
| | | :rules="[{ required: currentStep === 1, message: 'è¯·éæ©ä¸»ç®¡', trigger: 'blur' }]" |
| | | label="主管ï¼" |
| | | <el-form-item :rules="[{ required: currentStep === 1, message: 'è¯·éæ©ä¸»ç®¡', trigger: 'blur' }]" label="主管ï¼" |
| | | prop="supervisorId"> |
| | | <el-select v-model="form.supervisorId" :disabled="currentStep !== 1 || operationType === 'view'" |
| | | clearable filterable |
| | | placeholder="è¯·éæ©ä¸»ç®¡" size="small" style="width: 100%;"> |
| | | clearable filterable placeholder="è¯·éæ©ä¸»ç®¡" size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="currentStep !== 0 && currentStep !== 3" @click="submitForm('3reject')">驳å</el-button> |
| | | <el-button v-if="currentStep === 0" @click="submitForm('2save')">ä¿å</el-button> |
| | | <el-button v-if="currentStep !== 3" type="primary" |
| | | @click="submitForm('1submit')">{{ currentStep === 0 ? 'æäº¤' : 'éè¿' }}</el-button> |
| | | <el-button v-if="currentStep !== 3" type="primary" @click="submitForm('1submit')">{{ currentStep === 0 ? 'æäº¤' : |
| | | 'éè¿' |
| | | }}</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | personJobResponsibilitiesSave, |
| | | personJobResponsibilitiesSelect |
| | | } from "@/api/cnas/personal/personJobResponsibilities"; |
| | | import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; |
| | | import {mapGetters} from "vuex"; |
| | | import { selectUserCondition } from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | departmentId: this.search.userId, |
| | | size: this.search.size, |
| | | current: this.search.current, |
| | | }: { |
| | | } : { |
| | | userName: this.userName, |
| | | userId: this.search.userId, |
| | | size: this.search.size, |
| | |
| | | }, |
| | | // ä¸è½½å²ä½èè´£ |
| | | downLoadPost(row) { |
| | | exportPersonJobResponsibilities({id:row.id}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.incumbentName+'-å²ä½èè´£'+'.docx'); |
| | | this.$message.success('å¯¼åºæå') |
| | | exportPersonJobResponsibilities({ id: row.id }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.incumbentName + '-å²ä½èè´£' + '.docx'); |
| | | }) |
| | | }, |
| | | // å é¤å²ä½èè´£ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | personJobResponsibilitiesDelete({id: row.id}).then(res => { |
| | | personJobResponsibilitiesDelete({ id: row.id }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('å 餿å'); |
| | | this.getPostList(this.departId); |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | <template> |
| | | <div> |
| | | <div style="text-align: right;margin-bottom: 10px"> |
| | | <!-- <el-button size="small" @click="$emit('goBackList')">è¿å</el-button>--> |
| | | <!-- <el-button size="small" @click="$emit('goBackList')">è¿å</el-button>--> |
| | | <el-button size="small" type="primary" @click="downPerson">ä¸è½½æ¡£æ¡</el-button> |
| | | <el-button size="small" type="primary" @click="dialogVisible = true">人ååç±»</el-button> |
| | | <el-button :loading="saveLoading" size="small" type="primary" @click="save">ä¿å</el-button> |
| | |
| | | <div style="display: flex;flex-direction: row;"> |
| | | <div style="width: 12em"> |
| | | <el-image :src="javaApi + '/img/' + form.pictureUrl" fit="fill" |
| | | style="width:100%;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 6px;margin-top: 10px;"> |
| | | style="width:100%;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 6px;margin-top: 10px;"> |
| | | <div slot="error" class="image-slot"> |
| | | <i class="el-icon-picture-outline" style="font-size: 40px;"></i> |
| | | </div> |
| | | </el-image> |
| | | <el-image :src="javaApi + '/img/' + form.signatureUrl" fit="fill" |
| | | style="width:80%;height: 50px;border: 1px solid #000;border-radius: 10px;margin-left: 22px;margin-top: 20px;"> |
| | | style="width:80%;height: 50px;border: 1px solid #000;border-radius: 10px;margin-left: 22px;margin-top: 20px;"> |
| | | <div slot="error" class="image-slot"> |
| | | <i class="el-icon-picture-outline" style="font-size: 40px;"></i> |
| | | </div> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æå±é¨é¨"> |
| | | <el-cascader v-model="form.departLimsId" :options="department" :props="{ label: 'name', value: 'id',checkStrictly: true }" filterable style="width: 100%;"></el-cascader> |
| | | <el-cascader v-model="form.departLimsId" :options="department" |
| | | :props="{ label: 'name', value: 'id', checkStrictly: true }" filterable |
| | | style="width: 100%;"></el-cascader> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="å
¥é墿¶é´"> |
| | | <el-date-picker v-model="form.groupTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="工使¶é´"> |
| | | <el-date-picker v-model="form.workingTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="ååå°ææ¶é´"> |
| | | <el-date-picker v-model="form.contractLifeTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="åºçæ¥æ"> |
| | | <el-date-picker v-model="form.dateBirth" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | @change="getAge" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | @change="getAge" style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å¹´é¾"> |
| | | <el-input-number v-model="form.age" :max="130" :min="1" |
| | | controls-position="right" size="small" style="width: 99%;"></el-input-number> |
| | | <el-input-number v-model="form.age" :max="130" :min="1" controls-position="right" size="small" |
| | | style="width: 99%;"></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="è¯ä»¶æææ"> |
| | | <el-date-picker v-model="form.validityPeriod" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.validityPeriod" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="å
¥å
/墿¶é´"> |
| | | <el-date-picker v-model="form.dumplingTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.dumplingTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ¯ä¸æ¶é´1"> |
| | | <el-date-picker v-model="form.graduationTime1" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.graduationTime1" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="æ¯ä¸æ¶é´2"> |
| | | <el-date-picker v-model="form.graduationTime2" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.graduationTime2" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="ç»è®°æ¶é´"> |
| | | <el-date-picker v-model="form.lastUpdateTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.lastUpdateTime" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-form-item label="个人ç
§ç"> |
| | | <el-input v-model="form.pictureUrl" disabled size="small"> |
| | | <el-button v-if="form.pictureUrl" slot="append" icon="el-icon-delete-solid" |
| | | @click="deleteFile(form.pictureUrl, 'pictureUrl')"></el-button> |
| | | @click="deleteFile(form.pictureUrl, 'pictureUrl')"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-upload ref="upload" :action="action" |
| | | :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'pictureUrl')" |
| | | :show-file-list="false" |
| | | style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-upload ref="upload" :action="action" :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'pictureUrl')" |
| | | :show-file-list="false" style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-button slot="trigger" class="uploadFile" size="mini" type="primary">ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | <el-button v-if="form.pictureUrl" class="uploadFile" size="mini" |
| | | type="primary" @click="downloadFile(form.pictureUrl)">ä¸è½½</el-button> |
| | | <el-button v-if="form.pictureUrl" class="uploadFile" size="mini" type="primary" |
| | | @click="downloadFile(form.pictureUrl)">ä¸è½½</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | |
| | | <el-form-item label="çµåç¾å"> |
| | | <el-input v-model="form.signatureUrl" disabled size="small"> |
| | | <el-button v-if="form.signatureUrl" slot="append" icon="el-icon-delete-solid" |
| | | @click="deleteFile(form.signatureUrl, 'signatureUrl')"></el-button> |
| | | @click="deleteFile(form.signatureUrl, 'signatureUrl')"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-upload ref="upload" :action="action" |
| | | :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'signatureUrl')" |
| | | :show-file-list="false" |
| | | style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-upload ref="upload" :action="action" :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'signatureUrl')" |
| | | :show-file-list="false" style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-button slot="trigger" class="uploadFile" size="small" type="primary">ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | <el-button v-if="form.signatureUrl" class="uploadFile" size="small" |
| | | type="primary" @click="downloadFile(form.signatureUrl)">ä¸è½½</el-button> |
| | | <el-button v-if="form.signatureUrl" class="uploadFile" size="small" type="primary" |
| | | @click="downloadFile(form.signatureUrl)">ä¸è½½</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="è¯ä¹¦èµæ" > |
| | | <el-form-item label="è¯ä¹¦èµæ"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" @click="annexAdd(0)">æ°å¢</el-button> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" |
| | | @click="annexAdd(0)">æ°å¢</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <lims-table :tableData="annexList" :column="columnData2" style="width: 96%;margin-left: 34px" |
| | | height="200" :tableLoading="tableLoading2"></lims-table> |
| | | <lims-table :tableData="annexList" :column="columnData2" style="width: 96%;margin-left: 34px" height="200" |
| | | :tableLoading="tableLoading2"></lims-table> |
| | | <el-row style="margin-top: 10px"> |
| | | <el-col :span="20"> |
| | | <el-form-item label="éä»¶èµæ" > |
| | | <el-form-item label="éä»¶èµæ"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-upload ref='upload' |
| | | :action="fileAction" |
| | | :auto-upload="true" :data="{userId: clickNodeVal.userId}" |
| | | :before-upload="fileBeforeUpload" |
| | | :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-upload ref='upload' :action="fileAction" :auto-upload="true" :data="{ userId: clickNodeVal.userId }" |
| | | :before-upload="fileBeforeUpload" :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" type="primary">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </el-col> |
| | | </el-row> |
| | | <lims-table :tableData="tableData" :column="columnData" style="width: 96%;float: right;" |
| | | height="200" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="columnData" style="width: 96%;float: right;" height="200" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | <el-row style="margin-top: 10px"> |
| | | <el-col :span="20"> |
| | | <el-form-item label="å·¥ä½ç»å" > |
| | | <el-form-item label="å·¥ä½ç»å"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" @click="annexAdd1('add')">æ°å¢</el-button> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" |
| | | @click="annexAdd1('add')">æ°å¢</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table :data="tableData1" border height="200" style="width: 96%;float: right;" v-loading="tableLoading1"> |
| | |
| | | </el-table-column> |
| | | <el-table-column align="center" label="æä½"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="mini" @click="annexAdd1('edit',scope.row)">ç¼è¾</el-button> |
| | | <el-button type="text" size="mini" @click="deleteAnnex1(scope.row)" style="color: #f56c6c">å é¤</el-button> |
| | | <el-button type="text" size="mini" @click="annexAdd1('edit', scope.row)">ç¼è¾</el-button> |
| | | <el-button type="text" size="mini" @click="deleteAnnex1(scope.row)" |
| | | style="color: #f56c6c">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-col> |
| | | <el-col :span="20" style="text-align: left;"> |
| | | <el-checkbox-group v-model="checkList"> |
| | | <el-checkbox v-for="v in dict.type.personnl_type" :key="v.value" |
| | | :label="v.value"></el-checkbox> |
| | | <el-checkbox v-for="v in dict.type.personnl_type" :key="v.value" :label="v.value"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </el-dialog> |
| | | |
| | | <!-- æ°å¢éä»¶èµæ --> |
| | | <el-dialog :before-close="handleClose" :title="title" :visible.sync="dialogVisible1" width="40%" @open="getComparisonList"> |
| | | <el-dialog :before-close="handleClose" :title="title" :visible.sync="dialogVisible1" width="40%" |
| | | @open="getComparisonList"> |
| | | <el-form ref="annex" :model="annex" :rules="rules" label-width="100px"> |
| | | <el-row> |
| | | <el-col :span="16"> |
| | |
| | | <el-col :span="16"> |
| | | <el-form-item label="æææ" prop="periodValidity"> |
| | | <el-input v-model="annex.periodValidity" clearable size="small"></el-input> |
| | | <!-- <el-date-picker v-model="annex.periodValidity" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small"--> |
| | | <!-- style="width: 99%;" type="date" value-format="yyyy-MM-dd">--> |
| | | <!-- </el-date-picker>--> |
| | | <!-- <el-date-picker v-model="annex.periodValidity" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small"--> |
| | | <!-- style="width: 99%;" type="date" value-format="yyyy-MM-dd">--> |
| | | <!-- </el-date-picker>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-row style="margin-top: 15px"> |
| | | <el-col :span="16"> |
| | | <el-form-item label="æä»¶"> |
| | | <el-upload |
| | | :action="action" |
| | | :before-upload="beforeAvatarUpload" |
| | | :headers="uploadHeader" |
| | | :on-success="(response,file,fileList) => onSuccess(response, file, fileList, 'fileName')" |
| | | <el-upload :action="action" :before-upload="beforeAvatarUpload" :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'fileName')" |
| | | :show-file-list="false"> |
| | | <span v-if="annex.fileName">{{annex.fileName}}</span> |
| | | <!-- <img v-if="imageUrl" :src="imageUrl" class="avatar">--> |
| | | <span v-if="annex.fileName">{{ annex.fileName }}</span> |
| | | <!-- <img v-if="imageUrl" :src="imageUrl" class="avatar">--> |
| | | <i v-else class="el-icon-upload avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | |
| | | <el-row> |
| | | <el-col :span="16"> |
| | | <el-form-item label="å·¥ä½ç»å" prop="idNumber"> |
| | | <el-input type="textarea" v-model="annex2.workExperience" clearable size="small" style="width: 100%;"></el-input> |
| | | <el-input type="textarea" v-model="annex2.workExperience" clearable size="small" |
| | | style="width: 100%;"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | label: 'è¯ä»¶å·', |
| | | prop: 'idNumber', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: 'åè¯åä½', |
| | | prop: 'issueUnit', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: 'æä»¶åç§°', |
| | | prop: 'fileName', |
| | | minWidth: '200px' |
| | | },{ |
| | | }, { |
| | | label: '级å«', |
| | | prop: 'level', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: 'æææ', |
| | | prop: 'periodValidity', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: 'æ·»å æ¶é´', |
| | | prop: 'createTime', |
| | | minWidth: '150px' |
| | |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.annexAdd(1,row) |
| | | this.annexAdd(1, row) |
| | | } |
| | | }, |
| | | { |
| | |
| | | isSave: false, |
| | | } |
| | | }, |
| | | components: {limsTable, fileDownload}, |
| | | components: { limsTable, fileDownload }, |
| | | created() { |
| | | this.init() |
| | | this.searchTableList() |
| | |
| | | }, |
| | | methods: { |
| | | // ä¸è½½æ¡£æ¡ |
| | | downPerson(){ |
| | | exportPersonBasicInfoById({id: this.clickNodeVal.userId}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | downPerson() { |
| | | exportPersonBasicInfoById({ id: this.clickNodeVal.userId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'äººåæ¡£æ¡.docx'); |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // ä¸ä¼ éªè¯ |
| | |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | onError(err, file, fileList, type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response, ) { |
| | | handleSuccessUp(response,) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | |
| | | } |
| | | }, |
| | | // æ¥è¯¢éä»¶å表 |
| | | searchTableList () { |
| | | searchTableList() { |
| | | this.tableLoading = true |
| | | getBasicInfoFileList({userId: this.clickNodeVal.userId}).then(res => { |
| | | getBasicInfoFileList({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.tableLoading = false |
| | | this.tableData = res.data |
| | | }).catch(err => { |
| | |
| | | }) |
| | | }, |
| | | // ä¸è½½ |
| | | upload (row) { |
| | | upload(row) { |
| | | let url = ''; |
| | | if(row.type==1){ |
| | | url = this.javaApi+'/img/'+row.fileUrl |
| | | fileDownload.downloadIamge(url,row.fileName) |
| | | }else{ |
| | | url = this.javaApi+'/word/'+row.fileUrl |
| | | if (row.type == 1) { |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | fileDownload.downloadIamge(url, row.fileName) |
| | | } else { |
| | | url = this.javaApi + '/word/' + row.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | |
| | | } |
| | | }, |
| | | // å é¤ |
| | | delete (row) { |
| | | delete(row) { |
| | | this.$confirm('æ¤æä½å°å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delBasicInfoFileList({basicInfoFileId: row.basicInfoFileId}).then(res => { |
| | | delBasicInfoFileList({ basicInfoFileId: row.basicInfoFileId }).then(res => { |
| | | this.tableLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.searchTableList(); |
| | |
| | | }) |
| | | }, |
| | | // æå¼å·¥ä½ç»åæ¢åµ |
| | | annexAdd1 (type, row) { |
| | | annexAdd1(type, row) { |
| | | this.operationType = type |
| | | if (type === 'edit') { |
| | | this.basicInfoWorkId = row.basicInfoWorkId |
| | |
| | | this.dialogVisible2 = true |
| | | }, |
| | | // æäº¤å·¥ä½ç»å |
| | | submitForm2 () { |
| | | submitForm2() { |
| | | const params = { |
| | | workExperience: this.annex2.workExperience, |
| | | userId: this.clickNodeVal.userId, |
| | |
| | | } |
| | | }, |
| | | // å
³éå·¥ä½ç»åå¼¹æ¡ |
| | | handleClose2 () { |
| | | handleClose2() { |
| | | this.dialogVisible2 = false |
| | | this.annex2.workExperience = '' |
| | | }, |
| | | // å é¤å·¥ä½ç»å |
| | | deleteAnnex1 (row) { |
| | | deleteAnnex1(row) { |
| | | this.$confirm('æ¤æä½å°å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading1 = true |
| | | delBasicInfoWorkList({basicInfoWorkId: row.basicInfoWorkId}).then(res => { |
| | | delBasicInfoWorkList({ basicInfoWorkId: row.basicInfoWorkId }).then(res => { |
| | | this.tableLoading1 = false |
| | | this.$message.success('å 餿å') |
| | | this.searchTableList2(); |
| | |
| | | }); |
| | | }, |
| | | // æ¥è¯¢å·¥ä½ç»åå表 |
| | | searchTableList2 () { |
| | | searchTableList2() { |
| | | this.tableLoading1 = true |
| | | getBasicInfoWorkList({userId: this.clickNodeVal.userId}).then(res => { |
| | | getBasicInfoWorkList({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.tableLoading1 = false |
| | | this.tableData1 = res.data |
| | | }).catch(err => { |
| | |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | annexAdd(type,row) { |
| | | if(type === 1) { |
| | | annexAdd(type, row) { |
| | | if (type === 1) { |
| | | this.title = 'ç¼è¾éä»¶èµæ' |
| | | this.addOrupdate = 1 |
| | | getAnnex({id: row.id}).then(res => { |
| | | getAnnex({ id: row.id }).then(res => { |
| | | this.annex = res.data |
| | | this.imageUrl = this.javaApi + '/img/' + res.data.fileName |
| | | }) |
| | | }else { |
| | | } else { |
| | | this.title = 'æ°å¢éä»¶èµæ' |
| | | this.addOrupdate = 2 |
| | | } |
| | |
| | | }) |
| | | }, |
| | | addAnnex() { |
| | | if(this.annex.fileName == "" || this.annex.fileName == null || this.annex.fileName == undefined) { |
| | | if (this.annex.fileName == "" || this.annex.fileName == null || this.annex.fileName == undefined) { |
| | | this.$message.error("请ä¸ä¼ æä»¶") |
| | | return |
| | | } |
| | | this.annex.userId = this.clickNodeVal.userId |
| | | if(this.addOrupdate === 1) { |
| | | if (this.addOrupdate === 1) { |
| | | updateAnnex(this.annex).then(res => { |
| | | if(res.code == 200) { |
| | | getAnnexByUserId({userId: this.clickNodeVal.userId}).then(res => { |
| | | if (res.code == 200) { |
| | | getAnnexByUserId({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.imageUrl = '' |
| | | this.resetForm('annex') |
| | | this.annexList = res.data |
| | |
| | | }) |
| | | } |
| | | }) |
| | | }else { |
| | | } else { |
| | | this.annex.id = null |
| | | addAnnex(this.annex).then(res => { |
| | | if(res.code == 200) { |
| | | getAnnexByUserId({userId: this.clickNodeVal.userId}).then(res => { |
| | | if (res.code == 200) { |
| | | getAnnexByUserId({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.imageUrl = '' |
| | | this.resetForm('annex') |
| | | this.annexList = res.data |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteAnnex({id: row.id}).then(res => { |
| | | deleteAnnex({ id: row.id }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.annexList = this.annexList.filter(item => item.id != row.id) |
| | | }) |
| | |
| | | } |
| | | }, |
| | | async onSuccess(response, file, fileList, entityVal) { |
| | | if(entityVal == 'fileName') { |
| | | if (entityVal == 'fileName') { |
| | | this.annex.fileName = response.data |
| | | } |
| | | // å¨ä¿åèµå¼æ°æä»¶ |
| | |
| | | } |
| | | }, |
| | | getUserBasisInfo(userId) { |
| | | getCNASPersonnelInfo({userId: userId}).then(res => { |
| | | getCNASPersonnelInfo({ userId: userId }).then(res => { |
| | | this.form = res.data.PersonBasicInfoDto |
| | | this.department = res.data.department |
| | | this.annexList = res.data.annexList |
| | |
| | | async save() { |
| | | this.saveLoading = true |
| | | this.form.userId = this.clickNodeVal.userId |
| | | if(Array.isArray(this.form.departLimsId)) { |
| | | if(this.form.departLimsId.length > 0) { |
| | | if (Array.isArray(this.form.departLimsId)) { |
| | | if (this.form.departLimsId.length > 0) { |
| | | this.form.departLimsId = this.form.departLimsId.join(',').trim() + ',' |
| | | }else { |
| | | } else { |
| | | this.form.departLimsId = '' |
| | | } |
| | | } |
| | |
| | | }, |
| | | clickPersonnelClassificationSure() { |
| | | this.dialogVisible = false |
| | | this.form.personnelClassification = this.checkList.filter(m=>m).join('ï¼') |
| | | this.form.personnelClassification = this.checkList.filter(m => m).join('ï¼') |
| | | }, |
| | | async deleteFile(fileName, entityVal) { |
| | | await deleteCNASFile({fileName: fileName}).then(res => { |
| | | await deleteCNASFile({ fileName: fileName }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.$set(this.form, entityVal, null) |
| | | let index = this.successFileList.indexOf(fileName) |
| | |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | getAge (val) { |
| | | getAge(val) { |
| | | this.form.age = this.calculateAge(val) |
| | | }, |
| | | calculateAge(birthDateString) { |
| | |
| | | height: 12px; |
| | | /* 设置æ»å¨æ¡å®½åº¦ */ |
| | | } |
| | | |
| | | >>>.el-form-item { |
| | | margin-bottom: 3px; |
| | | margin-bottom: 3px; |
| | | } |
| | | |
| | | .el-input { |
| | | border-radius: 15px; |
| | | border-radius: 15px; |
| | | } |
| | | |
| | | .el-icon-picture-outline { |
| | | position: absolute; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | position: absolute; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | } |
| | | |
| | | .uploadFile { |
| | | margin-top: 2px; |
| | | float: left; |
| | | margin-top: 2px; |
| | | float: left; |
| | | } |
| | | .avatar-uploader-icon { |
| | | font-size: 28px; |
| | | color: #0f8bf1; |
| | | width: 178px; |
| | | height: 50px; |
| | | text-align: center; |
| | | border: 1px solid #d9d9d9; |
| | | } |
| | | .avatar { |
| | | width: 178px; |
| | | height: 178px; |
| | | display: block; |
| | | } |
| | | |
| | | .avatar-uploader-icon { |
| | | font-size: 28px; |
| | | color: #0f8bf1; |
| | | width: 178px; |
| | | height: 50px; |
| | | text-align: center; |
| | | border: 1px solid #d9d9d9; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 178px; |
| | | height: 178px; |
| | | display: block; |
| | | } |
| | | </style> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button |
| | | :loading="outLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="handleDown">导åº</el-button> |
| | | <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">导åº</el-button> |
| | | <el-button size="small" type="primary" @click="openSelectUserDia">æ°å»º</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | :current-page="1" |
| | | :current-page.sync="page.current" |
| | | :page-size="page.size" |
| | | :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="page.total" |
| | | background |
| | | layout="->,total, sizes, prev, pager, next, jumper" |
| | | style="margin-top: 10px" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | > |
| | | <el-pagination :current-page="1" :current-page.sync="page.current" :page-size="page.size" |
| | | :page-sizes="[10, 20, 30, 50, 100]" :total="page.total" background |
| | | layout="->,total, sizes, prev, pager, next, jumper" style="margin-top: 10px" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog :visible.sync="selectUserDia" title="éæ©ç¨æ·" width="70%"> |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">ç¨æ·åï¼</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | v-model="addUserTableInfo.name" |
| | | clearable |
| | | placeholder="请è¾å
¥" |
| | | size="small" |
| | | @change="selectUserList" |
| | | ></el-input> |
| | | <el-input v-model="addUserTableInfo.name" clearable placeholder="请è¾å
¥" size="small" |
| | | @change="selectUserList"></el-input> |
| | | </div> |
| | | <el-button size="small" style="margin-left: 10px" type="primary" @click="selectUserList">æ¥è¯¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div v-if="selectUserDia" class="body" style="height: 60vh;"> |
| | | <lims-table :tableData="tableData1" :column="column1" |
| | | :isSelection="true" :handleSelectionChange="selectMethod" |
| | | :height="'calc(100vh - 290px)'" |
| | | :tableLoading="tableLoading1"></lims-table> |
| | | <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod" |
| | | :height="'calc(100vh - 290px)'" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="selectUserDia = false">å æ¶</el-button> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | basicInformationOfPersonnelSelectPage, |
| | |
| | | upUserDepardLimsId |
| | | } from "@/api/cnas/personal/personalList"; |
| | | import store from "@/store"; |
| | | import {Message} from "element-ui"; |
| | | import { Message } from "element-ui"; |
| | | |
| | | export default { |
| | | name: 'PersonnelList', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable}, |
| | | components: { limsTable }, |
| | | props: { |
| | | departId: { |
| | | type: Number, |
| | |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | column1: [ |
| | | {label: 'å§å', prop: 'name'}, |
| | | {label: 'è´¦å·', prop: 'account'}, |
| | | {label: 'è§è²', prop: 'roleName'}, |
| | | { label: 'å§å', prop: 'name' }, |
| | | { label: 'è´¦å·', prop: 'account' }, |
| | | { label: 'è§è²', prop: 'roleName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç¶æ', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: 'çµè¯å·ç ', prop: 'phone'}, |
| | | { label: 'çµè¯å·ç ', prop: 'phone' }, |
| | | ], |
| | | page1: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | selectUserDia: false, // æ·»å 人åå¼¹æ¡ |
| | | entity: { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delUserDepardLimsId({id: row.userId}).then(res => { |
| | | delUserDepardLimsId({ id: row.userId }).then(res => { |
| | | this.$message.success('å 餿å'); |
| | | this.refreshTable(); |
| | | this.$emit('refreshTree') |
| | |
| | | this.refreshTable(); |
| | | }, |
| | | // æå¼æ°å¢äººåå¼¹æ¡ |
| | | openSelectUserDia () { |
| | | openSelectUserDia() { |
| | | this.selectUserDia = true; |
| | | this.selectUserList() |
| | | }, |
| | | // æ¥è¯¢æ°å¢å¼¹æ¡ç人åå表 |
| | | selectUserList () { |
| | | selectUserList() { |
| | | this.tableLoading1 = true |
| | | selectUserCondition().then(res => { |
| | | this.tableLoading1 = false |
| | |
| | | this.outLoading = true; |
| | | let entity = this.HaveJson(this.entity) |
| | | delete entity.orderBy; |
| | | exportPersonBasicInfo({...entity}).then(res => { |
| | | exportPersonBasicInfo({ ...entity }).then(res => { |
| | | this.outLoading = false; |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '人åä¿¡æ¯.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | <el-button size="small" type="primary" @click="uploadDia = true, getUserList()">导å
¥</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearPlanTableData" :column="yearPlanColumn" |
| | | :currentChange="currentChange" |
| | | @pagination="pagination" height="40vh" |
| | | :page="page" :tableLoading="yearLoading"></lims-table> |
| | | <lims-table :tableData="yearPlanTableData" :column="yearPlanColumn" :currentChange="currentChange" |
| | | @pagination="pagination" height="40vh" :page="page" :tableLoading="yearLoading"></lims-table> |
| | | </div> |
| | | <div v-if="!editPlanShow" class="table"> |
| | | <div> |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="inDetailForm" ref="inDetailForm" size="small" :inline="true"> |
| | | <el-form-item label="å¹è®è®²å¸"> |
| | | <el-input v-model="inDetailForm.trainingLecturerName" class="search" clearable placeholder="请è¾å
¥" size="small"></el-input> |
| | | <el-input v-model="inDetailForm.trainingLecturerName" class="search" clearable placeholder="请è¾å
¥" |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¹è®æ¥æ"> |
| | | <el-date-picker v-model="inDetailForm.trainingDate" clearable |
| | | format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | <el-date-picker v-model="inDetailForm.trainingDate" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="small" type="primary" @click="searchTable">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" @click="batchDelete">æ¹éå é¤</el-button> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" type="primary" @click="addTrainingPlan('add')">æ°å¢</el-button> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" |
| | | @click="batchDelete">æ¹éå é¤</el-button> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" type="primary" |
| | | @click="addTrainingPlan('add')">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="inDetailPlanTableData" :column="inDetailPlanColumn" |
| | | :height="isDepartment ? '40vh' : '62vh' " |
| | | :isSelection="true" :handleSelectionChange="handleSelectionChange" |
| | | @pagination="pagination1" |
| | | :page="inDetailPagination" :tableLoading="yearDetailLoading"></lims-table> |
| | | :height="isDepartment ? '40vh' : '62vh'" :isSelection="true" :handleSelectionChange="handleSelectionChange" |
| | | @pagination="pagination1" :page="inDetailPagination" :tableLoading="yearDetailLoading"></lims-table> |
| | | </div> |
| | | </div> |
| | | <Add ref="addPlan" :currentChangeRow="currentChangeRow" @search="getInDetailPlan(currentRowId, departId)"></Add> |
| | | <Edit |
| | | v-if="editPlanShow" |
| | | ref="editPlan" |
| | | :currentRow="currentRow" |
| | | @del="getInDetailPlan(currentRowId, departId)" |
| | | @goBack="goBack" |
| | | ></Edit> |
| | | <Edit v-if="editPlanShow" ref="editPlan" :currentRow="currentRow" @del="getInDetailPlan(currentRowId, departId)" |
| | | @goBack="goBack"></Edit> |
| | | <el-dialog :visible.sync="reviewDialog" title="å®¡æ ¸" width="30%" @close="auditRemarks = ''"> |
| | | <span> |
| | | å®¡æ ¸å¤æ³¨ï¼ |
| | |
| | | </span> |
| | | <span style="margin-top: 10px;display: inline-block"> |
| | | æ¹åäººï¼ |
| | | <el-select v-model="approverId" clearable |
| | | filterable size="small" style="width: 70%;"> |
| | | <el-select v-model="approverId" clearable filterable size="small" style="width: 70%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å
¥" width="500px"> |
| | | <div style="display: flex;align-items: center;"> |
| | | <div style="width: 70px">年份ï¼</div> |
| | | <el-date-picker |
| | | v-model="planYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | <el-date-picker v-model="planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="鿩年"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 70px">å®¡æ ¸äººï¼</div> |
| | | <el-select v-model="reviewerId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-select v-model="reviewerId" clearable filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload" :action="javaApi + '/personTraining/personTrainingImport' + '?planYear=' + planYear + '&reviewerId=' + reviewerId" |
| | | :auto-upload="false" :before-upload="beforeUpload" :file-list="fileList" :headers="uploadHeader" |
| | | :limit="1" :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag |
| | | name="file"> |
| | | <el-upload ref="upload" |
| | | :action="javaApi + '/personTraining/personTrainingImport' + '?planYear=' + planYear + '&reviewerId=' + reviewerId" |
| | | :auto-upload="false" :before-upload="beforeUpload" :file-list="fileList" :headers="uploadHeader" :limit="1" |
| | | :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | |
| | | <el-button @click="uploadDia = false">å æ¶</el-button> |
| | | <el-button :loading="uploading" type="primary" @click="submitUpload()">ä¸ ä¼ </el-button> |
| | | </span> |
| | | </el-dialog > |
| | | </el-dialog> |
| | | <view-record v-if="ViewRecord" ref="ViewRecord"></view-record> |
| | | </div> |
| | | </template> |
| | |
| | | import Edit from '../components/Edit.vue'; |
| | | import ViewRecord from "../components/ViewRecord.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {mapGetters} from "vuex"; |
| | | import { mapGetters } from "vuex"; |
| | | import { |
| | | approveAnnualPersonnelTraining, deleteAnnualPlanDetailTable, exportPersonTraining, exportPersonTrainingRecord, |
| | | personTraining, |
| | | personTrainingDelete, |
| | | queryTheAnnualPlanDetailsTable, reviewAnnualPersonnelTraining |
| | | } from "@/api/cnas/personal/personalTraining"; |
| | | import {selectUserCondition} from "@/api/system/user"; |
| | | import { selectUserCondition } from "@/api/system/user"; |
| | | |
| | | export default { |
| | | name: 'PersonnelTraining', |
| | | components: {limsTable, ViewRecord, Add, Edit }, |
| | | components: { limsTable, ViewRecord, Add, Edit }, |
| | | props: { |
| | | departId: { |
| | | type: Number, |
| | |
| | | label: 'å建æ¶é´', |
| | | width: '160px', |
| | | prop: 'createTime' |
| | | },{ |
| | | }, { |
| | | label: 'ç¼å¶äºº', |
| | | prop: 'compilerName' |
| | | }, { |
| | |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success'; |
| | | } else if (params == 2) { |
| | | } else if (params == 2) { |
| | | return 'danger'; |
| | | } else { |
| | | return null |
| | |
| | | name: '导åº', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if(row.approvalStatus === 1 && row.reviewerStatus === 1) { |
| | | if (row.approvalStatus === 1 && row.reviewerStatus === 1) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | |
| | | name: 'å®¡æ ¸', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if(row.reviewerStatus === 1 || this.userId != row.reviewerId) { |
| | | if (row.reviewerStatus === 1 || this.userId != row.reviewerId) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | name: 'æ¹å', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if(row.approvalStatus === 1 || this.userId != row.approverId || row.reviewerStatus != 1) { |
| | | if (row.approvalStatus === 1 || this.userId != row.approverId || row.reviewerStatus != 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | this.deleteFun(row.id); |
| | | }, |
| | | disabled: (row) => { |
| | | if(row.reviewerStatus === 1) { |
| | | if (row.reviewerStatus === 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | }], |
| | | inDetailPlanTableData: [], // 年度计åæç»è¡¨è¡¨æ°æ® |
| | | inDetailPlanColumn: [ |
| | | { |
| | | { |
| | | label: 'å¹è®ç®æ ', |
| | | prop: 'trainingObjectives', |
| | | width: '100px', |
| | |
| | | ] |
| | | }], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1, |
| | | total: 0, |
| | | size: 10, |
| | | current: 1, |
| | | compilerName: "" |
| | | }, |
| | | inDetailPagination: { |
| | | total:0, |
| | | size:10, |
| | | current:1, |
| | | total: 0, |
| | | size: 10, |
| | | current: 1, |
| | | }, |
| | | editPlanShow: false, |
| | | currentRow: {}, |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | searchTable () { |
| | | searchTable() { |
| | | this.getInDetailPlan(this.currentRowId) |
| | | }, |
| | | // æ¥è¯¢-年度计å表 |
| | | getYearPlanList(userId) { |
| | | this.yearLoading = true |
| | | const params = this.isDepartment ? |
| | | { |
| | | departmentId: userId, |
| | | size: this.page.size, |
| | | current: this.page.current, |
| | | compilerName: this.page.compilerName, |
| | | }: { |
| | | { |
| | | departmentId: userId, |
| | | size: this.page.size, |
| | | current: this.page.current, |
| | | compilerName: this.page.compilerName, |
| | | } : { |
| | | userId: userId, |
| | | size: this.page.size, |
| | | current: this.page.current, |
| | |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.getYearPlanList() |
| | | }, |
| | | currentChange (row) { |
| | | currentChange(row) { |
| | | const now = new Date(); |
| | | const currentYear = now.getFullYear(); |
| | | if (row) { |
| | | this.currentChangeRow = row |
| | | this.currentRowId = row.id |
| | | if (row.createTime.slice(0,4) == currentYear) { |
| | | if (row.createTime.slice(0, 4) == currentYear) { |
| | | this.isOperation = true; |
| | | } else { |
| | | this.isOperation = false; |
| | |
| | | this.getInDetailPlan(row.id) |
| | | } |
| | | }, |
| | | getInDetailPlan (id) { |
| | | getInDetailPlan(id) { |
| | | if (this.inDetailForm.trainingDate === null) { |
| | | this.inDetailForm.trainingDate = '' |
| | | } |
| | | const userId = this.isDepartment ? '' : this.departId |
| | | const params = |
| | | { |
| | | userId: userId, |
| | | size: this.inDetailPagination.pageSize, |
| | | current: this.inDetailPagination.current, |
| | | id: id, |
| | | trainingLecturerName: this.inDetailForm.trainingLecturerName, |
| | | trainingDate: this.inDetailForm.trainingDate, |
| | | } |
| | | { |
| | | userId: userId, |
| | | size: this.inDetailPagination.pageSize, |
| | | current: this.inDetailPagination.current, |
| | | id: id, |
| | | trainingLecturerName: this.inDetailForm.trainingLecturerName, |
| | | trainingDate: this.inDetailForm.trainingDate, |
| | | } |
| | | this.yearDetailLoading = true |
| | | queryTheAnnualPlanDetailsTable(params).then(res => { |
| | | this.yearDetailLoading = false |
| | |
| | | this.yearDetailLoading = false |
| | | }) |
| | | }, |
| | | pagination1 (page) { |
| | | pagination1(page) { |
| | | this.inDetailPagination.size = page.limit |
| | | this.getInDetailPlan(this.currentRowId) |
| | | }, |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | personTrainingDelete({id: id}).then(res => { |
| | | personTrainingDelete({ id: id }).then(res => { |
| | | this.$message.success('å 餿åï¼'); |
| | | this.getYearPlanList(this.departId); |
| | | }); |
| | |
| | | this.getUserList() |
| | | }, |
| | | // æäº¤å®¡æ ¸ |
| | | handleReview (status) { |
| | | handleReview(status) { |
| | | const personTrainingUpdateDto = { |
| | | id: this.currentRowId, |
| | | auditRemarks: this.auditRemarks, |
| | |
| | | this.approvalDialog = true |
| | | }, |
| | | // æäº¤æ¹å |
| | | handleApproval (status) { |
| | | handleApproval(status) { |
| | | const personTrainingUpdateDto = { |
| | | id: this.currentRowId, |
| | | approvalRemarks: this.approvalRemarks, |
| | |
| | | }, |
| | | // 年度计å表-ä¸è½½ |
| | | downLoadPost(row) { |
| | | exportPersonTraining({id: row.id}).then(res => { |
| | | exportPersonTraining({ id: row.id }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.fileName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度计å-导å
¥ |
| | |
| | | this.editPlanShow = false; |
| | | this.getInDetailPlan(this.currentRowId) |
| | | }, |
| | | viewRecord (row) { |
| | | viewRecord(row) { |
| | | this.ViewRecord = true |
| | | this.$nextTick(() => { |
| | | this.$refs.ViewRecord.openDia(row) |
| | |
| | | }, |
| | | // 年度计åæç»è¡¨-ä¸è½½ |
| | | downLoadInDetail(row) { |
| | | exportPersonTrainingRecord({id: row.id}).then(res => { |
| | | exportPersonTrainingRecord({ id: row.id }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '人åå¹è®ä¸èæ ¸è®°å½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度计åæç»è¡¨-å¤é |
| | |
| | | this.multipleSelection = list |
| | | }, |
| | | // 年度æç»è¡¨-å é¤ |
| | | batchDelete () { |
| | | batchDelete() { |
| | | if (this.multipleSelection.length > 0) { |
| | | let ids = [] |
| | | this.multipleSelection.forEach(item => { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteAnnualPlanDetailTable({ids: ids.join(',')}).then(res => { |
| | | deleteAnnualPlanDetailTable({ ids: ids.join(',') }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('å 餿å'); |
| | | this.getInDetailPlan(this.currentRowId); |
| | |
| | | overflow: auto; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search { |
| | | width: 150px; |
| | | margin: 0 16px; |
| | | } |
| | | |
| | | .title { |
| | | position: relative; |
| | | font-size: 16px; |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="search" ref="page" size="small" :inline="true"> |
| | | <el-form-item label="å§å"> |
| | | <el-input v-model="search.userName" clearable placeholder="请è¾å
¥å
³é®å" size="small" style="width: 20vh;"></el-input> |
| | | <el-input v-model="search.userName" clearable placeholder="请è¾å
¥å
³é®å" size="small" |
| | | style="width: 20vh;"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="奿©æ¥æ"> |
| | | <el-date-picker |
| | | v-model="search.searchTimeList" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | clearable |
| | | end-placeholder="ç»ææ¥æ" |
| | | format="yyyy-MM-dd" |
| | | range-separator="è³" |
| | | size="small" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | style="width: 100%" |
| | | type="daterange" |
| | | unlink-panels |
| | | value-format="yyyy-MM-dd 00:00:00"> |
| | | <el-date-picker v-model="search.searchTimeList" :picker-options="pickerOptions" align="right" clearable |
| | | end-placeholder="ç»ææ¥æ" format="yyyy-MM-dd" range-separator="è³" size="small" start-placeholder="å¼å§æ¥æ" |
| | | style="width: 100%" type="daterange" unlink-panels value-format="yyyy-MM-dd 00:00:00"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </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" |
| | | background |
| | | style="margin-top: 10px" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | <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" background style="margin-top: 10px" |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="奿©è®°å½" |
| | | width="50%" |
| | | @open="getUserList"> |
| | | <el-dialog :visible.sync="dialogVisible" title="奿©è®°å½" width="50%" @open="getUserList"> |
| | | <div style="height: 40vh"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
| | | <el-col :span="12"> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="åå·¥å§å" prop="userId"> |
| | | <el-select v-model="form.userId" placeholder="è¯·éæ©" size="small" style="width: 100%" value-key="id" |
| | | @change="selectUserChange" :disabled="!isDepartment"> |
| | | @change="selectUserChange" :disabled="!isDepartment"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="奿©æ¶é´" prop="rewardPunishTime"> |
| | | <el-date-picker |
| | | v-model="form.rewardPunishTime" |
| | | 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 v-model="form.rewardPunishTime" 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> |
| | |
| | | rewardPunishmentExport, |
| | | rewardPunishmentPage |
| | | } from "@/api/cnas/personal/personRewardPunishmentRecord"; |
| | | import {selectUserCondition} from "@/api/system/user"; |
| | | import {delCustomById} from "@/api/system/customer"; |
| | | import { selectUserCondition } from "@/api/system/user"; |
| | | import { delCustomById } from "@/api/system/customer"; |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | async getPersonnelTraining() { |
| | | const params = { |
| | | userId: this.isDepartment ? '' : this.departId, |
| | | departmentId: this.isDepartment ? this.departId : '', |
| | | current: this.search.curent, |
| | | size: this.search.size, |
| | | userName: this.search.userName, |
| | | startTime: this.search.searchTimeList && this.search.searchTimeList[0], |
| | | endTime: this.search.searchTimeList && this.search.searchTimeList[1], |
| | | departmentId: this.isDepartment ? this.departId : '', |
| | | current: this.search.curent, |
| | | size: this.search.size, |
| | | userName: this.search.userName, |
| | | startTime: this.search.searchTimeList && this.search.searchTimeList[0], |
| | | endTime: this.search.searchTimeList && this.search.searchTimeList[1], |
| | | } |
| | | this.tableLoading = true |
| | | rewardPunishmentPage(params).then(res => { |
| | |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | addRow () { |
| | | addRow() { |
| | | this.dialogVisible = true |
| | | if (!this.isDepartment) { |
| | | this.form.userId = this.departId |
| | | this.selectUserChange(this.form.userId) |
| | | } |
| | | }, |
| | | handleDown(){ |
| | | handleDown() { |
| | | this.outLoading = true |
| | | rewardPunishmentExport({ |
| | | userId: this.isDepartment ? '' : this.departId, |
| | |
| | | type: 'application/force-download' |
| | | }) |
| | | this.$download.saveAs(blob, '奿©è®°å½.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // è·åè´è´£äººä¿¡æ¯æ¥å£ |
| | |
| | | // æå¼è¡¨åå¼¹æ¡ |
| | | editForm(row) { |
| | | this.dialogVisible = true |
| | | this.form = {...row}; |
| | | this.form = { ...row }; |
| | | }, |
| | | // æäº¤è¡¨åæ°æ® |
| | | saveOrUpdate() { |
| | |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteRewardPunishment({id: row.id}).then(res => { |
| | | deleteRewardPunishment({ id: row.id }).then(res => { |
| | | if (res.code === 500) { |
| | | return |
| | | } |
| | |
| | | }).catch(e => { |
| | | this.$message.error('å é¤å¤±è´¥') |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | |
| | | } |
| | | }, |
| | |
| | | <el-form :model="entitySearch" ref="entitySearch" size="small" :inline="true"> |
| | | <el-form-item label="è¯æ ·åç§°" prop="sampleName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="entitySearch.sampleName" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å§æåä½" prop="commissionUnit"> |
| | | <el-input v-model="entitySearch.commissionUnit" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åä½" prop="production"> |
| | | <el-input v-model="entitySearch.production" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å§æäºº" prop="commissionUser"> |
| | | <el-input v-model="entitySearch.commissionUser" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh">é ç½®</el-button> |
| | |
| | | <el-button size="mini" type="text" @click="handleLook(scope.row)">æ¥ç</el-button> |
| | | <el-button size="mini" style="color:#F56C6C" type="text" @click="deleteOrder(scope.row)">å é¤</el-button> |
| | | <el-button size="mini" type="text" @click="openDownloadDia(scope.row)">ä¸è½½</el-button> |
| | | <el-upload ref='upload' |
| | | :action="action" |
| | | :data="{inspectionOrderId: scope.row.inspectionOrderId}" :headers="uploadHeader" |
| | | :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx,.xlsx' |
| | | name="file" style="background: transparent;display: inline;margin-left: 4px"> |
| | | <el-upload ref='upload' :action="action" :data="{ inspectionOrderId: scope.row.inspectionOrderId }" |
| | | :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx,.xlsx' name="file" |
| | | style="background: transparent;display: inline;margin-left: 4px"> |
| | | <span style="color: #409EFF">ä¸ä¼ </span> |
| | | </el-upload> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="pages.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total1" layout="->,total, sizes, prev, pager, next" |
| | | style="margin-top: 10px" background |
| | | @size-change="handleSizeChange1" @current-change="handleCurrentChange1"> |
| | | <el-pagination :current-page="1" :page-size="pages.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total1" |
| | | layout="->,total, sizes, prev, pager, next" style="margin-top: 10px" background @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog |
| | | :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="orderRowsVisible" title="æ°å¢æ£éªä»»å¡å" width="1000px"> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="orderRowsVisible" |
| | | title="æ°å¢æ£éªä»»å¡å" width="1000px"> |
| | | <div style="display: flex; align-items: center;margin-bottom: 10px"> |
| | | <span style="width: 80px">å§æç¼å·ï¼</span> |
| | | <el-input v-model="entity.entrustCode" clearable size="small" style="width: 300px;margin-right: 10px"></el-input> |
| | | <el-input v-model="entity.entrustCode" clearable size="small" |
| | | style="width: 300px;margin-right: 10px"></el-input> |
| | | <el-button size="small" type="primary" @click="searchTableData">æ¥è¯¢</el-button> |
| | | <el-button size="small" @click="refreshTableData">é ç½®</el-button> |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="tableSearch.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total" layout="->,total, sizes, prev, pager, next" |
| | | style="margin-top: 10px" background |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange"> |
| | | <el-pagination :current-page="1" :page-size="tableSearch.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total" |
| | | layout="->,total, sizes, prev, pager, next" style="margin-top: 10px" background @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :class="{downPdf:title=='ä¸è½½'}" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :modal="title!='ä¸è½½'" :title="title" :visible.sync="detailDialogVisible" top="20px" width="1200px"> |
| | | <el-dialog :class="{ downPdf: title == 'ä¸è½½' }" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :modal="title != 'ä¸è½½'" :title="title" :visible.sync="detailDialogVisible" top="20px" width="1200px"> |
| | | <div style="max-height: 75vh;overflow-y: auto;"> |
| | | <div id="dialogBody"> |
| | | <table border="1" cellpadding="10" class="tables heads" style="border: 1px dashed black;"> |
| | |
| | | <span style="width: 100px">å§æç¼å·ï¼</span> |
| | | <el-input v-model="currentInfo.entrustCode" clearable size="small"></el-input> |
| | | </p> |
| | | <p v-if="operationType === 'view'" style="margin-top: 16px;margin-left: 600px;">å§æç¼å·ï¼{{ currentInfo.entrustCode }}</p> |
| | | <p v-if="operationType === 'view'" style="margin-top: 16px;margin-left: 600px;">å§æç¼å·ï¼{{ |
| | | currentInfo.entrustCode }} |
| | | </p> |
| | | <table border="1" cellpadding="10" class="tables"> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>è¯æ ·åç§°</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleName" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleName" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.sampleName }}</td> |
| | | <td> |
| | | <p>å§ææ¶é´</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.commissionDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.commissionDate" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td> |
| | |
| | | <td colspan="2"> |
| | | <p>å å·</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.modelNo" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.modelNo" clearable |
| | | size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.modelNo }}</td> |
| | | <td> |
| | | <p>å§æåä½</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUnit" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUnit" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionUnit }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>ç产åä½</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.production" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.production" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.production }}</td> |
| | | <td> |
| | | <p>å§æäºº</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionUser }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>æ ·åæ°é</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.quantity" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.quantity" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.quantity }}</td> |
| | | <td> |
| | | <p>æ ·åç¶æ</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleStatus" clearable size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ insStateList.find(m=>m.value==currentInfo.sampleStatus)?insStateList.find(m=>m.value==currentInfo.sampleStatus).label:'/' }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleStatus" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ |
| | | insStateList.find(m => m.value == currentInfo.sampleStatus) ? insStateList.find(m => m.value == currentInfo.sampleStatus).label:'/' |
| | | }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | |
| | | </el-radio-group> |
| | | </td> |
| | | <td v-if="operationType === 'view'"> |
| | | <span v-if="currentInfo.isLeave==1">æ¯</span> |
| | | <span v-if="currentInfo.isLeave == 1">æ¯</span> |
| | | <span v-else>å¦</span> |
| | | </td> |
| | | <td> |
| | |
| | | </el-radio-group> |
| | | </td> |
| | | <td v-if="operationType === 'view'"> |
| | | <span v-if="currentInfo.processing==0">å§æåä½åå</span> |
| | | <span v-if="currentInfo.processing == 0">å§æåä½åå</span> |
| | | <span v-else>å®éªå®¤å¤ç</span> |
| | | </td> |
| | | </tr> |
| | |
| | | <p>约å®å®ææ¶é´(æ¥åæ¥æ)</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.appointed" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.appointed" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.appointed }}</td> |
| | |
| | | </el-radio-group> |
| | | </td> |
| | | <td v-if="operationType === 'view'"> |
| | | <span v-if="currentInfo.send==1">èªå</span> |
| | | <span v-if="currentInfo.send == 1">èªå</span> |
| | | <span v-else>å
¶ä»</span> |
| | | </td> |
| | | </tr> |
| | | <el-button size="small" type="primary" @click="addOrderDetailList" v-if="operationType !== 'view'">æ·»å </el-button> |
| | | <el-button size="small" type="primary" @click="addOrderDetailList" |
| | | v-if="operationType !== 'view'">æ·»å </el-button> |
| | | <tr> |
| | | <td> |
| | | <p>åºå·</p> |
| | |
| | | <p>夿³¨</p> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(item,index) in currentInfo.orderDetailList" :key="index" > |
| | | <td>{{ index+1 }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.sampleNumber" clearable size="small"></el-input></td> |
| | | <tr v-for="(item, index) in currentInfo.orderDetailList" :key="index"> |
| | | <td>{{ index + 1 }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.sampleNumber" clearable |
| | | size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.sampleNumber }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testItem" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testItem" clearable size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.testItem }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testStandard" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testStandard" clearable |
| | | size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.testStandard }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.remark" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.remark" clearable size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.remark }}</td> |
| | | </tr> |
| | | <tr> |
| | |
| | | <el-radio :label="0">ä¸èèä¸ç¡®å®åº¦</el-radio> |
| | | <el-radio :label="1">èèä¸ç¡®å®åº¦</el-radio> |
| | | </el-radio-group> |
| | | <span v-if="currentInfo.criterionRule === 1"><el-input v-model="currentInfo.criterionRuleRemark" clearable size="small" style="width: 60px"></el-input>%</span> |
| | | <span v-if="currentInfo.criterionRule === 1"><el-input v-model="currentInfo.criterionRuleRemark" |
| | | clearable size="small" style="width: 60px"></el-input>%</span> |
| | | </td> |
| | | <td v-if="operationType === 'view'" colspan="3"> |
| | | <span v-if="currentInfo.criterionRule===0">ä¸èèä¸ç¡®å®åº¦</span> |
| | | <span v-if="currentInfo.criterionRule===1">èèä¸ç¡®å®åº¦</span> |
| | | <span v-if="currentInfo.criterionRule===1">{{ currentInfo.criterionRuleRemark + '%' }}</span> |
| | | <span v-if="currentInfo.criterionRule === 0">ä¸èèä¸ç¡®å®åº¦</span> |
| | | <span v-if="currentInfo.criterionRule === 1">èèä¸ç¡®å®åº¦</span> |
| | | <span v-if="currentInfo.criterionRule === 1">{{ currentInfo.criterionRuleRemark + '%' }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>å§æäººç¾å</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'"> |
| | | {{currentInfo.commissionUser}} |
| | | {{ currentInfo.commissionUser }} |
| | | </td> |
| | | <td> |
| | | <p>å§ææ¥æ</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.commissionDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.commissionDate" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td> |
| | |
| | | <td colspan="2"> |
| | | <p>å§æäººèç³»çµè¯</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'" colspan="3"><el-input v-model="currentInfo.commissionPhone" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'" colspan="3"><el-input v-model="currentInfo.commissionPhone" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'" colspan="3">{{ currentInfo.commissionPhone }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>综å室ç¾å</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.generalOfficeUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{currentInfo.generalOfficeUser}}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.generalOfficeUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.generalOfficeUser }}</td> |
| | | <td> |
| | | <p>æ¥æ¶æ¥æ</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.receiptData" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.receiptData" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.receiptData }}</td> |
| | |
| | | <td colspan="2"> |
| | | <p>颿 ·åç¾å</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleTakerUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleTakerUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.sampleTakerUser }}</td> |
| | | <td> |
| | | <p>颿 ·æ¥æ</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.sampleData" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.sampleData" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.sampleData }}</td> |
| | |
| | | </div> |
| | | <span v-if="operationType !== 'view'" slot="footer" class="dialog-footer"> |
| | | <el-button @click="detailDialogVisible = false">å æ¶</el-button> |
| | | <el-button v-if="operationType === 'add'" :loading="buttonLoading" type="primary" @click="handleAdd">ç¡® å®</el-button> |
| | | <el-button v-if="operationType === 'edit'" :loading="buttonLoading" type="primary" @click="handleEdit">ç¡® å®</el-button> |
| | | <el-button v-if="operationType === 'add'" :loading="buttonLoading" type="primary" @click="handleAdd">ç¡® |
| | | å®</el-button> |
| | | <el-button v-if="operationType === 'edit'" :loading="buttonLoading" type="primary" @click="handleEdit">ç¡® |
| | | å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="downloadDialog" title="ä¸è½½" width="600px"> |
| | |
| | | updateInspectionOrder |
| | | } from "@/api/cnas/process/demand/demand"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | |
| | | export default { |
| | | name: "a7-Inspection-Order-Form", |
| | | components: {limsTable}, |
| | | components: { limsTable }, |
| | | data() { |
| | | return { |
| | | title:'æ£éªå§æå', |
| | | detailDialogVisible:false, |
| | | addLoading:false, |
| | | outLoading:false, |
| | | currentInfo:{ |
| | | title: 'æ£éªå§æå', |
| | | detailDialogVisible: false, |
| | | addLoading: false, |
| | | outLoading: false, |
| | | currentInfo: { |
| | | orderDetailList: [] |
| | | }, |
| | | personList:[], |
| | | insStateList:[ |
| | | personList: [], |
| | | insStateList: [ |
| | | { |
| | | label: 'å¾
å®¡æ ¸', |
| | | value: 0 |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | addOrderDetailList () { |
| | | addOrderDetailList() { |
| | | if (this.currentInfo.orderDetailList == null) { |
| | | this.currentInfo.orderDetailList = [] |
| | | } |
| | |
| | | this.refreshTable() |
| | | }, |
| | | // æå¼æ°å¢å¼¹æ¡ |
| | | goAdd () { |
| | | goAdd() { |
| | | this.operationType = 'add' |
| | | this.title = 'æ°å¢æ£éªå§æå'; |
| | | this.orderRowsVisible = true |
| | | this.searchTableData() |
| | | }, |
| | | // æ¥è¯¢å¯æ°å¢çæ£éªå |
| | | searchTableData () { |
| | | searchTableData() { |
| | | this.tableLoading = true |
| | | getInsOrderOnInspection({ |
| | | ...this.tableSearch, |
| | |
| | | }) |
| | | }, |
| | | // éç½®æ£éªåå表 |
| | | refreshTableData () { |
| | | refreshTableData() { |
| | | this.entity = { |
| | | entrustCode: '' |
| | | } |
| | |
| | | this.refreshTable(); |
| | | }, |
| | | // æäº¤æ°å¢ |
| | | handleAdd () { |
| | | handleAdd() { |
| | | this.buttonLoading = true |
| | | addInspectionOrder(this.currentInfo).then(res => { |
| | | this.buttonLoading = false |
| | |
| | | }) |
| | | }, |
| | | // æäº¤ä¿®æ¹ |
| | | handleEdit () { |
| | | handleEdit() { |
| | | this.buttonLoading = true |
| | | updateInspectionOrder(this.currentInfo).then(res => { |
| | | this.buttonLoading = false |
| | |
| | | }) |
| | | }, |
| | | // æ¥è¯¢éè¦æ°å¢çå§æå详æ
|
| | | goAddOrder (row) { |
| | | getInspectionOrderByInsOderId({insOrderId: row.id}).then(res => { |
| | | goAddOrder(row) { |
| | | getInspectionOrderByInsOderId({ insOrderId: row.id }).then(res => { |
| | | this.currentInfo = res.data |
| | | this.title = 'æ°å¢æ£éªå§æå'; |
| | | this.detailDialogVisible = true |
| | |
| | | }) |
| | | }, |
| | | // æå¼ç¼è¾å¼¹æ¡ |
| | | goUpdate (row) { |
| | | goUpdate(row) { |
| | | this.operationType = 'edit' |
| | | getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => { |
| | | getInspectionOrderOne({ inspectionOrderId: row.inspectionOrderId }).then(res => { |
| | | this.currentInfo = res.data |
| | | this.title = 'ç¼è¾æ£éªå§æå'; |
| | | this.detailDialogVisible = true |
| | |
| | | }) |
| | | }, |
| | | // æ¥ç |
| | | handleLook(row){ |
| | | handleLook(row) { |
| | | this.operationType = 'view' |
| | | getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => { |
| | | getInspectionOrderOne({ inspectionOrderId: row.inspectionOrderId }).then(res => { |
| | | this.currentInfo = res.data |
| | | this.title = 'æ¥çæ£éªå§æå'; |
| | | this.detailDialogVisible = true |
| | |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | deleteOrder (row) { |
| | | deleteOrder(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delInspectionOrder({inspectionOrderId: row.inspectionOrderId}).then(res => { |
| | | delInspectionOrder({ inspectionOrderId: row.inspectionOrderId }).then(res => { |
| | | this.$message.success('å 餿åï¼'); |
| | | this.refreshTable(); |
| | | }); |
| | |
| | | }); |
| | | }, |
| | | // æå¼ä¸è½½å¼¹æ¡ |
| | | openDownloadDia (row) { |
| | | openDownloadDia(row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // å§æåä¸è½½ |
| | | orderFormDown () { |
| | | orderFormDown() { |
| | | let url = this.download.fileUrl; |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | |
| | | link.click(); |
| | | }, |
| | | // å§ææ¥åä¸è½½ |
| | | orderReportDown () { |
| | | orderReportDown() { |
| | | this.outLoading = true; |
| | | exportInspectionOrder({inspectionOrderId: this.download.inspectionOrderId}).then(res => { |
| | | exportInspectionOrder({ inspectionOrderId: this.download.inspectionOrderId }).then(res => { |
| | | this.outLoading = false; |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'æ£éªå§æå.docx') |
| | | this.$message.success('å¯¼åºæå'); |
| | | |
| | | }).catch(err => { |
| | | this.outLoading = false; |
| | | }) |
| | | }, |
| | | // ä¸ä¼ |
| | | handleSuccessUp(response, ) { |
| | | handleSuccessUp(response,) { |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.refreshTable() |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="yearForm" ref="yearForm" size="small" :inline="true"> |
| | | <el-form-item label="计ååç§°" prop="monitorName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="yearForm.monitorName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="yearForm.monitorName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="clearYear">é ç½®</el-button> |
| | |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearTableData" :column="yearColumnData" :page="yearPage" :tableLoading="yearLoading" |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" |
| | | key="yearTableData"></lims-table> |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" key="yearTableData"></lims-table> |
| | | </div> |
| | | <div style="margin-top: 20px"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | |
| | | <el-button size="small" type="primary" @click="showDialog('add')">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" :tableLoading="yearDetailLoading" |
| | | height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" |
| | | :tableLoading="yearDetailLoading" height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | </div> |
| | | <!--æ°å¢ä¿®æ¹å¼¹æ¡--> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :qualityMonitorId="qualityMonitorId" @closeDia="closeDia"></detail-form-dialog> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :qualityMonitorId="qualityMonitorId" |
| | | @closeDia="closeDia"></detail-form-dialog> |
| | | <!--宿½æµç¨å¼¹æ¡--> |
| | | <carry-out-dialog v-if="carryOutDia" ref="carryOutDia" :qualityMonitorId="qualityMonitorId" @closeDia="closeCarryOutDia"></carry-out-dialog> |
| | | <carry-out-dialog v-if="carryOutDia" ref="carryOutDia" :qualityMonitorId="qualityMonitorId" |
| | | @closeDia="closeCarryOutDia"></carry-out-dialog> |
| | | <!--è¯ä»·æµç¨å¼¹æ¡--> |
| | | <evaluate-dialog v-if="evaluateDialog" ref="evaluateDialog" @closeEvaDia="closeEvaDia"></evaluate-dialog> |
| | | <el-dialog :visible.sync="examineDialog" title="å®¡æ ¸" width="30%" @close="closeExamineDia"> |
| | |
| | | </span> |
| | | <span style="margin-top: 10px;display: inline-block"> |
| | | æ¹åäººï¼ |
| | | <el-select v-model="examineInfo.ratifyUserId" clearable |
| | | filterable size="small" style="width: 70%;"> |
| | | <el-select v-model="examineInfo.ratifyUserId" clearable filterable size="small" style="width: 70%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--é¢è§æ¥å--> |
| | | <el-dialog |
| | | :visible.sync="lookDialogVisible" |
| | | fullscreen |
| | | title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" |
| | | :fileUrl="javaApi+'/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;"/> |
| | | :fileUrl="javaApi + '/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;" /> |
| | | <div> |
| | | æ¹åç¶æï¼ |
| | | <el-tag v-if="this.ratifyStatus === 1" type="success">æ¹å</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 0" type="danger">䏿¹å</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 1" type="success">æ¹å</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 0" type="danger">䏿¹å</el-tag> |
| | | </div> |
| | | <div> |
| | | æ¹åæè§ï¼ |
| | |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="downloadDialog" title="导åº" width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" @click="controlDown">宿½è®¡å导åº</el-button> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" @click="processingDown">è¯ä»·å¯¼åº</el-button> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" |
| | | @click="controlDown">宿½è®¡å导åº</el-button> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" |
| | | @click="processingDown">è¯ä»·å¯¼åº</el-button> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="downloadDialog = false">å æ¶</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--导å
¥è®¡å--> |
| | | <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å
¥" width="500px" :close-on-click-modal="false" :close-on-press-escape="false"> |
| | | <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å
¥" width="500px" :close-on-click-modal="false" |
| | | :close-on-press-escape="false"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="width: 60px">年份ï¼</span> |
| | | <el-date-picker |
| | | v-model="planYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | <el-date-picker v-model="planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="鿩年"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 60px">å®¡æ ¸äººï¼</div> |
| | | <el-select v-model="examineUserId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-select v-model="examineUserId" clearable filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload" :action="action" :auto-upload="false" :file-list="fileList" |
| | | :headers="uploadHeader" :limit="1" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{planYear: planYear, examineUserId: examineUserId}" |
| | | name="file"> |
| | | <el-upload ref="upload" :action="action" :auto-upload="false" :file-list="fileList" :headers="uploadHeader" |
| | | :limit="1" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{ planYear: planYear, examineUserId: examineUserId }" name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | |
| | | <el-input v-model="ratifyRemark" :disabled="this.ratifyStatus === 1" type="textarea"></el-input> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload1" :action="action1" :auto-upload="false" :data="{qualityMonitorDetailsId: qualityMonitorDetailsId}" :file-list="fileList1" :headers="uploadHeader" |
| | | :limit="1" |
| | | :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' |
| | | drag |
| | | name="file"> |
| | | <el-upload ref="upload1" :action="action1" :auto-upload="false" |
| | | :data="{ qualityMonitorDetailsId: qualityMonitorDetailsId }" :file-list="fileList1" :headers="uploadHeader" |
| | | :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' drag |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | |
| | | pageQualityMonitor, pageQualityMonitorDetail, ratifyFinishReport, |
| | | ratifyQualityMonitor |
| | | } from "@/api/cnas/process/ensureResults/qualityMonitor"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import {mapGetters} from "vuex"; |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | name: 'a7-Ensure-results-validity', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, filePreview, EvaluateDialog, CarryOutDialog, DetailFormDialog }, |
| | | components: { limsTable, filePreview, EvaluateDialog, CarryOutDialog, DetailFormDialog }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | label: 'å®¡æ ¸æ¥æ', |
| | | prop: 'examineTime', |
| | | minWidth: '160' |
| | | },{ |
| | | }, { |
| | | dataType: 'tag', |
| | | label: 'æ¹åç¶æ', |
| | | prop: 'ratifyStatus', |
| | |
| | | return null; |
| | | } |
| | | } |
| | | },{ |
| | | }, { |
| | | label: 'æ¹åå
容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: 'æ¹å人', |
| | | prop: 'ratifyName', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: 'æ¹åæ¥æ', |
| | | prop: 'ratifyTime', |
| | | minWidth: '160' |
| | |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if(row.examineStatus === 1) { |
| | | if (row.examineStatus === 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | label: 'é¢ç®ï¼å
ï¼', |
| | | prop: 'budget', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: 'ç»ç»äººå', |
| | | prop: 'organization', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: 'çæ§æ¹å¼', |
| | | prop: 'monitorWay', |
| | | minWidth: '150px' |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å¹´åº¦è®¡å表 |
| | | getYearPlanList () { |
| | | getYearPlanList() { |
| | | const entity = { |
| | | monitorName: this.yearForm.monitorName, |
| | | } |
| | |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | clearYear () { |
| | | clearYear() { |
| | | this.yearForm.monitorName = '' |
| | | this.getYearPlanList() |
| | | }, |
| | |
| | | this.yearDetailPage.size = limit; |
| | | this.getYearPlanList(); |
| | | }, |
| | | leadInto () { |
| | | leadInto() { |
| | | this.uploadDia = true |
| | | this.getUserList() |
| | | }, |
| | |
| | | this.$message.error(response.msg) |
| | | } |
| | | }, |
| | | submitUpload () { |
| | | submitUpload() { |
| | | if (!this.planYear) { |
| | | this.$message.warning('è¯·éæ©å¹´ä»½') |
| | | return; |
| | |
| | | }, |
| | | // end |
| | | // å®¡æ ¸ |
| | | examinePlan (row) { |
| | | examinePlan(row) { |
| | | this.examineDialog = true |
| | | this.examineInfo = row |
| | | this.getUserList() |
| | | }, |
| | | handleReview (examineStatus) { |
| | | handleReview(examineStatus) { |
| | | // å®¡æ ¸ç¶æ , 0 ä¸éè¿, 1éè¿ |
| | | this.examineInfo.examineStatus = examineStatus |
| | | this.examineLoading = true |
| | |
| | | this.examineLoading = false |
| | | }) |
| | | }, |
| | | closeExamineDia () { |
| | | closeExamineDia() { |
| | | this.examineDialog = false |
| | | this.examineInfo.examineRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // æ¹å |
| | | approvalPlan (row) { |
| | | approvalPlan(row) { |
| | | this.ratifyDialog = true |
| | | this.ratifyInfo = row |
| | | }, |
| | | handleRatify (ratifyStatus) { |
| | | handleRatify(ratifyStatus) { |
| | | // æ¹åç¶æ , 0 ä¸éè¿, 1éè¿ |
| | | this.ratifyInfo.ratifyStatus = ratifyStatus |
| | | this.ratifyLoading = true |
| | |
| | | this.ratifyLoading = false |
| | | }) |
| | | }, |
| | | closeRatifyDia () { |
| | | closeRatifyDia() { |
| | | this.ratifyDialog = false |
| | | this.ratifyInfo.ratifyRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // æ¹åæ¥å |
| | | handleApproval (status) { |
| | | handleApproval(status) { |
| | | const personTrainingUpdateDto = { |
| | | qualityMonitorDetailsId: this.currentInfo.qualityMonitorDetailsId, |
| | | ratifyRemark: this.ratifyRemark, |
| | |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | exportQualityMonitorDetail({qualityMonitorId: row.qualityMonitorId}).then(res => { |
| | | handleDown(row) { |
| | | exportQualityMonitorDetail({ qualityMonitorId: row.qualityMonitorId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.monitorName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤è¿åº¦è®¡å表 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearLoading = true |
| | | delQualitySupervise({qualityMonitorId: row.qualityMonitorId}).then(res => { |
| | | delQualitySupervise({ qualityMonitorId: row.qualityMonitorId }).then(res => { |
| | | this.yearLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.getYearPlanList() |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // è·å年度æç»è¡¨ |
| | | getYearDetailPlanList () { |
| | | getYearDetailPlanList() { |
| | | const entity = { |
| | | qualityMonitorId: this.qualityMonitorId, |
| | | monitorPurpose: this.yearDetailForm.monitorPurpose, |
| | |
| | | }) |
| | | }, |
| | | // éç½®æç»è¡¨ |
| | | clearDetail () { |
| | | clearDetail() { |
| | | this.yearDetailForm = { |
| | | monitorPurpose: '', |
| | | monitorProject: '' |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æç»è¡¨å®æ½ |
| | | carryOut (row) { |
| | | carryOut(row) { |
| | | this.carryOutDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.carryOutDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeCarryOutDia () { |
| | | closeCarryOutDia() { |
| | | this.carryOutDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æå¼å®ææ¥åå¼¹æ¡ |
| | | record (row) { |
| | | record(row) { |
| | | this.qualityMonitorDetailsId = row.qualityMonitorDetailsId |
| | | this.ratifyRemark = row.ratifyRemark |
| | | if (row.finishReportUrl) { |
| | |
| | | }, |
| | | // end |
| | | // æå¼è¯ä»·å¼¹æ¡ |
| | | evaluate (row) { |
| | | evaluate(row) { |
| | | this.evaluateDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.evaluateDialog.openDia(row) |
| | | }) |
| | | }, |
| | | closeEvaDia () { |
| | | closeEvaDia() { |
| | | this.evaluateDialog = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æå¼å¯¼åºå¼¹æ¡ |
| | | downLoadPost (row) { |
| | | downLoadPost(row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // æå¼å¹´åº¦æç»æ°å¢ãä¿®æ¹å¼¹æ¡ |
| | | showDialog (type, row) { |
| | | showDialog(type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æ§å¶åå¯¼åº |
| | | controlDown() { |
| | | exportQualityMonitorRatify({qualityMonitorDetailsId: this.download.qualityMonitorDetailsId}).then(res => { |
| | | exportQualityMonitorRatify({ qualityMonitorDetailsId: this.download.qualityMonitorDetailsId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è´¨éçæ§å®æ½è®¡å.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å¤çåå¯¼åº |
| | | processingDown() { |
| | | exportQualityMonitorEvaluate({qualityMonitorDetailsId: this.download.qualityMonitorDetailsId}).then(res => { |
| | | exportQualityMonitorEvaluate({ qualityMonitorDetailsId: this.download.qualityMonitorDetailsId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è´¨éçæ§è¯ä»·.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | delYearPlanDetail (row) { |
| | | delYearPlanDetail(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearDetailLoading = true |
| | | delQualityMonitorDetail({qualityMonitorDetailsId: row.qualityMonitorDetailsId}).then(res => { |
| | | delQualityMonitorDetail({ qualityMonitorDetailsId: row.qualityMonitorDetailsId }).then(res => { |
| | | this.yearDetailLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.getYearDetailPlanList() |
| | |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="yearForm" ref="yearForm" size="small" :inline="true"> |
| | | <el-form-item label="计ååç§°" prop="superviseName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="yearForm.superviseName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="yearForm.superviseName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="clearYear">é ç½®</el-button> |
| | |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearTableData" :column="yearColumnData" :page="yearPage" :tableLoading="yearLoading" |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" |
| | | key="yearTableData"></lims-table> |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" key="yearTableData"></lims-table> |
| | | </div> |
| | | <div style="margin-top: 20px"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | |
| | | <el-button size="small" type="primary" @click="showDialog('add')">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" :tableLoading="yearDetailLoading" |
| | | height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" |
| | | :tableLoading="yearDetailLoading" height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | </div> |
| | | <!--æ°å¢ä¿®æ¹å¼¹æ¡--> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :superviseId="superviseId" @closeDia="closeDia"></detail-form-dialog> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :superviseId="superviseId" |
| | | @closeDia="closeDia"></detail-form-dialog> |
| | | <!--è®°å½æµç¨å¼¹æ¡--> |
| | | <records-dialog v-if="recordsDia" ref="recordsDia" :superviseId="superviseId" @closeRecordsDia="closeRecordsDia"></records-dialog> |
| | | <records-dialog v-if="recordsDia" ref="recordsDia" :superviseId="superviseId" |
| | | @closeRecordsDia="closeRecordsDia"></records-dialog> |
| | | <!--ä¸ç¬¦åå¤çæµç¨å¼¹æ¡--> |
| | | <processing-sheet v-if="processingDia" ref="processingDia" :superviseId="superviseId" @closeProcessingDia="closeProcessingDia"></processing-sheet> |
| | | <processing-sheet v-if="processingDia" ref="processingDia" :superviseId="superviseId" |
| | | @closeProcessingDia="closeProcessingDia"></processing-sheet> |
| | | <!--çº æ£å¤çæµç¨å¼¹æ¡--> |
| | | <rectify-dialog-new v-if="rectifyDia" ref="rectifyDia" :superviseId="superviseId" @closeProcessingDia="closeRectifyDia"></rectify-dialog-new> |
| | | <rectify-dialog-new v-if="rectifyDia" ref="rectifyDia" :superviseId="superviseId" |
| | | @closeProcessingDia="closeRectifyDia"></rectify-dialog-new> |
| | | <el-dialog :visible.sync="ratifyDialog" title="æ¹å" width="30%" @close="closeRatifyDia"> |
| | | <span> |
| | | æ¹å夿³¨ï¼ |
| | |
| | | <el-button :loading="ratifyLoading" type="primary" @click="handleRatify(1)">æ¹ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="downloadDialog" |
| | | title="导åº" |
| | | width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" @click="controlDown">è®°å½å导åº</el-button> |
| | | <el-button plain type="primary" @click="processingDown">å¤çå导åº</el-button> |
| | | <el-button plain type="primary" @click="supervisoryDown">çº æ£å导åº</el-button> |
| | | </span> |
| | | <el-dialog :visible.sync="downloadDialog" title="导åº" width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" @click="controlDown">è®°å½å导åº</el-button> |
| | | <el-button plain type="primary" @click="processingDown">å¤çå导åº</el-button> |
| | | <el-button plain type="primary" @click="supervisoryDown">çº æ£å导åº</el-button> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="downloadDialog = false">å æ¶</el-button> |
| | | </span> |
| | | <el-button @click="downloadDialog = false">å æ¶</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--导å
¥è®¡å--> |
| | | <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å
¥" width="500px" |
| | | :close-on-click-modal="false" :close-on-press-escape="false"> |
| | | <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å
¥" width="500px" :close-on-click-modal="false" |
| | | :close-on-press-escape="false"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="width: 80px">年份ï¼</span> |
| | | <el-date-picker |
| | | v-model="superviseYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | <el-date-picker v-model="superviseYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="鿩年"> |
| | | </el-date-picker> |
| | | <span style="width: 110px">çç£åï¼</span> |
| | | <el-select v-model="recordUserIds" placeholder="è¯·éæ©" size="small" |
| | | @change="splitList" |
| | | :multiple-limit="2" filterable multiple style="width: 100%"> |
| | | <span style="width: 110px">çç£åï¼</span> |
| | | <el-select v-model="recordUserIds" placeholder="è¯·éæ©" size="small" @change="splitList" :multiple-limit="2" |
| | | filterable multiple style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 60px">æ¹å人ï¼</div> |
| | | <el-select v-model="ratifyUserId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-select v-model="ratifyUserId" clearable filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload1" :action="action" :auto-upload="false" :file-list="fileList" :headers="uploadHeader" :limit="1" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{recordUserIds: recordUserIds1, superviseYear: superviseYear, ratifyUserId: ratifyUserId}" |
| | | name="file"> |
| | | <el-upload ref="upload1" :action="action" :auto-upload="false" :file-list="fileList" :headers="uploadHeader" |
| | | :limit="1" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{ recordUserIds: recordUserIds1, superviseYear: superviseYear, ratifyUserId: ratifyUserId }" |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | |
| | | ratifyQualitySupervise, superviseDetailAccordingExport, |
| | | exportSuperviseDetaillCorrect |
| | | } from "@/api/cnas/process/ensureResults/qualitySupervise"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import {mapGetters} from "vuex"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | name: 'a7-quality-control-plan', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, RectifyDialogNew, ProcessingSheet, RecordsDialog, DetailFormDialog}, |
| | | components: { limsTable, RectifyDialogNew, ProcessingSheet, RecordsDialog, DetailFormDialog }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | return null; |
| | | } |
| | | } |
| | | },{ |
| | | }, { |
| | | label: 'æ¹åå
容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: 'æ¹å人', |
| | | prop: 'ratifyUserName', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: 'æ¹åæ¥æ', |
| | | prop: 'ratifyTime', |
| | | minWidth: '160' |
| | |
| | | label: 'çç£åå ', |
| | | prop: 'superviseReason', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '夿³¨', |
| | | prop: 'remark', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | dataType: 'action', |
| | | width: '260', |
| | | label: 'æä½', |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å¹´åº¦è®¡å表 |
| | | getYearPlanList () { |
| | | getYearPlanList() { |
| | | const entity = { |
| | | superviseName: this.yearForm.superviseName, |
| | | } |
| | |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | clearYear () { |
| | | clearYear() { |
| | | this.yearForm.superviseName = '' |
| | | this.getYearPlanList() |
| | | }, |
| | |
| | | }, 1000) |
| | | } |
| | | }, |
| | | splitList (val) { |
| | | splitList(val) { |
| | | const string = this.HaveJson(val) |
| | | this.recordUserIds1 = string.join(','); |
| | | console.log(this.recordUserIds1) |
| | |
| | | this.$refs.upload1.submit(); |
| | | }, |
| | | // å
³é导å
¥å¼¹æ¡ |
| | | closeUploadDia () { |
| | | closeUploadDia() { |
| | | this.uploadDia = false; |
| | | this.recordUserIds = [] |
| | | this.ratifyUserId = '' |
| | |
| | | this.getYearPlanList() |
| | | }, |
| | | // æå¼æ¥åå¼¹æ¡ |
| | | record (row) { |
| | | record(row) { |
| | | this.uploadDia = true |
| | | this.getUserList() |
| | | }, |
| | | getUserList(){ |
| | | getUserList() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | | // æ¹å |
| | | approvalPlan (row) { |
| | | approvalPlan(row) { |
| | | this.ratifyDialog = true |
| | | this.ratifyInfo = row |
| | | }, |
| | | handleRatify (ratifyStatus) { |
| | | handleRatify(ratifyStatus) { |
| | | // æ¹åç¶æ , 0 ä¸éè¿, 1éè¿ |
| | | this.ratifyInfo.ratifyStatus = ratifyStatus |
| | | this.ratifyLoading = true |
| | |
| | | this.ratifyLoading = false |
| | | }) |
| | | }, |
| | | closeRatifyDia () { |
| | | closeRatifyDia() { |
| | | this.ratifyDialog = false |
| | | this.ratifyInfo.ratifyRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | exportQualitySupervise({superviseId: row.superviseId}).then(res => { |
| | | handleDown(row) { |
| | | exportQualitySupervise({ superviseId: row.superviseId }).then(res => { |
| | | try { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.superviseName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | } catch (error) { |
| | | console.error('å建Blob对象æ¶åºé:', error); |
| | | } |
| | | }) |
| | | }, |
| | | // å é¤è¿åº¦è®¡å表 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearLoading = true |
| | | delQualitySupervise({superviseId: row.superviseId}).then(res => { |
| | | delQualitySupervise({ superviseId: row.superviseId }).then(res => { |
| | | this.yearLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.getYearPlanList() |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // è·å年度æç»è¡¨ |
| | | getYearDetailPlanList () { |
| | | getYearDetailPlanList() { |
| | | const entity = { |
| | | superviseId: this.superviseId, |
| | | supervisePurpose: this.yearDetailForm.supervisePurpose, |
| | |
| | | }) |
| | | }, |
| | | // éç½®æç»è¡¨ |
| | | clearDetail () { |
| | | clearDetail() { |
| | | this.yearDetailForm = { |
| | | supervisePurpose: '', |
| | | superviseProject: '' |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æå¼å¹´åº¦æç»æ°å¢ãä¿®æ¹å¼¹æ¡ |
| | | showDialog (type, row) { |
| | | showDialog(type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // è®°å½æµç¨ |
| | | records (row) { |
| | | records(row) { |
| | | this.recordsDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.recordsDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeRecordsDia () { |
| | | closeRecordsDia() { |
| | | this.recordsDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // ä¸ç¬¦åæµç¨å¼¹æ¡ |
| | | processing (row) { |
| | | processing(row) { |
| | | this.processingDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.processingDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeProcessingDia () { |
| | | closeProcessingDia() { |
| | | this.processingDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // çº æ£æµç¨å¼¹æ¡ |
| | | rectify (row) { |
| | | rectify(row) { |
| | | this.rectifyDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.rectifyDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeRectifyDia () { |
| | | closeRectifyDia() { |
| | | this.rectifyDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // æå¼å¯¼åºå¼¹æ¡ |
| | | openDownloadDia (row) { |
| | | openDownloadDia(row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // 导åºè®°å½ |
| | | controlDown () { |
| | | exportSuperviseDetailRecord({superviseDetailsId: this.download.superviseDetailsId}).then(res => { |
| | | controlDown() { |
| | | exportSuperviseDetailRecord({ superviseDetailsId: this.download.superviseDetailsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è®°å½å¯¼åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // å¤çåå¯¼åº |
| | | processingDown () { |
| | | superviseDetailAccordingExport({superviseDetailsId: this.download.superviseDetailsId}).then(res => { |
| | | processingDown() { |
| | | superviseDetailAccordingExport({ superviseDetailsId: this.download.superviseDetailsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ä¸ç¬¦å项导åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // çº æ£åå¯¼åº |
| | | supervisoryDown () { |
| | | exportSuperviseDetaillCorrect({superviseDetailsCorrectId: this.download.superviseDetailsCorrectId}).then(res => { |
| | | supervisoryDown() { |
| | | exportSuperviseDetaillCorrect({ superviseDetailsCorrectId: this.download.superviseDetailsCorrectId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'çç£çº æ£æªæ½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤å¹´åº¦è¯¦æ
å表 |
| | | delYearPlanDetail (row) { |
| | | delYearPlanDetail(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearDetailLoading = true |
| | | delQualitySuperviseDetail({superviseDetailsId: row.superviseDetailsId}).then(res => { |
| | | delQualitySuperviseDetail({ superviseDetailsId: row.superviseDetailsId }).then(res => { |
| | | this.yearDetailLoading = false |
| | | this.$message.success('å 餿å') |
| | | this.getYearDetailPlanList() |
| | |
| | | .table-card { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .flex_column { |
| | | display: flex; |
| | | height: 80vh; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :title="operationType === 'edit' ? 'ç¼è¾' : 'æ°å¢'" |
| | | :visible.sync="formDia" |
| | | width="90%" @close="closeDia"> |
| | | <div v-if="operationType === 'edit'" style="text-align: right"> |
| | | <el-button :disabled="form.confirmDate" size="medium" type="primary" @click="validation">éªè¯ç¡®è®¤</el-button> |
| | | </div> |
| | | <table border="1" cellspacing="10" class="tables"> |
| | | <tr> |
| | | <td> |
| | | <p>æ åæ¹æ³</p> |
| | | </td> |
| | | <td> |
| | | <p>éªè¯åå </p> |
| | | </td> |
| | | <td> |
| | | <p>ä¸»è¦ææ¯åå</p> |
| | | </td> |
| | | <td> |
| | | <p>æ¶åæ¹é¢</p> |
| | | </td> |
| | | <td> |
| | | <p>æ åè¦æ±</p> |
| | | </td> |
| | | <td> |
| | | <p>å夿
åµ</p> |
| | | </td> |
| | | <td> |
| | | <p>æ¯å¦æ»¡è¶³</p> |
| | | </td> |
| | | <td> |
| | | <p>夿³¨</p> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td rowspan="9"> |
| | | <el-input v-model="form.methodName" :rows="6" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | </td> |
| | | <td rowspan="9"> |
| | | <el-input v-model="form.verifyReason" :rows="6" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | </td> |
| | | <td rowspan="9"> |
| | | <el-input v-model="form.technologyChange" :rows="6" |
| | | placeholder="请è¾å
¥å
容" |
| | | size="small" |
| | | type="textarea"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>人ï¼</td> |
| | | <td> |
| | | <el-input v-model="form.personRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.personReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.personIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-link type="primary" @click="viewWorkPermit">æ¥çä¸å²è¯</el-link> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>æºï¼</td> |
| | | <td> |
| | | <el-input v-model="form.machineRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.machineReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.machineIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-link type="primary" @click="viewDevice">æ¥ç设å¤</el-link> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>æï¼</td> |
| | | <td> |
| | | <el-input v-model="form.materialRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.materialReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.materialIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.materialRemark" size="small"></el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>æ³ï¼</td> |
| | | <td> |
| | | <el-input v-model="form.methodRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.methodReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.methodIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-link type="primary" @click="viewTestRecord">æ¥çæ£æµè®°å½</el-link> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>ç¯ï¼</td> |
| | | <td> |
| | | <el-input v-model="form.environmentRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.environmentReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.environmentIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.traceabilityRemark" size="small"></el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>æµéæº¯æºæ§ï¼</td> |
| | | <td> |
| | | <el-input v-model="form.traceabilityRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.traceabilityReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.traceabilityIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-link type="primary" @click="viewCalibrationsFileDia">æ¥çæ ¡åè¯ä¹¦</el-link> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>æ ·å管çéæ±ï¼</td> |
| | | <td> |
| | | <el-input v-model="form.managementRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.managementReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.managementIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.managementRemark" size="small"></el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>å
¶ä»ï¼</td> |
| | | <td> |
| | | <el-input v-model="form.otherRequirements" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.otherReadiness" size="small" type="textarea"></el-input> |
| | | </td> |
| | | <td> |
| | | <el-radio-group v-model="form.otherIsSatisfied" v-removeAriaHidden> |
| | | <el-radio :label="0">å¦</el-radio> |
| | | <el-radio :label="1">æ¯</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | <td> |
| | | <el-input v-model="form.otherRemark" size="small"></el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="3"> |
| | | <p>æ¯å¦å¼ç¨æ¤æ åå¼å±æ£æµ:</p> |
| | | </td> |
| | | <td colspan="3">å¯ä»¥å¼ç¨æ¤æ åå¼å±æ£æµ</td> |
| | | <td> |
| | | <p>确认æ¶é´:</p> |
| | | </td> |
| | | <td>{{form.confirmDate}}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="3"> |
| | | <p>åå 确认人ç¾å:</p> |
| | | </td> |
| | | <td colspan="5"> |
| | | <el-select v-model="form.confirmUser" multiple placeholder="è¯·éæ©" size="small" style="width: 100%" :multiple-limit="5"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeDia">å æ¶</el-button> |
| | | <el-button :loading="editLoad" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <ViewDeviceDialog v-if="viewDeviceDialog" ref="viewDeviceDialog" @closDeviceDia="closDeviceDia" @handleDeviceInfo="handleDeviceInfo"></ViewDeviceDialog> |
| | | <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog"></ViewTestRecord> |
| | | <ViewWorkPermitDia v-if="viewWorkPermitDia" ref="viewWorkPermitDia"></ViewWorkPermitDia> |
| | | <calibrations-file-dia v-if="calibrationsFileDia" ref="calibrationsFileDia"></calibrations-file-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { dateFormat } from '@/utils/date' |
| | | import ViewDeviceDialog from '../../standardMethodsChange/component/ViewDeviceDialog.vue'; |
| | | import ViewTestRecord from '../../standardMethodsChange/component/ViewTestRecord.vue'; |
| | | import ViewWorkPermitDia from '../../standardMethodsChange/component/viewWorkPermitDia.vue'; |
| | | import CalibrationsFileDia from '../../standardMethodsChange/component/calibrationsFileDia.vue'; |
| | | import { |
| | | addMethodVerify, |
| | | getMethodVerifyOne, |
| | | methodVerifyAffirm, |
| | | updateMethodVerify |
| | | } from '@/api/cnas/process/method/methodVerification' |
| | | import { selectUserCondition } from '@/api/cnas/process/method/standardMethodsChange' |
| | | export default { |
| | | name: 'formDIa', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { CalibrationsFileDia, ViewWorkPermitDia, ViewTestRecord, ViewDeviceDialog }, |
| | | props: { |
| | | operationType: { |
| | | type: String, |
| | | default: () => '' |
| | | } |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | form: { |
| | | methodName: '', |
| | | verifyReason: '', |
| | | technologyChange: '', |
| | | personRequirements: '', |
| | | personReadiness: '', |
| | | personIsSatisfied: '', |
| | | personRemark: '', |
| | | machineRequirements: '', |
| | | machineReadiness: '', |
| | | machineIsSatisfied: '', |
| | | materialRequirements: '', |
| | | materialReadiness: '', |
| | | materialIsSatisfied: '', |
| | | materialRemark: '', |
| | | methodRequirements: '', |
| | | methodReadiness: '', |
| | | methodIsSatisfied: '', |
| | | environmentRequirements: '', |
| | | environmentReadiness: '', |
| | | environmentIsSatisfied: '', |
| | | traceabilityRequirements: '', |
| | | traceabilityReadiness: '', |
| | | traceabilityIsSatisfied: '', |
| | | traceabilityRemark: '', |
| | | managementRequirements: '', |
| | | managementReadiness: '', |
| | | managementIsSatisfied: '', |
| | | managementRemark: '', |
| | | otherRequirements: '', |
| | | otherReadiness: '', |
| | | otherIsSatisfied: '', |
| | | otherRemark: '', |
| | | machineAttachmentList: [] |
| | | }, |
| | | editLoad: false, |
| | | info: { |
| | | methodVerifyId: '' |
| | | }, |
| | | userList: [], |
| | | viewDeviceDialog: false, |
| | | viewTestRecordDialog: false, |
| | | viewWorkPermitDia: false, |
| | | calibrationsFileDia: false, |
| | | }; |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia(row) { |
| | | this.formDia = true |
| | | this.info = row |
| | | this.getUserList() |
| | | if (this.operationType === 'edit') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
ä¿¡æ¯ |
| | | searchInfo (row) { |
| | | getMethodVerifyOne({methodVerifyId:row.methodVerifyId}).then(res => { |
| | | if (res.code === 200){ |
| | | this.form = {...res.data} |
| | | if (this.form.confirmUser) { |
| | | this.form.confirmUser = this.form.confirmUser.split(',').map(Number) |
| | | } |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // æäº¤ |
| | | handleEdit() { |
| | | this.editLoad = true |
| | | const processMethodSearchNews = this.HaveJson(this.form) |
| | | processMethodSearchNews.confirmUser = processMethodSearchNews.confirmUser && processMethodSearchNews.confirmUser.join(',') |
| | | processMethodSearchNews.operationType = 1 |
| | | if (this.operationType === 'edit') { |
| | | this.editInfo(processMethodSearchNews) |
| | | } else { |
| | | this.addInfo(processMethodSearchNews) |
| | | } |
| | | }, |
| | | // æ¥çä¸å²è¯ |
| | | viewWorkPermit () { |
| | | this.viewWorkPermitDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.viewWorkPermitDia.openDia(this.form) |
| | | }) |
| | | }, |
| | | // æ¥çæ ¡åè¯ä¹¦ |
| | | viewCalibrationsFileDia () { |
| | | this.calibrationsFileDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.calibrationsFileDia.openDia(this.form) |
| | | }) |
| | | }, |
| | | // æ¥çè®¾å¤ |
| | | viewDevice () { |
| | | this.viewDeviceDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.viewDeviceDialog.openDia(this.form) |
| | | }) |
| | | }, |
| | | // å
³é设å¤å¼¹æ¡ |
| | | closDeviceDia () { |
| | | this.viewDeviceDialog = false |
| | | }, |
| | | // æäº¤è®¾å¤ä¿¡æ¯ |
| | | handleDeviceInfo (machineAttachmentList) { |
| | | this.viewDeviceDialog = false |
| | | this.form.machineAttachmentList = machineAttachmentList |
| | | }, |
| | | // æ¥çæ£æµè®°å½ |
| | | viewTestRecord () { |
| | | this.viewTestRecordDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.viewTestRecordDialog.openDia(this.info) |
| | | }) |
| | | }, |
| | | // æäº¤ç¼è¾ |
| | | editInfo (processMethodSearchNews) { |
| | | updateMethodVerify(processMethodSearchNews).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 200){ |
| | | this.$message.success('æä½æå') |
| | | this.closeDia() |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | }, |
| | | // æäº¤æ°å¢ |
| | | addInfo (processMethodSearchNews) { |
| | | addMethodVerify(processMethodSearchNews).then(res => { |
| | | this.editLoad = false |
| | | if (res.code === 200){ |
| | | this.$message.success('æä½æå') |
| | | this.closeDia() |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.editLoad = false |
| | | }) |
| | | }, |
| | | // éªè¯ç¡®è®¤ |
| | | validation (){ |
| | | methodVerifyAffirm({methodVerifyId:this.info.methodVerifyId}).then(res => { |
| | | if (res.code === 200){ |
| | | this.form.confirmDate = dateFormat(new Date()) |
| | | } |
| | | |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.$emit('closeDia'); |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition().then(res => { |
| | | if (res.code === 200) { |
| | | this.userList = res.data |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>>.el-dialog { |
| | | margin-top: 2vh !important; |
| | | } |
| | | >>>.el-dialog__body { |
| | | max-height: 720px; |
| | | overflow-y: auto; |
| | | } |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | .tables td { |
| | | height: 34px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | padding: 4px; |
| | | } |
| | | </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="methodName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.methodName"></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" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | </div> |
| | | <formDIa v-if="formDIa" ref="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIa> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import TableCard from '@/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue'; |
| | | import formDIa from './component/formDIa.vue'; |
| | | import { delMethodVerify, exportMethodVerify, pagesMethodVerify } from '@/api/cnas/process/method/methodVerification' |
| | | |
| | | export default { |
| | | name: 'a7-method-verification', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { TableCard, limsTable, formDIa }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | methodName: '', |
| | | operationType: 1, |
| | | }, |
| | | options: [ |
| | | { label: 'ä¸åå¹´', value: '1' }, |
| | | { label: 'ä¸åå¹´', value: '2' }, |
| | | ], |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ åæ¹æ³', |
| | | prop: 'methodName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'éªè¯åå ', |
| | | prop: 'verifyReason', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¸»è¦ææ¯åå', |
| | | prop: 'technologyChange', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | minWidth: '60', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.downLoadPost(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.deleteRow(row); |
| | | }, |
| | | } |
| | | |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | formDIa: false, |
| | | operationType: '', |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = { |
| | | methodName: this.searchForm.methodName, |
| | | operationType: this.searchForm.operationType, |
| | | } |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pagesMethodVerify({ ...page, ...entity }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | deleteRow(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }) |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.methodName = ''; |
| | | this.searchList() |
| | | }, |
| | | openFormDia(type, row) { |
| | | this.formDIa = true |
| | | this.operationType = type |
| | | this.$nextTick(() => { |
| | | this.$refs.formDIa.openDia(row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | exportMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'æ åï¼æ¹æ³ï¼ç¡®è®¤è®°å½.docx') |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeDia() { |
| | | this.formDIa = false |
| | | this.searchList() |
| | | }, |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
| | |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" |
| | | @pagination="pagination" :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | |
| | | operationType: this.searchForm.operationType, |
| | | } |
| | | this.tableLoading = true |
| | | pagesMethodVerify({... this.page,...entity}).then(res => { |
| | | pagesMethodVerify({ ... this.page, ...entity }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | deleteRow (row) { |
| | | deleteRow(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delMethodVerify({methodVerifyId:row.methodVerifyId}).then(res => { |
| | | delMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | |
| | | this.searchForm.methodName = ''; |
| | | this.searchList() |
| | | }, |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.formDIa = true |
| | | this.operationType = type |
| | | this.$nextTick(() => { |
| | |
| | | }) |
| | | }, |
| | | // å
³éå¼¹æ¡ |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDIa = false |
| | | this.searchList() |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | this.outLoading = true |
| | | exportMethodVerify({methodVerifyId:row.methodVerifyId}).then(res => { |
| | | exportMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'æ åï¼æ¹æ³ï¼ç¡®è®¤è®°å½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å页忢 |
| | |
| | | </div> |
| | | <div> |
| | | <el-button size="medium" type="primary" @click="openApprovalDialog1">建 档</el-button> |
| | | <el-upload ref='upload' :action="action" |
| | | :before-upload="beforeUpload" :headers="headers" :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="display: inline-block; margin-left: 10px;"> |
| | | <el-button :loading="upLoading" size="medium" type="primary">导å
¥</el-button> |
| | | <el-upload ref='upload' :action="action" :before-upload="beforeUpload" :headers="headers" :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="display: inline-block; margin-left: 10px;"> |
| | | <el-button :loading="upLoading" size="medium" type="primary">导å
¥</el-button> |
| | | </el-upload> |
| | | <el-button size="medium" style="margin-left: 10px;" type="primary" @click="openFormDia">æ° å¢</el-button> |
| | | </div> |
| | |
| | | <div v-if="tabIndex === '0'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 26em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | :page="page" |
| | | @pagination="pagination"> |
| | | <lims-table :column="tableColumn" :height="'calc(100vh - 26em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | |
| | | <div v-if="tabIndex === '1'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table |
| | | :column="oldTableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="oldTableData" |
| | | :table-loading="oldTableLoading" |
| | | :page="oldPage" |
| | | @pagination="oldPagination"> |
| | | <lims-table :column="oldTableColumn" :height="'calc(100vh - 20em)'" :table-data="oldTableData" |
| | | :table-loading="oldTableLoading" :page="oldPage" @pagination="oldPagination"> |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | |
| | | <el-dialog :visible.sync="viewRocordDia" title="详æ
" width="80%" @close="approvalDialog = false"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="tableColumn1" |
| | | :height="'calc(100vh - 26em)'" |
| | | :table-data="tableData1" |
| | | :table-loading="tableLoading1" |
| | | style="padding: 0 15px;margin-bottom: 16px" |
| | | :page="page1" |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 26em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" style="padding: 0 15px;margin-bottom: 16px" :page="page1" |
| | | @pagination="pagination1"> |
| | | </limsTable> |
| | | </template> |
| | |
| | | standardNo: '', |
| | | }, |
| | | options: [ |
| | | {label: 'ä¸åå¹´', value: '1'}, |
| | | {label: 'ä¸åå¹´', value: '2'}, |
| | | { label: 'ä¸åå¹´', value: '1' }, |
| | | { label: 'ä¸åå¹´', value: '2' }, |
| | | ], |
| | | tableColumn: [ |
| | | { |
| | |
| | | tabIndex: '0', |
| | | formDialog: false, |
| | | editFormDialog: false, |
| | | upLoading:false, |
| | | outLoading:false, |
| | | upLoading: false, |
| | | outLoading: false, |
| | | ratifyInfo: { |
| | | writeUserId: '', |
| | | ratifyUserId: '', |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | searchList() { |
| | | let params = {} |
| | | if (this.tabIndex === '0') { |
| | | params = { |
| | |
| | | } |
| | | if (this.tabIndex === '0') { |
| | | this.tableLoading = true |
| | | pageMethodSearchNew({...params.oldPage,...params.entity}).then(res => { |
| | | pageMethodSearchNew({ ...params.oldPage, ...params.entity }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | } else { |
| | | this.oldTableLoading = true |
| | | pageSearchNewArchived({ |
| | | ...params.page,...params.entity |
| | | ...params.page, ...params.entity |
| | | }).then(res => { |
| | | this.oldTableLoading = false |
| | | if (res.code === 200){ |
| | | console.log('res>>>>>>>>>>>>',res) |
| | | if (res.code === 200) { |
| | | console.log('res>>>>>>>>>>>>', res) |
| | | this.oldTableData = res.data.records |
| | | this.oldPage.total = res.data.total |
| | | } |
| | |
| | | } |
| | | }, |
| | | // æå¼å岿¡£æ¡è¯¦æ
å¼¹æ¡ |
| | | openViewDia (row) { |
| | | openViewDia(row) { |
| | | this.archivedId = row.archivedId |
| | | this.viewRocordDia = true |
| | | this.pageSearchNewBackups() |
| | | }, |
| | | pageSearchNewBackups () { |
| | | pageSearchNewBackups() { |
| | | const entity = { |
| | | archivedId: this.archivedId, |
| | | } |
| | | this.tableLoading1 = true |
| | | pageSearchNewBackups({...this.page1,...entity}).then(res => { |
| | | pageSearchNewBackups({ ...this.page1, ...entity }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records |
| | | this.page1.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // æå¼æ¹åå¼¹æ¡ |
| | | openApprovalDialog (row) { |
| | | openApprovalDialog(row) { |
| | | this.approvalDialog = true |
| | | this.archivedId = row.archivedId |
| | | }, |
| | | // æå¼æ¹åå¼¹æ¡ |
| | | openApprovalDialog1 (row) { |
| | | openApprovalDialog1(row) { |
| | | this.approvalDialog1 = true |
| | | this.archivedId = row.archivedId |
| | | }, |
| | | // æäº¤æ¹å |
| | | handleApproval (status) { |
| | | handleApproval(status) { |
| | | this.approvalLoading = true |
| | | let internalReport = { |
| | | archivedId: this.archivedId, |
| | |
| | | }) |
| | | }, |
| | | // æäº¤æ¹å |
| | | handleApproval1 (status) { |
| | | handleApproval1(status) { |
| | | this.approvalLoading = true |
| | | let internalReport = { |
| | | archivedName: this.archivedName, |
| | |
| | | }) |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.standardNo = ''; |
| | | this.searchList() |
| | | }, |
| | | // æä½æ°å¢æ¡ |
| | | openFormDia (row) { |
| | | openFormDia(row) { |
| | | this.formDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDialog.openDia(row) |
| | | }) |
| | | }, |
| | | // å
³éæ°å¢å¼¹æ¡ |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDialog = false |
| | | this.searchList() |
| | | }, |
| | | // æå¼ä¿®æ¹å¼¹æ¡ |
| | | openEditFormDia (row) { |
| | | openEditFormDia(row) { |
| | | this.editFormDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.editFormDialog.openDia(row) |
| | | }) |
| | | }, |
| | | // |
| | | closeEditDia () { |
| | | closeEditDia() { |
| | | this.editFormDialog = false |
| | | this.searchList() |
| | | }, |
| | | // å¯¼åº |
| | | handleOut (row) { |
| | | handleOut(row) { |
| | | this.outLoading = true |
| | | exportMethodSearchNew({archivedId:row.archivedId}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | exportMethodSearchNew({ archivedId: row.archivedId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'æ 忥æ°å¯¼åº.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 导å
¥ |
| | |
| | | } |
| | | }, |
| | | // å页 |
| | | pagination(page){ |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | pagination1(page){ |
| | | pagination1(page) { |
| | | this.page1.size = page.limit |
| | | this.pageSearchNewBackups(); |
| | | }, |
| | | oldPagination(page){ |
| | | oldPagination(page) { |
| | | this.oldPage.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | // |
| | | getUserList(){ |
| | | getUserList() { |
| | | this.$axios.post(this.$api.user.selectUserList, { |
| | | page: {current: -1, size: -1,}, |
| | | entity: {name: null} |
| | | page: { current: -1, size: -1, }, |
| | | entity: { name: null } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .table-tab { |
| | | margin-bottom: 10px; |
| | | } |
| | |
| | | handleDown(row) { |
| | | exportInconsistentDistribution({ distributionId: row.distributionId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ä¸ç¬¦å项çåå¸' + '.docx'); |
| | | }) |
| | |
| | | // å¯¼åº |
| | | openDownloadDia(row) { |
| | | superviseDetailAccordingExport({ superviseDetailsId: row.superviseDetailsId }).then(res => { |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ä¸ç¬¦å项导åº' + '.docx'); |
| | | }).catch(err => { |
| | |
| | | exportProcessReport({ ids: this.mutilSelect.map(m => m.id) }).then(res => { |
| | | this.outLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å¯¼åºæå') |
| | | const url = this.javaApi + '/word/' + res.data; |
| | | this.$download.saveAs(url, "æ¥åç»æ"); |
| | | }) |
| | |
| | | |
| | | <script> |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import { |
| | | getDeviceAccidentReport, |
| | | addDeviceAccidentReport, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | name: "accident-form", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo() { |
| | | this.$axios.get(this.$api.deviceAccidentReport.getDeviceAccidentReport + '?accidentReportId=' + this.form.accidentReportId).then(res => { |
| | | getDeviceAccidentReport({ accidentReportId: this.form.accidentReportId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form = { ...res.data } |
| | | if (res.data.isFinish === 0) { |
| | |
| | | this.form.flowType = this.currentStep |
| | | this.$refs.modelForm.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios.post(this.$api.deviceAccidentReport.addDeviceAccidentReport, |
| | | this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | addDeviceAccidentReport(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.resetForm() |
| | |
| | | }, |
| | | getUserList() { |
| | | selectUserCondition().then(res => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.userList = data |
| | | this.userList = res.data |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æµç¨ç¼å·ï¼</div> |
| | | <div><el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.processNumber" |
| | | <div><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.processNumber" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="tables" style="margin-top: 10px;"> |
| | | <ValueTable ref="ValueTable" :url="$api.deviceBorrow.deviceBorrowPage" |
| | | :delUrl="$api.deviceBorrow.deleteDeviceBorrow" :componentData="componentData" :key="upIndex" /> |
| | | <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" |
| | | :page="page" @pagination="pagination"></lims-table> |
| | | <!-- <ValueTable ref="ValueTable" :url="$api.deviceBorrow.deviceBorrowPage" |
| | | :delUrl="$api.deviceBorrow.deleteDeviceBorrow" :componentData="componentData" :key="upIndex" /> --> |
| | | </div> |
| | | <el-dialog title="仪å¨è®¾å¤é¢(å)ç¨ç»è®°" top="5vh" :visible.sync="dialogVisible" width="60%"> |
| | | <el-steps :active="currentStep" finish-status="success" align-center> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table/value-table.vue' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { dateFormat } from '@/utils/date' |
| | | import { |
| | | saveDeviceBorrow, |
| | | deleteCNASFile, |
| | | getDeviceBorrow, |
| | | deviceBorrowExport, |
| | | deleteDeviceBorrow, |
| | | deviceBorrowPage, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | |
| | | } |
| | | }, |
| | | components: { |
| | | ValueTable |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | dialogVisible0: false, |
| | | //表头æ¾ç¤º |
| | | componentData: { |
| | | entity: { |
| | | processNumber: null, |
| | | deviceId: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | { |
| | | id: 'show', |
| | | font: 'æ¥ç', |
| | | type: 'text', |
| | | method: 'lookDetail' |
| | | }, |
| | | { |
| | | id: 'delete', |
| | | font: 'å é¤', |
| | | type: 'text', |
| | | method: 'doDiy' |
| | | }, |
| | | { |
| | | id: '111', |
| | | font: 'æµç¨è·è¸ª', |
| | | type: 'text', |
| | | method: 'handleLookList' |
| | | }], |
| | | init: false, |
| | | tagField: { |
| | | recipientState: { |
| | | select: [{ |
| | | value: 0, |
| | | type: 'success', |
| | | label: 'åæ ¼' |
| | | }, { |
| | | value: 1, |
| | | type: 'warning', |
| | | label: 'ç»´ä¿®' |
| | | }, { |
| | | value: 2, |
| | | type: 'info', |
| | | label: 'åç¨' |
| | | }, { |
| | | value: 3, |
| | | type: 'danger', |
| | | label: 'æ¥åº' |
| | | }] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | }, |
| | | upIndex: 0, |
| | | entityCopy: null, |
| | | currentStep: 0, // æ¥éª¤æ¡æ¾ç¤ºç¬¬å æ¥ |
| | | currentStepClick: 0, // ç¹å»æ¥éª¤æ¡åå |
| | | steps: ['ååº', 'åç¨'], |
| | |
| | | nextUser: [{ required: true, message: 'è¯·éæ©ä¸ç¯èè´è´£äºº', trigger: 'change' }], |
| | | }, |
| | | deviceLogs: [], |
| | | outLoading: false |
| | | outLoading: false, |
| | | recipientStateList: [{ |
| | | value: 0, |
| | | type: 'success', |
| | | label: 'åæ ¼' |
| | | }, { |
| | | value: 1, |
| | | type: 'warning', |
| | | label: 'ç»´ä¿®' |
| | | }, { |
| | | value: 2, |
| | | type: 'info', |
| | | label: 'åç¨' |
| | | }, { |
| | | value: 3, |
| | | type: 'danger', |
| | | label: 'æ¥åº' |
| | | }], |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "æµç¨ç¼å·", prop: "processNumber" }, |
| | | { label: "设å¤åç§°", prop: "deviceName" }, |
| | | { |
| | | label: "管çç¼å·", |
| | | prop: "unifyNumber" |
| | | }, |
| | | { label: "åç¨äºº", prop: "recipientUser" }, |
| | | { label: "åç¨äººèç³»æ¹å¼", prop: "borrowerContactInformation", width: '140px' }, |
| | | { label: "åç¨æ¥æ", prop: "recipientTime" }, |
| | | { |
| | | label: "åç¨æ¶ç¶æ", prop: "recipientState", dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.recipientStateList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.recipientStateList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "ååºäºº", prop: "submitUser" }, |
| | | { label: "ååºæ¥æ", prop: "createTime" }, |
| | | { |
| | | label: "å½åç¶æ", prop: "nowState" |
| | | }, |
| | | { label: "å½å责任人", prop: "nowUser" }, |
| | | { label: "éä»¶", prop: "fileName" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "æä½", |
| | | operation: [ |
| | | { |
| | | name: "æ¥ç", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.lookDetail(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "å é¤", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: "æµç¨è·è¸ª", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleLookList(row); |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | } |
| | | }, |
| | | watch: { |
| | | // çå¬ç¹å»el-treeçæ°æ®ï¼è¿è¡æ°æ®å·æ° |
| | | clickNodeVal(newVal) { |
| | | if (newVal.value) { |
| | | this.componentData.entity.deviceId = this.clickNodeVal.value |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | thisqueryParams.deviceId = this.clickNodeVal.value |
| | | this.refreshTable() |
| | | } |
| | | }, |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["nickName"]), |
| | | action() { |
| | | return this.javaApi + '/personBasicInfo/saveCNASFile' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.componentData.entity.deviceId = this.clickNodeVal.value |
| | | this.entityCopy = this.HaveJson(this.componentData.entity) |
| | | // console.log(333,this.clickNodeVal) |
| | | this.queryParams.deviceId = this.clickNodeVal.value |
| | | this.getUserList() |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | refreshTable(e) { |
| | | this.$refs['ValueTable'].selectList(e) |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | deviceBorrowPage({ ...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.refreshTable() |
| | | // this.upIndex++ |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | choiceStep(index) { |
| | | this.currentStepClick = index |
| | |
| | | // è·åå½åç¯èæä½äººä¸æ¥æ |
| | | switch (this.currentStep) { |
| | | case 0: |
| | | this.form.submitOperationUser = user.name |
| | | this.form.submitOperationUser = this.nickName |
| | | this.form.submitOperationTime = dateTime |
| | | break |
| | | case 1: |
| | | this.form.receiveOperationUser = user.name |
| | | this.form.receiveOperationUser = this.nickName |
| | | this.form.receiveOperationTime = dateTime |
| | | break |
| | | default: |
| | |
| | | }, |
| | | // æ¥ç详æ
|
| | | lookDetail(row) { |
| | | this.$axios.get(this.$api.deviceBorrow.getDeviceBorrow + '?id=' + row.id).then(res => { |
| | | getDeviceBorrow({ id: row.id }).then(res => { |
| | | if (res.code == 200) { |
| | | this.form = res.data |
| | | this.form.deviceName = this.clickNodeVal.label |
| | |
| | | //å¯¼åº |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.deviceBorrow.deviceBorrowExport, { deviceId: this.clickNodeVal.value }, { responseType: 'blob' }).then(res => { |
| | | deviceBorrowExport({ deviceId: this.clickNodeVal.value }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { |
| | | type: 'application/force-download' |
| | | }) |
| | | const filename = decodeURI(this.clickNodeVal.label + '设å¤ååºç»è®¡' + '.xlsx') |
| | | //å°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 elink = document.createElement('a') |
| | | elink.download = filename |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | elink.click(); |
| | | URL.revokeObjectURL(elink.href) // éæ¾URL 对象 |
| | | document.body.removeChild(elink) |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | // å建ä¸ä¸ªè¶
龿¥ï¼å°æä»¶æµèµè¿å»ï¼ç¶åå®ç°è¿ä¸ªè¶
龿¥çåå»äºä»¶ |
| | | const elink = document.createElement('a') |
| | | elink.download = filename |
| | | elink.style.display = 'none' |
| | | elink.href = URL.createObjectURL(blob) |
| | | document.body.appendChild(elink) |
| | | elink.click(); |
| | | URL.revokeObjectURL(elink.href) // éæ¾URL 对象 |
| | | document.body.removeChild(elink) |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, filename) |
| | | }) |
| | | }, |
| | | handleLookList(row) { |
| | | this.$axios.get(this.$api.deviceBorrow.getDeviceBorrow + '?id=' + row.id).then(res => { |
| | | getDeviceBorrow({ id: row.id }).then(res => { |
| | | if (res.code == 200) { |
| | | this.deviceLogs = res.data.deviceLogs |
| | | this.dialogVisible0 = true |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | deleteDeviceBorrow({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | <div class="btnS"> |
| | | <el-button size="small" type="primary" @click="calibrationMaintenance()">æ ¡å项ç®ç»´æ¤</el-button> |
| | | <el-button size="small" type="primary" @click="add('add')">æ·»å æ ¡åè®°å½</el-button> |
| | | <el-button size="small" type="primary" @click="handleDown">导åºExcel</el-button> |
| | | <!-- <el-button size="small" type="primary" @click="handleDown">导åºExcel</el-button> --> |
| | | </div> |
| | | <div class="tables" style="margin-top: 10px;"> |
| | | <el-table :data="tableData" height="calc(100vh - 20em)"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- æä½æ¥å¿ --> |
| | | <!-- <h4>--> |
| | | <!-- <div style="display: flex;--> |
| | | <!-- align-items: center;">--> |
| | | <!-- <span class="line"></span><span>æ¬è®°å½ç¶æåæä½æ¥å¿</span>--> |
| | | <!-- </div>--> |
| | | <!-- </h4>--> |
| | | <!-- <el-table :data="tableDataOperate" style="width: 100%">--> |
| | | <!-- <el-table-column type="index" label="åºå·" width="100"></el-table-column>--> |
| | | <!-- <el-table-column prop="operator" label="æä½äºº" width="120"></el-table-column>--> |
| | | <!-- <el-table-column prop="operationTime" label="æä½æ¶é´" width="180"></el-table-column>--> |
| | | <!-- <el-table-column prop="operationType" label="æä½ç±»å" width="120"></el-table-column>--> |
| | | <!-- <el-table-column prop="operationContent" label="æä½å
容"></el-table-column>--> |
| | | <!-- </el-table>--> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="operationType === 'add'" @click="dialogVisible1 = false">å æ¶</el-button> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import fileDownload from "@/utils/file"; |
| | | import { |
| | | deviceMetricRecordPage, |
| | | deviceLog, |
| | | showDeviceMetricsCopy, |
| | | deleteDeviceMetricRecord, |
| | | deviceMetricRecordExport, |
| | |
| | | selectDeviceMetric, |
| | | deleteDeviceMetrics, |
| | | addOrUpdateDeviceMetricRecord, |
| | | saveOrUpdateDeviceMetric |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | |
| | | ], |
| | | }, |
| | | addRecordLoading: false, |
| | | tableDataOperate: [], // æ¬è®°å½ç¶æåæä½æ¥å¿ |
| | | upLoading: false, |
| | | operationType: '', |
| | | search: { |
| | |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | ...mapGetters(["nickName"]), |
| | | action() { |
| | | return this.javaApi + '/personBasicInfo/saveCNASFile' |
| | | } |
| | | }, |
| | | mounted() { |
| | | //è·åæä½è®°å½ä¿¡æ¯ |
| | | this.getOperateMsg(); |
| | | this.getTableList(this.clickNodeVal.value) // è·åè®¾å¤æ ¡ååè¡¨æ°æ® |
| | | }, |
| | | methods: { |
| | |
| | | this.search.total = res.data.total |
| | | }) |
| | | }, |
| | | getOperateMsg() { |
| | | deviceLog(this.clickNodeVal.value).then(res => { |
| | | this.tableDataOperate = res.data |
| | | }) |
| | | }, |
| | | // æ·»å æ ¸æ¥è®°å½ |
| | | add(type) { |
| | | this.operationType = type |
| | |
| | | }, |
| | | // æ¥ç详æ
|
| | | handleViewClick(type, row) { |
| | | showDeviceMetricsCopy({ id: row.id, type: calibrate }).then(res => { |
| | | showDeviceMetricsCopy({ id: row.id, type: 'calibrate' }).then(res => { |
| | | this.calibrateParams = res.data |
| | | }) |
| | | this.calibrationRecord = { ...row } |
| | |
| | | let state = /\.(jpg|jpeg|png|gif)$/i.test(row.systemFileName) |
| | | if (state) { |
| | | let url = this.javaApi + '/img/' + row.systemFileName; |
| | | fileDownload.downloadIamge(url, row.systemFileName) |
| | | this.$download.saveAs(url, row.systemFileName) |
| | | } else { |
| | | const url = this.javaApi + '/word/' + row.systemFileName |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.systemFileName; |
| | | link.click(); |
| | | this.$message.success('ä¸è½½æå') |
| | | this.$download.saveAs(url, row.systemFileName) |
| | | } |
| | | }, |
| | | //å¯¼åº |
| | |
| | | this.outLoading = true |
| | | deviceMetricRecordExport({ |
| | | deviceId: this.clickNodeVal.value, |
| | | type: calibrate |
| | | type: 'calibrate' |
| | | }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'è®¾å¤æ ¡å.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | deleteFile() { |
| | |
| | | this.calibrateParamsLoading = true |
| | | this.addCalibrateLoading = true |
| | | this.form0.deviceId = this.clickNodeVal.value; |
| | | const user = JSON.parse(localStorage.getItem('user')) |
| | | this.form0.createdBy = user.name; |
| | | this.form0.createdBy = this.nickName; |
| | | this.form0.type = 'calibrate' |
| | | deleteDeviceMetrics(this.form0).then(res => { |
| | | saveOrUpdateDeviceMetric(this.form0).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('ä¿åæå') |
| | | this.$refs['form0'].resetFields() |
| | |
| | | } |
| | | this.addRecordLoading = true |
| | | this.calibrationRecord.deviceId = this.clickNodeVal.value; |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | this.calibrationRecord.createUser = user.name |
| | | this.calibrationRecord.createUser = this.nickName |
| | | this.calibrationRecord.type = 'calibrate' |
| | | this.calibrationRecord.deviceMetricsCopyList = this.calibrateParams |
| | | addOrUpdateDeviceMetricRecord(this.calibrationRecord).then(res => { |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | function downloadImage(url) { |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.target = "_blank" |
| | | link.download = 'attachment.jpg'; // æä»¶å |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | } |
| | | |
| | | </script> |
| | |
| | | @click="deleteFile"></el-button> |
| | | </el-input> |
| | | <el-upload v-if="operationType === 'add'" ref="upload" :action="action" :before-upload="beforeUpload" |
| | | :headers="headers" :limit="1" :on-error="onError" :on-success="handleSuccessUp" |
| | | :headers="uploadHeader" :limit="1" :on-error="onError" :on-success="handleSuccessUp" |
| | | :show-file-list="false" style="float: right;"> |
| | | <el-button :loading="upLoading" size="small" style="position: relative; top: -4px;" |
| | | type="primary">éä»¶ä¸ä¼ |
| | |
| | | <script> |
| | | import ValueTable from "@/components/Table/value-table.vue"; |
| | | import file from '@/utils/file'; |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | components: { |
| | | ValueTable |
| | |
| | | }, |
| | | // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | ...mapGetters(["nickName"]), |
| | | action() { |
| | | return this.javaApi + this.$api.personnel.saveCNASFile |
| | | } |
| | |
| | | this.calibrateParamsLoading = true |
| | | this.addCalibrateLoading = true |
| | | this.form0.deviceId = this.clickNodeVal.value; |
| | | const user = JSON.parse(localStorage.getItem('user')) |
| | | this.form0.createdBy = user.name; |
| | | this.form0.createdBy = this.nickName; |
| | | this.form0.type = 'examine' |
| | | this.$axios.post(this.$api.deviceCheck.saveOrUpdateDeviceMetric, this.form0, { |
| | | headers: { |
| | |
| | | } |
| | | this.addRecordLoading = true |
| | | this.calibrationRecord.deviceId = this.clickNodeVal.value; |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | this.calibrationRecord.createUser = user.name |
| | | this.calibrationRecord.createUser = this.nickName |
| | | this.calibrationRecord.deviceMetricsCopyList = this.calibrateParams |
| | | this.calibrationRecord.type = 'examine' |
| | | this.$axios.post(this.$api.deviceCheck.addOrUpdateDeviceMetricRecord, this.calibrationRecord, { |
| | |
| | | pageDeviceAcceptance, |
| | | getDeviceAcceptanceFileList, |
| | | delDeviceAcceptanceFileList, |
| | | exportUseRecord, |
| | | exportDeviceAcceptance, |
| | | delDeviceAcceptance, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | |
| | | let url = ''; |
| | | if (row.type == 1) { |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | file.downloadIamge(url, row.fileName) |
| | | this.$download.saveAs(url, row.fileName) |
| | | } else { |
| | | url = this.javaApi + '/word/' + row.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | | link.click(); |
| | | this.$download.saveAs(url, row.fileName) |
| | | } |
| | | }, |
| | | // å é¤ |
| | |
| | | // å¯¼åº |
| | | handleDownOne(id) { |
| | | this.outLoading = true |
| | | exportUseRecord({ acceptanceId: id }).then(res => { |
| | | exportDeviceAcceptance({ acceptanceId: id }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设å¤éªæ¶.doc') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤ |
| | |
| | | |
| | | <script> |
| | | import AccidentForm from "./accidentForm.vue"; |
| | | |
| | | import { |
| | | pageDeviceAccidentReport, |
| | | exportDeviceAccidentReport, |
| | | delDeviceAccidentReport, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | name: "equipment-accident", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | // æ¥è¯¢ |
| | | getYearTableDetailData(deviceId) { |
| | | this.yearTableDetailDataLoading = true |
| | | this.$axios.post(this.$api.deviceAccidentReport.pageDeviceAccidentReport, { |
| | | page: { |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | pageDeviceAccidentReport({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | deviceId: deviceId, |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.yearTableDetailData = res.data.records |
| | |
| | | // å¯¼åº |
| | | handleDownOne(id) { |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.deviceAccidentReport.exportDeviceAccidentReport + '?accidentReportId=' + id, { |
| | | responseType: "blob" |
| | | }).then(res => { |
| | | exportDeviceAccidentReport({ accidentReportId: id }).then(res => { |
| | | this.outLoading = false |
| | | 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 = '仪å¨è®¾å¤äºæ
æ¥åå.doc'; |
| | | 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 = '仪å¨è®¾å¤äºæ
æ¥åå.doc'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '仪å¨è®¾å¤äºæ
æ¥åå.doc') |
| | | }) |
| | | }, |
| | | // å é¤ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.get(this.$api.deviceAccidentReport.delDeviceAccidentReport + '?accidentReportId=' + id).then(res => { |
| | | delDeviceAccidentReport({ accidentReportId: id }).then(res => { |
| | | this.$message.success('å 餿åï¼'); |
| | | this.getYearTableDetailData(this.clickNodeVal.value); |
| | | }); |
| | |
| | | |
| | | <script> |
| | | import FailureForm from "./failureForm.vue"; |
| | | |
| | | import { |
| | | pageDeviceBreakdownMaintenance, |
| | | exportDeviceBreakdownMaintenance, |
| | | delDeviceBreakdownMaintenance, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | name: "equipment-failure", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | // æ¥è¯¢ |
| | | getYearTableDetailData(deviceId) { |
| | | this.yearTableDetailDataLoading = true |
| | | this.$axios.post(this.$api.deviceBreakdownMaintenance.pageDeviceBreakdownMaintenance, { |
| | | page: { |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | pageDeviceBreakdownMaintenance({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | deviceId: deviceId, |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.yearTableDetailData = res.data.records |
| | |
| | | // å¯¼åº |
| | | handleDownOne(id) { |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.deviceBreakdownMaintenance.exportDeviceBreakdownMaintenance + '?maintenanceId=' + id, { |
| | | responseType: "blob" |
| | | exportDeviceBreakdownMaintenance({ |
| | | maintenanceId: id |
| | | }).then(res => { |
| | | this.outLoading = false |
| | | 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 = '仪å¨è®¾å¤ä¿®çç³è¯·è¡¨.doc'; |
| | | 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 = '仪å¨è®¾å¤ä¿®çç³è¯·è¡¨.doc'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '仪å¨è®¾å¤ä¿®çç³è¯·è¡¨.doc') |
| | | }) |
| | | }, |
| | | // å é¤ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.get(this.$api.deviceBreakdownMaintenance.delDeviceBreakdownMaintenance + '?maintenanceId=' + id).then(res => { |
| | | delDeviceBreakdownMaintenance({ |
| | | maintenanceId: id |
| | | }).then(res => { |
| | | this.$message.success('å 餿åï¼'); |
| | | this.getYearTableDetailData(this.clickNodeVal.value); |
| | | }); |
| | |
| | | </div> |
| | | <div> |
| | | <el-table ref="yearTable" v-loading="yearTableDetailDataLoading" :data="yearTableDetailData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100% ;"> |
| | | height="calc(100vh - 18em)" style="width: 100% ;"> |
| | | <!-- è¡¨æ ¼å --> |
| | | <el-table-column align="center" header-align="center" label="åºå·" prop="prop" type="index" width="70"></el-table-column> |
| | | <!-- <el-table-column label="仪å¨åç§°" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="åå·" min-width="100" prop="address"></el-table-column>--> |
| | | <el-table-column align="center" header-align="center" label="åºå·" prop="prop" type="index" |
| | | width="70"></el-table-column> |
| | | <!-- <el-table-column label="仪å¨åç§°" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="åå·" min-width="100" prop="address"></el-table-column>--> |
| | | <el-table-column label="é
ä»¶" min-width="150" prop="parts"></el-table-column> |
| | | <el-table-column label="ç¼å·" min-width="100" prop="number"></el-table-column> |
| | | <el-table-column label="æ¥åºçç±" min-width="150" prop="reasonsForScrap"></el-table-column> |
| | | <!-- æä½æé® --> |
| | | <el-table-column align="center" fixed="right" label="æä½" min-width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-button :disabled="scope.row.ratifyStatus === 1" size="small" type="text" @click="handleForm(scope.row.scrappedId)">æä½</el-button> |
| | | <el-button :disabled="scope.row.ratifyStatus === 1" size="small" type="text" |
| | | @click="handleForm(scope.row.scrappedId)">æä½</el-button> |
| | | <el-button size="small" type="text" @click="handleDownOne(scope.row.scrappedId)">导åº</el-button> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="deleteFun(scope.row.scrappedId)">å é¤</el-button> |
| | | <el-button size="small" style="color: #f56c6c" type="text" |
| | | @click="deleteFun(scope.row.scrappedId)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="pagination1.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="pagination1.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | :total="pagination1.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange1" @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | <scrap-application-form v-if="applicationForm" ref="applicationForm" @closeDialog="closeDialog"></scrap-application-form> |
| | | <scrap-application-form v-if="applicationForm" ref="applicationForm" |
| | | @closeDialog="closeDialog"></scrap-application-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import scrapApplicationForm from "./scrapApplicationForm.vue"; |
| | | |
| | | import { |
| | | pageDeviceScrapped, |
| | | exportDeviceScrapped, |
| | | delDeviceScrapped, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | name: "equipment-scrap", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {scrapApplicationForm}, |
| | | components: { scrapApplicationForm }, |
| | | props: { |
| | | clickNodeVal: { |
| | | type: Object, |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢ |
| | | getYearTableDetailData (deviceId) { |
| | | getYearTableDetailData(deviceId) { |
| | | this.yearTableDetailDataLoading = true |
| | | this.$axios.post(this.$api.deviceScrapped.pageDeviceScrapped,{ |
| | | page: { |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | pageDeviceScrapped({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | deviceId: deviceId, |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.yearTableDetailData = res.data.records |
| | |
| | | this.yearTableDetailDataLoading = false |
| | | }) |
| | | }, |
| | | handleForm (id) { |
| | | handleForm(id) { |
| | | this.applicationForm = true |
| | | this.$nextTick(() => { |
| | | this.$refs.applicationForm.openDialog(id, this.clickNodeVal.value) |
| | | }) |
| | | }, |
| | | closeDialog () { |
| | | closeDialog() { |
| | | this.applicationForm = false |
| | | this.getYearTableDetailData(this.clickNodeVal.value) |
| | | }, |
| | |
| | | // å¯¼åº |
| | | handleDownOne(id) { |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.deviceScrapped.exportDeviceScrapped + '?scrappedId=' + id, { |
| | | responseType: "blob" |
| | | }).then(res => { |
| | | exportDeviceScrapped({ scrappedId: id }).then(res => { |
| | | this.outLoading = false |
| | | 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 = '仪å¨è®¾å¤æ¥åºç³è¯·è¡¨.doc'; |
| | | 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 = '仪å¨è®¾å¤æ¥åºç³è¯·è¡¨.doc'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '仪å¨è®¾å¤æ¥åºç³è¯·è¡¨.doc') |
| | | }) |
| | | }, |
| | | // å é¤ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.get(this.$api.deviceScrapped.delDeviceScrapped + '?scrappedId=' + id).then(res => { |
| | | delDeviceScrapped({ scrappedId: id }).then(res => { |
| | | this.$message.success('å 餿åï¼'); |
| | | this.getYearTableDetailData(this.clickNodeVal.value); |
| | | }); |
| | |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .title-search { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | this.outLoading = true |
| | | exportReviewExamineRecordContrast({ planDetailsId: this.downRow.planDetailsId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '仪å¨è®¾å¤æé´æ ¸æ¥æ¯å¯¹è®°å½è¡¨.doc') |
| | | }) |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getDeviceBreakdownMaintenance, |
| | | addDeviceBreakdownMaintenance, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | export default { |
| | | name: "failure-form", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo() { |
| | | this.$axios.get(this.$api.deviceBreakdownMaintenance.getDeviceBreakdownMaintenance + '?maintenanceId=' + this.form.maintenanceId).then(res => { |
| | | getDeviceBreakdownMaintenance({ |
| | | maintenanceId: this.form.maintenanceId |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form = { ...res.data } |
| | | if (this.form.isFinish === 0) { |
| | |
| | | this.form.flowType = this.currentStep |
| | | this.$refs.modelForm.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios.post(this.$api.deviceBreakdownMaintenance.addDeviceBreakdownMaintenance, |
| | | this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | addDeviceBreakdownMaintenance(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.resetForm() |
| | |
| | | this.$emit('closeDialog') |
| | | }, |
| | | getUserList() { |
| | | this.$axios.post(this.$api.user.selectUserList, { |
| | | page: { current: -1, size: -1, }, |
| | | entity: { name: null } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | selectUserCondition().then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.userList = res.data.records |
| | | this.userList = res.data |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | |
| | | <script> |
| | | import { dateFormat } from '@/utils/date' |
| | | |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["nickName"]), |
| | | action() { |
| | | return this.javaApi + this.$api.personnel.saveCNASFile |
| | | } |
| | |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid === true || saveState !== '1submit') { |
| | | // ç»å½åç¯è设置åå»ºäººä¸æ¶é´ |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | const dateTime = dateFormat(new Date()) |
| | | // è·åå½åç¯èæä½äººä¸æ¥æ |
| | | switch (this.currentStep) { |
| | | case 0: |
| | | this.form.submitUser = user.name |
| | | this.form.submitOperatingPersonnel = user.name |
| | | this.form.submitUser = this.nickName |
| | | this.form.submitOperatingPersonnel = this.nickName |
| | | this.form.submitDate = dateTime |
| | | break |
| | | case 1: |
| | | this.form.adminOperatingPersonnel = user.name |
| | | this.form.adminOperatingPersonnel = this.nickName |
| | | this.form.adminDate = dateTime |
| | | break |
| | | case 2: |
| | | this.form.technicalOperatingPersonnel = user.name |
| | | this.form.technicalOperatingPersonnel = this.nickName |
| | | this.form.technicalDate = dateTime |
| | | break |
| | | case 3: |
| | | this.form.maintainOperatingPersonnel = user.name |
| | | this.form.maintainOperatingPersonnel = this.nickName |
| | | this.form.maintainDate = dateTime |
| | | break |
| | | case 4: |
| | | this.form.afterMaintenanceOperatingPersonnel = user.name |
| | | this.form.afterMaintenanceOperatingPersonnel = this.nickName |
| | | this.form.afterMaintenanceDate = dateTime |
| | | break |
| | | default: |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'è®¾å¤æ¡£æ¡å¡.doc') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | handleSuccessUpImg2(response) { |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getDeviceInspectionRecord, |
| | | addDeviceInspectionRecord, |
| | | updateDeviceInspectionRecord, |
| | | reviewDeviceInspectionRecord, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | export default { |
| | | name: "inspection-form", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | } |
| | | }, |
| | | searchInfo() { |
| | | this.$axios.get(this.$api.deviceInspectionRecord.getDeviceInspectionRecord + '?inspectionRecordId=' + this.form.inspectionRecordId).then(res => { |
| | | getDeviceInspectionRecord({ |
| | | inspectionRecordId: this.form.inspectionRecordId |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form = { ...res.data } |
| | | this.details = this.form.details || [] |
| | |
| | | this.form.details = this.HaveJson(this.details) |
| | | this.submitFormLoading = true |
| | | if (this.operationType === 'add') { |
| | | this.$axios.post(this.$api.deviceInspectionRecord.addDeviceInspectionRecord, |
| | | this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | addDeviceInspectionRecord(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.resetForm() |
| | |
| | | this.submitFormLoading = false |
| | | }) |
| | | } else { |
| | | this.$axios.post(this.$api.deviceInspectionRecord.updateDeviceInspectionRecord, |
| | | this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | updateDeviceInspectionRecord(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.resetForm() |
| | |
| | | inspectionRecordId: this.form.inspectionRecordId, |
| | | status: status, |
| | | } |
| | | this.$axios.post(this.$api.deviceInspectionRecord.reviewDeviceInspectionRecord, |
| | | params, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | reviewDeviceInspectionRecord(params).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('å®¡æ ¸æå') |
| | | this.resetForm() |
| | |
| | | this.$emit('closeDialog') |
| | | }, |
| | | getUserList() { |
| | | this.$axios.post(this.$api.user.selectUserList, { |
| | | page: { current: -1, size: -1, }, |
| | | entity: { name: null } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | selectUserCondition().then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.userList = res.data.records |
| | | this.userList = res.data |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | |
| | | <script> |
| | | import InspectionForm from "./inspectionForm.vue"; |
| | | |
| | | import { |
| | | getDeviceInspectionRecordByPage, |
| | | exportDeviceInspectionRecord, |
| | | deleteDeviceInspectionRecord, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | name: "inspection-of-equipment", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | // æ¥è¯¢ |
| | | getYearTableDetailData(deviceId) { |
| | | this.yearTableDetailDataLoading = true |
| | | this.$axios.post(this.$api.deviceInspectionRecord.getDeviceInspectionRecordByPage, { |
| | | page: { |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | getDeviceInspectionRecordByPage({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | deviceId: deviceId, |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.yearTableDetailData = res.data.records |
| | |
| | | // å¯¼åº |
| | | handleDownOne(id) { |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.deviceInspectionRecord.exportDeviceInspectionRecord + '?inspectionRecordId=' + id, { |
| | | responseType: "blob" |
| | | exportDeviceInspectionRecord({ |
| | | inspectionRecordId: id |
| | | }).then(res => { |
| | | this.outLoading = false |
| | | 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 = '设å¤ç¹æ£è®°å½è¡¨.doc'; |
| | | 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 = '设å¤ç¹æ£è®°å½è¡¨.doc'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '设å¤ç¹æ£è®°å½è¡¨.doc') |
| | | }) |
| | | }, |
| | | // å é¤ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.get(this.$api.deviceInspectionRecord.deleteDeviceInspectionRecord + '?inspectionRecordId=' + id).then(res => { |
| | | deleteDeviceInspectionRecord({ inspectionRecordId: id }).then(res => { |
| | | this.$message.success('å 餿åï¼'); |
| | | this.getYearTableDetailData(this.clickNodeVal.value); |
| | | }); |
| | |
| | | <script> |
| | | import { |
| | | exportMaintenanceRecord, |
| | | deviceMaintainDelete, |
| | | deleteDeviceMaintenance, |
| | | selectDeviceByCode, |
| | | addDeviceMaintenance, |
| | | getDeviceMaintenancePage, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | props: { |
| | |
| | | exportMaintenanceRecord({ deviceId: this.clickNodeVal.value }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$message.success('å¯¼åºæå') |
| | | //å°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 = '设å¤ç»´æ¤ä¿å
»è®°å½.doc'; |
| | | 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 = '设å¤ç»´æ¤ä¿å
»è®°å½.doc'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '设å¤ç»´æ¤ä¿å
»è®°å½.doc') |
| | | }) |
| | | }, |
| | | //æä½è¯¦æ
å é¤ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deviceMaintainDelete(row.id).then(res => { |
| | | deleteDeviceMaintenance({ id: row.id }).then(res => { |
| | | }) |
| | | this.MaintainParam.splice(index, 1); |
| | | // this.MaintainParam.splice(index, 1); |
| | | this.getAllMessage(this.clickNodeVal.value) |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'å 餿å!' |
| | |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.formData.deviceId = this.clickNodeVal.value; |
| | | this.$axios.post(this.$api.deviceCheck.deviceMaintainAdd, this.formData).then(res => { |
| | | addDeviceMaintenance(this.formData).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æ·»å æå'); |
| | | this.getAllMessage(this.clickNodeVal.value) |
| | | this.dialogVisible = false; |
| | | this.formData = {}; //æ¸
空表å |
| | | } |
| | | }) |
| | | this.MaintainParam.push(this.formData) |
| | | this.dialogVisible = false; |
| | | this.formData = {}; //æ¸
空表å |
| | | // this.MaintainParam.push(this.formData) |
| | | } |
| | | }) |
| | | }, |
| | |
| | | }, |
| | | //è·å表å设å¤ç»´æ¤ä¿¡æ¯ |
| | | getAllMessage(deviceId) { |
| | | this.$axios.get(this.$api.deviceCheck.getDeviceMaintenancePage + "?deviceId=" + deviceId + "&size=" + this.search.size + "¤t=" + this.search.current + "&deviceNumber=" + this.search.deviceNumber).then(res => { |
| | | getDeviceMaintenancePage({ |
| | | deviceId, |
| | | ...this.search |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.MaintainParam = res.data.records |
| | | this.search.total = res.data.total |
| | |
| | | <!-- ä½ä¸æå¯¼ä¹¦ --> |
| | | <template> |
| | | <div> |
| | | <div style="width:100%;height:30px;margin:5px 0px"> |
| | | <el-row> |
| | | <el-col :span="12" style="text-align: left;"> |
| | | <p style="line-height: 30px;">ä½ä¸æå¯¼ä¹¦</p> |
| | | </el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="small" type="primary" @click="getList">å·æ°</el-button> |
| | | <el-button size="small" type="primary" @click="dialogVisible = true">åæ§ç³è¯·</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div style="margin: 10px 0;text-align: right"> |
| | | <el-button size="small" type="primary" @click="getList">å·æ°</el-button> |
| | | <el-button size="small" type="primary" @click="dialogVisible = true">åæ§ç³è¯·</el-button> |
| | | </div> |
| | | <el-table :data="tableData" border height="calc(100vh - 18em)"> |
| | | <el-table-column type="index" label="åºå·" width="120"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="éä»¶ï¼" style="float: left;"> |
| | | <el-upload ref="uploadFile" :action="action" :before-remove="beforeRemove" :file-list="fileList1" |
| | | :headers="headers" :limit="1" :on-error="onError" :on-exceed="handleExceed" :on-remove="handleRemove1" |
| | | :on-success="onSuccess1" class="upload-demo" multiple> |
| | | :headers="uploadHeader" :limit="1" :on-error="onError" :on-exceed="handleExceed" |
| | | :on-remove="handleRemove1" :on-success="onSuccess1" class="upload-demo" multiple> |
| | | <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </el-form-item> |
| | |
| | | <el-button size="small" @click="delFile">å é¤</el-button> |
| | | </div> |
| | | <el-table :data="documentTableData" border style="width: 100%;" tooltip-effect="dark" :row-key="getRowKey" |
| | | @selection-change="handleSelectionChange" height="30em"> |
| | | @selection-change="handleSelectionChange" height="29em"> |
| | | <el-table-column type="selection" width="55%"> |
| | | </el-table-column> |
| | | <el-table-column label="åºå·" prop="id" type="index" width="60"></el-table-column> |
| | |
| | | <el-col :span="24"> |
| | | <el-form-item label="éä»¶ï¼" style="float: left;"> |
| | | <el-upload ref="uploadFile" :action="action" :before-remove="beforeRemove" :file-list="fileList" |
| | | :headers="headers" :limit="1" :on-error="onError" :on-exceed="handleExceed" :on-remove="handleRemove" |
| | | :on-success="onSuccess" class="upload-demo" multiple> |
| | | :headers="uploadHeader" :limit="1" :on-error="onError" :on-exceed="handleExceed" |
| | | :on-remove="handleRemove" :on-success="onSuccess" class="upload-demo" multiple> |
| | | <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </el-form-item> |
| | |
| | | |
| | | <script> |
| | | import fileDownload from "@/utils/file"; |
| | | |
| | | import { |
| | | approvalOfHomeworkInstructionManual, |
| | | homeworkGuidebook, |
| | | homeworkGuidebookEditor, |
| | | newHomeworkGuidebookAdded, |
| | | deleteHomeworkGuidebook, |
| | | pageByPageQueryOfHomeworkInstructions, |
| | | selectDeviceParameter, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | |
| | | }); |
| | | }, |
| | | approvalFun(id, status) { |
| | | this.$axios.get(this.$api.deviceCheck.approvalOfHomeworkInstructionManual + "?id=" + id + "&status=" + status).then(res => { |
| | | approvalOfHomeworkInstructionManual({ id, status }).then(res => { |
| | | this.getList() |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | }) |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'æä½æå!' |
| | | }); |
| | | |
| | | }, |
| | | getRowKey(row) { |
| | | return row.index |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.get(this.$api.deviceCheck.homeworkGuidebook + "?id=" + row.id + "&instructionId=" + row.instructionId).then(res => { |
| | | homeworkGuidebook({ |
| | | id: row.id, |
| | | instructionId: row.instructionId |
| | | }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.getList() |
| | | }) |
| | |
| | | }, |
| | | instructionEditFun(row) { |
| | | this.dialogVisible = true |
| | | this.$axios.get(this.$api.deviceCheck.homeworkGuidebookEditor + "?instructionId=" + row.instructionId).then(res => { |
| | | homeworkGuidebookEditor({ instructionId: row.instructionId }).then(res => { |
| | | if (res.code == 200) { |
| | | this.instructionForm = res.data.instruction; |
| | | if (this.instructionForm.fileSystemName) { |
| | |
| | | this.$refs.form1.validate((valid) => { |
| | | if (valid) { |
| | | this.instructionForm.feTempHumRecordList = this.documentTableData |
| | | this.$axios.post(this.$api.deviceCheck.newHomeworkGuidebookAdded, this.instructionForm, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | newHomeworkGuidebookAdded(this.instructionForm).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æä½æåï¼') |
| | | this.dialogVisible = false |
| | |
| | | .filter(item => item.id !== undefined) |
| | | .map(item => item.id).join(','); |
| | | //æé误 |
| | | const res = await this.$axios.get(this.$api.deviceCheck.deleteHomeworkGuidebook + '?ids=' + ids); |
| | | const res = await deleteHomeworkGuidebook({ ids }); |
| | | if (res.code === 200) { |
| | | // å é¤è§å¾çæ°æ® |
| | | for (const resKey in this.selectedRow) { |
| | |
| | | this.$message.warning(`å½åéå¶éæ© 1 个æä»¶ï¼æ¬æ¬¡éæ©äº ${files.length} 个æä»¶ã`); |
| | | }, |
| | | getList() { |
| | | this.$axios.get(this.$api.deviceCheck.pageByPageQueryOfHomeworkInstructions + "?size=" + this.search.size + "¤t=" + this.search.current).then(res => { |
| | | pageByPageQueryOfHomeworkInstructions({ ...this.search }).then(res => { |
| | | if (res.code == 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total |
| | |
| | | }) |
| | | }, |
| | | getAllDevice() { |
| | | this.$axios.post(this.$api.deviceScope.selectDeviceParameter + "?laboratoryNameIsNull=" + this.laboratoryNameIsNull, { |
| | | page: { |
| | | current: 1, |
| | | size: -1 |
| | | }, |
| | | entity: this.entity |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | selectDeviceParameter({ laboratoryNameIsNull: this.laboratoryNameIsNull }).then(res => { |
| | | if (res.code == 200) { |
| | | this.devices = res.data.records; |
| | | this.updateDeviceNameOptions(); |
| | |
| | | }, |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.personnel.saveCNASFile |
| | | return this.javaApi + '/personBasicInfo/saveCNASFile' |
| | | } |
| | | }, |
| | | } |
| | |
| | | }, |
| | | getUserList() { |
| | | selectUserCondition().then(res => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id, |
| | | }); |
| | | }); |
| | | this.userList = data |
| | | this.userList = res.data |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getDeviceScrapped, |
| | | addDeviceScrapped, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | export default { |
| | | name: "scrapApplicationForm", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo() { |
| | | this.$axios.get(this.$api.deviceScrapped.getDeviceScrapped + '?scrappedId=' + this.form.scrappedId).then(res => { |
| | | getDeviceScrapped({ |
| | | scrappedId: this.form.scrappedId |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form = { ...res.data } |
| | | if (this.form.isFinish === 0) { |
| | |
| | | this.form.flowType = this.currentStep |
| | | this.$refs.modelForm.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios.post(this.$api.deviceScrapped.addDeviceScrapped, |
| | | this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | addDeviceScrapped(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.resetForm() |
| | |
| | | this.$emit('closeDialog') |
| | | }, |
| | | getUserList() { |
| | | this.$axios.post(this.$api.user.selectUserList, { |
| | | page: { current: -1, size: -1, }, |
| | | entity: { name: null } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | selectUserCondition().then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.userList = res.data.records |
| | | this.userList = res.data |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { |
| | | saveDeviceState, |
| | | selectDeviceByCode, |
| | | exportDeviceStatus, |
| | | deleteDeviceState, |
| | | deviceStateExport, |
| | | getDeviceStatePage, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import { dateFormat } from '@/utils/date' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | props: { |
| | | clickNodeVal: { |
| | |
| | | return {}; |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["nickName"]), |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid === true || saveState !== '1submit') { |
| | | // ç»å½åç¯è设置åå»ºäººä¸æ¶é´ |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | const dateTime = dateFormat(new Date()) |
| | | // è·åå½åç¯èæä½äººä¸æ¥æ |
| | | switch (this.currentStep) { |
| | | case 0: |
| | | this.form.createUser = user.name |
| | | this.form.submitOperatingPersonnel = user.name |
| | | this.form.createUser = this.nickName |
| | | this.form.submitOperatingPersonnel = this.nickName |
| | | this.form.submitDate = dateTime |
| | | break |
| | | case 1: |
| | | this.form.departmentOperatingPersonnel = user.name |
| | | this.form.departmentOperatingPersonnel = this.nickName |
| | | this.form.departmentDate = dateTime |
| | | break |
| | | case 2: |
| | | this.form.measuringRoomOperatingPersonnel = user.name |
| | | this.form.measuringRoomOperatingPersonnel = this.nickName |
| | | this.form.measuringRoomDate = dateTime |
| | | break |
| | | case 3: |
| | | this.form.approvalOperatingPersonnel = user.name |
| | | this.form.approvalOperatingPersonnel = this.nickName |
| | | this.form.approvalDate = dateTime |
| | | break |
| | | default: |
| | |
| | | // è·åå½åç¶æ |
| | | this.form.currentState = currentStepAction === 4 ? 'å
³é' : this.steps[currentStepAction] |
| | | this.form.deviceId = this.clickNodeVal.value |
| | | this.$axios.post(this.$api.deviceCheck.saveDeviceState, this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | saveDeviceState(this.form).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æäº¤æå') |
| | | this.getDeviceStatePage(this.clickNodeVal.value) |
| | |
| | | }, |
| | | openRecordAcceptance() { |
| | | // è·å设å¤åºç¡ä¿¡æ¯ |
| | | this.$axios.get(this.$api.deviceScope.selectDeviceByCode + '?id=' + this.clickNodeVal.value).then(res => { |
| | | selectDeviceByCode({ id: this.clickNodeVal.value }).then(res => { |
| | | this.form.deviceName = res.data.deviceName |
| | | this.form.specificationModel = res.data.specificationModel |
| | | this.form.managementNumber = res.data.managementNumber |
| | |
| | | }, |
| | | // è·åè´è´£äººä¿¡æ¯æ¥å£ |
| | | getUserList() { |
| | | this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { |
| | | selectUserCondition().then(res => { |
| | | if (res.code == 200) { |
| | | this.responsibleOptions = res.data |
| | | } |
| | |
| | | // å¯¼åº |
| | | handleDownOne(row) { |
| | | this.outLoading = true |
| | | this.$axios.get(this.$api.deviceCheck.exportDeviceStatus + '?deviceId=' + row.deviceId + '&processNumber=' + row.processNumber, { |
| | | responseType: "blob" |
| | | }).then(res => { |
| | | exportDeviceStatus({ deviceId: row.deviceId, processNumber: row.processNumber }).then(res => { |
| | | this.outLoading = false |
| | | 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 = '设å¤å/å¯ç¨.doc'; |
| | | 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 = '设å¤å/å¯ç¨.doc'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '设å¤å/å¯ç¨.doc') |
| | | }) |
| | | }, |
| | | // å é¤ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.deviceCheck.deleteDeviceState + '?stateId=' + row.stateId).then(res => { |
| | | deleteDeviceState({ stateId: row.stateId }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('å 餿å') |
| | | this.getDeviceStatePage(this.clickNodeVal.value) |
| | |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | |
| | | }, |
| | | //å¯¼åº |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.deviceCheck.deviceStateExport, { |
| | | deviceStateExport({ |
| | | deviceId: this.clickNodeVal.value, |
| | | processNumber: this.search.processNumber |
| | | }, { responseType: "blob" }).then(res => { |
| | | }).then(res => { |
| | | this.outLoading = false |
| | | 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('å¯¼åºæå') |
| | | } |
| | | } |
| | | this.$download.saveAs(blob, '设å¤åç¨/å¯ç¨.xlsx') |
| | | }).finally(() => { |
| | | this.outLoading = false |
| | | }) |
| | |
| | | this.getDeviceStatePage(this.clickNodeVal.value); |
| | | }, |
| | | getDeviceStatePage(deviceId) { |
| | | this.$axios.get(this.$api.deviceCheck.getDeviceStatePage + '?deviceId=' + deviceId + "&size=" + this.search.size + "¤t=" + this.search.current + "&processNumber=" + this.search.processNumber).then(res => { |
| | | getDeviceStatePage({ deviceId, ...this.search }).then(res => { |
| | | if (res.code == 200) { |
| | | this.tableDatalist = res.data.records |
| | | this.search.total = res.data.total |
| | |
| | | <!-- <check v-if="tabListActiveName == 'è®¾å¤æ ¸æ¥'" :clickNodeVal="clickNodeVal"/>--> |
| | | <!-- </el-tab-pane>--> |
| | | <el-tab-pane label="设å¤ç»´æ¤" name="设å¤ç»´æ¤"> |
| | | <!-- 宿æ¥å£ --> |
| | | <maintenance v-if="tabListActiveName == '设å¤ç»´æ¤'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤åç¨" name="设å¤åç¨"> |
| | | <!-- 宿æ¥å£ --> |
| | | <borrow v-if="tabListActiveName == '设å¤åç¨'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <!-- <el-tab-pane label="è®¾å¤æ
é" name="è®¾å¤æ
é">--> |
| | | <!-- <fault v-if="tabListActiveName == 'è®¾å¤æ
é'" :clickNodeVal="clickNodeVal" />--> |
| | | <!-- </el-tab-pane>--> |
| | | <!-- 宿æ¥å£ --> |
| | | <el-tab-pane label="使ç¨è®°å½" name="使ç¨è®°å½"> |
| | | <record v-if="tabListActiveName == '使ç¨è®°å½'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <!-- 宿æ¥å£ --> |
| | | <el-tab-pane label="设å¤åç¨/å¯ç¨" name="设å¤åç¨/å¯ç¨"> |
| | | <state v-if="tabListActiveName == '设å¤åç¨/å¯ç¨'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <!-- 宿æ¥å£ --> |
| | | <el-tab-pane label="è®¾å¤æ¥åº" name="è®¾å¤æ¥åº"> |
| | | <equipment-scrap v-if="tabListActiveName == 'è®¾å¤æ¥åº'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <!-- 宿æ¥å£ --> |
| | | <el-tab-pane label="è®¾å¤æ
éä¸ç»´ä¿®" name="è®¾å¤æ
éä¸ç»´ä¿®"> |
| | | <equipment-failure v-if="tabListActiveName == 'è®¾å¤æ
éä¸ç»´ä¿®'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <!-- 宿æ¥å£ --> |
| | | <el-tab-pane label="设å¤ç¹æ£" name="设å¤ç¹æ£"> |
| | | <inspection-of-equipment v-if="tabListActiveName == '设å¤ç¹æ£'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <!-- 宿æ¥å£ --> |
| | | <el-tab-pane label="设å¤äºæ
" name="设å¤äºæ
"> |
| | | <equipment-accident v-if="tabListActiveName == '设å¤äºæ
'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | |
| | | } |
| | | }, |
| | | nodeOpen(data, node, el) { |
| | | $($(el.$el).find(".node_i")[0]).attr( |
| | | "class", |
| | | "node_i el-icon-folder-opened" |
| | | ); |
| | | // $($(el.$el).find(".node_i")[0]).attr( |
| | | // "class", |
| | | // "node_i el-icon-folder-opened" |
| | | // ); |
| | | }, |
| | | nodeClose(data, node, el) { |
| | | $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder"); |
| | | // $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder"); |
| | | }, |
| | | } |
| | | }; |
| | |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="æ¥æ" prop="registerDate"> |
| | | <el-date-picker v-model="searchForm.registerDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="searchForm.registerDate" 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-form-item> |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia> |
| | | <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia" |
| | | @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | name: 'Personnel-management', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, PersonnelManagementDia}, |
| | | components: { limsTable, PersonnelManagementDia }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | pageForeignRegister({ |
| | | ...this.page, |
| | | ...this.searchForm |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delForeignRegister({registerId:row.registerId}).then(res =>{ |
| | | delForeignRegister({ registerId: row.registerId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.threeWastesDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.threeWastesDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown () { |
| | | handleDown() { |
| | | exportForeignRegister(this.searchForm).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '夿¥äººåç»è®°.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | | closeThreeWastesDia() { |
| | | this.threeWastesDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.registerDate = ''; |
| | | this.searchList() |
| | | }, |
| | |
| | | <el-button size="small" type="primary" @click="clickAdd">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table :data="tableData" height="calc(100vh - 18em)" style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | |
| | | </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 :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 |
| | | :visible.sync="dialogVisible" |
| | | title="æ°å¢" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <el-dialog :visible.sync="dialogVisible" title="æ°å¢" width="50%" @open="openDialog"> |
| | | <div style="height: 50vh; overflow-y: auto"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'change' }]" label="æµè¯æ¥æ" |
| | | prop="testDate"> |
| | | <el-date-picker |
| | | v-model="form.testDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | prop="testDate"> |
| | | <el-date-picker v-model="form.testDate" 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 :rules="[{ required: true, message: '请è¾å
¥è®¾å¤åç§°', trigger: 'change' }]" label="设å¤åç§°" |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" |
| | | class="table_input" |
| | | clearable |
| | | filterable |
| | | placeholder="设å¤åç§°" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{item.deviceName + item.managementNumber}} |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" class="table_input" clearable filterable placeholder="设å¤åç§°" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{ item.deviceName + item.managementNumber }} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ£æµè
" prop="recipientUser"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ ¸æ¥äºº" prop="recipientUser"> |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;" > |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ç»è®º"> |
| | | <el-input |
| | | v-model="form.conclusion" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | type="textarea"> |
| | | <el-input v-model="form.conclusion" :rows="2" placeholder="请è¾å
¥å
容" type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">æ°å¢</el-button> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="form.illuminationDetectionAreaList" |
| | | height="40vh" |
| | | style="width: 100%; margin: auto"> |
| | | <el-table :data="form.illuminationDetectionAreaList" height="40vh" style="width: 100%; margin: auto"> |
| | | <el-table-column label="åºå·" type="index" width="80"></el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="æ£æµåºååç§°" |
| | | min-width="180" |
| | | prop="detectionAreaLabel"> |
| | | <el-table-column align="center" label="æ£æµåºååç§°" min-width="180" prop="detectionAreaLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.detectionAreaLabel" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="æ£æµå¼" |
| | | min-width="300" |
| | | prop="name"> |
| | | <el-table-column align="center" label="æ£æµå¼" min-width="300" prop="name"> |
| | | <template> |
| | | <el-table-column align="center" label="ç¬¬ä¸æ¬¡" min-width="100" prop="valueOne"> |
| | | <template #default="{ row }"> |
| | |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="夿³¨" |
| | | min-width="180" |
| | | prop="detectionAreaLabel"> |
| | | <el-table-column align="center" label="夿³¨" min-width="180" prop="detectionAreaLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.remark" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | label="æä½" |
| | | width="100"> |
| | | <el-table-column fixed="right" label="æä½" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)"> |
| | | å é¤ |
| | |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | if (!isNaN(row.valueOne) && !isNaN(row.valueTwo) && !isNaN(row.valueThree)) { |
| | | const avg = Number(row.valueOne) + Number(row.valueTwo) + Number(row.valueThree) |
| | | console.log(avg) |
| | | row.average = Math.round(avg/3); |
| | | row.average = Math.round(avg / 3); |
| | | } else { |
| | | this.$message.warning("å¿
须为æ°åï¼") |
| | | } |
| | | } |
| | | }, |
| | | edit(row) { |
| | | getFeIlluminationDetectionArea({intensityIlluminationId:row.intensityIlluminationId}).then(res => { |
| | | this.form = {...row} |
| | | getFeIlluminationDetectionArea({ intensityIlluminationId: row.intensityIlluminationId }).then(res => { |
| | | this.form = { ...row } |
| | | this.form.illuminationDetectionAreaList = res.data; |
| | | this.dialogVisible = true |
| | | }); |
| | | }, |
| | | initData() { |
| | | getFeLightningProtection({...this.search}).then(res => { |
| | | if (res.code === 200){ |
| | | getFeLightningProtection({ ...this.search }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | } |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFeLightningProtection({intensityIlluminationId: row.intensityIlluminationId}).then(res => { |
| | | deleteFeLightningProtection({ intensityIlluminationId: row.intensityIlluminationId }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | |
| | | }, |
| | | feMeasuredQuantityListDelete(row, index) { |
| | | if (row.detectionAreaId) { |
| | | deleteFeIlluminationDetectionArea({detectionAreaId:row.detectionAreaId}).then(res => { |
| | | if (res.code === 200){ |
| | | deleteFeIlluminationDetectionArea({ detectionAreaId: row.detectionAreaId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form.illuminationDetectionAreaList.splice(index, 1) |
| | | this.$message.success('å 餿åï¼') |
| | | } |
| | |
| | | // è·åææè®¾å¤ |
| | | getEquipOptions() { |
| | | this.equipOptions = [] |
| | | deviceScopeSearch({status:'0'}).then(res => { |
| | | deviceScopeSearch({ status: '0' }).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data |
| | | } |
| | |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | exportFeIllumination({intensityIlluminationId: row.intensityIlluminationId}).then(res => { |
| | | exportFeIllumination({ intensityIlluminationId: row.intensityIlluminationId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ç
§åº¦è®°å½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | } |
| | |
| | | <el-button size="small" type="primary" @click="openAddDia">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table :data="tableData" height="calc(100vh - 18em)" style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | |
| | | </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 :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 |
| | | :visible.sync="dialogVisible" |
| | | title="æ°å¢" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <el-dialog :visible.sync="dialogVisible" title="æ°å¢" width="50%" @open="openDialog"> |
| | | <div style="height: 50vh; overflow-y: auto"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'blur' }]" label="æµè¯å°ç¹" |
| | | prop="testLocation"> |
| | | prop="testLocation"> |
| | | <el-input v-model="form.testLocation" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯æ¥æ', trigger: 'change' }]" label="æµè¯æ¥æ" |
| | | prop="testDate"> |
| | | <el-date-picker |
| | | v-model="form.testDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | prop="testDate"> |
| | | <el-date-picker v-model="form.testDate" 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 :rules="[{ required: true, message: '请è¾å
¥è®¾å¤åç§°', trigger: 'change' }]" label="设å¤åç§°" |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" |
| | | class="table_input" |
| | | clearable |
| | | filterable |
| | | placeholder="设å¤åç§°" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{item.deviceName + item.managementNumber}} |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" class="table_input" clearable filterable placeholder="设å¤åç§°" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{ item.deviceName + item.managementNumber }} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ£æµè
" prop="recipientUser"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ ¸æ¥äºº" prop="recipientUser"> |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;" > |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ç»è®º"> |
| | | <el-input |
| | | v-model="form.conclusion" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | type="textarea"> |
| | | <el-input v-model="form.conclusion" :rows="2" placeholder="请è¾å
¥å
容" type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">æ°å¢</el-button> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="form.feMeasuredQuantityList" |
| | | height="40vh" |
| | | style="width: 100%; margin: auto"> |
| | | <el-table :data="form.feMeasuredQuantityList" height="40vh" style="width: 100%; margin: auto"> |
| | | <el-table-column label="åºå·" type="index" width="80"></el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="æµå®éåç§°" |
| | | min-width="180" |
| | | prop="measuredQuantityLabel"> |
| | | <el-table-column align="center" label="æµå®éåç§°" min-width="180" prop="measuredQuantityLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.measuredQuantityLabel" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="å¼" |
| | | min-width="300" |
| | | prop="name"> |
| | | <el-table-column align="center" label="å¼" min-width="300" prop="name"> |
| | | <template> |
| | | <el-table-column align="center" label="A" min-width="100" prop="valueA"> |
| | | <template #default="{ row }"> |
| | |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | label="æä½" |
| | | width="100"> |
| | | <el-table-column fixed="right" label="æä½" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)"> |
| | | å é¤ |
| | |
| | | getLaboratoryFacilityPowerStablePage({ |
| | | ...this.search |
| | | }).then(res => { |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | } |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteLaboratoryFacilityPowerStable({powerStableId:row.powerStableId}).then(res => { |
| | | deleteLaboratoryFacilityPowerStable({ powerStableId: row.powerStableId }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | openAddDia () { |
| | | openAddDia() { |
| | | this.dialogVisible = true |
| | | this.getEquipOptions() |
| | | }, |
| | | // è·åææè®¾å¤ |
| | | getEquipOptions() { |
| | | this.equipOptions = [] |
| | | deviceScopeSearch({status:'0'}).then(res => { |
| | | deviceScopeSearch({ status: '0' }).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data |
| | | } |
| | |
| | | // çµæºç¨³å®æ§-æµå®éå¼¹æ¡ä¸è¡¨æ ¼çå é¤è¡ |
| | | feMeasuredQuantityListDelete(row, index) { |
| | | if (row.measuredQuantityId) { |
| | | deleteFeMeasuredQuantity({measuredQuantityId:row.measuredQuantityId}).then(res => { |
| | | deleteFeMeasuredQuantity({ measuredQuantityId: row.measuredQuantityId }).then(res => { |
| | | if (res.code === 201) return |
| | | this.form.feMeasuredQuantityList.splice(index, 1) |
| | | this.$message.success('å 餿åï¼') |
| | |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | exportFePowerStable({powerStableId: row.powerStableId}).then(res => { |
| | | exportFePowerStable({ powerStableId: row.powerStableId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'çµæºç¨³å®æ§.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // çµæºç¨³å®æ§ ç¹å»è¡ç¼è¾è§¦å |
| | | edit(row) { |
| | | getFeMeasuredQuantityService({powerStableId: row.powerStableId}).then((res => { |
| | | this.form = {...row} |
| | | getFeMeasuredQuantityService({ powerStableId: row.powerStableId }).then((res => { |
| | | this.form = { ...row } |
| | | this.form.feMeasuredQuantityList = res.data; |
| | | this.dialogVisible = true |
| | | })) |
| | |
| | | <el-button size="small" type="primary" @click="clickAdd">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | highlight-current-row |
| | | style="width: 100%" |
| | | @row-click="clickRow"> |
| | | <el-table :data="tableData" height="calc(100vh - 18em)" highlight-current-row style="width: 100%" |
| | | @row-click="clickRow"> |
| | | <el-table-column label="åºå·" type="index" width="60" align="center"></el-table-column> |
| | | <el-table-column label="æåº¦æ¶é´" min-width="180" prop="monthDate"></el-table-column> |
| | | <el-table-column label="è¯éªåºååç§°" min-width="180" prop="testAreaName"></el-table-column> |
| | |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导åº</el-button> |
| | | <el-button size="small" type="text" @click="edit(scope.row)">ç¼è¾</el-button> |
| | | <el-button :disabled="scope.row.isAffirm === '1'" size="small" type="text" @click="openApprovalDialog(scope.row)">确认</el-button> |
| | | <el-button :disabled="scope.row.isAffirm === '1'" size="small" type="text" |
| | | @click="openApprovalDialog(scope.row)">确认</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun(scope.row)">å é¤</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"> |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="header"> |
| | | <div>温湿度记å½ï¼{{ saveRow.monthDate }}</div> |
| | | <div> |
| | | <el-button v-if="saveRow.monthDate" size="small" type="primary" @click="dialogVisible1 = true">æ° å¢</el-button> |
| | | <el-button v-if="saveRow.monthDate" size="small" type="primary" @click="dialogVisible1 = true">æ° |
| | | å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData1" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table :data="tableData1" height="calc(100vh - 18em)" style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="60" align="center"></el-table-column> |
| | | <el-table-column label="æ¥æ" min-width="100" prop="recordDate"></el-table-column> |
| | | <el-table-column align="center" label="ä¸å" min-width="200"> |
| | | <template> |
| | | <el-table-column label="æ¶é´" min-width="110" prop="morningTestTime" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="æ¶é´" min-width="110" prop="morningTestTime" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="温度" min-width="80" prop="morningTemp" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="湿度" min-width="80" prop="morningHum" show-overflow-tooltip></el-table-column> |
| | | </template> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="æç¤º" |
| | | width="50%"> |
| | | <el-dialog :visible.sync="dialogVisible" title="æç¤º" width="50%"> |
| | | <div style="height: 20vh;"> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æåº¦æ¶é´', trigger: 'blur' }]" label="æåº¦æ¶é´" |
| | | prop="monthDate"> |
| | | <el-date-picker |
| | | v-model="form.monthDate" |
| | | format="yyyy-MM" |
| | | placeholder="éæ©æä»½" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="month" |
| | | value-format="yyyy-MM"> |
| | | prop="monthDate"> |
| | | <el-date-picker v-model="form.monthDate" format="yyyy-MM" placeholder="éæ©æä»½" size="small" |
| | | style="width: 100%" type="month" value-format="yyyy-MM"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥è¯éªåºå', trigger: 'blur' }]" label="è¯éªåºå" |
| | | prop="testAreaName"> |
| | | prop="testAreaName"> |
| | | <el-input v-model="form.testAreaName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible1" |
| | | title="æç¤º" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <el-dialog :visible.sync="dialogVisible1" title="æç¤º" width="50%" @open="openDialog"> |
| | | <div style="height: 40vh;"> |
| | | <el-form ref="form1" :model="form1" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ¥æ"> |
| | | <el-date-picker |
| | | v-model="form1.recordDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="è¯·éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 50%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="form1.recordDate" format="yyyy-MM-dd" placeholder="è¯·éæ©æ¥æ" size="small" |
| | | style="width: 50%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åæ¶é´"> |
| | | <el-time-picker |
| | | v-model="form1.morningTestTime" |
| | | size="small" |
| | | value-format="HH:mm:ss" |
| | | format="HH:mm:ss" |
| | | style="width: 100%" |
| | | placeholder="è¯·éæ©æ¶é´"> |
| | | <el-time-picker v-model="form1.morningTestTime" size="small" value-format="HH:mm:ss" format="HH:mm:ss" |
| | | style="width: 100%" placeholder="è¯·éæ©æ¶é´"> |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åè®°å½å"> |
| | | <el-select v-model="form1.morningRecorderId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form1.morningRecorderId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åæ¶é´"> |
| | | <el-time-picker |
| | | v-model="form1.afternoonTime" |
| | | size="small" |
| | | value-format="HH:mm:ss" |
| | | format="HH:mm:ss" |
| | | style="width: 100%" |
| | | placeholder="è¯·éæ©æ¶é´"> |
| | | <el-time-picker v-model="form1.afternoonTime" size="small" value-format="HH:mm:ss" format="HH:mm:ss" |
| | | style="width: 100%" placeholder="è¯·éæ©æ¶é´"> |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åè®°å½å"> |
| | | <el-select v-model="form1.afternoonRecorderId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form1.afternoonRecorderId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="夿³¨"> |
| | | <el-input |
| | | v-model="form1.note" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | type="textarea"> |
| | | <el-input v-model="form1.note" :rows="2" placeholder="请è¾å
¥å
容" type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible1 = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability1">ç¡® å®</el-button> |
| | | </span> |
| | | <el-button @click="dialogVisible1 = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability1">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="确认" width="30%" @close="subjoin = ''"> |
| | | <span> |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | openApprovalDialog (row) { |
| | | openApprovalDialog(row) { |
| | | this.approvalDialog = true |
| | | this.approvalRow = row |
| | | }, |
| | | handleApproval () { |
| | | handleApproval() { |
| | | this.approvalLoading = true |
| | | const params = { |
| | | dateId: this.approvalRow.dateId, |
| | |
| | | this.initData1(row.dateId) |
| | | }, |
| | | edit(row) { |
| | | this.form = {...row} |
| | | this.form = { ...row } |
| | | this.dialogVisible = true |
| | | }, |
| | | deleteRowFun(row) { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFeTempHumDate({dateId:row.dateId}).then(res => { |
| | | deleteFeTempHumDate({ dateId: row.dateId }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | edit1(row) { |
| | | this.form1 = {...row} |
| | | this.form1 = { ...row } |
| | | this.dialogVisible1 = true |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | exportTemperatureAndHumidityRecords({dateId:row.dateId}).then(res => { |
| | | exportTemperatureAndHumidityRecords({ dateId: row.dateId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '温湿度记å½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | deleteRowFun1(row) { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFeTempHumRecord({tempHumId:row.tempHumId}).then(res => { |
| | | deleteFeTempHumRecord({ tempHumId: row.tempHumId }).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData1(this.saveRow.dateId) |
| | | }) |
| | |
| | | initData() { |
| | | getFeTempHumDate({ |
| | | ...this.search, |
| | | ...this.search}).then(res => { |
| | | if (res.code === 200){ |
| | | ...this.search |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | if (res.data.records.length === 0) { |
| | |
| | | }) |
| | | }, |
| | | initData1(dateId) { |
| | | let form = {dateId: dateId} |
| | | let form = { dateId: dateId } |
| | | getFeTempHumRecordPage({ |
| | | ...this.search1, |
| | | ...form |
| | | }).then(res => { |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records; |
| | | this.search1.total = res.data.total; |
| | | } |
| | |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.remark"> |
| | | </el-input> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.remark"> |
| | | </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-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> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog> |
| | | <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia" |
| | | @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | pageInternalWastes({...this.page,...this.searchForm}).then(res => { |
| | | pageInternalWastes({ ...this.page, ...this.searchForm }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | removeStandardSubstance({wastesId:row.wastesId}).then(res => { |
| | | removeStandardSubstance({ wastesId: row.wastesId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.threeWastesDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.threeWastesDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | exportInternalWastes({wastesId:row.wastesId}).then(res =>{ |
| | | handleDown(row) { |
| | | exportInternalWastes({ wastesId: row.wastesId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ä¸åºå¤ç导åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | | closeThreeWastesDia() { |
| | | this.threeWastesDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.remark = ''; |
| | | this.searchList() |
| | | }, |
| | |
| | | <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> |
| | | @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> |
| | | @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> |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :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> |
| | |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | methods :{ |
| | | methods: { |
| | | exportFun() { |
| | | this.outLoading = true |
| | | exportOfStandardSubstanceList(this.searchForm).then(res =>{ |
| | | exportOfStandardSubstanceList(this.searchForm).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], {type: 'application/octet-stream'},false); |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }, false); |
| | | this.$download.saveAs(blob, 'æ åç©è´¨æ¸
å.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | getPageStandardSubstance({ |
| | | ...this.page, |
| | | ...this.searchForm |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | removeStandardSubstance({id:row.id}).then(res => { |
| | | removeStandardSubstance({ id: row.id }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeYearDia () { |
| | | closeYearDia() { |
| | | this.formDia = false |
| | | this.searchList() |
| | | }, |
| | | // åç¨ |
| | | borrow (row) { |
| | | borrow(row) { |
| | | this.borrowDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.borrowDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeBorrowDia () { |
| | | closeBorrowDia() { |
| | | this.borrowDia = false |
| | | this.searchList() |
| | | }, |
| | | // å½è¿ |
| | | return (row) { |
| | | return(row) { |
| | | this.returnDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.returnDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeReturnDia () { |
| | | closeReturnDia() { |
| | | this.returnDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.name = ''; |
| | | this.searchForm.factoryManufacturer = ''; |
| | | this.searchList() |
| | |
| | | exportFeStandardSubstanceAcceptance().then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'æ åç©è´¨éªæ¶.xlsx'); |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å页忢 |
| | |
| | | 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'); |
| | | }) |
| | |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | total: 0, |
| | | tableColumn1: [ |
| | | { |
| | | label: 'éä»¶åç§°', |
| | |
| | | page1: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | }, |
| | | total1: 0, |
| | | formDialog: false, |
| | | upLoading: false, |
| | | currentInfo: {}, |
| | |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | this.page.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | |
| | | this.tableLoading1 = false |
| | | if (res.code === 201) return |
| | | this.tableData1 = res.data.records |
| | | this.total1 = res.data.total |
| | | this.page1.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading1 = false |
| | |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.refreshTable() |
| | | }else { |
| | | this.$message.error(response.msg); |
| | | } |
| | | }, |
| | | selectEnumByCategory() { |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'æä»¶ä½åºè¡¨.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | handleDelete(row) { |
| | |
| | | exportOutManageRecordCheck(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 |
| | | this.$download.saveAs(url, 'æä»¶å®¡æ¹è®°å½') |
| | | }) |
| | |
| | | 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.data |
| | | this.$download.saveAs(url, "ä½åºæä»¶éæ¯è®°å½"); |
| | | }) |
| | |
| | | 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.data |
| | | this.$download.saveAs(url, 'æä»¶åæ¾ä¸åæ¶è®°å½') |
| | | }) |
| | |
| | | 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 |
| | | this.$download.saveAs(url, "æä»¶å®æå®¡æ¥è®°å½"); |
| | | }) |
| | |
| | | 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.data |
| | | this.$download.saveAs(url, "æä»¶ä¿®è®¢è¡¨"); |
| | | }) |
| | |
| | | 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'); |
| | | }) |
| | |
| | | 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'); |
| | | }) |
| | |
| | | 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'); |
| | | }) |
| | |
| | | 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'); |
| | | }) |
| | |
| | | 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'); |
| | | }) |
| | |
| | | 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'); |
| | | }) |
| | |
| | | }, |
| | | handleDown(row) { |
| | | exportReviewProgram({ id: row.id }).then(res => { |
| | | if (res.code == 201) { |
| | | this.$message.error(res.message) |
| | | return |
| | | } |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'è¯å®¡è®¡å.docx'); |
| | | }) |
| | |
| | | openDownloadDia() { |
| | | exportHazardFactorIdentification().then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§' + '.docx'); |
| | | }) |
| | |
| | | openDownloadDia() { |
| | | exportSignificantRiskFactors().then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'é大é£é©å ç´ åæåæ§å¶è®¡åæ¸
å' + '.docx'); |
| | | }) |
| | |
| | | this.tableLoading = true |
| | | this.stockList = [] |
| | | const newReqParam = this.getFinalParam() |
| | | getIfsStock(newReqParam) |
| | | .then((response) => { |
| | | const resData = response.data |
| | | this.queryReport.total = resData.total |
| | | const resStockList = resData.data |
| | | resStockList.forEach((item) => { |
| | | this.stockList.push({ |
| | | partNo: item.PART_NO, |
| | | partName: item.PART_DESC, |
| | | warehouseName: item.WAREHOUSE_ID, |
| | | locationName: item.LOCATION_DESC, |
| | | locationNo: item.LOCATION_NO, |
| | | partBatchNo: item.LOT_BATCH_NO, |
| | | stockQuantity: item.QTY_ONHAND, |
| | | availableStockQuantity: item.QTY_AVAILABLE, |
| | | outerColor: item.ATTR4, |
| | | customerOrderNo: item.ATTR6, |
| | | inSource: item.ATTR23, |
| | | }) |
| | | getIfsStock(newReqParam).then((response) => { |
| | | this.tableLoading = false |
| | | const resData = response.data |
| | | this.queryReport.total = resData.total |
| | | const resStockList = resData.data |
| | | resStockList.forEach((item) => { |
| | | this.stockList.push({ |
| | | partNo: item.PART_NO, |
| | | partName: item.PART_DESC, |
| | | warehouseName: item.WAREHOUSE_ID, |
| | | locationName: item.LOCATION_DESC, |
| | | locationNo: item.LOCATION_NO, |
| | | partBatchNo: item.LOT_BATCH_NO, |
| | | stockQuantity: item.QTY_ONHAND, |
| | | availableStockQuantity: item.QTY_AVAILABLE, |
| | | outerColor: item.ATTR4, |
| | | customerOrderNo: item.ATTR6, |
| | | inSource: item.ATTR23, |
| | | }) |
| | | this.tableLoading = false |
| | | }) |
| | | .catch(() => { |
| | | this.tableLoading = false |
| | | }) |
| | | }).catch(() => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | getFinalParam() { |
| | | const newReqParam = { |
| | |
| | | width="80%" |
| | | @close="editInspectionDia = false" |
| | | > |
| | | <TableCard :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table |
| | | :column="editColumn" |
| | | :table-data="editTableData" |
| | | :table-loading="editLoading" |
| | | :page="page" |
| | | height="600" |
| | | style="padding: 0 15px" |
| | | @pagination="pagination" |
| | | > |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | | <lims-table |
| | | :column="editColumn" |
| | | :table-data="editTableData" |
| | | :table-loading="editLoading" |
| | | :page="page" |
| | | height="560" |
| | | @pagination="pagination" |
| | | > |
| | | </lims-table> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="editAskDia" title="ä¿®æ¹" width="50%"> |
| | | <el-form ref="form" :model="editForm" label-width="100px"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from "@/components/TableCard/index.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | selectSampleAndProductByOrderId, |
| | |
| | | export default { |
| | | name: "EditInspectionItem", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { TableCard, limsTable }, |
| | | components: { limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | }) |
| | | .then((res) => { |
| | | this.editLoading = false; |
| | | if (res.code === 201) return; |
| | | this.editTableData = res.data.body.records; |
| | | this.page.total = res.data.body.total; |
| | | this.editTableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | }) |
| | | .catch(() => { |
| | | this.editLoading = false; |
| | |
| | | æ°å¢ |
| | | </el-button> |
| | | </div> |
| | | <el-table :data="bindTableData" style="width: 100%" height="70vh"> |
| | | <el-table :data="bindTableData" style="width: 100%" height="70vh" v-loading="bindTableDataLoading"> |
| | | <el-table-column prop="inspectionItemClass" label="æ£éªé¡¹åç±»" width="150"> |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionItem" label="æ£éªé¡¹" width="150"> |
| | |
| | | InspectionKey: 1, |
| | | bindDialogVisible: false, |
| | | bindAddDialogVisible: false, |
| | | bindTableDataLoading: false, |
| | | bindTableData: [], |
| | | bindAddTableData: [], |
| | | chooseBindAddList: [], |
| | |
| | | if (obj) { |
| | | return this.insResultList.find((m) => m.value == params).label; |
| | | } else { |
| | | return '' |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | let obj = this.insResultList.find((m) => m.value == params) |
| | | if (obj) { |
| | | return this.insResultList.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | |
| | | this.inspectionTaskState = this.dictToValue(response.data); |
| | | }); |
| | | this.refreshTable(); |
| | | |
| | | }, |
| | | mounted() { |
| | | this.queryParams.userId = this.userId; |
| | | }, |
| | | activated() { |
| | | this.refreshTable(); |
| | | }, |
| | | methods: { |
| | | getList() { |
| | |
| | | }) |
| | | .then((res) => { |
| | | this.loading = false; |
| | | if (res.code == 201) { |
| | | this.$message.error("ç»å®å¤±è´¥"); |
| | | return; |
| | | } |
| | | this.$message.success("ç»å®æå"); |
| | | this.bindAddDialogVisible = false; |
| | | this.getBinding(this.bindCurrentInfo); |
| | |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }).then(async () => { |
| | | delProductTreeByProductId({ productId: row.id }) |
| | | .then((res) => { |
| | | if (res.coe == 201) { |
| | | // this.$message.error('æªç»å®æ£éªé¡¹') |
| | | return; |
| | | } |
| | | this.getBinding(this.bindCurrentInfo); |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | | this.bindTableDataLoading = true |
| | | delProductTreeByProductId({ productId: row.id }).then((res) => { |
| | | this.bindTableDataLoading = false |
| | | this.getBinding(this.bindCurrentInfo); |
| | | }).catch((error) => { |
| | | this.bindTableDataLoading = false |
| | | console.error(error); |
| | | }); |
| | | }); |
| | | }, |
| | | }, |
| | |
| | | <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="state == 1" size="small" type="primary" @click="taskVisible = true">ä»»å¡åæ¢</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-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">éè¿</el-button> |
| | |
| | | <script> |
| | | import excelFunction from "@/utils/excelFountion"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import UnPassDialog from "../unpass/components/addUnPass.vue"; |
| | | import UnPassDialog from "../unpass/components/unPassDialog.vue"; |
| | | import AddUnPass from "../unpass/components/addUnPass.vue"; |
| | | import InspectionWord from "./components/InspectionWord.vue"; |
| | | import PurchaseVerification from "../unpass/components/PurchaseVerification.vue"; |
| | |
| | | import html2canvas from "html2canvas"; |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | name: 'inspection', |
| | | name: 'Inspection', |
| | | components: { |
| | | PurchaseVerification, |
| | | AddUnPass, |
| | |
| | | // this.getList0() // ä»»å¡åæ¢ |
| | | this.scrollInit(); |
| | | }, |
| | | activated() { |
| | | this.getTypeDicts(); // è·åç´§æ¥ç¨åº¦ä¸ææ¡é项 |
| | | this.getInsStateDicts(); |
| | | this.getComparisonList(); |
| | | this.getAuthorizedPerson(); |
| | | // this.getPower(); |
| | | this.startWorker(); |
| | | // this.getList0() // ä»»å¡åæ¢ |
| | | this.scrollInit(); |
| | | }, |
| | | watch: { |
| | | // çå¬ä»»å¡idï¼è·åä»»å¡ä¿¡æ¯ |
| | | id(val) { |
| | |
| | | mounted() { |
| | | this.active = this.$route.query.active |
| | | this.currentId = this.$route.query.currentId |
| | | this.getUserNowInfo() |
| | | this.selectStandardTreeList() |
| | | this.selectStandardMethods() |
| | | this.getInfo() // è·åæ°æ® |
| | | }, |
| | | activated() { |
| | | if (this.active==1) { |
| | | this.getInfoRow(); |
| | | } |
| | | }, |
| | | methods: { |
| | | getInfoRow() { |
| | | this.getUserNowInfo() |
| | | this.selectStandardTreeList() |
| | | this.selectStandardMethods() |
| | | this.getInfo() // è·åæ°æ® |
| | | }, |
| | | // æå |
| | | handleSplitCountNum () { |
| | | this.sample.joinName = null |
| | |
| | | |
| | | }, |
| | | goBack () { |
| | | this.$router.go(-1) |
| | | if (this.active == 1) { |
| | | this.$router.go(-1) |
| | | } else { |
| | | this.closeOpenPage() |
| | | } |
| | | }, |
| | | closeOpenPage() { |
| | | this.$router.go(-1) |
| | |
| | | this.currentId = this.$route.query.currentId |
| | | this.isReport = this.$route.query.isReport |
| | | this.customsInspection = this.$route.query.customsInspection |
| | | }, |
| | | activated() { |
| | | if (this.active==1) { |
| | | this.getInfo(); |
| | | } |
| | | }, |
| | | getInfo() { |
| | | this.getUserNowList() // è·åå½åç¨æ·ä¿¡æ¯ |
| | | this.selectStandardMethods() // è·åæ£éªæ åä¸ææ¡æ°æ® |
| | | this.getInfo() // è·åæ°æ® |
| | |
| | | return row[property] === value; |
| | | }, |
| | | goBack () { |
| | | this.$router.go(-1) |
| | | if (this.active == 1) { |
| | | this.$router.go(-1) |
| | | } else { |
| | | this.closeOpenPage() |
| | | } |
| | | }, |
| | | closeOpenPage() { |
| | | this.$router.go(-1) |
| | |
| | | <div class="table-tab"> |
| | | <div> |
| | | <ul class="tab"> |
| | | <li v-for="(m, i) in tabList" :key="m.value" :class="{ active: m.value === tabIndex }" @click="handleTab(m)"> |
| | | <li v-for="(m, i) in tabList" :key="m.value" :class="{ active: m.value === tabIndex }" |
| | | @click="handleTab(m)"> |
| | | {{ m.label }}</li> |
| | | </ul> |
| | | </div> |
| | |
| | | </div> |
| | | <!--å¾
ä¸å--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | v-if="tabIndex === 0" @pagination="pagination" |
| | | :rowClassName="changeRowClass" |
| | | :height="'calc(100vh - 290px)'" key="tableData" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination" |
| | | :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'" key="tableData" :page="page" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!--æ£éªä¸--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData1" :column="column1" |
| | | v-if="tabIndex === 1" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" :isSelection="true" |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination1" |
| | | :height="'calc(100vh - 290px)'" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | <!--å·²æ£éª--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData2" :column="column2" v-if="tabIndex === 2" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination2" :height="'calc(100vh - 290px)'" |
| | | key="tableData2" :page="page2" :tableLoading="tableLoading2"></lims-table> |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination2" |
| | | :height="'calc(100vh - 290px)'" key="tableData2" :page="page2" :tableLoading="tableLoading2"></lims-table> |
| | | </div> |
| | | <!--å
¨é¨--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData3" :column="column3" v-if="tabIndex === 3" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination3" :height="'calc(100vh - 290px)'" |
| | | key="tableData3" :page="page3" :tableLoading="tableLoading3"></lims-table> |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination3" |
| | | :height="'calc(100vh - 290px)'" key="tableData3" :page="page3" :tableLoading="tableLoading3"></lims-table> |
| | | </div> |
| | | <!--å£åº¦æ£éª--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData4" :column="column4" v-if="tabIndex === 4" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination4" :height="'calc(100vh - 290px)'" |
| | | key="tableData4" :page="page4" :tableLoading="tableLoading4"></lims-table> |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination4" |
| | | :height="'calc(100vh - 290px)'" key="tableData4" :page="page4" :tableLoading="tableLoading4"></lims-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </el-dialog> |
| | | <!-- æ¤éæ¥æ£ --> |
| | | <el-dialog :visible.sync="declareDialogVisible" title="æ¥æ£æ¤é" width="30%"> |
| | | <p style="font-size:16px;color:#333333">æ¹å·<span |
| | | style="color:#34BD66">{{ this.insOrderRow.updateBatchNo }}</span>çä¿¡æ¯æ¯å¦<span style="color: #FF4902">æ¤éæ¥æ£</span> |
| | | <p style="font-size:16px;color:#333333">æ¹å·<span style="color:#34BD66">{{ this.insOrderRow.updateBatchNo |
| | | }}</span>çä¿¡æ¯æ¯å¦<span style="color: #FF4902">æ¤éæ¥æ£</span> |
| | | </p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | |
| | | let entity = this.tabIndex === 3 ? { ...this.entity, isInspect: 2 } : { ...this.entity, state: 2, orderState: 4, } |
| | | delete entity.orderBy |
| | | this.outLoading = true |
| | | rawAllExport({entity: entity}).then(res => { |
| | | rawAllExport({ entity: entity }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, 'åæææ£æµä¿¡æ¯å¯¼åº.xlsx'); |
| | | }) |
| | |
| | | selectMethod(val) { |
| | | this.multipleSelection = val |
| | | }, |
| | | changeRowClass({row, rowIndex}) { |
| | | changeRowClass({ row, rowIndex }) { |
| | | if (row.isFirst == 1) { |
| | | return 'highlight-danger-row-border' |
| | | } |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å¶å人:"> |
| | | <el-input v-model="addObj.custom" disabled size="small"></el-input> |
| | | <el-input v-model="addObj.custom" disabled size="small" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å§æåä½:" prop="company"> |
| | | <el-input v-model="addObj.company" disabled placeholder="鿩姿åä½" size="small" style="width: 200px"> |
| | | <el-input v-model="addObj.company" disabled placeholder="鿩姿åä½" size="small" style="width: 208px"> |
| | | <template slot="append"> |
| | | <el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" |
| | | @click="openCompanyList"></el-button> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååç§°:" prop="sample"> |
| | | <el-input v-model="addObj.sample" disabled size="small" style="width: 178px"> |
| | | <el-input v-model="addObj.sample" disabled size="small" style="width: 208px"> |
| | | <template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" |
| | | @click="selectStandardTree = true"></el-button></template> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·åæ°é:" prop="sampleNum"> |
| | | <el-form-item label="æ ·åæ°é:" prop="sampleNum" style="margin-right: 0"> |
| | | <el-input-number v-model="addObj.sampleNum" :disabled="active>1" :max="100" :min="1" :precision="0" |
| | | size="small" style="width: 65%;" @change="addStandardTree"></el-input-number> |
| | | size="small" @change="addStandardTree"></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·åç¶æ:" prop="sampleStatus"> |
| | | <el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small"> |
| | |
| | | <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥æ ·æ¹å¼:" prop="formType"> |
| | | <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small"> |
| | | <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small" clearable> |
| | | <el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥ååéæ¹å¼:"> |
| | | <el-radio-group v-model="addObj.send" :disabled="active>1&&tabIndex!=4"> |
| | | <el-radio :label="1">èªå</el-radio> |
| | | <el-radio :label="0">å
¶ä»</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·åå¤çæ¹å¼:"> |
| | | <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4"> |
| | | <el-radio :label="0">å§æåä½åå</el-radio> |
| | | <el-radio :label="1">å®éªå®¤å¤ç</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åä½:" prop="production"> |
| | | <el-input v-model="addObj.production" :disabled="active>1&&tabIndex!=4" clearable placeholder="请è¾å
¥" |
| | |
| | | <el-input v-model="addObj.productionEn" :disabled="active>1&&tabIndex!=4" clearable placeholder="请è¾å
¥" |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·åå¤çæ¹å¼:"> |
| | | <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini"> |
| | | <el-radio :label="0" border style="margin-right: 0">å§æåä½åå</el-radio> |
| | | <el-radio :label="1" border>å®éªå®¤å¤ç</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦çæ ·:"> |
| | | <el-radio-group v-model="addObj.isLeave" :disabled="active>1&&tabIndex!=4"> |
| | | <el-radio :label="0">ä¸çæ ·</el-radio> |
| | | <el-radio :label="1">çæ ·</el-radio> |
| | | <el-radio-group v-model="addObj.isLeave" border :disabled="active>1&&tabIndex!=4" size="mini"> |
| | | <el-radio :label="0" border style="margin-right: 0">ä¸çæ ·</el-radio> |
| | | <el-radio :label="1" border>çæ ·</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥ååéæ¹å¼:"> |
| | | <el-radio-group v-model="addObj.send" :disabled="active>1&&tabIndex!=4" size="mini"> |
| | | <el-radio :label="1" border style="margin-right: 0">èªå</el-radio> |
| | | <el-radio :label="0" border>å
¶ä»</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="å§æäºº:"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨:"> |
| | | <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请è¾å
¥'" clearable |
| | | size="small" type="textarea"></el-input> |
| | | size="small" style="width: 100%" type="textarea"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨è±æ:"> |
| | | <el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请è¾å
¥'" clearable |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style="display: flex;align-items: center"> |
| | | <div style="display: flex;align-items: center;margin-bottom: 10px"> |
| | | <span style="width: 150px;font-size: 14px;text-align: right;">ç¹æ®æ åï¼</span> |
| | | <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable |
| | | size="small"></el-input> |
| | | <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable size="small"></el-input> |
| | | <el-button v-show="active==1" size="small" style="margin-left: 10px" |
| | | type="primary" @click="editSpecial">ç¼è¾</el-button> |
| | | </div> |
| | |
| | | AuxiliaryWireCore |
| | | }, |
| | | dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list'], |
| | | data() { |
| | | return { |
| | | active: '', |
| | | tabIndex: '', |
| | | currentId: '', |
| | | sampleSelectionList: [],//æ ·åè¡¨æ ¼é䏿°æ® |
| | | editTable:[], |
| | | template: null, |
| | | templates: [], |
| | | addObj: { |
| | | entrustCode: null, |
| | | custom: null, |
| | | company: null, |
| | | userId: null, |
| | | type: '0', |
| | | code: null, |
| | | appointed: null, |
| | | remark: null, // 夿³¨ |
| | | remarkEn: null, // 夿³¨è±æ |
| | | sample: null, |
| | | factory: null, |
| | | laboratory: null, |
| | | sampleType: null, |
| | | sampleNum: 1, |
| | | unit: null, |
| | | model: null, |
| | | method: null, |
| | | phone: null, |
| | | processing: 1, |
| | | isLeave: 0, |
| | | orderType: null, |
| | | send: 1, |
| | | formType: '鿣', // æ¥æ ·æ¹å¼ |
| | | sampleStatus: 'In good condition', // æ ·åç¶æ |
| | | testQuantity: '', // æ ·åç¶æ |
| | | production: null, |
| | | productionEn: null, |
| | | companyId: null, |
| | | prepareUser:null, // å§æäºº |
| | | prepareUserEn:null, // å§æäººè±æ |
| | | prepareCode: '', // å§æäººå·¥å· |
| | | quarterItemId: '', |
| | | sampleView: '', // æ ·ååç§°ï¼æ¥åå±ç¤ºåæ®µï¼ |
| | | sampleViewEn: '', // æ ·ååç§°è±æï¼æ¥åå±ç¤ºåæ®µï¼ |
| | | }, |
| | | addObjRules: { // è¡¨åæ ¡éªè§å |
| | | orderType: [ |
| | | { required: true, message: 'è¯·éæ©æ£éªç±»å«', trigger: 'change' } |
| | | ], |
| | | company: [ |
| | | { required: true, message: 'è¯·éæ©å§æåä½', trigger: 'change' } |
| | | ], |
| | | phone: [ |
| | | { required: true, message: '请填åèç³»æ¹å¼', trigger: 'blur' } |
| | | ], |
| | | type: [ |
| | | { required: true, message: 'è¯·éæ©ç´§æ¥ç¨åº¦', trigger: 'change' } |
| | | ], |
| | | sample: [ |
| | | { required: true, message: 'è¯·éæ©æ ·ååç§°', trigger: 'change' } |
| | | ], |
| | | sampleNum: [ |
| | | { required: true, message: 'è¯·å¡«åæ ·åæ°é', trigger: 'blur' } |
| | | ], |
| | | sampleStatus: [ |
| | | { required: true, message: 'è¯·éæ©æ ·åç¶æ', trigger: 'change' } |
| | | ], |
| | | formType: [ |
| | | { required: true, message: 'è¯·éæ©æ¥æ ·æ¹å¼', trigger: 'change' } |
| | | ], |
| | | testQuantity: [ |
| | | { required: true, message: 'è¯·å¡«åæ½æ£æ°é', trigger: 'blur' } |
| | | ], |
| | | production: [ |
| | | { required: true, message: '请填åç产åä½', trigger: 'blur' } |
| | | ], |
| | | productionEn: [ |
| | | { required: true, message: '请填åç产åä½EN', trigger: 'blur' } |
| | | ], |
| | | }, |
| | | sample: { |
| | | sampleCode: null, |
| | | laboratory: null, |
| | | factory: null, |
| | | sampleType: null, |
| | | sample: null, |
| | | model: null, |
| | | modelNum: null, |
| | | sampleNum: 1, |
| | | isLeave: 0, |
| | | unit: null |
| | | }, |
| | | type: [], |
| | | selectUserDia: false, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | multipleSelection: [], |
| | | column1: [ |
| | | {label: '客æ·åç§°', prop: 'company'}, |
| | | {label: '客æ·åä½EN', prop: 'companyEn'}, |
| | | {label: 'åä½å°å', prop: 'address'}, |
| | | {label: 'åä½å°åEN', prop: 'addressEn'}, |
| | | {label: 'åä½çµè¯', prop: 'phone'}, |
| | | {label: 'å æ¥é¢åº¦', prop: 'num'}, |
| | | {label: '客æ·ç¼å·', prop: 'code2'}, |
| | | {label: 'å·¥åå', prop: 'code'} |
| | | ], |
| | | page1: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | }, |
| | | selectStandardTree: false, |
| | | search: null, |
| | | list: [], |
| | | selectStandardTreeLoading: false, |
| | | selectTree: null, |
| | | sampleViewEn: null, |
| | | expandedKeys: [], |
| | | sampleList: [], |
| | | sampleIds: [], |
| | | methodList: [], |
| | | addSampleDia: false, |
| | | count: 1, |
| | | productList: [], |
| | | productList0: [], |
| | | bsm1DiaList: [], |
| | | productIds: [], |
| | | getProductLoad: false, |
| | | saveLoad: false, |
| | | templateDia: false, |
| | | templateLoading: false, |
| | | templateName: '', |
| | | issuedDialogVisible: false, |
| | | distributeData: { |
| | | appointed: '', |
| | | userId: '', |
| | | sonLaboratory:'' |
| | | }, |
| | | personList: [], |
| | | upLoad: false, |
| | | models: [], |
| | | methods: [], |
| | | methodLoad: false, |
| | | noDialogVisible: false, |
| | | tell: '', |
| | | noLoading: false, |
| | | orderType: [], |
| | | filters: [], |
| | | formType: [], |
| | | currentMethod: null, |
| | | isAskOnlyRead: false, |
| | | sampleId: null, |
| | | bsmRow: null, |
| | | bsm1: false, |
| | | bsm1Val: null, |
| | | bsm1DiaAll: false, |
| | | cableConfigShow: false, |
| | | auxiliaryShow: false, |
| | | bsm3Dia: false, |
| | | // total: 0, |
| | | RTS: '', |
| | | totalArr: [], |
| | | addObj1: {}, |
| | | data() { |
| | | return { |
| | | active: '', |
| | | tabIndex: '', |
| | | currentId: '', |
| | | sampleSelectionList: [],//æ ·åè¡¨æ ¼é䏿°æ® |
| | | editTable:[], |
| | | template: null, |
| | | templates: [], |
| | | addObj: { |
| | | entrustCode: null, |
| | | custom: null, |
| | | company: null, |
| | | userId: null, |
| | | type: '0', |
| | | code: null, |
| | | appointed: null, |
| | | remark: null, // 夿³¨ |
| | | remarkEn: null, // 夿³¨è±æ |
| | | sample: null, |
| | | factory: null, |
| | | laboratory: null, |
| | | sampleType: null, |
| | | sampleNum: 1, |
| | | unit: null, |
| | | model: null, |
| | | standardMethodListId: null, |
| | | symbolList:['RTS'], |
| | | inspectionItem:null, |
| | | inspectionItemSubclass:null, |
| | | methodS:null, |
| | | isBsm2Val2:false, |
| | | temperatureEngList: [], |
| | | isShowInput: false, |
| | | temId: '', |
| | | sonLaboratoryList:[], |
| | | selectiveEcho: [], // æ£éªä¸åçæ¶åå¾éæ£éªé¡¹ç®,å¦æä½¿ç¨çéæäº¤æ¾ç¤ºæ£éªé¡¹ç®ä¸ºç©º åæ¾å表 |
| | | quarterItemOptions: [], // æ¥è¯¢å£åº¦ä¿¡æ¯ |
| | | specialStandardMethod: '', |
| | | isSpecial: false, |
| | | } |
| | | method: null, |
| | | phone: null, |
| | | processing: 1, |
| | | isLeave: 0, |
| | | orderType: null, |
| | | send: 1, |
| | | formType: '鿣', // æ¥æ ·æ¹å¼ |
| | | sampleStatus: 'In good condition', // æ ·åç¶æ |
| | | testQuantity: '', // æ ·åç¶æ |
| | | production: null, |
| | | productionEn: null, |
| | | companyId: null, |
| | | prepareUser:null, // å§æäºº |
| | | prepareUserEn:null, // å§æäººè±æ |
| | | prepareCode: '', // å§æäººå·¥å· |
| | | quarterItemId: '', |
| | | sampleView: '', // æ ·ååç§°ï¼æ¥åå±ç¤ºåæ®µï¼ |
| | | sampleViewEn: '', // æ ·ååç§°è±æï¼æ¥åå±ç¤ºåæ®µï¼ |
| | | }, |
| | | addObjRules: { // è¡¨åæ ¡éªè§å |
| | | orderType: [ |
| | | { required: true, message: 'è¯·éæ©æ£éªç±»å«', trigger: 'change' } |
| | | ], |
| | | company: [ |
| | | { required: true, message: 'è¯·éæ©å§æåä½', trigger: 'change' } |
| | | ], |
| | | phone: [ |
| | | { required: true, message: '请填åèç³»æ¹å¼', trigger: 'blur' } |
| | | ], |
| | | type: [ |
| | | { required: true, message: 'è¯·éæ©ç´§æ¥ç¨åº¦', trigger: 'change' } |
| | | ], |
| | | sample: [ |
| | | { required: true, message: 'è¯·éæ©æ ·ååç§°', trigger: 'change' } |
| | | ], |
| | | sampleNum: [ |
| | | { required: true, message: 'è¯·å¡«åæ ·åæ°é', trigger: 'blur' } |
| | | ], |
| | | sampleStatus: [ |
| | | { required: true, message: 'è¯·éæ©æ ·åç¶æ', trigger: 'change' } |
| | | ], |
| | | formType: [ |
| | | { required: true, message: 'è¯·éæ©æ¥æ ·æ¹å¼', trigger: 'change' } |
| | | ], |
| | | testQuantity: [ |
| | | { required: true, message: 'è¯·å¡«åæ½æ£æ°é', trigger: 'blur' } |
| | | ], |
| | | production: [ |
| | | { required: true, message: '请填åç产åä½', trigger: 'blur' } |
| | | ], |
| | | productionEn: [ |
| | | { required: true, message: '请填åç产åä½EN', trigger: 'blur' } |
| | | ], |
| | | }, |
| | | sample: { |
| | | sampleCode: null, |
| | | laboratory: null, |
| | | factory: null, |
| | | sampleType: null, |
| | | sample: null, |
| | | model: null, |
| | | modelNum: null, |
| | | sampleNum: 1, |
| | | isLeave: 0, |
| | | unit: null |
| | | }, |
| | | type: [], |
| | | selectUserDia: false, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | multipleSelection: [], |
| | | column1: [ |
| | | {label: '客æ·åç§°', prop: 'company'}, |
| | | {label: '客æ·åä½EN', prop: 'companyEn'}, |
| | | {label: 'åä½å°å', prop: 'address'}, |
| | | {label: 'åä½å°åEN', prop: 'addressEn'}, |
| | | {label: 'åä½çµè¯', prop: 'phone'}, |
| | | {label: 'å æ¥é¢åº¦', prop: 'num'}, |
| | | {label: '客æ·ç¼å·', prop: 'code2'}, |
| | | {label: 'å·¥åå', prop: 'code'} |
| | | ], |
| | | page1: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | }, |
| | | selectStandardTree: false, |
| | | search: null, |
| | | list: [], |
| | | selectStandardTreeLoading: false, |
| | | selectTree: null, |
| | | sampleViewEn: null, |
| | | expandedKeys: [], |
| | | sampleList: [], |
| | | sampleIds: [], |
| | | methodList: [], |
| | | addSampleDia: false, |
| | | count: 1, |
| | | productList: [], |
| | | productList0: [], |
| | | bsm1DiaList: [], |
| | | productIds: [], |
| | | getProductLoad: false, |
| | | saveLoad: false, |
| | | templateDia: false, |
| | | templateLoading: false, |
| | | templateName: '', |
| | | issuedDialogVisible: false, |
| | | distributeData: { |
| | | appointed: '', |
| | | userId: '', |
| | | sonLaboratory:'' |
| | | }, |
| | | personList: [], |
| | | upLoad: false, |
| | | models: [], |
| | | methods: [], |
| | | methodLoad: false, |
| | | noDialogVisible: false, |
| | | tell: '', |
| | | noLoading: false, |
| | | orderType: [], |
| | | filters: [], |
| | | formType: [], |
| | | currentMethod: null, |
| | | isAskOnlyRead: false, |
| | | sampleId: null, |
| | | bsmRow: null, |
| | | bsm1: false, |
| | | bsm1Val: null, |
| | | bsm1DiaAll: false, |
| | | cableConfigShow: false, |
| | | auxiliaryShow: false, |
| | | bsm3Dia: false, |
| | | // total: 0, |
| | | RTS: '', |
| | | totalArr: [], |
| | | addObj1: {}, |
| | | model: null, |
| | | standardMethodListId: null, |
| | | symbolList:['RTS'], |
| | | inspectionItem:null, |
| | | inspectionItemSubclass:null, |
| | | methodS:null, |
| | | isBsm2Val2:false, |
| | | temperatureEngList: [], |
| | | isShowInput: false, |
| | | temId: '', |
| | | sonLaboratoryList:[], |
| | | selectiveEcho: [], // æ£éªä¸åçæ¶åå¾éæ£éªé¡¹ç®,å¦æä½¿ç¨çéæäº¤æ¾ç¤ºæ£éªé¡¹ç®ä¸ºç©º åæ¾å表 |
| | | quarterItemOptions: [], // æ¥è¯¢å£åº¦ä¿¡æ¯ |
| | | specialStandardMethod: '', |
| | | isSpecial: false, |
| | | } |
| | | }, |
| | | watch: { |
| | | sampleList() { |
| | | this.addObj.method = null |
| | | this.productList = [] |
| | | }, |
| | | watch: { |
| | | sampleList() { |
| | | this.addObj.method = null |
| | | this.productList = [] |
| | | }, |
| | | productList: { |
| | | deep: true, |
| | | handler(val) { |
| | | if (val && val.length > 0) { |
| | | let arr = []; |
| | | val.forEach(item => { |
| | | if (item.sonLaboratory && !arr.find(a => a.value == item.sonLaboratory)) { |
| | | arr.push({ |
| | | text: item.sonLaboratory, |
| | | value: item.sonLaboratory |
| | | }) |
| | | } |
| | | }) |
| | | this.filters = arr |
| | | } |
| | | } |
| | | }, |
| | | sampleList: { |
| | | deep: true, |
| | | handler(val) { |
| | | this.getTotal() |
| | | } |
| | | }, |
| | | 'addObj.sample'(val) { |
| | | this.model = null |
| | | this.standardMethodListId = null |
| | | }, |
| | | 'addObj.sampleNum'(val) { |
| | | this.model = null |
| | | this.standardMethodListId = null |
| | | }, |
| | | tabIndex(val){ |
| | | if(val==4&&this.active==2){ |
| | | this.isSpecial = true |
| | | }else{ |
| | | this.isSpecial = false |
| | | productList: { |
| | | deep: true, |
| | | handler(val) { |
| | | if (val && val.length > 0) { |
| | | let arr = []; |
| | | val.forEach(item => { |
| | | if (item.sonLaboratory && !arr.find(a => a.value == item.sonLaboratory)) { |
| | | arr.push({ |
| | | text: item.sonLaboratory, |
| | | value: item.sonLaboratory |
| | | }) |
| | | } |
| | | }) |
| | | this.filters = arr |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.active = this.$route.query.active |
| | | this.tabIndex = this.$route.query.tabIndex |
| | | this.currentId = this.$route.query.currentId |
| | | sampleList: { |
| | | deep: true, |
| | | handler(val) { |
| | | this.getTotal() |
| | | } |
| | | }, |
| | | 'addObj.sample'(val) { |
| | | this.model = null |
| | | this.standardMethodListId = null |
| | | }, |
| | | 'addObj.sampleNum'(val) { |
| | | this.model = null |
| | | this.standardMethodListId = null |
| | | }, |
| | | tabIndex(val){ |
| | | if(val==4&&this.active==2){ |
| | | this.isSpecial = true |
| | | }else{ |
| | | this.isSpecial = false |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.active = this.$route.query.active |
| | | this.tabIndex = this.$route.query.tabIndex |
| | | this.currentId = this.$route.query.currentId |
| | | this.getInfo() |
| | | }, |
| | | activated() { |
| | | if (this.active==1) { |
| | | this.getInfo(); |
| | | } |
| | | }, |
| | | methods: { |
| | | getInfo() { |
| | | this.getUserNowData() |
| | | this.selectStandardTreeList() |
| | | this.getAuthorizedPerson(); |
| | |
| | | this.isSpecial = false |
| | | } |
| | | }, |
| | | methods: { |
| | | getPrepareUser () { |
| | | getPrepareUser () { |
| | | // this.addObj.prepareUser = JSON.parse(localStorage.getItem("user")).name; |
| | | // this.addObj.prepareUserEn = JSON.parse(localStorage.getItem("user")).nameEn |
| | | // this.addObj.prepareCode = JSON.parse(localStorage.getItem("user")).account |
| | | }, |
| | | }, |
| | | // ç¼è¾è¦æ±å¼è¡¨æ ¼ |
| | | editSpecial () { |
| | | this.isSpecial = true |
| | |
| | | this.productList = row.insProduct |
| | | this.productList0 = JSON.parse(JSON.stringify(this.productList)) |
| | | this.$refs.sampleTable.setCurrentRow(row) |
| | | this.$nextTick(() => { |
| | | this.$refs.productTable.doLayout(); |
| | | }); |
| | | setTimeout(() => { |
| | | this.productList.forEach(a => { |
| | | if (a.state == 1) this.toggleSelection(a) |
| | |
| | | this.productList0.splice(index,1) |
| | | }, |
| | | goBack () { |
| | | this.$router.go(-1) |
| | | if (this.active == 1) { |
| | | this.$router.go(-1) |
| | | } else { |
| | | this.closeOpenPage() |
| | | } |
| | | }, |
| | | closeOpenPage() { |
| | | this.$router.go(-1) |
| | |
| | | </el-select> |
| | | </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 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-select> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <div class="search"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="å§æç¼å·" prop="entrustCode"> |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååç§°" prop="sampleName"> |
| | | <el-input v-model="entity.partNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååå·" prop="sampleModel"> |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请è¾å
¥" |
| | | size="small" @keyup.enter.native="refreshTable()"></el-input> |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'æ´å¤':'æ¶èµ·'}}</el-button> |
| | | <el-button :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" |
| | | @click="more = !more">{{ !more ? 'æ´å¤' : 'æ¶èµ·' }}</el-button> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·åç¼å·" prop="sampleCode" v-if="more"> |
| | | <el-input v-model="entity.sampleCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ¶é´" prop="createTime" v-if="more"> |
| | | <el-date-picker v-model="entity.createTime" clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width:100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="entity.createTime" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width:100%" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å§æäºº" prop="prepareUser" v-if="more"> |
| | | <el-input v-model="entity.prepareUser" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å§æåä½" prop="company" v-if="more"> |
| | | <el-input v-model="entity.company" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <div class="table-tab"> |
| | | <div> |
| | | <ul class="tab"> |
| | | <li v-for="(m,i) in tabList" :key="i+'afgh'" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> |
| | | <li v-for="(m, i) in tabList" :key="i + 'afgh'" :class="{ active: i == tabIndex }" @click="handleTab(m, i)">{{ m.label }} |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <div> |
| | | <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 6" size="small" @click="downLoad">导åº</el-button> |
| | | <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 6" size="small" |
| | | @click="downLoad">导åº</el-button> |
| | | <el-button v-if="tabIndex === 1" size="small" type="primary" @click="openAddIns">æ·»å æ£éªé¡¹</el-button> |
| | | <el-button size="small" type="primary" @click="openPrint">æ ç¾æå°</el-button> |
| | | <el-button size="small" type="primary" @click="playOrder(1)">ä¸å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | :isSelection="true" :handleSelectionChange="selectMethod" |
| | | @pagination="pagination" :height="'calc(100vh - 280px)'" key="tableData" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" :isSelection="true" :handleSelectionChange="selectMethod" |
| | | @pagination="pagination" :height="'calc(100vh - 280px)'" :key="upIndex" :page="page" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <div> |
| | | <!-- å®¡æ ¸ --> |
| | | <el-dialog :before-close="handleClose" :visible.sync="verifyDialogVisible" title="ä¸åå®¡æ ¸" width="30%"> |
| | | <p v-if="!isPass" style="font-size:16px;color:#333333">å§æç¼å·<span |
| | | style="color:#34BD66">ZTMS2023071001</span>çä¿¡æ¯æ¯å¦éè¿</p> |
| | | style="color:#34BD66">ZTMS2023071001</span>çä¿¡æ¯æ¯å¦éè¿</p> |
| | | <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> |
| | | <el-form-item label="请è¾å
¥æ ·ååºä½å·ï¼"> |
| | | <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row v-if="!isPass"> |
| | | <el-button @click="handleClose">é å</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">é è¿</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">è¿ å</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row v-if="!isPass"> |
| | | <el-button @click="handleClose">é å</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">é è¿</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">è¿ å</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- æ¤é --> |
| | | <el-dialog :before-close="handleClose" :visible.sync="quashDialogVisible" title="ä¸åæ¤é" width="30%"> |
| | | <p v-if="!isQuash" style="font-size:16px;color:#333333">å§æç¼å·<span |
| | | style="color:#34BD66">{{this.insOrderRow.entrustCode}}</span>çä¿¡æ¯æ¯å¦æ¤é</p> |
| | | style="color:#34BD66">{{ this.insOrderRow.entrustCode }}</span>çä¿¡æ¯æ¯å¦æ¤é</p> |
| | | <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> |
| | | <el-form-item label="请è¾å
¥æ¤éåå ï¼"> |
| | | <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row v-if="!isQuash"> |
| | | <el-button @click="handleClose">å æ¶</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">è¿ å</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row v-if="!isQuash"> |
| | | <el-button @click="handleClose">å æ¶</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">è¿ å</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- ä¸å --> |
| | | <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="æ£éªåé
" width="400px"> |
| | |
| | | <div class="search_label"><span class="required-span">* </span>çº¦å®æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="distributeData.appointed" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-col> |
| | | <el-col class="search_thing" style="width: 95%;"> |
| | | <div class="search_label"><span class="required-span">* </span>ææ´¾äººåï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="distributeData.userId" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%;" @change="changeUser"> |
| | | <el-option v-for="(item,i) in personList" :key="i+'gbnm.'" :label="item.label" :value="item.value"> |
| | | <el-select v-model="distributeData.userId" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;" @change="changeUser"> |
| | | <el-option v-for="(item, i) in personList" :key="i + 'gbnm.'" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | <el-col class="search_thing" style="width: 95%;"> |
| | | <div class="search_label"><span class="required-span" >* </span>è¯éªå®¤ï¼</div> |
| | | <div class="search_label"><span class="required-span">* </span>è¯éªå®¤ï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="distributeData.sonLaboratory" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in sonLaboratoryList" :key="i+'oooo'" :label="item.label" :value="item.value"> |
| | | <el-select v-model="distributeData.sonLaboratory" clearable filterable placeholder="è¯·éæ©" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="(item, i) in sonLaboratoryList" :key="i + 'oooo'" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose2">å æ¶</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm2">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="handleClose2">å æ¶</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm2">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="dataDialogVisible" title="æ°æ®æ¥ç" width="80%"> |
| | | <div v-if="dataDialogVisible"> |
| | | <lims-table :tableData="tableDataLook" :column="tableDataLookColumn" |
| | | @pagination="tableDataLookPagination" height="500px" key="tableDataLook" |
| | | :page="tableDataLookPage" :tableLoading="tableDataLookTableLoading"></lims-table> |
| | | <lims-table :tableData="tableDataLook" :column="tableDataLookColumn" @pagination="tableDataLookPagination" |
| | | height="500px" key="tableDataLook" :page="tableDataLookPage" |
| | | :tableLoading="tableDataLookTableLoading"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="éä»¶æ¥ç" width="80%"> |
| | | <div v-if="filesDialogVisible"> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" |
| | | @pagination="paginationFile" height="500px" key="tableDataFile" |
| | | :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" @pagination="paginationFile" height="500px" |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog :title="deleteTilte" :visible.sync="deleteDialogVisible" width="80%"> |
| | | <div v-if="deleteDialogVisible" style="height: 70vh;overflow-y: auto;"> |
| | | <lims-table :tableData="componentDataDelete" :column="columnDelete" |
| | | :isSelection="true" :handleSelectionChange="selectDelete" |
| | | @pagination="paginationDelete" height="500px" key="componentDataDelete" |
| | | :page="pageDelete" :tableLoading="tableLoadingDelete"></lims-table> |
| | | <lims-table :tableData="componentDataDelete" :column="columnDelete" :isSelection="true" |
| | | :handleSelectionChange="selectDelete" @pagination="paginationDelete" height="500px" |
| | | key="componentDataDelete" :page="pageDelete" :tableLoading="tableLoadingDelete"></lims-table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleNo">{{deleteTilte=='æ¤é'?'å æ¶':'ä¸éè¿'}}</el-button> |
| | | <el-button :loading="printLoading" type="primary" @click="submitDelete">{{deleteTilte=='æ¤é'?'ç¡® å®':'é è¿'}}</el-button> |
| | | <el-button @click="handleNo">{{ deleteTilte == 'æ¤é' ? 'å æ¶' : 'ä¸éè¿' }}</el-button> |
| | | <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == 'æ¤é' ? 'ç¡® å®' : 'é |
| | | è¿'}}</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | <el-dialog :visible.sync="printDialogVisible" title="æ ç¾æå°" top="5vh" width="40%"> |
| | | <div v-loading="loadPint" style="width:100%;height: 400px;overflow-y: auto;"> |
| | | <div class="dia_body"> |
| | | <el-checkbox |
| | | v-model="checkAll" |
| | | :indeterminate="isIndeterminate" |
| | | style="margin: 10px 5px;" |
| | | <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" style="margin: 10px 5px;" |
| | | @change="handleCheckAllChange">å
¨é</el-checkbox> |
| | | <el-checkbox-group v-model="checkIndexList" @change="changePrintCode()"> |
| | | <el-card v-for="(item, i) in qrData" :key="i+'wwwww'" class="box-card" style="margin-bottom: 15px; font-size: 16px !important;"> |
| | | <el-card v-for="(item, i) in qrData" :key="i + 'wwwww'" class="box-card" |
| | | style="margin-bottom: 15px; font-size: 16px !important;"> |
| | | <el-checkbox :key="i" :label="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox> |
| | | <div> |
| | | <el-row style="font-size: 14px;padding-left: 20px;"> |
| | | <el-col style="font-weight: bold;">{{ item.pName }}</el-col> |
| | | <el-col style="font-weight: bold;">{{ item.pName }}</el-col> |
| | | </el-row> |
| | | <div style="display: flex;"> |
| | | <div> |
| | |
| | | </div> |
| | | <div style="margin-left: 50px;width: 100%;"> |
| | | <el-row> |
| | | <el-col style="font-weight: bold;font-size: 14px;"><span>æ ·åç¼å·: </span>{{ item.sampleCode }}</el-col> |
| | | <el-col style="font-weight: bold;font-size: 14px;"><span>æ ·åç¼å·: </span>{{ item.sampleCode |
| | | }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>å§æåå·: </span>{{ item.code }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>å§æåå·: </span>{{ item.code }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>è§æ ¼åå·: </span>{{ item.model }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>è§æ ¼åå·: </span>{{ item.model }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>æ ·ååç§°: </span>{{ item.sample }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>æ ·ååç§°: </span>{{ item.sample }}</el-col> |
| | | </el-row> |
| | | <el-row class="ellipsis-multiline" style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>æ£æµé¡¹ç®: </span>{{ item.item }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>æ£æµé¡¹ç®: </span>{{ item.item }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 3px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;display: flex;align-items: center;"><span>æ ·åç¶æ: </span> |
| | | <el-col style="font-weight: bold;display: flex;align-items: center;"><span>æ ·åç¶æ: </span> |
| | | <el-radio-group :value="item.insState" disabled style="margin-top: 7px;margin-left: 4px;"> |
| | | <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">å¾
æ£</el-radio> |
| | | <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">卿£</el-radio> |
| | | <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">å·²æ£</el-radio> |
| | | </el-radio-group><el-radio v-model="item.isLeave" :label="1" disabled style="font-weight: bold;margin-top: 7px;">çæ ·</el-radio></el-col> |
| | | </el-radio-group><el-radio v-model="item.isLeave" :label="1" disabled |
| | | style="font-weight: bold;margin-top: 7px;">çæ ·</el-radio></el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="printDialogVisible=false">å æ¶</el-button> |
| | | <el-button @click="printDialogVisible = false">å æ¶</el-button> |
| | | <el-button :loading="printLoading" type="primary" @click="submitPrint">æ å°</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <div class="el-dialog__body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> |
| | | <div class="el-dialog__body" |
| | | style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> |
| | | <div id="printMOrder" ref="printMOrder" class="printMOrder"> |
| | | <el-card v-for="(item, i) in checkDataList" :key="i+'uuuuu'" class="box-card" style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> |
| | | <el-card v-for="(item, i) in checkDataList" :key="i + 'uuuuu'" class="box-card" |
| | | style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> |
| | | <div style="display: flex;"> |
| | | <div> |
| | | <el-col :offset="2" :span="10"> |
| | |
| | | </div> |
| | | <div style="margin-left: 0.32cm;line-height: 0.22cm;"> |
| | | <el-row> |
| | | <el-col class="single-line-ellipsis" style="font-size: 0.20cm;width: 4cm;"><span>æ ·åç¼å·: </span>{{ item.sampleCode }}</el-col> |
| | | <el-col class="single-line-ellipsis" style="font-size: 0.20cm;width: 4cm;"><span>æ ·åç¼å·: </span>{{ |
| | | item.sampleCode }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.20cm;"> |
| | | <el-col><span>å§æåå·: </span>{{ item.code }}</el-col> |
| | |
| | | <el-col><span>è§æ ¼åå·: </span>{{ item.model }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.20cm;"> |
| | | <el-col ><span>æ ·ååç§°: </span>{{ item.sample }}</el-col> |
| | | <el-col><span>æ ·ååç§°: </span>{{ item.sample }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.20cm;width: 4cm;"> |
| | | <el-col class="ellipsis-multiline"><span>æ£æµé¡¹ç®: </span>{{ item.item }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 0.01cm;font-size: 0.20cm;"> |
| | | <el-col style="display: flex;align-items: center;"><span>æ ·åç¶æ: |
| | | <el-col style="display: flex;align-items: center;"><span>æ ·åç¶æ: |
| | | </span> |
| | | <span style="white-space: nowrap;"><span v-if="item.insState==0">â</span><span v-if="item.insState!=0" class="scor"></span>å¾
æ£ |
| | | <span v-if="item.insState==1">â</span><span v-if="item.insState!=1" class="scor"></span>卿£ |
| | | <span v-if="item.insState==2">â</span><span v-if="item.insState!=2" class="scor"></span>å·²æ£ |
| | | <span v-if="item.isLeave==1">â</span><span v-if="item.isLeave!=1" class="scor"></span>çæ ·</span> |
| | | <span style="white-space: nowrap;"><span v-if="item.insState == 0">â</span><span v-if="item.insState != 0" |
| | | class="scor"></span>å¾
æ£ |
| | | <span v-if="item.insState == 1">â</span><span v-if="item.insState != 1" class="scor"></span>卿£ |
| | | <span v-if="item.insState == 2">â</span><span v-if="item.insState != 2" class="scor"></span>å·²æ£ |
| | | <span v-if="item.isLeave == 1">â</span><span v-if="item.isLeave != 1" class="scor"></span>çæ ·</span> |
| | | <!-- <el-radio-group :value="item.insState" style="margin-top: 3px;margin-left: 1px;" disabled> |
| | | <el-radio :label="0" style="margin-right: 3px;font-size: 6px;">å¾
æ£</el-radio> |
| | | <el-radio :label="1" style="margin-right: 3px;font-size: 6px;">卿£</el-radio> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--æ ç¾æå°å¼¹æ¡--> |
| | | <print-dialog v-if="printDialog" ref="printDialog" |
| | | :printDialog="printDialog" |
| | | @closePrintDialog="closePrintDialog"></print-dialog> |
| | | <print-dialog v-if="printDialog" ref="printDialog" :printDialog="printDialog" |
| | | @closePrintDialog="closePrintDialog"></print-dialog> |
| | | <!--æ·»å éæ¼æ£éªé¡¹å¼¹æ¡--> |
| | | <add-inspection-dia v-if="addInspectionDia" ref="addInspectionDia"></add-inspection-dia> |
| | | <!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"--> |
| | | <!-- :sonLaboratory="sonLaboratory" :state="state"--> |
| | | <!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>--> |
| | | <!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"--> |
| | | <!-- :sonLaboratory="sonLaboratory" :state="state"--> |
| | | <!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>--> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | updateInspected, |
| | | updateOrderEntrustCode, updateStatus, upInsOrder, upPlanUser2 |
| | | } from "@/api/business/productOrder"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import {downFile, getFileList, selectSampleAndProductByOrderId} from "@/api/business/rawMaterialOrder"; |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder"; |
| | | // import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; |
| | | export default { |
| | | components: { |
| | |
| | | orderType: '', |
| | | state: '', |
| | | }, |
| | | upIndex: 0, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | {label: 'å§æç¼å·', prop: 'entrustCode'}, |
| | | {label: 'å§æåä½', prop: 'company'}, |
| | | {label: 'æ ·ååç§°', prop: 'sampleName'}, |
| | | {label: 'æ ·ååå·', prop: 'sampleModel'}, |
| | | {label: 'æ ·åæ°é', prop: 'sampleNum'}, |
| | | {label: 'æ£éªäºº', prop: 'testingName'}, |
| | | { label: 'å§æç¼å·', prop: 'entrustCode' }, |
| | | { label: 'å§æåä½', prop: 'company' }, |
| | | { label: 'æ ·ååç§°', prop: 'sampleName' }, |
| | | { label: 'æ ·ååå·', prop: 'sampleModel' }, |
| | | { label: 'æ ·åæ°é', prop: 'sampleNum' }, |
| | | { label: 'æ£éªäºº', prop: 'testingName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç´§æ¥ç¨åº¦', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '夿³¨', prop: 'remark'}, |
| | | {label: 'æ£éªè¿åº¦%', prop: 'insProgress'}, |
| | | {label: 'çº¦å®æ¶é´', prop: 'appointed'}, |
| | | { label: '夿³¨', prop: 'remark' }, |
| | | { label: 'æ£éªè¿åº¦%', prop: 'insProgress' }, |
| | | { label: 'çº¦å®æ¶é´', prop: 'appointed' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'æ£éªç»æ', |
| | |
| | | return 'danger' |
| | | } else if (params == 3) { |
| | | return '' |
| | | } else { |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | {label: 'ä¸åæ¶é´', prop: 'createTime'}, |
| | | {label: 'ä¸åæ¶é´', prop: 'sendTime'}, |
| | | {label: 'éåçç±', prop: 'tell'}, |
| | | {label: 'å§æäºº', prop: 'prepareUser'}, |
| | | { label: 'ä¸åæ¶é´', prop: 'createTime' }, |
| | | { label: 'ä¸åæ¶é´', prop: 'sendTime' }, |
| | | { label: 'éåçç±', prop: 'tell' }, |
| | | { label: 'å§æäºº', prop: 'prepareUser' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | this.handlEquashCheck(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return (row.state != 1 && row.state != 0)||(this.tabIndex!=1)||row.isRevocation!=1 |
| | | return (row.state != 1 && row.state != 0) || (this.tabIndex != 1) || row.isRevocation != 1 |
| | | }, |
| | | showHide: (row) => { |
| | | return this.tabIndex === 1 |
| | |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | state:0,// 0:å°è´¦é¡µï¼1ï¼æ£éªé¡µé¢,2æ£éªé¡µé¢(夿 ¸)ï¼é»è®¤ä¸º0,3æ°æ®æ¥ç |
| | | state: 0,// 0:å°è´¦é¡µï¼1ï¼æ£éªé¡µé¢,2æ£éªé¡µé¢(夿 ¸)ï¼é»è®¤ä¸º0,3æ°æ®æ¥ç |
| | | InspectionKey: 1, |
| | | inspectorList: [],//æ£éªäººåå表 |
| | | sonLaboratory: null,// 0:å§æï¼1ï¼åææ |
| | | typeSource: null,// 0:æåä¸åï¼1ï¼åææä¸å |
| | | deleteTilte:'æ¤é', |
| | | deleteTilte: 'æ¤é', |
| | | examine: null, |
| | | deleteList:[], |
| | | loadPint:false, |
| | | deleteList: [], |
| | | loadPint: false, |
| | | checkAll: false, |
| | | isIndeterminate: true, |
| | | printLoading:false, |
| | | printDialogVisible:false, |
| | | printLoading: false, |
| | | printDialogVisible: false, |
| | | //æ¯å¦å®¡æ ¸éè¿ trueæ¯ false䏿¯ |
| | | isPass: false, |
| | | //æ¯å¦å®¡æ ¸æ¤é trueæ¯ false䏿¯ |
| | |
| | | tableDataLookTableLoading: false, // æ°æ®æ¥çå¼¹æ¡ |
| | | tableDataLook: [], |
| | | tableDataLookPage: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableDataLookColumn: [ |
| | | {label: 'æ ·åç¼å·', prop: 'sampleCode'}, |
| | | {label: 'æ ·ååç§°', prop: 'sample'}, |
| | | {label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemClass'}, |
| | | {label: 'æ£éªé¡¹', prop: 'inspectionItem'}, |
| | | {label: 'æ£éªå项', prop: 'inspectionItemSubclass'}, |
| | | {label: 'åä½', prop: 'unit'}, |
| | | {label: 'æ ·ååå·', prop: 'model'}, |
| | | {label: 'æ¡ä»¶', prop: 'radius'}, |
| | | {label: 'çµç¼æ è¯', prop: 'cableTag'}, |
| | | {label: 'è¯éªè¦æ±', prop: 'tell'}, |
| | | {label: 'æ£éªç»æ', prop: 'lastValue'}, |
| | | { label: 'æ ·åç¼å·', prop: 'sampleCode' }, |
| | | { label: 'æ ·ååç§°', prop: 'sample' }, |
| | | { label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemClass' }, |
| | | { label: 'æ£éªé¡¹', prop: 'inspectionItem' }, |
| | | { label: 'æ£éªå项', prop: 'inspectionItemSubclass' }, |
| | | { label: 'åä½', prop: 'unit' }, |
| | | { label: 'æ ·ååå·', prop: 'model' }, |
| | | { label: 'æ¡ä»¶', prop: 'radius' }, |
| | | { label: 'çµç¼æ è¯', prop: 'cableTag' }, |
| | | { label: 'è¯éªè¦æ±', prop: 'tell' }, |
| | | { label: 'æ£éªç»æ', prop: 'lastValue' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç»æå¤å®', |
| | |
| | | return 'danger' |
| | | } else if (params == 3) { |
| | | return '' |
| | | } else { |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: 'éä»¶åç§°', prop: 'fileName'}, |
| | | {label: 'ä¸ä¼ 人', prop: 'name'}, |
| | | {label: 'ä¸ä¼ æ¶é´', prop: 'createTime'}, |
| | | { label: 'éä»¶åç§°', prop: 'fileName' }, |
| | | { label: 'ä¸ä¼ 人', prop: 'name' }, |
| | | { label: 'ä¸ä¼ æ¶é´', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | } |
| | | ], |
| | | pageFile: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | formData: {}, |
| | | formData0: {}, |
| | |
| | | sampleId: '', |
| | | appointed: '', |
| | | userId: '', |
| | | sonLaboratory:'' |
| | | sonLaboratory: '' |
| | | }, |
| | | entrustCodeVisible: false, // ä¿®æ¹å§æç¼å·å¼¹æ¡ |
| | | entrustCodeInfo: {}, |
| | | submitCodeLoading: false, |
| | | // 人åå表 |
| | | personList: [], |
| | | orderId:'', |
| | | revocationInsProductIds:'', |
| | | orderId: '', |
| | | revocationInsProductIds: '', |
| | | componentDataDelete: [], |
| | | tableLoadingDelete: false, |
| | | columnDelete: [ |
| | | {label: 'æ ·åç¼å·', prop: 'sampleCode'}, |
| | | {label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemClass'}, |
| | | {label: 'æ£éªé¡¹', prop: 'inspectionItem'}, |
| | | {label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemSubclass'}, |
| | | {label: 'æ ·ååç±»', prop: 'sampleType'}, |
| | | {label: 'æ ·å', prop: 'sample'}, |
| | | {label: 'åå·', prop: 'model'}, |
| | | {label: '线è¯', prop: 'cableTag'}, |
| | | {label: 'è¯éªå®¤', prop: 'sonLaboratory'}, |
| | | {label: 'è¦æ±å¼', prop: 'ask'}, |
| | | {label: 'è¦æ±æè¿°', prop: 'tell'}, |
| | | { label: 'æ ·åç¼å·', prop: 'sampleCode' }, |
| | | { label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemClass' }, |
| | | { label: 'æ£éªé¡¹', prop: 'inspectionItem' }, |
| | | { label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemSubclass' }, |
| | | { label: 'æ ·ååç±»', prop: 'sampleType' }, |
| | | { label: 'æ ·å', prop: 'sample' }, |
| | | { label: 'åå·', prop: 'model' }, |
| | | { label: '线è¯', prop: 'cableTag' }, |
| | | { label: 'è¯éªå®¤', prop: 'sonLaboratory' }, |
| | | { label: 'è¦æ±å¼', prop: 'ask' }, |
| | | { label: 'è¦æ±æè¿°', prop: 'tell' }, |
| | | ], |
| | | pageDelete: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | deleteDialogVisible:false, |
| | | deleteDialogVisible: false, |
| | | upLoad: false, |
| | | tabList: [ |
| | | { |
| | |
| | | tabIndex: 0, |
| | | active: 0, //1ï¼ä¸åï¼2ï¼æ¥çï¼3ï¼å®¡æ ¸ï¼4ï¼å
纤é
ç½®,é»è®¤ä¸º0 |
| | | currentId: null, |
| | | more:false, |
| | | insOrderRow:{}, |
| | | checkIndexList:[], |
| | | checkDataList:[ |
| | | more: false, |
| | | insOrderRow: {}, |
| | | checkIndexList: [], |
| | | checkDataList: [ |
| | | { |
| | | sampleCode:'11111' |
| | | sampleCode: '11111' |
| | | } |
| | | ], |
| | | qrData:[], |
| | | multipleSelection:[], |
| | | sonLaboratoryList:[], |
| | | qrData: [], |
| | | multipleSelection: [], |
| | | sonLaboratoryList: [], |
| | | printDialog: false, |
| | | addInspectionDia: false |
| | | } |
| | | }, |
| | | watch:{ |
| | | printDialogVisible(newVal){ |
| | | if(!newVal){ |
| | | watch: { |
| | | printDialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.qrData = [] |
| | | this.checkIndexList = [] |
| | | this.checkDataList = [] |
| | |
| | | methods: { |
| | | // æ¥è¯¢åè¡¨æ°æ® |
| | | refreshTable() { |
| | | if (this.tabIndex !== 2 && this.tabIndex !==3) { |
| | | if (this.tabIndex !== 2 && this.tabIndex !== 3) { |
| | | this.entity.orderType = '' |
| | | } else { |
| | | if (this.tabIndex === 2) { |
| | |
| | | this.entity.orderType = 'æ½æ£' |
| | | } |
| | | } |
| | | const params = {...this.entity, state: this.tabList[this.tabIndex].value} |
| | | const params = { ...this.entity, state: this.tabList[this.tabIndex].value } |
| | | this.tableLoading = true |
| | | selectInsOrderParameter(params).then(res => { |
| | | this.upIndex++ |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // æå¼ä¿®æ¹å§æç¼å·å¼¹æ¡ |
| | | changeEntrustCode (row) { |
| | | changeEntrustCode(row) { |
| | | this.entrustCodeVisible = true |
| | | this.entrustCodeInfo = {...row} |
| | | this.entrustCodeInfo = { ...row } |
| | | }, |
| | | // æäº¤ä¿®æ¹å§æç¼å· |
| | | submitCode () { |
| | | submitCode() { |
| | | this.submitCodeLoading = true |
| | | updateOrderEntrustCode({ |
| | | id: this.entrustCodeInfo.id, |
| | |
| | | this.submitCodeLoading = false |
| | | }) |
| | | }, |
| | | selectMethod(val){ |
| | | selectMethod(val) { |
| | | this.multipleSelection = val |
| | | }, |
| | | //éæ©è¦æå°çäºç»´ç |
| | | changePrintCode(){ |
| | | changePrintCode() { |
| | | let indexList = this.checkIndexList |
| | | let arr = [] |
| | | indexList.forEach(i=>{ |
| | | indexList.forEach(i => { |
| | | arr.push(this.qrData[i]) |
| | | }) |
| | | this.checkDataList = arr |
| | | }, |
| | | //å
¨é |
| | | handleCheckAllChange(val) { |
| | | if(val){ |
| | | for(var i=0;i<this.qrData.length;i++){ |
| | | if (val) { |
| | | for (var i = 0; i < this.qrData.length; i++) { |
| | | this.checkIndexList.push(i) |
| | | } |
| | | this.checkDataList = this.qrData |
| | | }else{ |
| | | } else { |
| | | this.checkIndexList = [] |
| | | this.checkDataList = [] |
| | | } |
| | | this.isIndeterminate = false; |
| | | }, |
| | | submitPrint(){ |
| | | if(this.checkDataList.length < 1){ |
| | | submitPrint() { |
| | | if (this.checkDataList.length < 1) { |
| | | this.$message.warning("è¯·éæ©è¦æå°çäºç»´ç ") |
| | | return |
| | | } |
| | |
| | | PrintJS({ |
| | | printable: 'printMOrder',//é¡µé¢ |
| | | type: "html",//ææ¡£ç±»å |
| | | maxWidth:360, |
| | | maxWidth: 360, |
| | | style: `@page { |
| | | margin:0; |
| | | size: 400px 75px collapse; |
| | |
| | | height: 75px; |
| | | margin:0; |
| | | }`, |
| | | onPrintDialogClose: this.erexcel=false, |
| | | onPrintDialogClose: this.erexcel = false, |
| | | targetStyles: ["*"], // 使ç¨domçæææ ·å¼ï¼å¾éè¦ |
| | | font_size: '0.20cm', |
| | | }); |
| | | }, |
| | | // æå¼æ·»å æ£éªé¡¹å¼¹æ¡ |
| | | openAddIns () { |
| | | openAddIns() { |
| | | if (this.multipleSelection.length === 0) { |
| | | this.$message.warning('è¯·éæ©éè¦æ·»å æ£éªé¡¹çæ°æ®') |
| | | return |
| | |
| | | }) |
| | | }, |
| | | // 导åºè®°å½ |
| | | downLoad () { |
| | | rawAllInsOrderExport({...this.entity}).then(res => { |
| | | this.$message.success('å¯¼åºæå') |
| | | downLoad() { |
| | | rawAllInsOrderExport({ ...this.entity }).then(res => { |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, 'å§ææ£æµä¿¡æ¯å¯¼åº.xlsx'); |
| | | }).catch(err => { |
| | |
| | | }) |
| | | }, |
| | | // æå¼æ ç¾æå°å¼¹æ¡ |
| | | openPrint () { |
| | | openPrint() { |
| | | if (this.multipleSelection.length > 0) { |
| | | this.printDialog = true |
| | | this.$nextTick(() => { |
| | |
| | | } |
| | | }, |
| | | // å
³éæ ç¾æå°å¼¹æ¡ |
| | | closePrintDialog () { |
| | | closePrintDialog() { |
| | | this.printDialog = false |
| | | }, |
| | | // è·åææ´¾äººå䏿å表 |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({type: 1}).then(res => { |
| | | selectUserCondition({ type: 1 }).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | this.getDataTableList(row) |
| | | }, |
| | | // æ¥è¯¢æ°æ®æ¥çåè¡¨æ°æ® |
| | | getDataTableList (row) { |
| | | getDataTableList(row) { |
| | | this.tableDataLookTableLoading = true |
| | | selectSampleAndProductByOrderId({id: row.id}).then(res => { |
| | | selectSampleAndProductByOrderId({ id: row.id }).then(res => { |
| | | this.tableDataLookTableLoading = false |
| | | if (res.code === 200) { |
| | | this.tableDataLook = res.data.records |
| | |
| | | this.tableDataLookTableLoading = false |
| | | }) |
| | | }, |
| | | tableDataLookPagination (page) { |
| | | tableDataLookPagination(page) { |
| | | this.tableDataLookPage.size = page.limit |
| | | this.getDataTableList() |
| | | }, |
| | | // éä»¶æ¥ç |
| | | handleFileLook (row) { |
| | | handleFileLook(row) { |
| | | this.filesDialogVisible = true |
| | | this.getFileList(row) |
| | | }, |
| | | getFileList(row) { |
| | | this.tableLoadingFile = true |
| | | getFileList({insOrderId: row.id}).then(res => { |
| | | getFileList({ insOrderId: row.id }).then(res => { |
| | | this.tableLoadingFile = false |
| | | if (res.code === 200) { |
| | | this.tableDataFile = res.data.records |
| | |
| | | this.tableLoadingFile = false |
| | | }) |
| | | }, |
| | | paginationFile (page) { |
| | | paginationFile(page) { |
| | | this.pageFile.size = page.limit |
| | | this.getFileList() |
| | | }, |
| | | // éä»¶ä¸è½½ |
| | | handleDown(row){ |
| | | 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 |
| | | if (res.data.type == 1) { |
| | | url = this.javaApi + '/img/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | }else{ |
| | | url = this.javaApi+'/word/'+res.data.fileUrl |
| | | } else { |
| | | url = this.javaApi + '/word/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | } |
| | | } |
| | |
| | | }, |
| | | // ä¸è½½æ¥å |
| | | download(row) { |
| | | let url = this.javaApi+'/word/' + row.urlS?row.urlS:row.url; |
| | | if(url){ |
| | | let url = this.javaApi + '/word/' + row.urlS ? row.urlS : row.url; |
| | | if (url) { |
| | | this.$download.saveAs(url, this.downLoadInfo.fileName); |
| | | } |
| | | }, |
| | | // æ¤é |
| | | handlEquash(row) { |
| | | if(this.tabIndex!=1){ |
| | | if (this.tabIndex != 1) { |
| | | this.quashDialogVisible = true; |
| | | this.insOrderRow=row |
| | | }else{ |
| | | this.insOrderRow = row |
| | | } else { |
| | | this.orderId = row.id |
| | | this.revocationInsProductIds = '' |
| | | this.deleteTilte = 'æ¤é' |
| | |
| | | this.getDeleteList() |
| | | } |
| | | }, |
| | | getDeleteList () { |
| | | getDeleteList() { |
| | | this.tableLoadingDelete = true |
| | | selectNoProducts({orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds}).then(res => { |
| | | selectNoProducts({ orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds }).then(res => { |
| | | this.tableLoadingDelete = false |
| | | this.componentDataDelete = res.data.records |
| | | this.pageDelete.total = res.data.total |
| | |
| | | this.tableLoadingDelete = false |
| | | }) |
| | | }, |
| | | paginationDelete (page) { |
| | | paginationDelete(page) { |
| | | this.pageDelete.size = page.limit |
| | | this.getDeleteList() |
| | | }, |
| | | selectDelete(arr){ |
| | | selectDelete(arr) { |
| | | this.deleteList = arr; |
| | | }, |
| | | submitDelete(){ |
| | | if(this.deleteTilte=='æ¤é'){ |
| | | if(this.deleteList.length==0){ |
| | | submitDelete() { |
| | | if (this.deleteTilte == 'æ¤é') { |
| | | if (this.deleteList.length == 0) { |
| | | this.$message.error('è¯·éæ©è¦æ¤éç项') |
| | | return |
| | | } |
| | | let ids = this.deleteList.map(m=>m.id).join(',') |
| | | let ids = this.deleteList.map(m => m.id).join(',') |
| | | this.printLoading = true; |
| | | updateInspected({ids: ids,orderId: this.orderId}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.printLoading=false |
| | | this.deleteDialogVisible=false |
| | | updateInspected({ ids: ids, orderId: this.orderId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false |
| | | this.deleteDialogVisible = false |
| | | this.refreshTable('page') |
| | | this.$message.success("æ´æ°æå") |
| | | } |
| | | }) |
| | | }else{ |
| | | checkUpdate({orderId: this.orderId, state: 1}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.printLoading=false |
| | | this.deleteDialogVisible=false |
| | | } else { |
| | | checkUpdate({ orderId: this.orderId, state: 1 }).then(res => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false |
| | | this.deleteDialogVisible = false |
| | | this.refreshTable('page') |
| | | this.$message.success("æ´æ°æå") |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | handlEquashCheck(row){ |
| | | handlEquashCheck(row) { |
| | | this.orderId = row.id |
| | | this.revocationInsProductIds = row.revocationInsProductIds |
| | | this.deleteTilte = 'æ¤éå®¡æ ¸' |
| | | this.deleteDialogVisible = true; |
| | | }, |
| | | handleNo(){ |
| | | if(this.deleteTilte=='æ¤é'){ |
| | | this.deleteDialogVisible=false |
| | | }else{ |
| | | checkUpdate({orderId: this.orderId, state: 0}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.printLoading=false |
| | | this.deleteDialogVisible=false |
| | | handleNo() { |
| | | if (this.deleteTilte == 'æ¤é') { |
| | | this.deleteDialogVisible = false |
| | | } else { |
| | | checkUpdate({ orderId: this.orderId, state: 0 }).then(res => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false |
| | | this.deleteDialogVisible = false |
| | | this.refreshTable('page') |
| | | this.$message.success("æ´æ°æå") |
| | | } |
| | |
| | | this.distributeData.type = row.type |
| | | }) |
| | | upPlanUser2({ |
| | | orderId:row.id, |
| | | orderId: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200&&res.data.length>0) { |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | this.sonLaboratoryList = []; |
| | | res.data.forEach(m=>{ |
| | | res.data.forEach(m => { |
| | | this.sonLaboratoryList.push({ |
| | | value:m, |
| | | label:m |
| | | value: m, |
| | | label: m |
| | | }) |
| | | }) |
| | | } |
| | |
| | | return |
| | | } |
| | | // |
| | | if(this.distributeData.userId==null||this.distributeData.userId==''){ |
| | | if (this.distributeData.userId == null || this.distributeData.userId == '') { |
| | | this.$message.error('ææ´¾äººåæªå¡«å') |
| | | return |
| | | } |
| | | if(this.distributeData.userId&&(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory=='')){ |
| | | if (this.distributeData.userId && (this.distributeData.sonLaboratory == null || this.distributeData.sonLaboratory == '')) { |
| | | this.$message.error('è¯éªå®¤æªå¡«å') |
| | | return |
| | | } |
| | |
| | | sampleId: this.distributeData.sampleId, |
| | | appointed: this.distributeData.appointed, |
| | | userId: this.distributeData.userId, |
| | | sonLaboratory:this.distributeData.sonLaboratory, |
| | | sonLaboratory: this.distributeData.sonLaboratory, |
| | | }).then(res => { |
| | | if (res.code === 201) { |
| | | this.upLoad = false |
| | |
| | | }, |
| | | submitForm() { |
| | | this.upLoad = true; |
| | | if (this.tabIndex==1){ |
| | | updateInspected({id: this.insOrderRow.id}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.upLoad=false |
| | | this.quashDialogVisible=false |
| | | if (this.tabIndex == 1) { |
| | | updateInspected({ id: this.insOrderRow.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.upLoad = false |
| | | this.quashDialogVisible = false |
| | | this.refreshTable() |
| | | this.$message.success("æ´æ°æå") |
| | | } |
| | | }) |
| | | }else{ |
| | | updateStatus({id: this.insOrderRow.id}).then(res=>{ |
| | | if (res.code===200){ |
| | | } else { |
| | | updateStatus({ id: this.insOrderRow.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.upLoad = false |
| | | this.quashDialogVisible = false |
| | | this.refreshTable('page') |
| | |
| | | }, |
| | | // ä¸å |
| | | playOrder(num) { |
| | | this.$router.push({ path: "/productOrder/add", query: {examine: 0,active: num, tabIndex: this.tabIndex} }); |
| | | this.$router.push({ path: "/productOrder/add", query: { examine: 0, active: num, tabIndex: this.tabIndex } }); |
| | | }, |
| | | // å®¡æ ¸ |
| | | handleVerify(row) { |
| | | this.$router.push({ path: "/productOrder/add", query: {examine: 1,active: 3, currentId: row.id} }); |
| | | this.$router.push({ path: "/productOrder/add", query: { examine: 1, active: 3, currentId: row.id } }); |
| | | }, |
| | | handleTab(m, i) { |
| | | this.tabIndex = i; |
| | | this.refreshTable() |
| | | }, |
| | | // æ¥çæ£éªæ°æ® |
| | | viewInspectInfo (row) { |
| | | viewInspectInfo(row) { |
| | | //å½åæ£éªä»»å¡çæ£éªäººå表 |
| | | let inspectorList = [] |
| | | if(row.userName){ |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(',') |
| | | } |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | if(user){ |
| | | if (user) { |
| | | inspectorList.push(user.name) |
| | | } |
| | | this.inspectorList = inspectorList |
| | |
| | | this.refreshTable('page') |
| | | }, |
| | | // å·æ°é¡µé¢ |
| | | refreshView () { |
| | | refreshView() { |
| | | this.InspectionKey++ |
| | | }, |
| | | changeUser(){ |
| | | if(this.sonLaboratoryList.length>0){ |
| | | changeUser() { |
| | | if (this.sonLaboratoryList.length > 0) { |
| | | this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value |
| | | } |
| | | }, |
| | | handleDelete(row){ |
| | | handleDelete(row) { |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | delInsOrder({insOrderId: row.id}).then(res => { |
| | | delInsOrder({ insOrderId: row.id }).then(res => { |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable() |
| | | }).catch(e => { |
| | | this.$message.error('å é¤å¤±è´¥') |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | } |
| | | } |
| | | } |
| | |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | .box-card >>>.el-radio__inner { |
| | | |
| | | .box-card>>>.el-radio__inner { |
| | | border-radius: 2px !important; |
| | | } |
| | | .box-card >>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | |
| | | .box-card>>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ''; |
| | | width: 8px; |
| | | height: 3px; |
| | |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | >>>.el-radio__label{ |
| | | |
| | | >>>.el-radio__label { |
| | | color: #000 !important; |
| | | } |
| | | .el-dialog__body >>>.el-radio__label{ |
| | | |
| | | .el-dialog__body>>>.el-radio__label { |
| | | font-size: 8px; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ''; |
| | | width: 4px; |
| | | height: 3px; |
| | |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ |
| | | |
| | | >>>.el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | background: #3A7BFA; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | background: transparent; |
| | | } |
| | | .el-dialog__body >>>.el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__inner { |
| | | width: 8px !important; |
| | | height: 8px !important; |
| | | } |
| | | .el-dialog__body >>>.el-radio__label{ |
| | | |
| | | .el-dialog__body>>>.el-radio__label { |
| | | padding-left: 2px !important; |
| | | } |
| | | .el-dialog__body >>>.el-card__body{ |
| | | |
| | | .el-dialog__body>>>.el-card__body { |
| | | padding: 0 !important; |
| | | } |
| | | .el-dialog__body >>>.el-card { |
| | | |
| | | .el-dialog__body>>>.el-card { |
| | | border: none; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-disabled .el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-disabled .el-radio__inner { |
| | | border-color: #000 !important; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | border: none !important; |
| | | } |
| | | .scor{ |
| | | |
| | | .scor { |
| | | width: 0.01cm; |
| | | height: 0.01cm; |
| | | border-radius: 1px; |
| | | border: 1px solid #000; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .ellipsis-multiline { |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | word-wrap: break-word; |
| | | max-height: 3.0em; /* é«åº¦ä¸ºåä½å¤§å°ç两å */ |
| | | line-height: 1.5em; /* è¡é« */ |
| | | height: 3.0em; /* é«åº¦ä¸ºè¡é«ç两å */ |
| | | max-height: 3.0em; |
| | | /* é«åº¦ä¸ºåä½å¤§å°ç两å */ |
| | | line-height: 1.5em; |
| | | /* è¡é« */ |
| | | height: 3.0em; |
| | | /* é«åº¦ä¸ºè¡é«ç两å */ |
| | | } |
| | | </style> |
| | |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="ç¼å·" prop="quarterNo" v-show="tabIndex === 0"> |
| | | <el-input v-model="entity.quarterNo" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="entity.quarterNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | <div> |
| | | <div class="table"> |
| | | <ul class="tab"> |
| | | <li v-for="(m,i) in tabList" :key="i" :class="{active:i===tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> |
| | | <li v-for="(m, i) in tabList" :key="i" :class="{ active: i === tabIndex }" @click="handleTab(m, i)">{{ m.label }}</li> |
| | | </ul> |
| | | <!--å£åº¦--> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" |
| | | @pagination="pagination" :height="'calc(100vh - 290px)'" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination" |
| | | :height="'calc(100vh - 290px)'" :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <!--年度--> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" @pagination="pagination1" |
| | | :height="'calc(100vh - 290px)'" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | </div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="yearSampleDia" title="å¹´åº¦æ½æ ·" width="70%" |
| | | @close="closeYearSampleDia"> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="yearSampleDia" title="å¹´åº¦æ½æ ·" |
| | | width="70%" @close="closeYearSampleDia"> |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px"> |
| | | <div style="width: 30%;display: flex;align-items: center;" > |
| | | <el-input v-if="operationType !=='view'" v-model="currentYear" size="small"/> |
| | | <span v-if="operationType ==='view'" style="width: 160px;font-size: 18px;font-weight: 600">{{currentYear}}</span> |
| | | <div style="width: 30%;display: flex;align-items: center;"> |
| | | <el-input v-if="operationType !== 'view'" v-model="currentYear" size="small" /> |
| | | <span v-if="operationType === 'view'" |
| | | style="width: 160px;font-size: 18px;font-weight: 600">{{ currentYear }}</span> |
| | | </div> |
| | | <div v-if="operationType !== 'view'"> |
| | | <div v-if="operationType !== 'view'"> |
| | | <el-button size="small" type="primary" @click="addQuarter">æ·»å </el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">æ¸
空</el-button> |
| | | </div> |
| | |
| | | <el-table-column label="ç±»å«" prop="yearType" width="240"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.yearType" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.yearType" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.yearType}}</span> |
| | | <span size="small">{{ row.yearType }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="1" prop="january" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.january" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.january" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.january}}</span> |
| | | <span size="small">{{ row.january }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="2" prop="february" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.february" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.february" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.february}}</span> |
| | | <span size="small">{{ row.february }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="3" prop="march" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.march" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.march" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.march}}</span> |
| | | <span size="small">{{ row.march }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="4" prop="april" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.april" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.april" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.april}}</span> |
| | | <span size="small">{{ row.april }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="5" prop="may" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.may" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.may" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.may}}</span> |
| | | <span size="small">{{ row.may }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="6" prop="june" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.june" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.june" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.june}}</span> |
| | | <span size="small">{{ row.june }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="7" prop="july" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.july" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.july" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.july}}</span> |
| | | <span size="small">{{ row.july }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="8" prop="august" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.august" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.august" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.august}}</span> |
| | | <span size="small">{{ row.august }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="9" prop="september" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.september" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.september" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.september}}</span> |
| | | <span size="small">{{ row.september }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="10" prop="october" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.october" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.october" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.october}}</span> |
| | | <span size="small">{{ row.october }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="11" prop="november" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.november" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.november" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.november}}</span> |
| | | <span size="small">{{ row.november }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="12" prop="december" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.december" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.december" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.december}}</span> |
| | | <span size="small">{{ row.december }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'view'" fixed="right" label="æä½" width="100"> |
| | | <el-table-column v-if="operationType !== 'view'" fixed="right" label="æä½" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="deleteScope(scope.$index)">å é¤</el-button> |
| | | <el-button size="small" style="color: #f56c6c" type="text" |
| | | @click="deleteScope(scope.$index)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 10px"> |
| | | <span style="width: 70px">注æäºé¡¹ï¼</span> |
| | | <el-input v-model="yearSampleForm.tableRemark" :disabled="operationType === 'view'" size="small" style="width: 50%" type="textarea"></el-input> |
| | | <el-input v-model="yearSampleForm.tableRemark" :disabled="operationType === 'view'" size="small" |
| | | style="width: 50%" type="textarea"></el-input> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 10px"> |
| | | <span style="width: 70px">夿³¨ï¼</span> |
| | | <el-input v-model="yearSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 50%" type="textarea"></el-input> |
| | | <el-input v-model="yearSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 50%" |
| | | type="textarea"></el-input> |
| | | </div> |
| | | <div v-if="operationType !== 'add'"> |
| | | <el-form ref="form" :model="editYearFormRow" label-width="70px"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç¼å¶äººï¼"> |
| | | <el-select v-model="editYearFormRow.writeUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.writeUser" :disabled="operationType !== 'edit'" placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¼ç¾äººï¼"> |
| | | <el-select v-model="editYearFormRow.countersignUser" :disabled="operationType !=='edit'" multiple placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.countersignUser" :disabled="operationType !== 'edit'" multiple |
| | | placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸äººï¼"> |
| | | <el-select v-model="editYearFormRow.examineUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.examineUser" :disabled="operationType !== 'edit'" placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¹å人ï¼"> |
| | | <el-select v-model="editYearFormRow.ratifyUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.ratifyUser" :disabled="operationType !== 'edit'" placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | finalReportSpotCheckYear, |
| | | getQuarterPage, getSpotCheckYear, getSpotCheckYearPage, updateSpotCheckYear |
| | | } from "@/api/business/productSamplingInfo"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | |
| | | export default { |
| | | name: "b1-product-sampling-info", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, AddQuarterItem}, |
| | | components: { limsTable, AddQuarterItem }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | {label: 'ç¼å·', prop: 'quarterNo'}, |
| | | {label: '夿³¨', prop: 'remark'}, |
| | | {label: 'å建人', prop: 'createUserName'}, |
| | | {label: 'å建æ¶é´', prop: 'createTime'}, |
| | | { label: 'ç¼å·', prop: 'quarterNo' }, |
| | | { label: '夿³¨', prop: 'remark' }, |
| | | { label: 'å建人', prop: 'createUserName' }, |
| | | { label: 'å建æ¶é´', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | label: 'æä½', |
| | |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | |
| | | this.getSpotCheckYearPageList() |
| | | } |
| | | }, |
| | | getQuarterPageList () { |
| | | getQuarterPageList() { |
| | | this.tableLoading = true |
| | | getQuarterPage({ |
| | | ...this.page,...this.entity |
| | | ...this.page, ...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.total |
| | |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | getSpotCheckYearPageList () { |
| | | getSpotCheckYearPageList() { |
| | | this.tableLoading1 = true |
| | | getSpotCheckYearPage({ |
| | | ...this.page1 |
| | |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | pagination1 (page) { |
| | | pagination1(page) { |
| | | this.page1.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // ç¼è¾å£åº¦æ½æ · |
| | | editForm (row) { |
| | | editForm(row) { |
| | | this.$refs.addQuarterItem.openDia(row, 'edit') |
| | | }, |
| | | // æ¥çå£åº¦æ½æ · |
| | | viewQuarterInfo (row) { |
| | | viewQuarterInfo(row) { |
| | | this.$refs.addQuarterItem.openDia(row, 'view') |
| | | }, |
| | | // å é¤å£åº¦æ½æ · |
| | | deleteQuarterInfo (row) { |
| | | deleteQuarterInfo(row) { |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteQuarter({quarterId: row.quarterId}).then(res => { |
| | | deleteQuarter({ quarterId: row.quarterId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | handleDown(row) { |
| | | let randomNum = Math.random(); |
| | | finalReportQuarter({quarterId: row.quarterId, random: randomNum}).then(res => { |
| | | finalReportQuarter({ quarterId: row.quarterId, random: randomNum }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'å£åº¦æ½æ ·ä¿¡æ¯å¯¼åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度ä¸è½½ |
| | | download(row) { |
| | | finalReportSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | finalReportSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.yearHead + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤å¹´åº¦æ½æ · |
| | | deleteYearInfo (row) { |
| | | deleteYearInfo(row) { |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | deleteSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | }, |
| | | // æ¥ç年度详æ
|
| | | viewYearInfo (row) { |
| | | viewYearInfo(row) { |
| | | this.operationType = 'view' |
| | | this.getUserList() |
| | | this.yearSampleDia = true |
| | | this.yearRow = row |
| | | getSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | getSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.currentYear = res.data.yearHead |
| | | this.yearItems = res.data.yearItems |
| | |
| | | }) |
| | | }, |
| | | // ç¼è¾å¹´åº¦æ½æ · |
| | | editYearForm (row) { |
| | | editYearForm(row) { |
| | | this.operationType = 'edit' |
| | | this.getUserList() |
| | | this.yearSampleDia = true |
| | | getSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | getSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.currentYear = res.data.yearHead |
| | | this.yearItems = res.data.yearItems |
| | |
| | | }) |
| | | }, |
| | | // æäº¤å¹´åº¦è®¡å |
| | | handleSample () { |
| | | handleSample() { |
| | | if (this.operationType === 'add') { |
| | | this.yearSampleForm.yearItems = JSON.parse(JSON.stringify(this.yearItems)) |
| | | this.yearSampleForm.yearHead = this.currentYear |
| | |
| | | } |
| | | }) |
| | | } else { |
| | | const params = {...this.editYearFormRow} |
| | | const params = { ...this.editYearFormRow } |
| | | if (params.countersignUser != null) { |
| | | params.countersignUser = params.countersignUser.join(',') |
| | | } |
| | |
| | | }) |
| | | } |
| | | }, |
| | | yearSample (type) { |
| | | yearSample(type) { |
| | | this.operationType = type |
| | | const currentDate = new Date(); |
| | | this.yearSampleDia = true |
| | | this.currentYear = currentDate.getFullYear() + 'å¹´å¹´åº¦æ½æ£è®¡å' |
| | | }, |
| | | // æ·»å 年度计å |
| | | addQuarter () { |
| | | addQuarter() { |
| | | this.yearItems.push({}) |
| | | }, |
| | | // æ¸
ç©ºæ½æ ·è®¡å |
| | | clearTable () { |
| | | clearTable() { |
| | | this.yearItems = [] |
| | | }, |
| | | // æå¨å é¤ |
| | | deleteScope (index) { |
| | | deleteScope(index) { |
| | | this.yearItems.splice(index, 1) |
| | | }, |
| | | // 忢ä¸åtabè¡¨æ ¼ |
| | |
| | | } |
| | | this.refreshTable() |
| | | }, |
| | | closeYearSampleDia () { |
| | | closeYearSampleDia() { |
| | | this.yearSampleForm = { |
| | | tableRemark: '', |
| | | remark: '' |
| | |
| | | this.yearItems = [] |
| | | this.yearSampleDia = false |
| | | }, |
| | | getStyle(){ |
| | | return 'height: calc(100% - '+'44'+'px)' |
| | | getStyle() { |
| | | return 'height: calc(100% - ' + '44' + 'px)' |
| | | }, |
| | | getUserList(){ |
| | | getUserList() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | |
| | | <el-form :model="componentData" ref="componentData" size="small" :inline="true"> |
| | | <el-row> |
| | | <el-form-item label="æ¹å·" prop="updateBatchNo"> |
| | | <el-input v-model="componentData.updateBatchNo" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | <el-input v-model="componentData.updateBatchNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é¶ä»¶å·" prop="partNo"> |
| | | <el-input v-model="componentData.partNo" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.partNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é¶ä»¶æè¿°" prop="partDesc"> |
| | | <el-input v-model="componentData.partDesc" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.partDesc" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾åºå" prop="supplierName" v-if="(tabIndex === 3 || tabIndex === 4)"> |
| | | <el-input v-model="componentData.supplierName" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.supplierName" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'æ´å¤':'æ¶èµ·'}}</el-button> |
| | | <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" |
| | | style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? 'æ´å¤' : 'æ¶èµ·' }}</el-button> |
| | | <el-button size="mini" icon="el-icon-search" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | <el-button size="mini" @click="refresh()" icon="el-icon-refresh">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="æ£éªç¶æ" prop="inspectStatus" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-select v-model="componentData.inspectStatus" clearable |
| | | size="small" style="width: 100%;" @change="refreshTable()"> |
| | | <el-select v-model="componentData.inspectStatus" clearable size="small" style="width: 100%;" |
| | | @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="date" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-date-picker |
| | | v-model="componentData.date" |
| | | end-placeholder="ç»ææ¥æ" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | range-separator="è³" |
| | | size="small" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | style="width: 100%;" |
| | | type="daterange" |
| | | <el-date-picker v-model="componentData.date" end-placeholder="ç»ææ¥æ" format="yyyy-MM-dd" placeholder="éæ©æ¥æ" |
| | | range-separator="è³" size="small" start-placeholder="å¼å§æ¥æ" style="width: 100%;" type="daterange" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å§æç¼å·" prop="entrustCode" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-input v-model="componentData.entrustCode" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.entrustCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-row> |
| | |
| | | <div class="table-tab"> |
| | | <div> |
| | | <ul class="tab"> |
| | | <li v-for="m in tabList" :key="m.value" :class="{active:m.value===tabIndex}" @click="handleTab(m)">{{m.label}}</li> |
| | | <li v-for="m in tabList" :key="m.value" :class="{ active: m.value === tabIndex }" @click="handleTab(m)"> |
| | | {{ m.label }}</li> |
| | | </ul> |
| | | </div> |
| | | <div> |
| | | <el-button v-show="tabIndex === 4" :loading="outLoading" size="small" type="primary" @click="handleDown">导åº</el-button> |
| | | <el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary" @click="openIFS">è·åIFS订å</el-button> |
| | | <el-button v-show="tabIndex === 4" :loading="outLoading" size="small" type="primary" |
| | | @click="handleDown">导åº</el-button> |
| | | <el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary" |
| | | @click="openIFS">è·åIFS订å</el-button> |
| | | <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">æ¥æ£</el-button> |
| | | <el-button v-if="tabIndex === 0" size="small" type="primary" @click="addDeclare">æ°å¢æ¥æ£ä¿¡æ¯</el-button> |
| | | </div> |
| | | </div> |
| | | <!--å¾
æ¥æ£ãå¾
ä¸å--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0 || tabIndex === 1" |
| | | :isSelection="true" :handleSelectionChange="selectMethod" |
| | | @pagination="pagination" :height="'calc(100vh - 290px)'" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0 || tabIndex === 1" :isSelection="true" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination" :height="'calc(100vh - 290px)'" :page="page" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!--已宿ãå
¨é¨--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 3 || tabIndex === 4" |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" :page="page1" |
| | | :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | </div> |
| | | <!-- æ¹éæ¥æ£ --> |
| | | <el-dialog :visible.sync="declareDialogSVisible" title="ç¡®è®¤æ¥æ£" width="30%"> |
| | | <p style="font-size:16px;color:#333333">æ¯å¦ç¡®è®¤æ¥æ£éæ©çæ°æ®ï¼</p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="declareDialogSVisible = false">å æ¶</el-button> |
| | | <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="declareDialogSVisible = false">å æ¶</el-button> |
| | | <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- ç¡®è®¤æ¥æ£ --> |
| | | <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? 'æ°å¢æ¥æ£ä¿¡æ¯' : 'åæææ¥æ£'" |
| | | :visible.sync="declareDialogVisible" |
| | | width="800px" @close="resetForm"> |
| | | <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" |
| | | label-width="130px" label-position="right"> |
| | | :visible.sync="declareDialogVisible" width="800px" @close="resetForm"> |
| | | <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px" |
| | | label-position="right"> |
| | | <el-form-item class="declareObj-form-item" label="订åå·:" prop="orderNo"> |
| | | <el-input v-model="declareObj.orderNo" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.orderNo" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="é¶ä»¶å·:" prop="partNo"> |
| | | <el-input v-model="declareObj.partNo" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.partNo" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="é¶ä»¶æè¿°:" prop="partDesc"> |
| | | <el-input v-model="declareObj.partDesc" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.partDesc" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="æµè¾¾çéè´æ°é:" prop="qtyArrived"> |
| | | <el-input v-model="declareObj.qtyArrived" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.qtyArrived" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="ä¾åºåç¼å·:" prop="supplierId"> |
| | | <el-input v-model="declareObj.supplierId" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.supplierId" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="ä¾åºååç§°:" prop="supplierName"> |
| | | <el-input v-model="declareObj.supplierName" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.supplierName" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="æ¹å·:" prop="updateBatchNo"> |
| | | <el-input v-model="declareObj.updateBatchNo" class="addObj-info" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="åºä½å·:" prop="locationNo"> |
| | | <el-input v-model="declareObj.locationNo" :disabled="declareType !== 'add'" class="addObj-info" clearable size="small"></el-input> |
| | | <el-input v-model="declareObj.locationNo" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="æ¥æ¶æ¶é´:" prop="receiverDate"> |
| | | <el-input v-model="declareObj.receiverDate" class="addObj-info" clearable disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="åä½:" prop="buyUnitMeas"> |
| | | <el-input v-model="declareObj.buyUnitMeas" :disabled="declareType !== 'add'" clearable class="addObj-info" size="small"></el-input> |
| | | <el-input v-model="declareObj.buyUnitMeas" :disabled="declareType !== 'add'" clearable class="addObj-info" |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="ç©æç±»åï¼" prop="isExpire"> |
| | | <el-select v-model="declareObj.isExpire" prop="isExpire" |
| | | :disabled="declareType !== 'add'" |
| | | clearable size="small"> |
| | | <el-select v-model="declareObj.isExpire" prop="isExpire" :disabled="declareType !== 'add'" clearable |
| | | size="small"> |
| | | <el-option :value="1" label="è¿æç©æ"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <el-dialog :visible.sync="deleteVisible" title="确认å é¤" width="30%"> |
| | | <p style="font-size:16px;color:#333333">æ¯å¦ç¡®è®¤å é¤ï¼</p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="deleteVisible = false">å æ¶</el-button> |
| | | <el-button :loading="deleteLoading" type="primary" @click="submitDelete">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="deleteVisible = false">å æ¶</el-button> |
| | | <el-button :loading="deleteLoading" type="primary" @click="submitDelete">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- æ¤éæ¥æ£ --> |
| | | <el-dialog :visible.sync="declareDialogVisible1" title="æ¥æ£æ¤é" width="30%"> |
| | | <p style="font-size:16px;color:#333333">æ¹å·<span |
| | | style="color:#34BD66">{{insOrderRow.updateBatchNo}}</span>çä¿¡æ¯æ¯å¦<span style="color: #FF4902">æ¤éæ¥æ£</span></p> |
| | | style="color:#34BD66">{{ insOrderRow.updateBatchNo }}</span>çä¿¡æ¯æ¯å¦<span style="color: #FF4902">æ¤éæ¥æ£</span></p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="declareDialogVisible1 = false">å æ¶</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitDeclare1">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="declareDialogVisible1 = false">å æ¶</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitDeclare1">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!--æ°æ®æ¥çå¼¹æ¡--> |
| | | <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" |
| | | :dataDialogVisible="dataDialogVisible" |
| | | :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible> |
| | | <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" :dataDialogVisible="dataDialogVisible" |
| | | :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | |
| | | export default { |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, DataLookVisible}, |
| | | components: { limsTable, DataLookVisible }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '订åå·', prop: 'orderNo'}, |
| | | {label: 'æµè¾¾çéè´æ°é', prop: 'qtyArrived',width: '140px',}, |
| | | {label: 'æ¹å·', prop: 'updateBatchNo'}, |
| | | {label: 'é¶ä»¶å·', prop: 'partNo'}, |
| | | {label: 'é¶ä»¶æè¿°', prop: 'partDesc'}, |
| | | {label: 'ä¾åºååç§°', prop: 'supplierName'}, |
| | | { label: '订åå·', prop: 'orderNo' }, |
| | | { label: 'æµè¾¾çéè´æ°é', prop: 'qtyArrived', width: '140px', }, |
| | | { label: 'æ¹å·', prop: 'updateBatchNo' }, |
| | | { label: 'é¶ä»¶å·', prop: 'partNo' }, |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç©æç±»å', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: 'åä½', prop: 'buyUnitMeas'}, |
| | | {label: 'æ¥æ¶æ¶é´', prop: 'receiverDate'}, |
| | | {label: 'æ¥æ£æ¶é´', prop: 'declareDate'}, |
| | | { label: 'åä½', prop: 'buyUnitMeas' }, |
| | | { label: 'æ¥æ¶æ¶é´', prop: 'receiverDate' }, |
| | | { label: 'æ¥æ£æ¶é´', prop: 'declareDate' }, |
| | | { |
| | | dataType: 'action', |
| | | label: 'æä½', |
| | |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | column1: [ |
| | | {label: 'å§æç¼å·', prop: 'entrustCode'}, |
| | | { label: 'å§æç¼å·', prop: 'entrustCode', width: '160px' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'æ£éªç¶æ', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '订åå·', prop: 'orderNo'}, |
| | | {label: 'æµè¾¾çéè´æ°é', prop: 'qtyArrived'}, |
| | | {label: 'ä¸åæ¶é´', prop: 'sendTime'}, |
| | | {label: 'æ¹å·', prop: 'updateBatchNo'}, |
| | | {label: 'é¶ä»¶å·', prop: 'partNo'}, |
| | | {label: 'é¶ä»¶æè¿°', prop: 'partDesc'}, |
| | | {label: 'ä¾åºååç§°', prop: 'supplierName'}, |
| | | {label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc'}, |
| | | {label: 'å
æ£', prop: 'isExemption'}, |
| | | {label: 'æ ·ååç§°', prop: 'sampleName'}, |
| | | {label: 'æ ·ååå·', prop: 'sampleModel'}, |
| | | {label: 'æ£éªäºº', prop: 'userName'}, |
| | | { label: '订åå·', prop: 'orderNo' }, |
| | | { label: 'æµè¾¾çéè´æ°é', prop: 'qtyArrived' }, |
| | | { label: 'ä¸åæ¶é´', prop: 'sendTime' }, |
| | | { label: 'æ¹å·', prop: 'updateBatchNo' }, |
| | | { label: 'é¶ä»¶å·', prop: 'partNo' }, |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc' }, |
| | | { label: 'å
æ£', prop: 'isExemption' }, |
| | | { label: 'æ ·ååç§°', prop: 'sampleName' }, |
| | | { label: 'æ ·ååå·', prop: 'sampleModel' }, |
| | | { label: 'æ£éªäºº', prop: 'userName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç©æç±»å', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: 'åä½', prop: 'buyUnitMeas'}, |
| | | {label: 'æ¥æ¶æ¶é´', prop: 'receiverDate'}, |
| | | {label: 'æ¥æ£æ¶é´', prop: 'declareDate'}, |
| | | { label: 'åä½', prop: 'buyUnitMeas' }, |
| | | { label: 'æ¥æ¶æ¶é´', prop: 'receiverDate' }, |
| | | { label: 'æ¥æ£æ¶é´', prop: 'declareDate' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | } |
| | | ], |
| | | page1: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | more:false, |
| | | more: false, |
| | | declareObj: { |
| | | id: null, |
| | | orderNo: '', // 订åå· |
| | |
| | | dataLookInfo: {}, // æ°æ®æ¥çå¼¹æ¡æ°æ® |
| | | declareType: '', // æä½æ¥æ£çç±»å |
| | | queryStatusList: [ |
| | | {label: 'æ£éªä¸', value: 0}, |
| | | {label: 'åæ ¼', value: 1}, |
| | | {label: 'ä¸åæ ¼', value: 2}, |
| | | {label: 'æªä¸å', value: 3}, |
| | | {label: 'è®©æ¥æ¾è¡', value: 4}, |
| | | { label: 'æ£éªä¸', value: 0 }, |
| | | { label: 'åæ ¼', value: 1 }, |
| | | { label: 'ä¸åæ ¼', value: 2 }, |
| | | { label: 'æªä¸å', value: 3 }, |
| | | { label: 'è®©æ¥æ¾è¡', value: 4 }, |
| | | ], |
| | | outLoading:false |
| | | outLoading: false |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | } |
| | | }, |
| | | // å¾
æ¥æ£ãå¾
ä¸åæ¥è¯¢ |
| | | getWarehouseSubmitApi () { |
| | | getWarehouseSubmitApi() { |
| | | this.tableLoading = true |
| | | const params = {...this.componentData, isInspect: this.tabIndex, state: this.tabIndex === 0 ? null : 0, ...this.page} |
| | | const params = { ...this.componentData, isInspect: this.tabIndex, state: this.tabIndex === 0 ? null : 0, ...this.page } |
| | | getWarehouseSubmit(params).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | |
| | | }) |
| | | }, |
| | | // 已宿鍿¥è¯¢ |
| | | getIfsByFinishList () { |
| | | getIfsByFinishList() { |
| | | this.tableLoading1 = true |
| | | getIfsByFinish({...this.componentData, ...this.page1}).then(res => { |
| | | getIfsByFinish({ ...this.componentData, ...this.page1 }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records |
| | |
| | | }) |
| | | }, |
| | | // å
¨é¨æ¥è¯¢ |
| | | getIfsByAllList () { |
| | | getIfsByAllList() { |
| | | this.tableLoading1 = true |
| | | getIfsByAll({...this.componentData, ...this.page1}).then(res => { |
| | | getIfsByAll({ ...this.componentData, ...this.page1 }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records |
| | |
| | | this.resetForm('componentData') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | pagination1 (page) { |
| | | pagination1(page) { |
| | | this.page1.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // æå¼æ¤éæ¥æ£å¼¹æ¡ |
| | | cancelDeclare (row) { |
| | | cancelDeclare(row) { |
| | | this.declareDialogVisible1 = true |
| | | this.insOrderRow = row |
| | | }, |
| | | // æäº¤æ¤éæ¥æ£ç³è¯· |
| | | submitDeclare1 () { |
| | | revokeInspectionReport({id: this.insOrderRow.id}).then(res => { |
| | | submitDeclare1() { |
| | | revokeInspectionReport({ id: this.insOrderRow.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.declareDialogVisible1 = false |
| | | this.refreshTable('page') |
| | |
| | | this.dataDialogVisible = true; |
| | | }, |
| | | // ç´æ¥æ¾è¡ |
| | | goPass (row) { |
| | | goPass(row) { |
| | | this.$confirm('æ¯å¦æ¾è¡å½åæ°æ®?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | concessionRelease({ifsInventoryId: row.id}).then(res => { |
| | | concessionRelease({ ifsInventoryId: row.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | |
| | | }); |
| | | }, |
| | | // æåå
¥åº |
| | | advancedGodown (row) { |
| | | advancedGodown(row) { |
| | | this.$confirm('å½ååæææ¯å¦æåå
¥åº?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | advancedGodown({ifsInventoryId: row.id}).then(res => { |
| | | advancedGodown({ ifsInventoryId: row.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | |
| | | }); |
| | | }, |
| | | // å
³éæ°æ®æ¥çå¼¹æ¡ |
| | | closeDataLook () { |
| | | closeDataLook() { |
| | | this.dataDialogVisible = false |
| | | }, |
| | | // æå¨æ¥æ£ |
| | | addDeclare () { |
| | | addDeclare() { |
| | | this.clear() |
| | | this.declareDialogVisible = true |
| | | this.declareType = 'add' |
| | | }, |
| | | // éæ©æ¥æ£æ°æ® |
| | | declareS () { |
| | | declareS() { |
| | | if (this.multipleSelection.length > 0) { |
| | | this.declareDialogSVisible = true |
| | | } else { |
| | |
| | | } |
| | | }, |
| | | // æäº¤æ¹éæ¥æ£ |
| | | submitDeclareS () { |
| | | submitDeclareS() { |
| | | let ids = [] |
| | | this.multipleSelection.forEach(item => { |
| | | ids.push(item.id) |
| | | }) |
| | | this.declareDialogSVisible = true |
| | | inspectionReport({ids: ids}).then(res => { |
| | | inspectionReport({ ids: ids }).then(res => { |
| | | if (res.code === 200) { |
| | | this.declareDialogSVisible = false |
| | | this.$message.success('æ¥æ£æå') |
| | |
| | | }, |
| | | // æå¼æ¥æ£ç¡®è®¤å¼¹æ¡ |
| | | declare(row) { |
| | | this.declareObj = {...row} |
| | | this.declareObj = { ...row } |
| | | this.declareDialogVisible = true |
| | | this.declareType = 'edit' |
| | | }, |
| | | // æäº¤æ¥æ£ |
| | | submitDeclare () { |
| | | submitDeclare() { |
| | | if (this.declareType === 'add') { |
| | | this.$refs['declareObj'].validate((valid) => { |
| | | if (valid) { |
| | |
| | | }); |
| | | } |
| | | }, |
| | | resetForm () { |
| | | resetForm() { |
| | | this.$refs['declareObj'].resetFields(); |
| | | this.declareDialogVisible = false |
| | | }, |
| | | // æå¼å é¤å¼¹æ¡ |
| | | deleteMaterial (row) { |
| | | deleteMaterial(row) { |
| | | this.deleteVisible = true |
| | | this.deleteInfo = row |
| | | }, |
| | | // 确认å é¤ |
| | | submitDelete () { |
| | | submitDelete() { |
| | | this.deleteLoading = true |
| | | delIfsInventory({id: this.deleteInfo.id}).then(res => { |
| | | delIfsInventory({ id: this.deleteInfo.id }).then(res => { |
| | | this.deleteVisible = false |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable() |
| | |
| | | }) |
| | | }, |
| | | // å
¨é¨å¯¼åº |
| | | handleDown(){ |
| | | let entity = {...this.componentData} |
| | | handleDown() { |
| | | let entity = { ...this.componentData } |
| | | delete entity.orderBy |
| | | this.outLoading = true |
| | | rawAllExport({ |
| | | entity:entity |
| | | entity: entity |
| | | }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, "åæææ£æµä¿¡æ¯å¯¼åº.xlsx"); |
| | | }) |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | |
| | | <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-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()"> |
| | |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="valueTableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :isSelection="true" :handleSelectionChange="handleChange" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination" key="valueTableData"> |
| | | :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 || nickName !== scope.row.writeUserName">ä¸ä¼ </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 || nickName !== scope.row.writeUserName">ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="handleRestore(scope.row)">è¿å</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">éåä»»å¡</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== 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 || nickName !== 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 || nickName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">æ¹å</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" |
| | | @click="handleRestore(scope.row)">è¿å</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" |
| | | @click="sendBackTask(scope.row)">éåä»»å¡</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== 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 || nickName !== 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 || nickName !== 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> |
| | |
| | | </lims-table> |
| | | </div> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="å¨çº¿ç¼å¶" |
| | | width="22cm"> |
| | | 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;"> |
| | | @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" /> |
| | | <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"> |
| | | 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;" > |
| | | <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-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_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-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"> |
| | | <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;" > |
| | | <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-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_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-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"> |
| | | <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 v-for="(item, i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | <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"> |
| | | <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 v-for="(item, i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--产ä¸é¾ä¿¡æ¯æ¥ç--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> |
| | | <!--æ¥åæ¥ç--> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="æ¥åæ¥ç" |
| | | width="80vw"> |
| | | 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;" > |
| | | <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%;" /> |
| | |
| | | <!--éä»¶æ¥ç--> |
| | | <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-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> |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | upReportUrl, |
| | | writeReport |
| | | } from "@/api/business/insReport"; |
| | | import {mapGetters} from "vuex"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | 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"; |
| | | import { delfile, downFile, getFileList } from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | components: {limsTable, onlyoffice}, |
| | | components: { limsTable, onlyoffice }, |
| | | data() { |
| | | return { |
| | | entity: { |
| | |
| | | value: ``, |
| | | reason: '', |
| | | currentInfo: null, |
| | | option:null, |
| | | mutiList:[], |
| | | outLoading:false, |
| | | inLoading:false, |
| | | option: null, |
| | | mutiList: [], |
| | | outLoading: false, |
| | | inLoading: false, |
| | | addApproverDia: false, // æå®å®¡æ¹äººåå¼¹æ¡ |
| | | approver: '', // 审æ¹äººå |
| | | approverId: '', // 审æ¹äººå |
| | |
| | | verifyUser: null, // å®¡æ ¸äººå |
| | | loadingVerify: false, // å®¡æ ¸äººå |
| | | typeSourceList: [ |
| | | {label: 'æåä¸å', value: 0}, |
| | | {label: 'åææä¸å', value: 1}, |
| | | { label: 'æåä¸å', value: 0 }, |
| | | { label: 'åææä¸å', value: 1 }, |
| | | ], |
| | | orderTypeList: [ |
| | | {label: 'å§æè¯éª', value: 'Customer-ordered test'}, |
| | | {label: 'æ½æ£', value: 'æ½æ£'}, |
| | | {label: 'è¿åæ£éª', value: 'è¿åæ£éª'}, |
| | | {label: 'å£åº¦æ£éª', value: 'Quarterly inspection'}, |
| | | { label: 'å§æè¯éª', value: 'Customer-ordered test' }, |
| | | { label: 'æ½æ£', value: 'æ½æ£' }, |
| | | { label: 'è¿åæ£éª', value: 'è¿åæ£éª' }, |
| | | { label: 'å£åº¦æ£éª', value: 'Quarterly inspection' }, |
| | | ], |
| | | showInfoDialog: false, // 产ä¸é¾ä¿¡æ¯æ¥ç |
| | | isReport: 1, |
| | |
| | | examine: null, |
| | | viewIssuedVisible: false, |
| | | queryStatusList: [ |
| | | {label: 'å¾
æäº¤', value: 0}, |
| | | {label: 'å¾
å®¡æ ¸', value: 1}, |
| | | {label: 'å¾
æ¹å', value: 2}, |
| | | { label: 'å¾
æäº¤', value: 0 }, |
| | | { label: 'å¾
å®¡æ ¸', value: 1 }, |
| | | { label: 'å¾
æ¹å', value: 2 }, |
| | | ], |
| | | state: 0, |
| | | orderId: 0, |
| | |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "ä¸éè¿"; |
| | | } else { |
| | | } else if (params == 1) { |
| | | return "éè¿"; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | } else if (params == 1) { |
| | | return "success"; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return "䏿¹å"; |
| | | } else { |
| | | } else if (params == 1) { |
| | | return "æ¹å"; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 0) { |
| | | return "danger"; |
| | | } else { |
| | | } else if (params == 1) { |
| | | return "success"; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | pageInsReport({ |
| | | ...this.page,...this.entity |
| | | ...this.page, ...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.body.total |
| | |
| | | this.resetForm('entity') |
| | | this.refreshTable(); |
| | | }, |
| | | handleChange(arr){ |
| | | handleChange(arr) { |
| | | this.mutiList = arr |
| | | }, |
| | | // æ¥çæ£éªæ°æ® |
| | | viewInspectInfo (row) { |
| | | viewInspectInfo(row) { |
| | | //å½åæ£éªä»»å¡çæ£éªäººå表 |
| | | let inspectorList = [] |
| | | if(row.userName){ |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(',') |
| | | } |
| | | inspectorList.push(this.nickName) |
| | |
| | | }) |
| | | }, |
| | | // æå¼æ¥çéä»¶å¼¹æ¡ |
| | | handleFileLook (row) { |
| | | handleFileLook(row) { |
| | | this.filesLookInfo = row |
| | | this.filesDialogVisible = true |
| | | this.getFileList() |
| | |
| | | // æ¥è¯¢éä»¶æ¥çå表åè° |
| | | getFileList() { |
| | | this.tableLoadingFile = true |
| | | getFileList({insOrderId: this.filesLookInfo.insOrderId}).then(res => { |
| | | getFileList({ insOrderId: this.filesLookInfo.insOrderId }).then(res => { |
| | | this.tableLoadingFile = false |
| | | if (res.code === 200) { |
| | | this.tableDataFile = res.data.records |
| | |
| | | this.pageFile.size = page.limit |
| | | this.getFileList() |
| | | }, |
| | | closeFilesLook () { |
| | | closeFilesLook() { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | handleSuccessUp(response, ) { |
| | | handleSuccessUp(response,) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | this.getFileList() |
| | | } |
| | | }, |
| | | handleSuccessUp1(response, ) { |
| | | handleSuccessUp1(response,) { |
| | | if (response.code == 200) { |
| | | this.$message.success('ä¸ä¼ æå'); |
| | | } |
| | | }, |
| | | // ä¸è½½éä»¶çæä»¶ |
| | | handleDown(row){ |
| | | 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 |
| | | if (res.data.type == 1) { |
| | | url = this.javaApi + '/img/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | }else{ |
| | | url = this.javaApi+'/word/'+res.data.fileUrl |
| | | } else { |
| | | url = this.javaApi + '/word/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | } |
| | | } |
| | |
| | | }).catch(() => { }) |
| | | }, |
| | | // æ¥ç产ä¸é¾ä¿¡æ¯ |
| | | openInfoDialog (row) { |
| | | openInfoDialog(row) { |
| | | this.showInfoDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.showInfoDialog.getInfo(row.ifsInventoryId) |
| | | }) |
| | | }, |
| | | handleDowns(){ |
| | | if(this.mutiList.length==0){ |
| | | handleDowns() { |
| | | if (this.mutiList.length == 0) { |
| | | this.$message.error('è¯·éæ©æ¥å') |
| | | return |
| | | } |
| | | let str = this.mutiList.map(m=>m.id).join(',') |
| | | let str = this.mutiList.map(m => m.id).join(',') |
| | | this.outLoading = true |
| | | downAll({ids: str}).then(res => { |
| | | downAll({ ids: str }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | this.$download.saveAs(this.javaApi + res.message, row.fileName); |
| | | }) |
| | | }, |
| | | beforeUpload(file){ |
| | | beforeUpload(file) { |
| | | const isZip = file.type === 'application/zip' || file.name.endsWith('.zip'); |
| | | if (!isZip) { |
| | | this.$message.error('ä¸ä¼ æä»¶åªè½æ¯ ZIP æ ¼å¼!'); |
| | | } |
| | | if(isZip){ |
| | | if (isZip) { |
| | | this.inLoading = true; |
| | | } |
| | | return isZip; |
| | |
| | | return Promise.reject(flag); //æ£ç¡®çç»æ¢ |
| | | } |
| | | }, |
| | | handleSuccess(response,){ |
| | | handleSuccess(response,) { |
| | | this.inLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('导å
¥æå') |
| | | this.refreshTable() |
| | | }else{ |
| | | } else { |
| | | this.$message.error(response.message) |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | onError(err, file, fileList, type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | onError1(err, file, fileList,type) { |
| | | onError1(err, file, fileList, type) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$refs.upload1.clearFiles() |
| | | }, |
| | |
| | | } |
| | | }, |
| | | download(row) { |
| | | let url = this.javaApi+'/word/' + row.urlS ? row.urlS : row.url; |
| | | this.$download.saveAs(url, row.fileName); |
| | | 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) { |
| | |
| | | // å®¡æ ¸æé® |
| | | handleIssued(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | 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/','') |
| | | fileName = fileName.replace('/word/', '') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | |
| | | // æ¥çæ¥å |
| | | viewIssued(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | 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/','') |
| | | fileName = fileName.replace('/word/', '') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.upLoad = true |
| | | sendBackTask({id: row.id}).then(res => { |
| | | sendBackTask({ id: row.id }).then(res => { |
| | | this.upLoad = false |
| | | this.$message.success('éåæåï¼') |
| | | this.refreshTable('page') |
| | |
| | | }); |
| | | }, |
| | | // å®¡æ ¸éè¿ |
| | | submitAddApprover () { |
| | | submitAddApprover() { |
| | | if (!this.approver) { |
| | | this.$message.error('è¯·éæ©å®¡æ¹äºº') |
| | | return |
| | |
| | | this.loadingIssued = false; |
| | | }) |
| | | }, |
| | | closeAddApproverDia () { |
| | | closeAddApproverDia() { |
| | | this.addApproverDia = false |
| | | this.approver = '' |
| | | }, |
| | |
| | | // æ¹åæé® |
| | | handleApprove(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | 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/','') |
| | | fileName = fileName.replace('/word/', '') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | |
| | | this.approveVisible = false; |
| | | }) |
| | | }, |
| | | handle (row) { |
| | | handle(row) { |
| | | this.getAuthorizedPerson() |
| | | this.currentInfo = row; |
| | | this.addVerifyDia = true |
| | |
| | | this.$message.error('æäº¤å¤±è´¥') |
| | | }) |
| | | }, |
| | | closeAddVerifyDia () { |
| | | closeAddVerifyDia() { |
| | | this.addVerifyDia = false |
| | | this.verifyUser = '' |
| | | }, |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-upload v-if="type === 'add'" ref="upload" :action="action2" :on-change="beforeUpload" :on-error="onError" |
| | | :on-remove="handleRemoveFile" :on-success="getUnpassUrl" :headers="headers" :file-list="unPassFilesList"> |
| | | :on-remove="handleRemoveFile" :on-success="getUnpassUrl" :headers="uploadHeader" :file-list="unPassFilesList"> |
| | | <el-button size="small" type="primary" style="text-align: left">éä»¶ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | <div v-if="type !== 'add'"> |
| | |
| | | |
| | | <script> |
| | | import { getInsOrder, getUnqualifiedHandler, downFile, addUnqualifiedHandler } from '@/api/business/unpass.js' |
| | | import {mapGetters} from "vuex"; |
| | | export default { |
| | | name: "unPassDialog", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | orderId: this.orderId |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.unPassForm.headline = `No.0005-ä¸å¤©è£
å¤çµçº¿-å¤è´åä¸åæ ¼åé¦è¯å®¡åçº æ£é¢é²æµç¨(æ£å¼ç)-${JSON.parse(localStorage.getItem("user")).name}-${new Date().toISOString().substring(0, 10)}` // æ é¢ |
| | | this.unPassForm.inventoryQuantityId = res.data.insOrderTemplate.inventoryQuantityId // åææid |
| | | this.unPassForm.headline = `No.0005-ä¸å¤©è£
å¤çµçº¿-å¤è´åä¸åæ ¼åé¦è¯å®¡åçº æ£é¢é²æµç¨(æ£å¼ç)-${this.nickName}-${new Date().toISOString().substring(0, 10)}` // æ é¢ |
| | | this.unPassForm.feedbackTime = new Date().toISOString().substring(0, 10) // æ¥æ£æ¶é´ |
| | | this.unPassForm.feedbackUser = this.nickName // åé¦äºº |
| | | this.unPassForm.insOrderId = res.data.insOrder.id // 订åid |
| | | this.unPassForm.supplierName = res.data.insOrderTemplate.supplierName // ä¾åºååç§° |
| | | this.unPassForm.materialName = res.data.insOrder.sampleType // ç©æåç§° |
| | | this.unPassForm.specsModels = res.data.insOrder.partDetail // è§æ ¼åå· |
| | | this.unPassForm.inventoryQuantityId = res.data.insOrderTemplate.inventoryQuantityId // åææid |
| | | this.unPassForm.supplierName = res.data.insOrderTemplate.supplierName // ä¾åºååç§° |
| | | this.unPassForm.productionBatch = res.data.insOrderTemplate.updateBatchNo // çäº§æ¹æ¬¡ |
| | | this.unPassForm.cargoQuantity = res.data.insOrderTemplate.qtyArrived + res.data.insOrderTemplate.buyUnitMeas // å°è´§æ°é |
| | | this.unPassForm.specsModels = res.data.insOrder.partDetail // è§æ ¼åå· |
| | | this.unPassForm.inspectTime = res.data.insOrderTemplate.sendTime.substring(0, 10) // æ¥æ£æ¶é´ |
| | | this.unPassForm.feedbackTime = new Date().toISOString().substring(0, 10) // æ¥æ£æ¶é´ |
| | | this.unPassForm.feedbackUser = JSON.parse(localStorage.getItem("user")).name // åé¦äºº |
| | | } |
| | | }) |
| | | } else { |
| | |
| | | }, |
| | | }, |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'token': sessionStorage.getItem('token') |
| | | } |
| | | }, |
| | | ...mapGetters(["nickName"]), |
| | | action2() { |
| | | return this.javaApi + '/unqualifiedHandler/uploadFileByUnqualified' |
| | | } |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;"> |
| | | <div v-for="(item,index) in workDay" :key="index" class="left-2-item"> |
| | | <div class="left-2 card" v-loading="workLoading" style="overflow: hidden;"> |
| | | <div class="left-2-item" v-for="(item,index) in workDay" :key="index"> |
| | | <div class="left-item-title"> |
| | | <span style="font-size: 18px;">{{ item }}</span> |
| | | <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span> |
| | | <el-tag style="margin-top: 6px;" size="small">{{workList[index].length}} æ¡</el-tag> |
| | | </div> |
| | | <div class="left-item-body"> |
| | | <div v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" class="body-item"> |
| | | <div class="body-item" v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" @click="goAddList(m)"> |
| | | <div> |
| | | <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span> |
| | | <div style="display: flex"> |
| | | <span class="body-item-name">{{ m.name }}</span> |
| | | <span v-if="m.insState == 0" class="body-item-insState" style="background-color: #909399;font-size: 12px;">å¾
æ£éª</span> |
| | | <span v-if="m.insState == 1" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">æ£éªä¸</span> |
| | | <span v-if="m.insState == 2" class="body-item-insState" style="background-color: #67C23A;font-size: 12px;">å·²æ£éª</span> |
| | | <span v-if="m.insState == 3" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">å¾
夿 ¸</span> |
| | | <span v-if="m.insState == 4" class="body-item-insState" style="background-color: #F56C6C;font-size: 9px;">夿 ¸æªéè¿</span> |
| | | <span v-if="m.insState == 5" class="body-item-insState" style="background-color: #67C23A;font-size: 10px;">夿 ¸éè¿</span> |
| | | <span style="font-size: 12px;margin-bottom: 8px;">{{ m.text }}</span> |
| | | <div class="tags" style="display: flex;align-items: end;flex-wrap: wrap;margin-bottom: 8px;"> |
| | | <el-tooltip class="item" effect="dark" :content="item" placement="top" v-for="(item,index) in m.sample?m.sample.split(','):[]" |
| | | :key="index"> |
| | | <el-tag |
| | | :color="m.type==0?'#70A090':(m.type==1?'#EBD476':'#FF3838')" |
| | | effect="dark" size="mini" style="margin: 2px;" class="single-line-ellipsis"> |
| | | {{ item }} |
| | | </el-tag> |
| | | </el-tooltip> |
| | | </div> |
| | | <span style="display: inline-block;height: 22px;width: 70px;border-radius: 10px;line-height: 22px;text-align: center;background: #C0C4CC;color: #fff;font-size: 14px;">{{ m.name }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;">--> |
| | | <!-- <div v-for="(item,index) in workDay" :key="index" class="left-2-item">--> |
| | | <!-- <div class="left-item-title">--> |
| | | <!-- <span style="font-size: 18px;">{{ item }}</span>--> |
| | | <!-- <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="left-item-body">--> |
| | | <!-- <div v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" class="body-item">--> |
| | | <!-- <div>--> |
| | | <!-- <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span>--> |
| | | <!-- <div style="display: flex">--> |
| | | <!-- <span class="body-item-name">{{ m.name }}</span>--> |
| | | <!-- <span v-if="m.insState == 0" class="body-item-insState" style="background-color: #909399;font-size: 12px;">å¾
æ£éª</span>--> |
| | | <!-- <span v-if="m.insState == 1" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">æ£éªä¸</span>--> |
| | | <!-- <span v-if="m.insState == 2" class="body-item-insState" style="background-color: #67C23A;font-size: 12px;">å·²æ£éª</span>--> |
| | | <!-- <span v-if="m.insState == 3" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">å¾
夿 ¸</span>--> |
| | | <!-- <span v-if="m.insState == 4" class="body-item-insState" style="background-color: #F56C6C;font-size: 9px;">夿 ¸æªéè¿</span>--> |
| | | <!-- <span v-if="m.insState == 5" class="body-item-insState" style="background-color: #67C23A;font-size: 10px;">夿 ¸éè¿</span>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </el-col> |
| | | <el-col :lg="10" :md="10" :sm="24" :xl="10" :xs="24"> |
| | | <div class="right-1 card"> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-0.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{getNumberFourTypes.totalNumberOfMessages}}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">æçå¾
å</p> |
| | | </div> |
| | | </div> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-1.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfReadMessages }}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">å·²åäºå®</p> |
| | | </div> |
| | | </div> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-2.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{ getNumberFourTypes.remainingToDo }}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">å©ä½å¾
å</p> |
| | | </div> |
| | | </div> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-3.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfMessagesInThePastSevenDays }}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">è¿æäºå®</p> |
| | | </div> |
| | | <div class="right-2 card"> |
| | | <span style="color: #333333;font-size: 16px;">å·¥æ¶ç»è®¡</span> |
| | | <div> |
| | | <el-select v-model="sonLaboratory" placeholder="ç«ç¹" size="mini" style="width: 100px;" @change="initEchart"> |
| | | <el-option |
| | | v-for="item in dict.type.sys_sub_lab" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-radio-group v-model="type" size="mini"> |
| | | <el-radio-button label="å¨" ></el-radio-button> |
| | | <el-radio-button label="æ"></el-radio-button> |
| | | <el-radio-button label="å¹´"></el-radio-button> |
| | | </el-radio-group> |
| | | <el-date-picker |
| | | v-model="time.week" |
| | | type="week" |
| | | format="yyyy 第 WW å¨" |
| | | placeholder="éæ©å¨" size="mini" v-if="type=='å¨'" @change="m=>changeTime(type,m)" style="width: 130px;"> |
| | | </el-date-picker> |
| | | <el-date-picker |
| | | v-model="time.month" |
| | | type="month" |
| | | placeholder="éæ©æ" size="mini" v-if="type=='æ'" @change="m=>changeTime(type,m)" style="width: 130px;"> |
| | | </el-date-picker> |
| | | <el-date-picker |
| | | v-model="time.year" |
| | | type="year" |
| | | placeholder="鿩年" size="mini" v-if="type=='年'" @change="m=>changeTime(type,m)" style="width: 130px;"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="right-2 card"> |
| | | <div class="right-2-title"> |
| | | <span style="color: #333333;font-size: 16px;">æçæ¥ç¨</span> |
| | | <span style="cursor: pointer;font-size: 12px; |
| | | color: #3A7BFA;" @click="dialogVisible=true">æ·»å æçæ¥ç¨</span> |
| | | </div> |
| | | <div class="right-2-body"> |
| | | <div class="calendar" style="width: 49%;"> |
| | | <div class="control"> |
| | | <el-button class="prevm" icon="el-icon-arrow-left" @click="prevMonth(calendarValue)"></el-button> |
| | | <span>{{ calendarValue.getFullYear()+'å¹´'+(calendarValue.getMonth() + 1)+'æ' }}</span> |
| | | <el-button class="nextm" icon="el-icon-arrow-right" @click="nextMonth(calendarValue)"></el-button> |
| | | <div class="right-2-body"> |
| | | <el-row :gutter="10" style="width: 100%;height: 80px;"> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> |
| | | <div style="height: 100%;background: url(~@/assets/images/bg1.png) no-repeat;background-size: 100% 100%;padding: 12px 0;box-sizing: border-box;"> |
| | | <p style="text-align: center;font-size: 14px;color: #606266;line-height: 20px;margin-bottom: 4px;">æ»å·¥æ¶(å°æ¶)</p> |
| | | <p style="text-align: center;font-family: DIN Alternate, DIN Alternate;font-weight: 700;font-size: 30px;color: #3D3D3D;line-height: 35px;">{{chartData0.total}}</p> |
| | | </div> |
| | | <el-calendar v-model="calendarValue"> |
| | | <template |
| | | slot="dateCell" |
| | | slot-scope="{date, data}"> |
| | | <span> |
| | | {{ data.day.split('-').slice(2)+'' }} |
| | | </span> |
| | | <!-- <el-badge v-if="data.isSelected" is-dot class="item"> |
| | | </el-badge> --> |
| | | </template> |
| | | </el-calendar> |
| | | </div> |
| | | <div v-loading="scheduleLoading" class="right-2-list" style="width: 49%;height: 286px;"> |
| | | <div v-for="(m,i) in listScheduleByMe" :key="i" class="list2-item"> |
| | | <span>{{ m.scheduleTimes }}</span> |
| | | <el-tooltip :content="m.text" effect="dark" placement="top" style="margin-left: 10px;"> |
| | | <p class="ellipsis-multiline" >{{ m.text }}</p> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> |
| | | <div style="height: 100%;background: url(~@/assets/images/bg2.png) no-repeat;background-size: 100% 100%;padding: 12px 0;box-sizing: border-box;"> |
| | | <p style="text-align: center;font-size: 14px;color: #606266;line-height: 20px;margin-bottom: 4px;">æ£éªå(个)</p> |
| | | <p style="text-align: center;font-family: DIN Alternate, DIN Alternate;font-weight: 700;font-size: 30px;color: #3D3D3D;line-height: 35px;">{{chartData0.personNum}}</p> |
| | | </div> |
| | | <span v-if="listScheduleByMe.length==0" style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;">ææ æ°æ®</span> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <echart-module :id="'index-1'" :config="chartConfig0" :datas="chartData0" style="height: 250px;width: 100%;"></echart-module> |
| | | </div> |
| | | <div class="right-3 card" style="overflow: hidden;"> |
| | | <div class="right-3-tab"> |
| | | <!-- <div :class="{active:currentIndex==4}" class="tab-item" style="cursor: pointer;" @click="currentIndex=4">é¢è¦æé</div>--> |
| | | <div :class="{active:currentIndex==5}" class="tab-item" style="cursor: pointer;" @click="currentIndexChange">CNASéç¥éå</div> |
| | | <div :class="{active:currentIndex==5}" class="tab-item">å¾
åäºé¡¹</div> |
| | | </div> |
| | | <div v-loading="listLoading" class="right-3-list"> |
| | | <scroll-pagination v-if="list.length>0||listLoading" :finishLoding="finishLoding" :list="list" @load="getList"> |
| | | <div v-for="(m,i) in list" :key="i" class="list3-item"> |
| | | <div class="list3-item-title"> |
| | | <!-- <img alt="" src="../../../static/img/index-tip.svg">--> |
| | | <p style="color: #FF7756">{{ m.theme }}</p> |
| | | </div> |
| | | <div class="list3-item-info"> |
| | | <p class="ellipsis-multiline" style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;" @click="goNoticeDetail(m)"> |
| | | <!-- ç¼å·<span style="color:#3A7BFA;"> SB20240101-001 </span>ç设å¤å°äº2023-09-09 11:11:11è¿æ --> |
| | | {{ m.content }} |
| | | </p> |
| | | <p>{{ m.createTime }}</p> |
| | |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog :visible.sync="dialogVisible" title="æ¥ç¨æ·»å " width="400px"> |
| | | <div class="body" style="max-height: 60vh;"> |
| | | <el-row> |
| | | <el-col :span="22" class="search_thing"> |
| | | <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | v-model="query.time" |
| | | 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> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="22" class="search_thing"> |
| | | <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>å
容ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="query.text" :rows="2" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleCancel">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="submit">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {getYearAndMonthAndDays} from '@/utils/date.js' |
| | | import ScrollPagination from '@/components/index/scroll-paging.vue' |
| | | import {calendarWorkByWeek, manHourByPerson, manHourByStation} from "@/api/index/report"; |
| | | import EchartModule from '@/components/echarts/echart.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | ScrollPagination, |
| | | EchartModule |
| | | }, |
| | | dicts: ['sys_sub_lab'], |
| | | data() { |
| | | return { |
| | | user: {}, |
| | | now: null, |
| | | calendarValue: new Date(), |
| | | currentIndex:5, |
| | | dialogVisible:false, |
| | | query:{ |
| | | time:'', |
| | | text:'' |
| | | }, |
| | | loading:false, |
| | | workLoading:false, |
| | | workList:[], |
| | | workDay:[], |
| | |
| | | finishLoding: false, // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | timer:null, |
| | | keyMap:{}, |
| | | getNumberFourTypes: {}, |
| | | sonLaboratory:null, |
| | | chartData0:{ |
| | | total:0, |
| | | personNum:0, |
| | | data:[] |
| | | }, |
| | | chartConfig0:{ |
| | | height: '', |
| | | isLoading:false, |
| | | type:'pie0' |
| | | }, |
| | | type:'æ', |
| | | time:{ |
| | | week:'', |
| | | month:'', |
| | | year:'', |
| | | }, |
| | | } |
| | | }, |
| | | watch:{ |
| | | calendarValue(val){ |
| | | this.getScheduleByMe() |
| | | }, |
| | | currentIndex(){ |
| | | this.keyMap = {} |
| | | this.currentPage = 1; |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.user = JSON.parse(localStorage.getItem('user')) |
| | | // this.user = JSON.parse(localStorage.getItem('user')) |
| | | this.nowTime() |
| | | setInterval(() => { |
| | | this.nowTime() |
| | |
| | | this.keyMap = {} |
| | | this.list = []; |
| | | this.getList(); |
| | | this.getScheduleByMe() |
| | | this.timer&&clearInterval(this.timer) |
| | | this.timer = setInterval(() => { |
| | | this.init(); |
| | |
| | | this.keyMap = {} |
| | | this.list = []; |
| | | this.getList(); |
| | | this.getScheduleByMe() |
| | | },1000*60*10) |
| | | this.getNumberFourTypesFun() |
| | | }, |
| | | methods: { |
| | | // è·³è½¬é¡µé¢ |
| | | goAddList() { |
| | | |
| | | }, |
| | | changeState (val) { |
| | | if (val == 0) { |
| | | return 'å¾
æ£éª' |
| | | } |
| | | }, |
| | | currentIndexChange () { |
| | | this.keyMap = {} |
| | | this.currentPage = 1; |
| | | this.list = []; |
| | | this.getList(); |
| | | }, |
| | | getNumberFourTypesFun() { |
| | | this.$axios.get(this.$api.informationNotification.getNumberFourTypesMessagesHomePage).then(res => { |
| | | this.getNumberFourTypes = res.data |
| | | }) |
| | | }, |
| | | getList(){ |
| | | const key = `_${this.currentPage}` |
| | |
| | | if(this.list.length==0){ |
| | | this.finishLoding = false; |
| | | } |
| | | this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+'&messageType='+this.currentIndex).then(res => { |
| | | if(res.code === 201){ |
| | | return |
| | | } |
| | | let list = res.data.records; |
| | | this.total = res.data.total; |
| | | if(list.length==0){ |
| | | this.finishLoding = true; |
| | | }else{ |
| | | if(list.length<this.pageSize){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.list = this.list.concat(list) |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++; |
| | | } |
| | | this.listLoading = false |
| | | }) |
| | | // this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+'&messageType='+this.currentIndex).then(res => { |
| | | // this.listLoading = false |
| | | // let list = res.data.records; |
| | | // this.total = res.data.total; |
| | | // if(list.length==0){ |
| | | // this.finishLoding = true; |
| | | // }else{ |
| | | // if(list.length<this.pageSize){ |
| | | // this.finishLoding = true; |
| | | // } |
| | | // this.list = this.list.concat(list) |
| | | // if(this.total==this.list.length){ |
| | | // this.finishLoding = true; |
| | | // } |
| | | // this.currentPage++; |
| | | // } |
| | | // }).catch(err => { |
| | | // this.listLoading = false |
| | | // }) |
| | | }, |
| | | nowTime() { |
| | | var date = new Date(); |
| | |
| | | } |
| | | this.now = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s; |
| | | }, |
| | | nextMonth(value) { |
| | | let year = this.calendarValue.getFullYear();// å½å年份 |
| | | let month = this.calendarValue.getMonth() + 1;// å½åæä»½ |
| | | let day = this.calendarValue.getDate();// å½åå¤©æ° |
| | | let nextyear = year; |
| | | let nextmonth = parseInt(month) + 1; |
| | | // 夿ä¸ä¸ææ¯å¦ä¼è¿å
¥ä¸ä¸å¹´ |
| | | if (nextmonth === 13) { |
| | | nextyear = parseInt(year) + 1; |
| | | nextmonth = 1; |
| | | } |
| | | // 计ç®ä¸ä¸å¹´ä¸ä¸ä¸ªææå¤å°å¤© |
| | | let nextday = new Date(nextyear, nextmonth, 0); |
| | | let nextdays = nextday.getDate(); |
| | | if (day > nextdays) { |
| | | day = nextdays; |
| | | if (day < 10) { |
| | | day = '0' + day; |
| | | } |
| | | } |
| | | if (nextmonth < 10) { |
| | | nextmonth = '0' + nextmonth; |
| | | } |
| | | let nexttime = nextyear + '-' + nextmonth + '-' + day; |
| | | |
| | | // å°å¾å°çå¹´ææ¥æ ¼å¼è½¬æ¢ä¸ºæ åæ¶é´ï¼ä¸é¥¿äºä¹æ¶é´æ ¼å¼ç¸åæè½èå¨ |
| | | this.calendarValue = new Date(nexttime); |
| | | }, |
| | | prevMonth(time) { |
| | | let year = this.calendarValue.getFullYear();// å½å年份 |
| | | let month = this.calendarValue.getMonth() + 1;// å½åæä»½ |
| | | let day = this.calendarValue.getDate();// å½åå¤©æ° |
| | | let prevyear = year; |
| | | let prevmonth = parseInt(month) - 1; |
| | | // 夿ä¸ä¸ææ¯å¦ä¼è¿å
¥ä¸ä¸å¹´ |
| | | if (prevmonth === 0) { |
| | | prevyear = parseInt(year) - 1; |
| | | prevmonth = 12; |
| | | } |
| | | // 计ç®ä¸ä¸å¹´ä¸ä¸ä¸ªææå¤å°å¤© |
| | | let prevday = new Date(prevyear, prevmonth, 0); |
| | | let prevdays = prevday.getDate(); |
| | | if (day > prevdays) { |
| | | day = prevdays; |
| | | if (day < 10) { |
| | | day = '0' + day; |
| | | } |
| | | } |
| | | if (prevmonth < 10) { |
| | | prevmonth = '0' + prevmonth; |
| | | } |
| | | let prevtime = prevyear + '-' + prevmonth + '-' + day; |
| | | |
| | | // å°å¾å°çå¹´ææ¥æ ¼å¼è½¬æ¢ä¸ºæ åæ¶é´ï¼ä¸é¥¿äºä¹æ¶é´æ ¼å¼ç¸åæè½èå¨ |
| | | this.calendarValue = new Date(prevtime); |
| | | }, |
| | | handleCancel(){ |
| | | this.dialogVisible = false; |
| | | this.query = { |
| | | time:'', |
| | | text:'' |
| | | } |
| | | }, |
| | | submit(){ |
| | | if(!this.query.time){ |
| | | this.$message.error('æ¶é´æªå¡«å') |
| | | return |
| | | } |
| | | if(!this.query.text){ |
| | | this.$message.error('å
容æªå¡«å') |
| | | return |
| | | } |
| | | this.loading = true; |
| | | this.$axios.post(this.$api.report.addSchedule, this.query).then(res => { |
| | | this.loading = false; |
| | | if (res.code == 201) { |
| | | this.$message.error('æä½å¤±è´¥') |
| | | return |
| | | } |
| | | this.$message.success('ä¿åæå') |
| | | this.handleCancel() |
| | | this.getScheduleByMe() |
| | | }) |
| | | }, |
| | | // è·åæ¥åä»»å¡å¾ |
| | | init(){ |
| | | this.workLoading = true; |
| | | this.$axios.get(this.$api.report.calendarWorkByWeek).then(res => { |
| | | if (res.code == 201) return |
| | | calendarWorkByWeek().then(res => { |
| | | this.workLoading = false; |
| | | this.workList = []; |
| | | for(let i=0;i<7;i++){ |
| | |
| | | let arr = m.split('-') |
| | | return arr[2] |
| | | }) |
| | | }).catch(err=>{ |
| | | this.workLoading = false; |
| | | }) |
| | | }, |
| | | getWeekdaysForNextWeek() { |
| | |
| | | }) |
| | | return weekdays; |
| | | }, |
| | | getScheduleByMe(){ |
| | | this.scheduleLoading = true; |
| | | this.$axios.post(this.$api.report.ScheduleByMe, { |
| | | date:getYearAndMonthAndDays(this.calendarValue) |
| | | }).then(res => { |
| | | this.loading = false; |
| | | this.scheduleLoading = false; |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.listScheduleByMe = res.data.map(m=>{ |
| | | if(m.scheduleTime){ |
| | | let time = m.scheduleTime.split(' ')[1].split(':') |
| | | m.scheduleTimes = time[0] + ':' + time[1] |
| | | }else{ |
| | | m.scheduleTimes = '' |
| | | } |
| | | return m |
| | | }) |
| | | }) |
| | | }, |
| | | goNoticeDetail(row){ |
| | | this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => { |
| | | row.num = Math.random(100); |
| | |
| | | },29); |
| | | }) |
| | | }, |
| | | changeTime(type,m){ |
| | | if(m){ |
| | | switch(type){ |
| | | case 'å¨': |
| | | this.startTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() - 24 * 60 * 60 * 1000)) |
| | | this.endTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() + 24 * 60 * 60 * 1000 * 5)) |
| | | break; |
| | | case 'æ': |
| | | const year = new Date(this.time.month).getFullYear(); |
| | | const month = new Date(this.time.month).getMonth(); |
| | | const day = new Date(year, month + 1, 0).getDate(); // |
| | | // è®¾ç½®èµ·å§æ¥æåç»ææ¥æ |
| | | this.startTime = `${year}-${month + 1}-01` |
| | | this.endTime = `${year}-${month + 1}-${day}` // ææ« |
| | | break; |
| | | case 'å¹´': |
| | | const year0 = new Date(this.time.year).getFullYear(); |
| | | this.startTime = `${year0}-01-01`; // å¹´å |
| | | this.endTime = `${year0}-12-31`; // å¹´æ« |
| | | break; |
| | | } |
| | | }else{ |
| | | const year = new Date().getFullYear(); |
| | | const month = new Date().getMonth(); |
| | | |
| | | // è®¾ç½®èµ·å§æ¥æåç»ææ¥æ |
| | | this.startTime = new Date(year, month, 1).toISOString().slice(0, 10); // æå |
| | | this.endTime = new Date(year, month + 1, 0).toISOString().slice(0, 10); // ææ« |
| | | this.time.month = new Date() |
| | | } |
| | | this.initEchart() |
| | | }, |
| | | async initEchart(){ |
| | | this.chartConfig0.isLoading = false |
| | | const params = { |
| | | startTime: this.startTime, |
| | | endTime: this.endTime, |
| | | sonLaboratory: this.sonLaboratory, |
| | | } |
| | | let res0 = await manHourByStation(params) |
| | | if (res0.code == 500) return |
| | | this.chartData0.total = res0.message |
| | | let res1 = await manHourByPerson(params) |
| | | if (res1.code == 500) return |
| | | this.chartData0.personNum = 0 |
| | | this.chartData0.data = [] |
| | | if(res1.data){ |
| | | for(let m in res1.data){ |
| | | this.chartData0.personNum ++ |
| | | let obj = { |
| | | name:m, |
| | | value:res1.data[m], |
| | | penl:this.chartData0.total>0?((res1.data[m]/this.chartData0.total)*100).toFixed(2):0 |
| | | } |
| | | this.chartData0.data.push(obj) |
| | | } |
| | | } |
| | | this.chartConfig0.isLoading = true |
| | | }, |
| | | }, |
| | | deactivated(){ |
| | | this.timer&&clearInterval(this.timer) |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | <style scoped> |
| | | .index { |
| | | width: 100%; |
| | | height: calc(100% - 50px); |
| | | overflow-y: auto; |
| | | padding: 20px 10px 10px; |
| | | background: rgb(245, 247, 251); |
| | | padding: 14px; |
| | | background: #F5F7FB; |
| | | } |
| | | |
| | | .left-1 { |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .right-1-item .mun{ |
| | |
| | | .right-2-body{ |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | display: flex; |
| | | align-items: flex-start; |
| | | justify-content: space-between; |
| | | /* display: flex; |
| | | align-items: start; |
| | | justify-content: space-between; */ |
| | | } |
| | | >>>.el-calendar__header { |
| | | display: none; |
| | |
| | | font-size: 14px; |
| | | } |
| | | .right-3-tab{ |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 20px 0 0 20px; |
| | | margin-bottom: 16px; |
| | | } |
| | | .tab-item{ |
| | | width: 50%; |
| | | box-sizing: border-box; |
| | | text-align: center; |
| | | padding: 14px 0; |
| | | font-size: 20px; |
| | | background: #F5F7FB; |
| | | color: #333333; |
| | | } |
| | | .tab-item.active{ |
| | | background: #fff; |
| | | color: #FF3838; |
| | | padding-left: 16px; |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | color: #3D3D3D; |
| | | line-height: 25px; |
| | | text-align: left; |
| | | font-style: normal; |
| | | text-transform: none; |
| | | } |
| | | .right-3-list{ |
| | | padding: 0 12px 8px; |
| | |
| | | } |
| | | .list3-item-title{ |
| | | display: flex; |
| | | align-items: flex-start; |
| | | align-items: start; |
| | | margin-bottom: 10px; |
| | | } |
| | | .list3-item-info{ |
| | |
| | | border-radius: 16px; |
| | | overflow: hidden; |
| | | margin-bottom: 8px; |
| | | cursor: pointer; |
| | | } |
| | | .body-item.color0{ |
| | | background: #70A090; |
| | |
| | | background: #3A7BFA !important; |
| | | color: #fff !important; |
| | | } |
| | | .body-item-name { |
| | | display: inline-block; |
| | | height: 22px;width: 60px; |
| | | border-radius: 10px; |
| | | line-height: 22px; |
| | | text-align: center; |
| | | background: #C0C4CC; |
| | | color: #fff; |
| | | font-size: 14px |
| | | } |
| | | .body-item-insState { |
| | | margin-left: 2px; |
| | | display: inline-block; |
| | | height: 22px;width: 60px; |
| | | border-radius: 10px; |
| | | line-height: 22px; |
| | | text-align: center; |
| | | color: #fff; |
| | | font-size: 14px |
| | | >>>.el-tag--dark{ |
| | | border: 0; |
| | | } |
| | | </style> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="mini" |
| | | :disabled="multiple" |
| | | @click="handleDelete" |
| | | v-hasPermi="['monitor:logininfor:remove']" |
| | | >å é¤</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="mini" |
| | | @click="handleClean" |
| | | v-hasPermi="['monitor:logininfor:remove']" |
| | | >æ¸
空</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-unlock" |
| | | size="mini" |
| | | :disabled="single" |
| | | @click="handleUnlock" |
| | | v-hasPermi="['monitor:logininfor:unlock']" |
| | | >è§£é</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | @click="handleExport" |
| | | v-hasPermi="['monitor:logininfor:export']" |
| | | >导åº</el-button> |
| | | </el-col> |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | <!-- <el-row :gutter="10" class="mb8">--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="danger"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-delete"--> |
| | | <!-- size="mini"--> |
| | | <!-- :disabled="multiple"--> |
| | | <!-- @click="handleDelete"--> |
| | | <!-- v-hasPermi="['monitor:logininfor:remove']"--> |
| | | <!-- >å é¤</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="danger"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-delete"--> |
| | | <!-- size="mini"--> |
| | | <!-- @click="handleClean"--> |
| | | <!-- v-hasPermi="['monitor:logininfor:remove']"--> |
| | | <!-- >æ¸
空</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="primary"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-unlock"--> |
| | | <!-- size="mini"--> |
| | | <!-- :disabled="single"--> |
| | | <!-- @click="handleUnlock"--> |
| | | <!-- v-hasPermi="['monitor:logininfor:unlock']"--> |
| | | <!-- >è§£é</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="warning"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-download"--> |
| | | <!-- size="mini"--> |
| | | <!-- @click="handleExport"--> |
| | | <!-- v-hasPermi="['monitor:logininfor:export']"--> |
| | | <!-- >导åº</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>--> |
| | | <!-- </el-row>--> |
| | | |
| | | <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange"> |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="mini" |
| | | :disabled="multiple" |
| | | @click="handleDelete" |
| | | v-hasPermi="['monitor:operlog:remove']" |
| | | >å é¤</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="mini" |
| | | @click="handleClean" |
| | | v-hasPermi="['monitor:operlog:remove']" |
| | | >æ¸
空</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | @click="handleExport" |
| | | v-hasPermi="['monitor:operlog:export']" |
| | | >导åº</el-button> |
| | | </el-col> |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | <!-- <el-row :gutter="10" class="mb8">--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="danger"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-delete"--> |
| | | <!-- size="mini"--> |
| | | <!-- :disabled="multiple"--> |
| | | <!-- @click="handleDelete"--> |
| | | <!-- v-hasPermi="['monitor:operlog:remove']"--> |
| | | <!-- >å é¤</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="danger"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-delete"--> |
| | | <!-- size="mini"--> |
| | | <!-- @click="handleClean"--> |
| | | <!-- v-hasPermi="['monitor:operlog:remove']"--> |
| | | <!-- >æ¸
空</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="warning"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-download"--> |
| | | <!-- size="mini"--> |
| | | <!-- @click="handleExport"--> |
| | | <!-- v-hasPermi="['monitor:operlog:export']"--> |
| | | <!-- >导åº</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>--> |
| | | <!-- </el-row>--> |
| | | |
| | | <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange"> |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | |
| | | }) |
| | | .then(() => { |
| | | deleteAuxiliaryWorkingHours({ id: row.id }).then((res) => { |
| | | if (res.code == 201) return; |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | console.log('res',res) |
| | | if (res.code == 200){ |
| | | this.$message.success("å 餿å"); |
| | | this.refresh(); |
| | | } |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | |
| | | <div class="search"> |
| | | <div class="search_thing" style="width: 200px"> |
| | | <div class="search_label">ææï¼</div> |
| | | <el-select |
| | | v-model="entity.weekDay" |
| | | clearable |
| | | placeholder="å
¨é¨" |
| | | size="small" |
| | | @change="refreshTable()" |
| | | > |
| | | <el-option |
| | | v-for="item in weekList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="entity.weekDay" clearable placeholder="å
¨é¨" size="small" @change="refreshTable()"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="search_thing" style="width: 390px"> |
| | | <div class="search_label" style="width: 90px">æ¶é´èå´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | v-model="entity.dateTime" |
| | | clearable |
| | | end-placeholder="ç»ææ¥æ" |
| | | format="yyyy-MM-dd" |
| | | range-separator="è³" |
| | | size="small" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | style="width: 100%" |
| | | type="daterange" |
| | | value-format="yyyy-MM-dd" |
| | | @change="refreshTable()" |
| | | > |
| | | <el-date-picker v-model="entity.dateTime" clearable end-placeholder="ç»ææ¥æ" format="yyyy-MM-dd" |
| | | range-separator="è³" size="small" start-placeholder="å¼å§æ¥æ" style="width: 100%" type="daterange" |
| | | value-format="yyyy-MM-dd" @change="refreshTable()"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <!-- 以ä¸è¿ä¸¤ä¸ªä¸ºç»é¿è§è²ç¹æç --> |
| | | <div class="search_thing" style="width: 200px"> |
| | | <div class="search_label">ååï¼</div> |
| | | <el-input |
| | | v-model="entity.name" |
| | | clearable |
| | | placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | <el-input v-model="entity.name" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | <div |
| | | v-if="currentTable == 'ValueTable1'" |
| | | class="search_thing" |
| | | style="width: 250px" |
| | | > |
| | | <div v-if="currentTable == 'ValueTable1'" class="search_thing" style="width: 250px"> |
| | | <div class="search_label" style="width: 120px">æ ·åç¼å·ï¼</div> |
| | | <el-input |
| | | v-model="entity.sample" |
| | | clearable |
| | | placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | <el-input v-model="entity.sample" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | <div |
| | | v-if="currentTable == 'ValueTable0'" |
| | | class="search_thing" |
| | | style="width: 200px" |
| | | > |
| | | <div v-if="currentTable == 'ValueTable0'" class="search_thing" style="width: 200px"> |
| | | <div class="search_label">ç¶æï¼</div> |
| | | <el-select |
| | | v-model="entity.state" |
| | | placeholder="å
¨é¨" |
| | | size="small" |
| | | @change="refreshTable()" |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in stateList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="entity.state" placeholder="å
¨é¨" size="small" @change="refreshTable()" clearable> |
| | | <el-option v-for="item in stateList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px; width: 100px"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()" |
| | | >æ¥ è¯¢</el-button |
| | | > |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div |
| | | style="display: flex; align-items: center; justify-content: space-between" |
| | | > |
| | | <div style="display: flex; align-items: center; justify-content: space-between"> |
| | | <el-radio-group :key="'111'" v-model="currentTable" size="small"> |
| | | <el-radio-button label="ValueTable0"> è¾
å©å·¥æ¶ </el-radio-button> |
| | | <el-radio-button label="ValueTable1"> 产éå·¥æ¶ </el-radio-button> |
| | | </el-radio-group> |
| | | <div style="display: flex; align-items: center"> |
| | | <p style="font-size: 14px; margin-right: 30px"> |
| | | æ»å·¥æ¶æ±æ»ï¼<span |
| | | v-if="totalInfo" |
| | | style="font-size: 16px; color: #3a7bfa" |
| | | >{{ |
| | | totalInfo["产éå·¥æ¶æ±æ»"] + totalInfo["è¾
å©å·¥æ¶æ±æ»"] |
| | | ? Number( |
| | | totalInfo["产éå·¥æ¶æ±æ»"] + totalInfo["è¾
å©å·¥æ¶æ±æ»"] |
| | | ).tofixed(4) |
| | | : 0 |
| | | }}</span |
| | | > 产éå·¥æ¶æ±æ»ï¼<span |
| | | v-if="totalInfo" |
| | | style="font-size: 16px; color: #3a7bfa" |
| | | >{{ |
| | | æ»å·¥æ¶æ±æ»ï¼<span v-if="totalInfo" style="font-size: 16px; color: #3a7bfa">{{ |
| | | totalInfo["产éå·¥æ¶æ±æ»"] + totalInfo["è¾
å©å·¥æ¶æ±æ»"] |
| | | ? Number( |
| | | totalInfo["产éå·¥æ¶æ±æ»"] + totalInfo["è¾
å©å·¥æ¶æ±æ»"] |
| | | ).tofixed(4) |
| | | : 0 |
| | | }}</span> 产éå·¥æ¶æ±æ»ï¼<span v-if="totalInfo" style="font-size: 16px; color: #3a7bfa">{{ |
| | | totalInfo["产éå·¥æ¶æ±æ»"] |
| | | ? Number(totalInfo["产éå·¥æ¶æ±æ»"]).tofixed(4) |
| | | : 0 |
| | | }}</span |
| | | > è¾
å©å·¥æ¶æ±æ»ï¼<span |
| | | v-if="totalInfo" |
| | | style="font-size: 16px; color: #3a7bfa" |
| | | >{{ |
| | | }}</span> è¾
å©å·¥æ¶æ±æ»ï¼<span v-if="totalInfo" style="font-size: 16px; color: #3a7bfa">{{ |
| | | totalInfo["è¾
å©å·¥æ¶æ±æ»"] |
| | | ? Number(totalInfo["è¾
å©å·¥æ¶æ±æ»"]).tofixed(4) |
| | | : 0 |
| | | }}</span |
| | | > |
| | | }}</span> |
| | | </p> |
| | | <el-button |
| | | v-show=" |
| | | currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " |
| | | size="small" |
| | | type="primary" |
| | | @click="openAdd" |
| | | >å½å
¥æ°æ®</el-button |
| | | > |
| | | <el-button |
| | | v-if="down && currentTable === 'ValueTable0'" |
| | | :loading="outLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="handleOut" |
| | | >导 åº</el-button |
| | | > |
| | | <el-button |
| | | v-if="down && currentTable === 'ValueTable1'" |
| | | :loading="outLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="handleOut1" |
| | | >导 åº</el-button |
| | | > |
| | | <el-button |
| | | v-show=" |
| | | currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " |
| | | size="small" |
| | | type="primary" |
| | | @click="openBatchCheck(1)" |
| | | >æ¹éæ¹å</el-button |
| | | > |
| | | <el-button v-show="currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " size="small" type="primary" @click="openAdd">å½å
¥æ°æ®</el-button> |
| | | <el-button v-if="down && currentTable === 'ValueTable0'" :loading="outLoading" size="small" type="primary" |
| | | @click="handleOut">导 åº</el-button> |
| | | <el-button v-if="down && currentTable === 'ValueTable1'" :loading="outLoading" size="small" type="primary" |
| | | @click="handleOut1">导 åº</el-button> |
| | | <el-button v-show="currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " size="small" type="primary" @click="openBatchCheck(1)">æ¹éæ¹å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :page="page" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" |
| | | :isSelection="true" |
| | | v-if="currentTable == 'ValueTable0'" |
| | | @pagination="pagination" |
| | | :handleSelectionChange="handleSelectionChange" |
| | | ></lims-table> |
| | | <lims-table |
| | | :tableData="tableData0" |
| | | :column="column0" |
| | | :page="page0" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" |
| | | v-if="currentTable == 'ValueTable1'" |
| | | @pagination="pagination0" |
| | | ></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" :isSelection="true" v-if="currentTable == 'ValueTable0'" |
| | | @pagination="pagination" :handleSelectionChange="handleSelectionChange"></lims-table> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" v-if="currentTable == 'ValueTable1'" @pagination="pagination0"></lims-table> |
| | | </div> |
| | | <el-dialog |
| | | :before-close="handleClose" |
| | | :title="formData.id ? 'ç¼è¾' : 'å½å
¥æ°æ®'" |
| | | :visible.sync="addVisible" |
| | | width="600px" |
| | | > |
| | | <el-dialog :before-close="handleClose" :title="formData.id ? 'ç¼è¾' : 'å½å
¥æ°æ®'" :visible.sync="addVisible" |
| | | width="600px"> |
| | | <el-row style="display: flex; justify-content: space-around"> |
| | | <el-col :span="12"> |
| | | <el-form :model="formData" label-width="90px"> |
| | | <el-form-item label="å½å
¥æ¶é´:"> |
| | | <el-radio-group v-model="formData.dateTime" size="small"> |
| | | <el-radio :label="getYearAndMonthAndDays() + ' 00:00:00'" |
| | | >ä»å¤©</el-radio |
| | | > |
| | | <el-radio |
| | | :label=" |
| | | getYearAndMonthAndDays( |
| | | new Date(new Date().getTime() - 24 * 60 * 60 * 1000) |
| | | ) + ' 00:00:00' |
| | | " |
| | | >æ¨å¤©</el-radio |
| | | > |
| | | <el-radio :label="getYearAndMonthAndDays() + ' 00:00:00'">ä»å¤©</el-radio> |
| | | <el-radio :label="getYearAndMonthAndDays( |
| | | new Date(new Date().getTime() - 24 * 60 * 60 * 1000) |
| | | ) + ' 00:00:00' |
| | | ">æ¨å¤©</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="年份:"> |
| | | <el-input |
| | | v-model="formData.year" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.year" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="卿¬¡:"> |
| | | <el-input |
| | | v-model="formData.week" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.week" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ææ:"> |
| | | <!-- <el-input v-model="formData.weekDay" size="small" disabled></el-input> --> |
| | | <el-select |
| | | v-model="formData.weekDay" |
| | | disabled |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in weekList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="formData.weekDay" disabled placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="çæ¬¡:"> |
| | | <el-input |
| | | v-model="formData.shift" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.shift" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form :model="formData" label-width="90px"> |
| | | <el-form-item label="ç¼å·:" required> |
| | | <el-input |
| | | v-model="formData.number" |
| | | size="small" |
| | | @blur="getInfoByCode" |
| | | ></el-input> |
| | | <el-input v-model="formData.number" size="small" @blur="getInfoByCode"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ°é:" required> |
| | | <el-input v-model="formData.amount" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¸åå·¥æ¶:"> |
| | | <el-input |
| | | v-model="formData.approvedWorkingHour" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.approvedWorkingHour" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¾
å©å·¥æ¶:"> |
| | | <el-input |
| | | v-model="formData.nonproductiveTime" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.nonproductiveTime" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¾
å©é¡¹ç®:"> |
| | | <el-input |
| | | v-model="formData.auxiliaryProject" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.auxiliaryProject" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form :model="formData" label-width="90px"> |
| | | <el-form-item label="è¾
å©è¯´æ:"> |
| | | <el-input |
| | | v-model="formData.remarks" |
| | | :rows="3" |
| | | size="small" |
| | | type="textarea" |
| | | ></el-input> |
| | | <el-input v-model="formData.remarks" :rows="3" size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose">å æ¶</el-button> |
| | | <el-button :loading="addLoad" type="primary" @click="submitAdd" |
| | | >ç¡® å®</el-button |
| | | > |
| | | <el-button :loading="addLoad" type="primary" @click="submitAdd">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | <el-col :span="12"> |
| | | <el-form :model="formData0" label-width="90px"> |
| | | <el-form-item label="年份:"> |
| | | <el-input |
| | | v-model="formData0.year" |
| | | :disabled="title == 'æ¹å'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.year" :disabled="title == 'æ¹å'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="卿¬¡:"> |
| | | <el-input |
| | | v-model="formData0.week" |
| | | :disabled="title == 'æ¹å'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.week" :disabled="title == 'æ¹å'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ææ:"> |
| | | <el-select |
| | | v-model="formData0.weekDay" |
| | | :disabled="title == 'æ¹å'" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in weekList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="formData0.weekDay" :disabled="title == 'æ¹å'" placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å§å:"> |
| | | <el-input |
| | | v-model="formData0.name" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.name" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="çæ¬¡:"> |
| | | <el-select |
| | | v-model="formData0.shift" |
| | | :disabled="title == 'æ¹å'" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in classType" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="formData0.shift" :disabled="title == 'æ¹å'" placeholder="è¯·éæ©" size="small"> |
| | | <el-option v-for="item in classType" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="夿 ¸è¯´æ:"> |
| | | <el-input |
| | | v-model="formData0.reviewerRemark" |
| | | :rows="3" |
| | | size="small" |
| | | type="textarea" |
| | | ></el-input> |
| | | <el-input v-model="formData0.reviewerRemark" :rows="3" size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form :model="formData0" label-width="90px"> |
| | | <el-form-item label="ç¼å·:" required> |
| | | <el-input |
| | | v-model="formData0.number" |
| | | :disabled="title == 'æ¹å'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.number" :disabled="title == 'æ¹å'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ°é:" required> |
| | | <el-input |
| | | v-model="formData0.amount" |
| | | :disabled="title == 'æ¹å'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.amount" :disabled="title == 'æ¹å'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="夿 ¸æ°é:" required> |
| | | <el-input |
| | | v-model="formData0.reviewerNumber" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.reviewerNumber" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¸åå·¥æ¶:"> |
| | | <el-input |
| | | v-model="formData0.approvedWorkingHour" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.approvedWorkingHour" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="夿 ¸å·¥æ¶:"> |
| | | <el-input |
| | | v-model="formData0.reviewerNonproductiveTime" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.reviewerNonproductiveTime" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¾
å©é¡¹ç®:"> |
| | | <el-input |
| | | v-model="formData0.auxiliaryProject" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.auxiliaryProject" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button :loading="checkLoadN" @click="submitCheck(0)" |
| | | >䏿¹å</el-button |
| | | > |
| | | <el-button |
| | | :loading="checkLoadY" |
| | | type="primary" |
| | | @click="submitCheck(1)" |
| | | >æ¹ å</el-button |
| | | > |
| | | <el-button :loading="checkLoadN" @click="submitCheck(0)">䏿¹å</el-button> |
| | | <el-button :loading="checkLoadY" type="primary" @click="submitCheck(1)">æ¹ å</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :before-close="closeBatchCheckDialog" |
| | | :title="batchCheckTitle" |
| | | :visible.sync="batchCheckDialog" |
| | | width="30%" |
| | | > |
| | | <el-dialog :before-close="closeBatchCheckDialog" :title="batchCheckTitle" :visible.sync="batchCheckDialog" |
| | | width="30%"> |
| | | <span>{{ batchCheckDialogMessage }}</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="batchCheck(0)">䏿¹å</el-button> |
| | |
| | | this.refreshTable("page"); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | .catch(() => { }); |
| | | }, |
| | | handleClose() { |
| | | this.addVisible = false; |
| | |
| | | exportAssistantHours({ entity: entity }) |
| | | .then((res) => { |
| | | this.outLoading = false; |
| | | this.$message.success("å¯¼åºæå"); |
| | | const blob = new Blob([res]); |
| | | this.$download.saveAs(blob, "è¾
å©å·¥æ¶ä¿¡æ¯å¯¼åº.xlsx"); |
| | | }) |
| | |
| | | exportOutputHours({ entity: entity }) |
| | | .then((res) => { |
| | | this.outLoading = false; |
| | | this.$message.success("å¯¼åºæå"); |
| | | const blob = new Blob([res]); |
| | | this.$download.saveAs(blob, "产éå·¥æ¶ä¿¡æ¯å¯¼åº.xlsx"); |
| | | }) |
| | |
| | | padding-top: 0; |
| | | /* scrollbar-width: none; */ |
| | | } |
| | | |
| | | /* .work-time-management::-webkit-scrollbar { |
| | | display: none; |
| | | } */ |
| | |
| | | height: calc(100% - 30px); |
| | | overflow-y: scroll; |
| | | scrollbar-width: none; |
| | | " @node-click="handleNodeClick" @node-expand="nodeOpen" @node-collapse="nodeClose" @node-drop="handleDrop"> |
| | | " @node-click="handleNodeClick" |
| | | @node-drop="handleDrop"> |
| | | <div slot-scope="{ node, data }" class="custom-tree-node"> |
| | | <el-row style="width: 100%"> |
| | | <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left"> |
| | |
| | | } |
| | | } |
| | | }, |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | // è°ç¨treeè¿æ»¤æ¹æ³ 䏿è±è¿æ»¤ |
| | | filterNode (value, data, node) { |
| | | if (!value) {ãããã//å¦ææ°æ®ä¸ºç©ºï¼åè¿åtrue,æ¾ç¤ºææçæ°æ®é¡¹ |
| | | return true |
| | | } |
| | | // æ¥è¯¢å表æ¯å¦æå¹é
æ°æ®ï¼å°å¼å°åï¼å¹é
è±ææ°æ® |
| | | let val = value.toLowerCase() |
| | | return this.chooseNode(val, data, node) // è°ç¨è¿æ»¤äºå±æ¹æ³ |
| | | }, |
| | | // è¿æ»¤ç¶èç¹ / åèç¹ (妿è¾å
¥çåæ°æ¯ç¶èç¹ä¸è½å¹é
ï¼åè¿å该èç¹ä»¥åå
¶ä¸çææåèç¹ï¼å¦æåæ°æ¯åèç¹ï¼åè¿å该èç¹çç¶èç¹ãnameæ¯ä¸æå符ï¼enNameæ¯è±æå符. |
| | | chooseNode (value, data, node) { |
| | | if (data.label.indexOf(value) !== -1) { |
| | | return true |
| | | } |
| | | const level = node.level |
| | | // å¦æä¼ å
¥çèç¹æ¬èº«å°±æ¯ä¸çº§èç¹å°±ä¸ç¨æ ¡éªäº |
| | | if (level === 1) { |
| | | return false |
| | | } |
| | | // å
åå½åèç¹çç¶èç¹ |
| | | let parentData = node.parent |
| | | // éåå½åèç¹çç¶èç¹ |
| | | let index = 0 |
| | | while (index < level - 1) { |
| | | // 妿å¹é
å°ç´æ¥è¿åï¼æ¤å¤name弿¯ä¸æå符ï¼enNameæ¯è±æå符ã夿å¹é
ä¸è±æè¿æ»¤ |
| | | if (parentData.data.label.indexOf(value) !== -1) { |
| | | return true |
| | | } |
| | | // å¦åçè¯åå¾ä¸ä¸å±åå¹é
|
| | | parentData = parentData.parent |
| | | index++ |
| | | } |
| | | // 没å¹é
å°è¿åfalse |
| | | return false |
| | | }, |
| | | |
| | | searchFilter() { |
| | | this.$refs.tree.filter(this.search); |
| | | }, |
| | |
| | | item.children && this.deleteStandard(item.children, label); |
| | | } |
| | | }); |
| | | }, |
| | | nodeOpen(data, node, el) { |
| | | $($(el.$el).find(".node_i")[0]).attr( |
| | | "class", |
| | | "node_i el-icon-folder-opened" |
| | | ); |
| | | }, |
| | | nodeClose(data, node, el) { |
| | | $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder"); |
| | | }, |
| | | selectEnumByCategoryForFactory() { |
| | | this.getConfigKey("sys_factory").then((response) => { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div v-if="!isShowDataCom"> |
| | | <el-form ref="entity" size="small" :inline="true"> |
| | | <el-form-item style="width: 16%;"> |
| | | <el-date-picker |
| | | v-model="datePicker" |
| | | end-placeholder="ç»ææ¥æ" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | range-separator="è³" |
| | | size="small" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | style="width: 100%;" |
| | | type="daterange" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååç§°" prop="sampleName"> |
| | | <el-input v-model="sampleName" clearable placeholder="请è¾å
¥æ ·ååç§°" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åå·" prop="modelName"> |
| | | <el-input v-model="modelName" clearable placeholder="请è¾å
¥åå·" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾åºååç§°" prop="supplierName"> |
| | | <el-input v-model="supplierName" clearable placeholder="请è¾å
¥ä¾åºååç§°" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªé¡¹åç§°" prop="supplierName"> |
| | | <el-select v-model="itemNames" :loading="selectLoading" clearable multiple placeholder="è¯·éæ©" |
| | | size="small" style="width: 90%;" @focus="getItemList"> |
| | | <el-option |
| | | v-for="item in itemNamesList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="small" type="primary" @click="changeData">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div v-if="!isShowDataCom" style="overflow-y: auto;height: calc(100% - 70px);overflow-x: hidden"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div class="inspection-card"> |
| | | <div style="display: flex;align-items: center;margin-bottom: 10px;justify-content: space-between;"> |
| | | <div>忿项æ£åæå表</div> |
| | | <el-button size="small" type="primary" @click="openShowData">æ¥çæ°æ®åæ</el-button> |
| | | </div> |
| | | <lims-table :tableData="editTableData" :column="editColumn" |
| | | height="400" key="tableData" :isSelection="true" |
| | | :handleSelectionChange="handleSelectionChange" |
| | | :tableLoading="editLoading"></lims-table> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6" style="padding-top: 14px"> |
| | | <div style="display: flex;margin-left: 10px;align-items: center"> |
| | | <span style="width: 100px">åç»ç±»åï¼</span> |
| | | <el-select v-model="groupType" clearable placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 90%;" @change="getBarInfo"> |
| | | <el-option |
| | | v-for="item in groupTypeList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div class="inspection-card"> |
| | | <div class="title">æ£éªé¡¹æ°æ®å¯¹æ¯</div> |
| | | <Echarts ref="chart" |
| | | :chartStyle="chartStyle" |
| | | :dataset="dataset" |
| | | :grid="grid" |
| | | :options="echartsOptions" |
| | | :series="echartsSeries" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis" |
| | | :yAxis="yAxis" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div class="inspection-card"> |
| | | <div class="title">忿项æ£åæ ¼ç</div> |
| | | <Echarts ref="chart" |
| | | :chartStyle="chartStyle" |
| | | :dataset="dataset1" |
| | | :grid="grid" |
| | | :options="echartsOptions1" |
| | | :series="echartsSeries1" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis" |
| | | :yAxis="yAxis1" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-dialog :visible.sync="dataDialogVisible" title="æ°æ®æ¥ç" width="80%"> |
| | | <div v-if="dataDialogVisible" style="height: 70vh;overflow-y: auto;"> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | @pagination="pagination" key="tableData" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <DataComparison v-if="isShowDataCom" :comparisonData="comparisonData" |
| | | :selectRow="selectRow" @goBack="goBack"></DataComparison> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Echarts from "@/components/echarts/echarts.vue"; |
| | | import DataComparison from '@/components/echarts/DataComparison.vue' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | getRawItemNames, |
| | | getRawProductAnalysis, |
| | | getRawProductAnalysisAllList, |
| | | getRawProductAnalysisRawPass, getRawSupplierCompare |
| | | } from "@/api/statisticalCharts/dataAnalysis"; |
| | | import {selectSampleAndProductByOrderId} from "@/api/business/rawMaterialOrder"; |
| | | |
| | | export default { |
| | | name: "ItemInspectionAnalysis", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, Echarts, DataComparison}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | selectChangeRows: [], // éä¸çæ°æ® |
| | | groupTypeList: [ |
| | | {label: 'æ ·å', value: '0'}, |
| | | {label: 'åä¸åå®¶, åä¸åå·, ä¸åæ¹æ¬¡', value: '1'}, |
| | | {label: 'åä¸åå·, ä¸ååå®¶', value: '2'}, |
| | | ], |
| | | itemNames: [], // æ£éªé¡¹åç§° |
| | | itemNamesList: [], |
| | | selectLoading: false, |
| | | datePicker: [], // æ¶é´ |
| | | groupType: '', // åç» |
| | | beginDate: '', |
| | | endDate: '', |
| | | sampleName: '', // æ ·ååç§° |
| | | modelName: '', // åå· |
| | | supplierName: '', // ä¾åºååç§° |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | echartsOptions: {}, |
| | | echartsOptions1: {}, |
| | | dataset: { |
| | | dimensions: [], |
| | | source: [], |
| | | }, |
| | | dataset1: { |
| | | dimensions: [], |
| | | source: [], |
| | | }, |
| | | xAxis: [{ type: 'category' }], |
| | | yAxis: [{}], |
| | | yAxis1: [{ |
| | | axisLabel: { |
| | | formatter: '{value} %' |
| | | } |
| | | }], |
| | | echartsSeries: [], |
| | | echartsSeries1: [], |
| | | tooltip: {}, |
| | | chartStyle: { |
| | | width: '100%', |
| | | height: '96%' // 设置å¾è¡¨å®¹å¨çé«åº¦ |
| | | }, |
| | | editColumn: [ |
| | | { |
| | | label: 'æ¹å·', |
| | | minWidth: '120px', |
| | | prop: 'updateBatchNo' |
| | | }, { |
| | | label: 'å§æç¼å·', |
| | | minWidth: '120px', |
| | | prop: 'entrustCode' |
| | | }, { |
| | | label: 'é¶ä»¶å·', |
| | | minWidth: '120px', |
| | | prop: 'partNo' |
| | | }, { |
| | | label: 'é¶ä»¶æè¿°', |
| | | minWidth: '120px', |
| | | prop: 'partDesc' |
| | | }, { |
| | | label: 'ä¾åºååç§°', |
| | | minWidth: '120px', |
| | | prop: 'supplierName', |
| | | }, { |
| | | dataType: 'tag', |
| | | label: 'æ£éªç¶æ', |
| | | prop: 'inspectStatus', |
| | | minWidth: '120px', |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | | return 'æ£éªä¸' |
| | | } else if (params == 1) { |
| | | return 'åæ ¼' |
| | | } else if (params == 2) { |
| | | return 'ä¸åæ ¼' |
| | | } else if (params == 3) { |
| | | return 'æªä¸å' |
| | | } else if (params == 4) { |
| | | return 'è®©æ¥æ¾è¡' |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1 || params == 4) { |
| | | return 'success' |
| | | } else if (params == 3) { |
| | | return 'warning' |
| | | } else if (params == 0 || params == 2) { |
| | | return 'danger' |
| | | } |
| | | } |
| | | }, { |
| | | label: 'æ ·ååç§°', |
| | | minWidth: '300px', |
| | | prop: 'sampleName' |
| | | }, { |
| | | label: 'æ ·ååå·', |
| | | minWidth: '300px', |
| | | prop: 'sampleModel' |
| | | },{ |
| | | label: 'ä¸åæ¶é´', |
| | | minWidth: '120px', |
| | | prop: 'sendTime' |
| | | },{ |
| | | label: 'æµè¾¾çéè´æ°é', |
| | | minWidth: '130px', |
| | | prop: 'qtyArrived' |
| | | },{ |
| | | label: 'åä½', |
| | | minWidth: '120px', |
| | | prop: 'buyUnitMeas' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | width: '80px', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | | { |
| | | name: 'æ°æ®æ¥ç', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDataLook(row); |
| | | }, |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | editTableData: [], |
| | | editLoading: false, |
| | | dataDialogVisible: false, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | {label: 'æ ·åç¼å·', prop: 'sampleCode'}, |
| | | {label: 'æ ·ååç§°', prop: 'sample'}, |
| | | {label: 'æ£éªé¡¹åç±»', prop: 'inspectionItemClass'}, |
| | | {label: 'æ£éªé¡¹', prop: 'inspectionItem'}, |
| | | {label: 'æ£éªå项', prop: 'inspectionItemSubclass'}, |
| | | {label: 'åä½', prop: 'unit'}, |
| | | {label: 'æ ·ååå·', prop: 'model'}, |
| | | {label: 'æ¡ä»¶', prop: 'radius'}, |
| | | {label: 'çµç¼æ è¯', prop: 'cableTag'}, |
| | | {label: 'è¯éªè¦æ±', prop: 'tell'}, |
| | | {label: 'æ£éªç»æ', prop: 'lastValue'}, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'ç»æå¤å®', |
| | | prop: 'insResult', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'åæ ¼' |
| | | } else if (params == 0) { |
| | | return 'ä¸åæ ¼' |
| | | } else if (params == 3) { |
| | | return 'ä¸å¤å®' |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else if (params == 0) { |
| | | return 'danger' |
| | | } else if (params == 3) { |
| | | return '' |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | }, |
| | | currentRow: {}, |
| | | isShowDataCom: false, |
| | | comparisonData: {}, |
| | | selectRow: {}, |
| | | } |
| | | }, |
| | | mounted() { |
| | | // this.getBar() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | getBarInfo (val) { |
| | | if (val === '1') { |
| | | if (!this.modelName || !this.supplierName) { |
| | | this.$message.warning('åå·æä¾åºåä¸è½ä¸ºç©º') |
| | | this.groupType = '' |
| | | return |
| | | } |
| | | } else if (val === '2') { |
| | | if (!this.modelName) { |
| | | this.$message.warning('åå·ä¸è½ä¸ºç©º') |
| | | this.groupType = '' |
| | | return |
| | | } |
| | | if (this.supplierName) { |
| | | this.$message.warning('ä¸å¯éä¾åºååç§°') |
| | | this.groupType = '' |
| | | return |
| | | } |
| | | } |
| | | this.getBar() |
| | | this.getBar1() |
| | | }, |
| | | // è·ååæ ¼çå¾è¡¨æ°æ® |
| | | getBar() { |
| | | this.echartsSeries = [] |
| | | const params = { |
| | | beginDate: this.beginDate, |
| | | endDate: this.endDate, |
| | | sampleName: this.sampleName, |
| | | modelName: this.modelName, |
| | | supplierName: this.supplierName, |
| | | itemNames: this.itemNames, |
| | | groupType: this.groupType, |
| | | } |
| | | getRawProductAnalysis(params).then((res) => { |
| | | if (res.data === null) { |
| | | this.$message.warning('ææ æ°æ®') |
| | | return |
| | | } |
| | | for (let i = 0; i < res.data.itemNames.length; i++) { |
| | | this.echartsSeries.push({type: 'line', label: { |
| | | show: true, |
| | | position: 'top' |
| | | },}) |
| | | } |
| | | this.dataset.dimensions = this.HaveJson(res.data.itemNames) |
| | | this.dataset.dimensions.unshift('product') |
| | | this.dataset.source = this.HaveJson(res.data.productList) |
| | | |
| | | }) |
| | | }, |
| | | getBar1() { |
| | | this.echartsSeries1 = [] |
| | | const params = { |
| | | beginDate: this.beginDate, |
| | | endDate: this.endDate, |
| | | sampleName: this.sampleName, |
| | | modelName: this.modelName, |
| | | supplierName: this.supplierName, |
| | | itemNames: this.itemNames, |
| | | groupType: this.groupType, |
| | | } |
| | | getRawProductAnalysisRawPass(params).then((res) => { |
| | | if (res.data === null) { |
| | | this.$message.warning('ææ æ°æ®') |
| | | return |
| | | } |
| | | for (let i = 0; i < res.data.itemNames.length; i++) { |
| | | this.echartsSeries1.push({type: 'line',tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + '%'; |
| | | } |
| | | },label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: (params) => params.value[params.dimensionNames[params.encode.y[0]]] + '%' |
| | | },}) |
| | | } |
| | | this.dataset1.dimensions = this.HaveJson(res.data.itemNames) |
| | | this.dataset1.dimensions.unshift('product') |
| | | this.dataset1.source = this.HaveJson(res.data.productList) |
| | | |
| | | }) |
| | | }, |
| | | // æ°æ®æ¥ç |
| | | handleDataLook(row) { |
| | | this.dataDialogVisible = true; |
| | | this.currentRow = row |
| | | this.refreshTable(row) |
| | | }, |
| | | // æ¥è¯¢åè° |
| | | refreshTable(row) { |
| | | selectSampleAndProductByOrderId({id: row.id}).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) { |
| | | this.page.size = page.limit |
| | | this.refreshTable(this.currentRow) |
| | | }, |
| | | changeData () { |
| | | if (this.datePicker !== null && this.datePicker.length > 0) { |
| | | this.beginDate = this.datePicker[0] + ' 00:00:00' |
| | | this.endDate = this.datePicker[1] + ' 23:59:59' |
| | | } else { |
| | | this.beginDate = '' |
| | | this.endDate = '' |
| | | } |
| | | this.getBar() |
| | | this.getBar1() |
| | | this.getTableData() |
| | | }, |
| | | getTableData () { |
| | | this.editLoading = true |
| | | const params = { |
| | | beginDate: this.beginDate, |
| | | endDate: this.endDate, |
| | | sampleName: this.sampleName, |
| | | modelName: this.modelName, |
| | | supplierName: this.supplierName, |
| | | itemNames: this.itemNames, |
| | | } |
| | | getRawProductAnalysisAllList(params).then(res => { |
| | | this.editLoading = false |
| | | this.editTableData = res.data |
| | | }).catch(() => { |
| | | this.editLoading = false |
| | | }) |
| | | }, |
| | | // è·åæ£éªé¡¹ä¸ææ¡ |
| | | getItemList () { |
| | | this.selectLoading = true |
| | | this.itemNamesList = [] |
| | | const params = { |
| | | beginDate: this.beginDate, |
| | | endDate: this.endDate, |
| | | sampleName: this.sampleName, |
| | | modelName: this.modelName, |
| | | supplierName: this.supplierName, |
| | | } |
| | | getRawItemNames(params).then((res) => { |
| | | this.selectLoading = false |
| | | res.data.map(val => { |
| | | const obj = Object.assign({ |
| | | label: val, |
| | | value: val, |
| | | }) |
| | | this.itemNamesList.push(obj) |
| | | }) |
| | | }).catch(() => { |
| | | this.selectLoading = false |
| | | }) |
| | | }, |
| | | goBack () { |
| | | this.isShowDataCom = false |
| | | }, |
| | | openShowData () { |
| | | if (this.selectChangeRows.length !== 5) { |
| | | this.$message.warning('è¯·éæ©5æ¡æ°æ®') |
| | | return |
| | | } |
| | | if (this.itemNames.length !== 1) { |
| | | this.$message.warning('åªè½éæ©1项æ£éªé¡¹åç§°') |
| | | return |
| | | } |
| | | let ids = [] |
| | | let itemNames = [] |
| | | this.selectChangeRows.forEach(item => { |
| | | ids.push(item.enterOrderId) |
| | | }) |
| | | this.itemNames.forEach(item => { |
| | | itemNames.push(item) |
| | | }) |
| | | const params = { |
| | | orderIds: ids, |
| | | itemNames: itemNames |
| | | } |
| | | getRawSupplierCompare(params).then(res => { |
| | | this.comparisonData = res.data |
| | | this.selectRow = params |
| | | this.isShowDataCom = true |
| | | }) |
| | | }, |
| | | handleSelectionChange (val) { |
| | | this.selectChangeRows = val |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .inspection-card{ |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | | <el-radio-group v-model="dateType" @change="changeDate"> |
| | | <el-radio-button label="1">æ¬å¨</el-radio-button> |
| | | <el-radio-button label="2">æ¬æ</el-radio-button> |
| | | <el-radio-button label="3">ä»å¹´</el-radio-button> |
| | | </el-radio-group> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form ref="entity" size="small" :inline="true"> |
| | | <el-form-item style="width: 20%;"> |
| | | <el-date-picker |
| | | v-model="datePicker" |
| | | end-placeholder="ç»ææ¥æ" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | range-separator="è³" |
| | | size="small" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | type="daterange" |
| | | style="width: 100%;" |
| | | value-format="yyyy-MM-dd" |
| | | @change="changeDatePicker"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ ·ååç§°" prop="sampleName"> |
| | | <el-input v-model="sampleName" clearable placeholder="请è¾å
¥æ ·ååç§°" size="small" @change="changeDate"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åå·" prop="modelName"> |
| | | <el-input v-model="modelName" clearable placeholder="请è¾å
¥åå·" size="small" @change="changeDate"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾åºååç§°" prop="supplierName"> |
| | | <el-input v-model="supplierName" clearable placeholder="请è¾å
¥ä¾åºååç§°" size="small" @change="changeDate"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <div class="pie-card"> |
| | | <div class="title">åææåæ ¼ç</div> |
| | | <span class="data">{{passRate}}</span> |
| | | <Echarts ref="chart" |
| | | :legend="pieLegend" |
| | | :series="materialPieSeries" |
| | | :tooltip="pieTooltip" |
| | | style="height: 36vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <div class="pie-card"> |
| | | <div class="title"><span style="color: #F56C6C">æ¬æ</span>æ£éªç±»åæ°é</div> |
| | | <Echarts ref="chart" |
| | | :chartStyle="chartStyle2" |
| | | :legend="pieLegend" |
| | | :series="materialPieSeries1" |
| | | :tooltip="pieTooltip" |
| | | style="height: 36vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <div class="pie-card"> |
| | | <div class="title">åææ<span style="color: #F56C6C">æ¬æ</span>ä¸<span style="color: #F56C6C">䏿</span>åæ ¼ç对æ¯</div> |
| | | <Echarts ref="chart" |
| | | :barColors="barColors2" |
| | | :chartStyle="chartStyle" |
| | | :grid="grid" |
| | | :legend="barLegend" |
| | | :series="barSeries" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis1" |
| | | :yAxis="yAxis1" |
| | | style="height: 36vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div class="inspection-card"> |
| | | <div class="title">åæ ¼ç</div> |
| | | <Echarts ref="chart" |
| | | :barColors="barColors" |
| | | :grid="grid" |
| | | :legend="legend" |
| | | :lineColors="lineColors" |
| | | :options="echartsOptions" |
| | | :series="echartsSeries" |
| | | :tooltip="tooltip" |
| | | :xAxis="xAxis" |
| | | :yAxis="yAxis" |
| | | style="height: 40vh;"></Echarts> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Echarts from "@/components/echarts/echarts.vue"; |
| | | import { |
| | | getOrderTypeCookie, |
| | | getRawPassRateByBarChart, |
| | | getRawPassRateByCake, |
| | | getRawUpMonth |
| | | } from "@/api/statisticalCharts/dataAnalysis"; |
| | | |
| | | export default { |
| | | name: "QualificationRateStatistics", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {Echarts}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | dateType: '1', |
| | | datePicker: [], |
| | | beginDate: '', |
| | | endDate: '', |
| | | sampleName: '', |
| | | modelName: '', |
| | | supplierName: '', |
| | | echartsOptions: { |
| | | title: { |
| | | text: '示ä¾å¾è¡¨', |
| | | left: 'center' |
| | | } |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | data: [], |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | } |
| | | } |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'æ»æ°', |
| | | min: 0, |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: 'åæ ¼ç', |
| | | min: 0, |
| | | max: 100, |
| | | axisLabel: { |
| | | formatter: '{value} %' |
| | | } |
| | | } |
| | | ], |
| | | echartsSeries: [ |
| | | { |
| | | name: 'æ»æ°', |
| | | type: 'bar', |
| | | data: [], |
| | | label: { |
| | | show: true, |
| | | position: 'top' |
| | | }, |
| | | }, |
| | | { |
| | | name: 'åæ ¼ç', |
| | | type: 'line', |
| | | smooth: true, |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + ' %'; |
| | | } |
| | | }, |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: function (value) { |
| | | return value.value + ' %'; |
| | | }, |
| | | distance: 14 |
| | | }, |
| | | yAxisIndex: 1, |
| | | data: [] |
| | | }, |
| | | ], |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | data: ['æ»æ°','åæ ¼ç'] |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | } |
| | | }, |
| | | lineColors: ['#409EFF'], |
| | | barColors: ['#E6A23C'], |
| | | barColors2: ['#adde8b'], |
| | | pieTooltip: { |
| | | trigger: 'item' |
| | | }, |
| | | pieLegend: { |
| | | orient: 'vertical', |
| | | right: 20, |
| | | top: 'middle', |
| | | }, |
| | | materialPieSeries: [ |
| | | { |
| | | name: 'Access From', |
| | | type: 'pie', |
| | | radius: ['40%', '70%'], |
| | | right: '22%', |
| | | avoidLabelOverlap: false, |
| | | itemStyle: { |
| | | borderRadius: 5, |
| | | borderColor: '#fff', |
| | | borderWidth: 2 |
| | | }, |
| | | label: { |
| | | alignTo: 'edge', |
| | | formatter: '{name|{b}}\n{time|{c}}', |
| | | edgeDistance: 10, |
| | | lineHeight: 15, |
| | | rich: { |
| | | time: { |
| | | fontSize: 10, |
| | | color: '#999' |
| | | } |
| | | }, |
| | | }, |
| | | labelLine: { |
| | | length: 20, |
| | | length2: 40, |
| | | }, |
| | | data: [ |
| | | { value: 0, name: 'ä¸åæ ¼æ°é' }, |
| | | { value: 0, name: 'åæ ¼æ°é' }, |
| | | ] |
| | | } |
| | | ], |
| | | materialPieSeries1: [ |
| | | { |
| | | name: 'Access From', |
| | | type: 'pie', |
| | | radius: ['40%', '70%'], |
| | | right: '22%', |
| | | avoidLabelOverlap: false, |
| | | itemStyle: { |
| | | borderRadius: 5, |
| | | borderColor: '#fff', |
| | | borderWidth: 2 |
| | | }, |
| | | label: { |
| | | alignTo: 'edge', |
| | | formatter: '{name|{b}}\n{time|{c}}', |
| | | edgeDistance: 10, |
| | | lineHeight: 15, |
| | | rich: { |
| | | time: { |
| | | fontSize: 10, |
| | | color: '#999' |
| | | } |
| | | }, |
| | | }, |
| | | labelLine: { |
| | | length: 20, |
| | | length2: 50, |
| | | }, |
| | | data: [ |
| | | { value: 0, name: 'å§ææ£éª' }, |
| | | { value: 0, name: 'è¿åæ£éª' }, |
| | | { value: 0, name: 'å£åº¦æ£éª' }, |
| | | { value: 0, name: 'æ½æ ·' }, |
| | | ] |
| | | } |
| | | ], |
| | | barLegend: {}, |
| | | chartStyle: { |
| | | width: '90%', |
| | | height: '100%', |
| | | }, |
| | | chartStyle2: { |
| | | width: '90%', |
| | | height: '80%', |
| | | }, |
| | | xAxis1: [ |
| | | { |
| | | type: 'value', |
| | | min: 0, |
| | | max: 100, |
| | | axisLabel: { |
| | | formatter: '{value} %' |
| | | } |
| | | } |
| | | ], |
| | | yAxis1: [ |
| | | { |
| | | type: 'category', |
| | | data: [] |
| | | } |
| | | ], |
| | | barSeries: [ |
| | | { |
| | | type: 'bar', |
| | | data: [], |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + ' %'; |
| | | } |
| | | }, |
| | | label: { |
| | | show: true, |
| | | formatter: (params) => Math.round(params.value * 100) / 100 + '%' |
| | | } |
| | | }, |
| | | ], |
| | | tableData: [], |
| | | passRate: '', |
| | | sum: '', |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getBar() |
| | | this.getRawPass() |
| | | this.getOrderType() |
| | | this.getPassRateCom() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // è·ååæ ¼çå¾è¡¨æ°æ® |
| | | getBar() { |
| | | const params = { |
| | | dateType: this.dateType, |
| | | beginDate: this.beginDate, |
| | | endDate: this.endDate, |
| | | sampleName: this.sampleName, |
| | | modelName: this.modelName, |
| | | supplierName: this.supplierName, |
| | | } |
| | | getRawPassRateByBarChart(params).then((res) => { |
| | | let lineData = [] |
| | | let barData = [] |
| | | let xAxis = [] |
| | | res.data.forEach(item => { |
| | | barData.push(item.sum) |
| | | lineData.push(item.passRate) |
| | | xAxis.push(item.searchTime) |
| | | }) |
| | | this.echartsSeries[0].data = barData |
| | | this.echartsSeries[1].data = lineData |
| | | this.yAxis[0].max = Math.ceil(Math.max.apply(null, barData) / 50) * 50 |
| | | this.yAxis[0].interval = this.yAxis[0].max / 5 |
| | | this.xAxis[0].data = xAxis |
| | | }) |
| | | }, |
| | | // è·ååææåæ ¼çå¾è¡¨æ°æ® |
| | | getRawPass() { |
| | | const params = { |
| | | dateType: this.dateType, |
| | | beginDate: this.beginDate, |
| | | endDate: this.endDate, |
| | | sampleName: this.sampleName, |
| | | modelName: this.modelName, |
| | | supplierName: this.supplierName, |
| | | } |
| | | getRawPassRateByCake(params).then((res) => { |
| | | this.materialPieSeries[0].data[0].value = res.data.unQualified |
| | | this.materialPieSeries[0].data[1].value = res.data.qualified |
| | | this.passRate = res.data.passRate + '%' |
| | | }) |
| | | }, |
| | | // è·åæ¬ææ£éªç±»åæ°é |
| | | getOrderType() { |
| | | getOrderTypeCookie().then((res) => { |
| | | if (res.code === 201) return |
| | | this.materialPieSeries1[0].data[0].value = res.data.customer // å§æ |
| | | this.materialPieSeries1[0].data[1].value = res.data.enter // è¿å |
| | | this.materialPieSeries1[0].data[2].value = res.data.quarterly // å£åº¦ |
| | | this.materialPieSeries1[0].data[3].value = res.data.spotCheck // æ½æ · |
| | | }) |
| | | }, |
| | | // æ¬æä¸ä¸æåæ ¼çå¯¹æ¯ |
| | | getPassRateCom() { |
| | | getRawUpMonth().then((res) => { |
| | | let month = [] |
| | | let barData = [] |
| | | res.data.forEach(item => { |
| | | month.push(item.month) |
| | | barData.push(item.passRate) |
| | | }) |
| | | this.yAxis1[0].data = month |
| | | this.barSeries[0].data = barData |
| | | }) |
| | | }, |
| | | changeDate () { |
| | | this.getBar() |
| | | this.getRawPass() |
| | | // this.getOrderType() |
| | | // this.getPassRateCom() |
| | | }, |
| | | changeDatePicker (val) { |
| | | if (val) { |
| | | this.beginDate = val[0] + ' 00:00:00' |
| | | this.endDate = val[1] + ' 23:59:59' |
| | | } else { |
| | | this.beginDate = '' |
| | | this.endDate = '' |
| | | } |
| | | this.getBar() |
| | | this.getRawPass() |
| | | // this.getOrderType() |
| | | // this.getPassRateCom() |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | padding: 10px 0 0 20px; |
| | | } |
| | | .table { |
| | | padding: 0 10px 10px; |
| | | } |
| | | .pie-card { |
| | | width: 100%; |
| | | background: #FFFFFF; |
| | | margin-top: 10px; |
| | | position: relative; |
| | | } |
| | | .data { |
| | | position: absolute; |
| | | font-size: 20px; |
| | | transform: translate(-50%); |
| | | left: 40%; |
| | | top: 42%; |
| | | z-index: 1; |
| | | } |
| | | .inspection-card{ |
| | | width: 100%; |
| | | background: #FFFFFF; |
| | | margin-top: 10px; |
| | | } |
| | | </style> |
| | |
| | | v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªå¯¹è±¡" prop="sample"> |
| | | <el-form-item label="æ£éªå¯¹è±¡" prop="specimenName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()"> |
| | | v-model="itemParameterForm.specimenName" @keyup.enter.native="refreshTable()"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | import EditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue"; |
| | | import testObjectEditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import { obtainItemParameterList } from '@/api/structural/laboratoryScope' |
| | | |
| | | export default { |
| | | components: {limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog}, |
| | |
| | | prop: 'laboratoryId', |
| | | minWidth: '130', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'è£
å¤çµç¼è¯éªå®¤' |
| | | } else if (params == 5) { |
| | | return 'é信产åå®éªå®¤' |
| | | } else if (params == 6) { |
| | | return 'çµå产åå®éªå®¤' |
| | | } else if (params == 8) { |
| | | return 'å¨è½äº§åå®éªå®¤' |
| | | } else { |
| | | return 'å°é¢çº¿ç¼å®éªå®¤' |
| | | let index = this.laboratoryList.findIndex(item => item.value == params) |
| | | if(index > -1) { |
| | | return this.laboratoryList[index].label |
| | | }else { |
| | | return null |
| | | } |
| | | // if (params == 1) { |
| | | // return 'è£
å¤çµç¼è¯éªå®¤' |
| | | // } else if (params == 5) { |
| | | // return 'é信产åå®éªå®¤' |
| | | // } else if (params == 6) { |
| | | // return 'çµå产åå®éªå®¤' |
| | | // } else if (params == 8) { |
| | | // return 'å¨è½äº§åå®éªå®¤' |
| | | // } else { |
| | | // return 'å°é¢çº¿ç¼å®éªå®¤' |
| | | // } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | |
| | | } else if (params == 8) { |
| | | return 'danger' |
| | | } else { |
| | | return '' |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | |
| | | itemParameterForm: { |
| | | inspectionItem: null, |
| | | inspectionItemSubclass: null, |
| | | sample: null |
| | | specimenName: null |
| | | }, |
| | | radio: 0, |
| | | productLoad: false, |
| | |
| | | currentSupplierDensityRow: {}, // éæ©é¶ä»¶ç»å®æ¬æ¡æ°æ®çä¿¡æ¯ |
| | | bindSupplierDensityDialog: false, |
| | | bindPartDialog: false, |
| | | type: null, // é¶ä»¶ç»å®çç±»å--0ï¼æ£éªå¯¹è±¡ï¼1ï¼äº§åç»´æ¤ |
| | | type: null, // é¶ä»¶ç»å®çç±»å--0ï¼æ£éªå¯¹è±¡ï¼1ï¼äº§åç»´æ¤, |
| | | laboratoryList:[] |
| | | } |
| | | }, |
| | | created() { |
| | | this.getItemParameterList() |
| | | this.refreshTable() |
| | | }, |
| | | computed: { |
| | |
| | | this.$refs.upload.clearFiles() |
| | | this.uploadDia = false |
| | | this.uploading = false |
| | | if (response.code === 201) { |
| | | this.$message.error(response.message) |
| | | if (response.code !== 200) { |
| | | this.$message.error(response.msg) |
| | | return |
| | | } |
| | | this.$message.success('ä¸ä¼ æå') |
| | |
| | | closeBindSupplierDensityDialog () { |
| | | this.bindSupplierDensityDialog = false |
| | | }, |
| | | getItemParameterList(){ |
| | | obtainItemParameterList().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.laboratoryName, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.laboratoryList = data |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!-- æ°å¢å®éªå®¤--> |
| | | <el-dialog :title="formTitle" :visible.sync="addDia" width="450px"> |
| | |
| | | }, |
| | | computed: { |
| | | action() { |
| | | return this.javaApi |
| | | return this.javaApi + '/deviceScope/uploadFile' |
| | | } |
| | | }, |
| | | data() { |
| | |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> |
| | | <el-form-item label="é¨é¨åç§°" prop="deptName"> |
| | | <el-input |
| | | v-model="queryParams.deptName" |
| | | placeholder="请è¾å
¥é¨é¨åç§°" |
| | | clearable |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | <el-input v-model="queryParams.deptName" 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-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="mini" |
| | | @click="handleAdd" |
| | | v-hasPermi="['system:dept:add']" |
| | | >æ°å¢</el-button> |
| | | <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" |
| | | v-hasPermi="['system:dept:add']">æ°å¢</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="info" |
| | | plain |
| | | icon="el-icon-sort" |
| | | size="mini" |
| | | @click="toggleExpandAll" |
| | | >å±å¼/æå </el-button> |
| | | <el-button type="info" plain icon="el-icon-sort" size="mini" @click="toggleExpandAll">å±å¼/æå </el-button> |
| | | </el-col> |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | |
| | | <el-table |
| | | v-if="refreshTable" |
| | | v-loading="loading" |
| | | :data="deptList" |
| | | row-key="deptId" |
| | | :default-expand-all="isExpandAll" |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}" |
| | | > |
| | | <el-table v-if="refreshTable" v-loading="loading" :data="deptList" row-key="deptId" |
| | | :default-expand-all="isExpandAll" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> |
| | | <el-table-column prop="deptName" label="é¨é¨åç§°" width="260"></el-table-column> |
| | | <el-table-column prop="orderNum" label="æåº" width="200"></el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ" width="100"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> |
| | | <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="å建æ¶é´" align="center" prop="createTime" width="200"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="æä½" align="center" class-name="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:dept:edit']" |
| | | >ä¿®æ¹</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-plus" |
| | | @click="handleAdd(scope.row)" |
| | | v-hasPermi="['system:dept:add']" |
| | | >æ°å¢</el-button> |
| | | <el-button |
| | | v-if="scope.row.parentId != 0" |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | @click="handleDelete(scope.row)" |
| | | v-hasPermi="['system:dept:remove']" |
| | | >å é¤</el-button> |
| | | <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" |
| | | v-hasPermi="['system:dept:edit']">ä¿®æ¹</el-button> |
| | | <el-button size="mini" type="text" icon="el-icon-plus" @click="handleAdd(scope.row)" |
| | | v-hasPermi="['system:dept:add']">æ°å¢</el-button> |
| | | <el-button v-if="scope.row.parentId != 0" size="mini" type="text" icon="el-icon-delete" |
| | | @click="handleDelete(scope.row)" v-hasPermi="['system:dept:remove']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <el-row> |
| | | <el-col :span="24" v-if="form.parentId !== 0"> |
| | | <el-form-item label="ä¸çº§é¨é¨" prop="parentId"> |
| | | <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="éæ©ä¸çº§é¨é¨" /> |
| | | <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" |
| | | placeholder="éæ©ä¸çº§é¨é¨" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="é¨é¨ç¶æ"> |
| | | <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> |
| | |
| | | this.title = "æ·»å é¨é¨"; |
| | | listDept().then(response => { |
| | | this.deptOptions = this.handleTree(response.data, "deptId"); |
| | | this.deptOptions = this.limitTreeDepth(this.deptOptions, 2) |
| | | }); |
| | | }, |
| | | /** å±å¼/æå æä½ */ |
| | |
| | | const noResultsOptions = { deptId: this.form.parentId, deptName: this.form.parentName, children: [] }; |
| | | this.deptOptions.push(noResultsOptions); |
| | | } |
| | | this.deptOptions = this.limitTreeDepth(this.deptOptions, 2) |
| | | }); |
| | | }); |
| | | }, |
| | | /** æäº¤æé® */ |
| | | submitForm: function() { |
| | | submitForm: function () { |
| | | this.$refs["form"].validate(valid => { |
| | | if (valid) { |
| | | if (this.form.deptId != undefined) { |
| | |
| | | }, |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | this.$modal.confirm('æ¯å¦ç¡®è®¤å é¤å称为"' + row.deptName + '"çæ°æ®é¡¹ï¼').then(function() { |
| | | this.$modal.confirm('æ¯å¦ç¡®è®¤å é¤å称为"' + row.deptName + '"çæ°æ®é¡¹ï¼').then(function () { |
| | | return delDept(row.deptId); |
| | | }).then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("å 餿å"); |
| | | }).catch(() => {}); |
| | | }).catch(() => { }); |
| | | }, |
| | | // éå½å½æ°ï¼ç¨äºéå¶æ çæ·±åº¦ |
| | | limitTreeDepth(options, maxDepth, currentDepth = 1) { |
| | | return options.map(option => { |
| | | const newOption = { ...option }; |
| | | if (currentDepth < maxDepth && option.children) { |
| | | // 妿å½å深度å°äºæå¤§æ·±åº¦ä¸åå¨åèç¹ï¼åéå½å¤çåèç¹ |
| | | newOption.children = this.limitTreeDepth(option.children, maxDepth, currentDepth + 1); |
| | | } else { |
| | | // å¦åç§»é¤åèç¹ |
| | | delete newOption.children; |
| | | } |
| | | return newOption; |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | |
| | | v-hasPermi="['system:dict:remove']" |
| | | >å é¤</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | @click="handleExport" |
| | | v-hasPermi="['system:dict:export']" |
| | | >导åº</el-button> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="warning"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-download"--> |
| | | <!-- size="mini"--> |
| | | <!-- @click="handleExport"--> |
| | | <!-- v-hasPermi="['system:dict:export']"--> |
| | | <!-- >导åº</el-button>--> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | |
| | | handleCheckedTreeConnect(value, type) { |
| | | if (type == 'menu') { |
| | | this.form.menuCheckStrictly = value ? true : false; |
| | | this.menuNodeAll = false |
| | | this.$refs.menu.setCheckedNodes([]); |
| | | } else if (type == 'dept') { |
| | | this.form.deptCheckStrictly = value ? true : false; |
| | | } |
| | |
| | | <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-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" |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å½å±é¨é¨" prop="deptId"> |
| | | <treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="è¯·éæ©å½å±é¨é¨" /> |
| | | <treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" |
| | | placeholder="è¯·éæ©å½å±é¨é¨" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |