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) => { |
| | | 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) => { |
| | | 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) |
| | | 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(); |
| | | }) |
| | | .catch((r) => { |
| | | console.error(r); |
| | | Message.error("ä¸è½½æä»¶åºç°é误ï¼è¯·è系管çåï¼"); |
| | | downloadLoadingInstance.close(); |
| | | }); |
| | | }, |
| | | 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;" |
| | | > |
| | | <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> |
| | |
| | | </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> |
| | |
| | | exportProcurementSuppliesList({parentId:this.contentsId}).then(res => { |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | this.$download.saveAs(blob, 'èæå表.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | handleCurrent() { |
| | |
| | | </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" |
| | | <el-dialog :before-close="handleClose" :close-on-click-modal="false" :close-on-press-escape="false" :title="title" |
| | | :visible.sync="dialogVisible" width="70%"> |
| | | <!-- å
¥åºå --> |
| | | <div> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å
¥åºæ¥æ"> |
| | | <el-date-picker v-model="form.storageTime" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | <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-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"> |
| | |
| | | exportProcurementSuppliesStoreExcel({parentId:this.contentsId}).then(res => { |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | this.$download.saveAs(blob, 'èæå
¥åº.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | handleClose() { |
| | |
| | | .el-dialog { |
| | | margin: 6vh auto 50px !important; |
| | | } |
| | | |
| | | .el-dialog__body { |
| | | max-height: 42em; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .input-form { |
| | | display: flex; |
| | | margin: 10px 0; |
| | |
| | | exportSupplierManagement({deviceId:this.clickNodeVal.value}).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'åæ ¼ä¾åºå.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | } |
| | | }, |
| | |
| | | @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="æ°å¢å²ä½èè´£" |
| | | <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" |
| | |
| | | <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 |
| | | <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-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> |
| | |
| | | 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('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤å²ä½èè´£ |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | </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.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> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-upload ref="upload" :action="action" |
| | | :headers="uploadHeader" |
| | | <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;"> |
| | | :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> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-upload ref="upload" :action="action" |
| | | :headers="uploadHeader" |
| | | <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;"> |
| | | :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-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> |
| | | </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> |
| | | </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 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="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-row style="margin-top: 15px"> |
| | | <el-col :span="16"> |
| | | <el-form-item label="æä»¶"> |
| | | <el-upload |
| | | :action="action" |
| | | :before-upload="beforeAvatarUpload" |
| | | :headers="uploadHeader" |
| | | <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> |
| | |
| | | <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> |
| | |
| | | exportPersonBasicInfoById({id: this.clickNodeVal.userId}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'äººåæ¡£æ¡.docx'); |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // ä¸ä¼ éªè¯ |
| | |
| | | height: 12px; |
| | | /* 设置æ»å¨æ¡å®½åº¦ */ |
| | | } |
| | | |
| | | >>>.el-form-item { |
| | | margin-bottom: 3px; |
| | | } |
| | |
| | | margin-top: 2px; |
| | | float: left; |
| | | } |
| | | |
| | | .avatar-uploader-icon { |
| | | font-size: 28px; |
| | | color: #0f8bf1; |
| | |
| | | text-align: center; |
| | | border: 1px solid #d9d9d9; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 178px; |
| | | height: 178px; |
| | |
| | | </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> |
| | |
| | | this.outLoading = false; |
| | | 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> |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.fileName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度计å-导å
¥ |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '人åå¹è®ä¸èæ ¸è®°å½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度计åæç»è¡¨-å¤é |
| | |
| | | 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> |
| | | <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> |
| | |
| | | type: 'application/force-download' |
| | | }) |
| | | this.$download.saveAs(blob, '奿©è®°å½.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // è·åè´è´£äººä¿¡æ¯æ¥å£ |
| | |
| | | <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" |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | | <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> |
| | |
| | | <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}} |
| | | </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'"><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"> |
| | |
| | | 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; |
| | |
| | | } |
| | | </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" |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="yearForm.monitorName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </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" |
| | | <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;"/> |
| | | <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' |
| | | <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"> |
| | | :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 |
| | | <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> |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.monitorName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤è¿åº¦è®¡å表 |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è´¨éçæ§å®æ½è®¡å.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å¤çåå¯¼åº |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'è´¨éçæ§è¯ä»·.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | delYearPlanDetail (row) { |
| | |
| | | }; |
| | | </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" |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="yearForm.superviseName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </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" |
| | | <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"> |
| | | <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> |
| | |
| | | </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%"> |
| | | <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' |
| | | <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"> |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.superviseName + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | } catch (error) { |
| | | console.error('å建Blob对象æ¶åºé:', error); |
| | | } |
| | |
| | | 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); |
| | | }) |
| | |
| | | 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); |
| | | }) |
| | |
| | | exportSuperviseDetaillCorrect({superviseDetailsCorrectId: this.download.superviseDetailsCorrectId}).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'çç£çº æ£æªæ½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤å¹´åº¦è¯¦æ
å表 |
| | |
| | | .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> |
| | |
| | | this.outLoading = false |
| | | 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' |
| | | <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> |
| | |
| | | <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> |
| | |
| | | exportMethodSearchNew({archivedId:row.archivedId}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'æ 忥æ°å¯¼åº.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 导å
¥ |
| | |
| | | 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: { |
| | | pageDeviceAccidentReport({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).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: { |
| | | pageDeviceBreakdownMaintenance({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).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 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 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 å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | |
| | | // æ¥è¯¢ |
| | | getYearTableDetailData (deviceId) { |
| | | this.yearTableDetailDataLoading = true |
| | | this.$axios.post(this.$api.deviceScrapped.pageDeviceScrapped,{ |
| | | page: { |
| | | pageDeviceScrapped({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | this.yearTableDetailData = res.data.records |
| | |
| | | // å¯¼åº |
| | | 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: { |
| | | getDeviceInspectionRecordByPage({ |
| | | current: this.pagination1.current, |
| | | size: this.pagination1.size, |
| | | }, |
| | | entity: { |
| | | deviceId: deviceId, |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).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.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;"> |
| | | <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> |
| | | </el-col> |
| | | </el-row> |
| | | </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: 'æä½æå!' |
| | | }); |
| | | }) |
| | | |
| | | }, |
| | | 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> |
| | |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :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> |
| | | |
| | |
| | | exportForeignRegister(this.searchForm).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '夿¥äººåç»è®°.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | |
| | | <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" |
| | | <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"> |
| | | <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="设å¤åç§°" |
| | | <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-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)"> |
| | | å é¤ |
| | |
| | | this.outLoading = false |
| | | 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" |
| | | <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"> |
| | | <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="设å¤åç§°" |
| | | <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-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)"> |
| | | å é¤ |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'çµæºç¨³å®æ§.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // çµæºç¨³å®æ§ ç¹å»è¡ç¼è¾è§¦å |
| | |
| | | <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%" |
| | | <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> |
| | |
| | | <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" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </el-col> |
| | |
| | | <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" |
| | | :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"> |
| | | <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-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> |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '温湿度记å½.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | deleteRowFun1(row) { |
| | |
| | | initData() { |
| | | getFeTempHumDate({ |
| | | ...this.search, |
| | | ...this.search}).then(res => { |
| | | ...this.search |
| | | }).then(res => { |
| | | if (res.code === 200){ |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :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> |
| | | |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ä¸åºå¤ç导åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], {type: 'application/octet-stream'},false); |
| | | this.$download.saveAs(blob, 'æ åç©è´¨æ¸
å.xlsx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // æ¥è¯¢å表 |
| | |
| | | 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, |
| | | }, |
| | | 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) => { |
| | | getIfsStock(newReqParam).then((response) => { |
| | | this.tableLoading = false |
| | | const resData = response.data |
| | | this.queryReport.total = resData.total |
| | | const resStockList = resData.data |
| | |
| | | inSource: item.ATTR23, |
| | | }) |
| | | }) |
| | | this.tableLoading = false |
| | | }) |
| | | .catch(() => { |
| | | }).catch(() => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | |
| | | 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" |
| | | height="560" |
| | | @pagination="pagination" |
| | | > |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | | </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.bindTableDataLoading = true |
| | | delProductTreeByProductId({ productId: row.id }).then((res) => { |
| | | this.bindTableDataLoading = false |
| | | this.getBinding(this.bindCurrentInfo); |
| | | }) |
| | | .catch((error) => { |
| | | }).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 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> |
| | |
| | | <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 |
| | | }, |
| | | activated() { |
| | | if (this.active==1) { |
| | | this.getInfoRow(); |
| | | } |
| | | }, |
| | | methods: { |
| | | getInfoRow() { |
| | | this.getUserNowInfo() |
| | | this.selectStandardTreeList() |
| | | this.selectStandardMethods() |
| | | this.getInfo() // è·åæ°æ® |
| | | }, |
| | | methods: { |
| | | // æå |
| | | handleSplitCountNum () { |
| | | this.sample.joinName = null |
| | |
| | | |
| | | }, |
| | | goBack () { |
| | | 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 () { |
| | | 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> |
| | |
| | | this.outLoading = true |
| | | rawAllExport({entity: entity}).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, 'åæææ£æµä¿¡æ¯å¯¼åº.xlsx'); |
| | | }) |
| | |
| | | </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> |
| | |
| | | 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 () { |
| | | // this.addObj.prepareUser = JSON.parse(localStorage.getItem("user")).name; |
| | | // this.addObj.prepareUserEn = JSON.parse(localStorage.getItem("user")).nameEn |
| | |
| | | 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 () { |
| | | 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" |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | |
| | | @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-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"> |
| | |
| | | <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-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-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> |
| | |
| | | <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.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-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 :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;"> |
| | |
| | | </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-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> |
| | |
| | | </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-row style="margin-top: 0.01cm;font-size: 0.20cm;"> |
| | | <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 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> |
| | | </el-dialog> |
| | | <!--æ ç¾æå°å¼¹æ¡--> |
| | | <print-dialog v-if="printDialog" ref="printDialog" |
| | | :printDialog="printDialog" |
| | | <print-dialog v-if="printDialog" ref="printDialog" :printDialog="printDialog" |
| | | @closePrintDialog="closePrintDialog"></print-dialog> |
| | | <!--æ·»å éæ¼æ£éªé¡¹å¼¹æ¡--> |
| | | <add-inspection-dia v-if="addInspectionDia" ref="addInspectionDia"></add-inspection-dia> |
| | |
| | | orderType: '', |
| | | state: '', |
| | | }, |
| | | upIndex: 0, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | |
| | | 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 |
| | |
| | | // 导åºè®°å½ |
| | | downLoad () { |
| | | rawAllInsOrderExport({...this.entity}).then(res => { |
| | | this.$message.success('å¯¼åºæå') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, 'å§ææ£æµä¿¡æ¯å¯¼åº.xlsx'); |
| | | }).catch(err => { |
| | |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | |
| | | .box-card >>>.el-radio__inner { |
| | | border-radius: 2px !important; |
| | | } |
| | | |
| | | .box-card >>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ''; |
| | | width: 8px; |
| | |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | |
| | | >>>.el-radio__label{ |
| | | color: #000 !important; |
| | | } |
| | | |
| | | .el-dialog__body >>>.el-radio__label{ |
| | | font-size: 8px; |
| | | } |
| | | |
| | | .el-dialog__body >>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ''; |
| | | width: 4px; |
| | |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | |
| | | >>>.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{ |
| | | background: transparent; |
| | | } |
| | | |
| | | .el-dialog__body >>>.el-radio__inner{ |
| | | width: 8px !important; |
| | | height: 8px !important; |
| | | } |
| | | |
| | | .el-dialog__body >>>.el-radio__label{ |
| | | padding-left: 2px !important; |
| | | } |
| | | |
| | | .el-dialog__body >>>.el-card__body{ |
| | | padding: 0 !important; |
| | | } |
| | | |
| | | .el-dialog__body >>>.el-card { |
| | | border: none; |
| | | } |
| | | |
| | | .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{ |
| | | border: none !important; |
| | | } |
| | | |
| | | .scor{ |
| | | width: 0.01cm; |
| | | height: 0.01cm; |
| | |
| | | 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" |
| | | <el-input v-model="entity.quarterNo" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | |
| | | <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> |
| | | <span v-if="operationType === 'view'" |
| | | style="width: 160px;font-size: 18px;font-weight: 600">{{ currentYear }}</span> |
| | | </div> |
| | | <div v-if="operationType !== 'view'"> |
| | | <el-button size="small" type="primary" @click="addQuarter">æ·»å </el-button> |
| | |
| | | </el-table-column> |
| | | <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> |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'å£åº¦æ½æ ·ä¿¡æ¯å¯¼åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度ä¸è½½ |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.yearHead + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤å¹´åº¦æ½æ · |
| | |
| | | <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" |
| | | <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" |
| | | <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" |
| | | <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" |
| | | <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" |
| | | <el-input v-model="componentData.entrustCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | |
| | | <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> |
| | | <!-- ç¡®è®¤æ¥æ£ --> |
| | | <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> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--æ°æ®æ¥çå¼¹æ¡--> |
| | | <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" |
| | | :dataDialogVisible="dataDialogVisible" |
| | | <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" :dataDialogVisible="dataDialogVisible" |
| | | :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible> |
| | | </div> |
| | | </template> |
| | |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | column1: [ |
| | | {label: 'å§æç¼å·', prop: 'entrustCode'}, |
| | | { label: 'å§æç¼å·', prop: 'entrustCode', width: '160px' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'æ£éªç¶æ', |
| | |
| | | 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> |
| | |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="issuedVisible" title="æ¥åå®¡æ ¸" |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <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;"> |
| | |
| | | <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> |
| | | <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;"> |
| | |
| | | <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" |
| | | <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> |
| | |
| | | <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" |
| | | <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> |
| | |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="æ¥åæ¥ç" |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <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;"> |
| | |
| | | <!--éä»¶æ¥ç--> |
| | | <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" |
| | | <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> |
| | |
| | | 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 |
| | | } |
| | | }, |
| | | }, |
| | |
| | | this.outLoading = true |
| | | downAll({ids: str}).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('å¯¼åºæå') |
| | | this.$download.saveAs(this.javaApi + res.message, row.fileName); |
| | | }) |
| | | }, |
| | |
| | | } |
| | | }, |
| | | 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) { |
| | |
| | | </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> |
| | | </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> |
| | | </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> |
| | | <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> |
| | | <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 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> |
| | | <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-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-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-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> |
| | | </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; |
| | | 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" |
| | | >{{ |
| | | æ»å·¥æ¶æ±æ»ï¼<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> 产éå·¥æ¶æ±æ»ï¼<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' && |
| | | <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' && |
| | | " 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 |
| | | > |
| | | " 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( |
| | | <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> |
| | | </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> |
| | |
| | | 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 'å¨è½äº§åå®éªå®¤' |
| | | let index = this.laboratoryList.findIndex(item => item.value == params) |
| | | if(index > -1) { |
| | | return this.laboratoryList[index].label |
| | | } else { |
| | | return 'å°é¢çº¿ç¼å®éªå®¤' |
| | | 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" |
| | | <lims-table :tableData="tableData" :column="column" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!-- æ°å¢å®éªå®¤--> |
| | |
| | | }, |
| | | 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"> |
| | |
| | | </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) |
| | | }); |
| | | }); |
| | | }, |
| | |
| | | this.getList(); |
| | | this.$modal.msgSuccess("å 餿å"); |
| | | }).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> |