From dcaa6d4e777c4978ef0d0a55e140a4fe4e0475e3 Mon Sep 17 00:00:00 2001 From: jinna Date: Fri, 19 Dec 2025 18:04:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A7=BD=E6=B6=B2=E4=BF=A1=E6=81=AF=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionTesting/InspectionTemplate.js | 26 ++ src/api/tankSolutionSystem/reportBasic.js | 37 ++ src/api/tankSolutionSystem/resultsCon.js | 56 ++- src/utils/exportPdf.js | 54 +++ .../components/addProjectCycleDialog.vue | 35 +- .../components/addTestProjectDialog.vue | 2 +- src/views/periodicTesting/projectCycle.vue | 16 + src/views/periodicTesting/testProject.vue | 4 +- .../productionTesting/InspectionTemplate.vue | 104 +++-- .../components/reportBasic.vue | 213 ++++++++++ .../tankSolutionSystem/inspectionReport.vue | 160 ++++--- .../tankSolutionSystem/resultsCon.vue | 18 +- .../tankSolutionSystem/workTankLine.vue | 402 +++++++++++++++--- 13 files changed, 947 insertions(+), 180 deletions(-) create mode 100644 src/api/productionTesting/InspectionTemplate.js create mode 100644 src/api/tankSolutionSystem/reportBasic.js create mode 100644 src/utils/exportPdf.js create mode 100644 src/views/qualityManagement/tankSolutionSystem/components/reportBasic.vue diff --git a/src/api/productionTesting/InspectionTemplate.js b/src/api/productionTesting/InspectionTemplate.js new file mode 100644 index 00000000..5baafed2 --- /dev/null +++ b/src/api/productionTesting/InspectionTemplate.js @@ -0,0 +1,26 @@ +import request from '@/axios'; + +// 查询槽液信息列表接口 +export const getList = params =>{ + return request({ + url:'/api/blade-desk/QA/InspectionTemplate/list', + method:'get', + params + }) +} + +// 新增 +export const addTemplate = (data) =>{ + return request({ + url:'/api/blade-desk/QA/InspectionTemplate/save', + method:'post', + data + }) +} + +// 标准下拉 +export const getStandard = (params) =>{ + return request({ + + }) +} \ No newline at end of file diff --git a/src/api/tankSolutionSystem/reportBasic.js b/src/api/tankSolutionSystem/reportBasic.js new file mode 100644 index 00000000..487b3e0b --- /dev/null +++ b/src/api/tankSolutionSystem/reportBasic.js @@ -0,0 +1,37 @@ +import request from '@/axios'; + +// 列表接口 +export const getList = params =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankReportConfig/list', + method:'get', + params + }) +} + +// 新增 +export const addBasic = (data) =>{ + return request({ + url:"/api/blade-desk/QA/LiquidTankReportConfig/save", + method:'post', + data + }) +} + +// 修改 +export const editBasic = (data) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankReportConfig/update', + method:"post", + data + }) +} + +// 删除 +export const deleteBasic = (params) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankReportConfig/remove', + method:'post', + params + }) +} \ No newline at end of file diff --git a/src/api/tankSolutionSystem/resultsCon.js b/src/api/tankSolutionSystem/resultsCon.js index 0caddea9..d89d7208 100644 --- a/src/api/tankSolutionSystem/resultsCon.js +++ b/src/api/tankSolutionSystem/resultsCon.js @@ -19,10 +19,64 @@ export const generateReport = (params) =>{ } // 生成报告接口 -export const createReport = (params) =>{ +export const createReport = (data) =>{ return request({ url:'/api/blade-desk/QA/LiquidTankTaskCopy/generateReport', method:'post', data }) +} + +// 报告详情接口 +export const getReportDetail = (params) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankReport/detail', + method:"get", + params + }) +} + +// 删除报告 +export const deleteReport = (params) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankReport/remove', + method:'post', + params + }) +} + +// 生成曲线 +export const generateLine = (data) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankTaskCopy/generateWave', + method:'post', + data + }) +} + +// 曲线删除 +export const deleteLine = (params) =>{ + return request({ + url:"/api/blade-desk/QA/LiquidTankWave/remove", + method:'post', + params + }) +} + +// 弹窗查询曲线列表接口 +export const createLineList = (params) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankTaskCopy/listWave', + method:"get", + params + }) +} + +// 曲线列表 +export const getLineList = (params) =>{ + return request({ + url:'/api/blade-desk/QA/LiquidTankWave/list', + method:'get', + params + }) } \ No newline at end of file diff --git a/src/utils/exportPdf.js b/src/utils/exportPdf.js new file mode 100644 index 00000000..1e97f9dd --- /dev/null +++ b/src/utils/exportPdf.js @@ -0,0 +1,54 @@ +import html2canvas from 'html2canvas'; +import jsPDF from 'jspdf'; +// 引入ECharts(关键:和组件中引入的方式保持一致) +import * as echarts from 'echarts'; + +/** + * 导出ECharts图表为PDF + * @param {String} domId - 包含ECharts图表的容器DOM ID + * @param {String} pdfName - 导出的PDF文件名 + */ +export function exportEchartsToPdf(domId, pdfName = 'echarts_chart.pdf') { + const container = document.getElementById(domId); + if (!container) { + console.error('未找到图表容器'); + return; + } + + // 先让ECharts图表重绘(避免canvas模糊) + const charts = container.querySelectorAll('.echarts'); + charts.forEach(chartDom => { + // 关键修复:使用引入的echarts而非window.echarts + const chartInstance = echarts.getInstanceByDom(chartDom); + if (chartInstance) { + chartInstance.resize(); // 重绘图表 + } + }); + + // 使用html2canvas将DOM转为canvas + html2canvas(container, { + useCORS: true, // 解决跨域图片问题(若图表有图片) + scale: 2, // 放大2倍,避免PDF模糊 + dpi: 300 // 提高清晰度 + }).then(canvas => { + // 获取canvas宽高 + const contentWidth = canvas.width; + const contentHeight = canvas.height; + + // PDF一页的尺寸(A4比例:595×842) + const pageWidth = 595; + const pageHeight = (contentHeight * pageWidth) / contentWidth; // 按宽度等比缩放高度 + + // 将canvas转为图片数据 + const imgData = canvas.toDataURL('image/jpeg', 1.0); + + // 创建PDF实例 + const pdf = new jsPDF('portrait', 'pt', 'a4'); + // 添加图片到PDF + pdf.addImage(imgData, 'JPEG', 0, 0, pageWidth, pageHeight); + // 保存PDF + pdf.save(pdfName); + }).catch(err => { + console.error('导出PDF失败:', err); + }); +} \ No newline at end of file diff --git a/src/views/periodicTesting/components/addProjectCycleDialog.vue b/src/views/periodicTesting/components/addProjectCycleDialog.vue index 8be483f2..f833bbbb 100644 --- a/src/views/periodicTesting/components/addProjectCycleDialog.vue +++ b/src/views/periodicTesting/components/addProjectCycleDialog.vue @@ -10,7 +10,7 @@ ref="form" :model="projectForm" :rules="projectRules" - label-width="100px" + label-width="120px" v-show="title == '新增' || title == '编辑'" > @@ -55,6 +55,21 @@ + + + + + + + + + + + @@ -207,13 +222,13 @@ 试验条件:{{ projectForm.cycleTestItemCondition }} - 工艺员:{{ projectForm.processUserName }} - 提前下发天数:{{ projectForm.genBefore }} - 试验时长:{{ projectForm.testDuration }} + 试验件材料:{{ projectForm.testMat }} + 最小试验数量:{{ projectForm.minDoTestCount }} + 工艺员:{{ projectForm.processUserName }} + 提前下发天数:{{ projectForm.genBefore }} + 试验时长:{{ projectForm.testDuration }} 临期提醒天数:{{ projectForm.remind }} 试验周期: 每周 {{ projectForm.weekList && projectForm.weekList.length }}次 @@ -256,6 +271,8 @@ + + 维护人:{{ projectForm.updateUserName }} 更新完成时间:{{ projectForm.updateTime }} @@ -298,6 +315,8 @@ export default { processUserId: [{ required: true, message: '请选择工艺员', trigger: 'blur' }], remind: [{ required: true, message: '请选择超期提醒', trigger: 'blur' }], jobType: [{ required: true, message: '请选择试验周期', trigger: 'blur' }], + testMat:[{required:true,message:'请输入试验件材料',trigger:'blur'}], + minDoTestCount:[{required:true,message:'请输入最小试验数量',trigger:'blur'}], }, userData:[], monthTags:[], @@ -489,7 +508,9 @@ export default { jobTypeWeekValue:this.projectForm.jobType == 1 ? this.projectForm.weekList.join(',') : '', jobTypeMonthValue:this.projectForm.jobType == 2 ? monthArr.join(',') : '', jobTypeYearValue:this.projectForm.jobType == 3 ? yearArr.join(',') : '', - isPutOff:this.projectForm.isPutOff ? 1 : 0 + isPutOff:this.projectForm.isPutOff ? 1 : 0, + minDoTestCount:this.projectForm.minDoTestCount, + testMat:this.projectForm.testMat, } console.log('params==============',params) diff --git a/src/views/periodicTesting/components/addTestProjectDialog.vue b/src/views/periodicTesting/components/addTestProjectDialog.vue index bfcb3752..cffc7b18 100644 --- a/src/views/periodicTesting/components/addTestProjectDialog.vue +++ b/src/views/periodicTesting/components/addTestProjectDialog.vue @@ -13,7 +13,7 @@ - + 已有标准 上传新标准 diff --git a/src/views/periodicTesting/projectCycle.vue b/src/views/periodicTesting/projectCycle.vue index ef7600ec..a5f391eb 100644 --- a/src/views/periodicTesting/projectCycle.vue +++ b/src/views/periodicTesting/projectCycle.vue @@ -181,6 +181,22 @@ export default { filter: true, width: 200, }, + { + label: '试验件材料', + prop: 'testMat', + search: false, + sortable: true, + filter: true, + width: 200, + }, + { + label: '最小试验数量', + prop: 'minDoTestCount', + search: false, + sortable: true, + filter: true, + width: 200, + }, { label: '试验项目', prop: 'cycleTestItemId', diff --git a/src/views/periodicTesting/testProject.vue b/src/views/periodicTesting/testProject.vue index e767aceb..7669b8ac 100644 --- a/src/views/periodicTesting/testProject.vue +++ b/src/views/periodicTesting/testProject.vue @@ -71,7 +71,7 @@ export default { projectRules: { tpProject: [{ required: true, message: '请输入项目名称', trigger: 'blur' }], testPieceTitle: [{ required: true, message: '请选择试验件', trigger: 'blur' }], - tpStandard: [{ required: true, message: '请输入试验标准', trigger: 'blur' }], + tpStandard: [{ required: true, message: '请输入执行标准', trigger: 'blur' }], craftMan: [{ required: true, message: '请选择主管工艺', trigger: 'blur' }], mecMan: [{ required: true, message: '请选择试验员', trigger: 'blur' }], remDays: [{ required: true, message: '请选择超期提醒', trigger: 'blur' }], @@ -139,7 +139,7 @@ export default { sortable: true, }, { - label: '试验标准', + label: '执行标准', prop: 'cycleTestStandardName', search: false, sortable: true, diff --git a/src/views/productionTesting/InspectionTemplate.vue b/src/views/productionTesting/InspectionTemplate.vue index b4f0be25..ab98c812 100644 --- a/src/views/productionTesting/InspectionTemplate.vue +++ b/src/views/productionTesting/InspectionTemplate.vue @@ -35,13 +35,13 @@ - - + + - - + + @@ -54,16 +54,16 @@
- 插入一行 + 插入一行 删除选择行 - 保存 +
-
+
- + @@ -84,6 +84,12 @@
+ @@ -104,7 +110,7 @@ + + \ No newline at end of file diff --git a/src/views/qualityManagement/tankSolutionSystem/inspectionReport.vue b/src/views/qualityManagement/tankSolutionSystem/inspectionReport.vue index f6593860..9e460a79 100644 --- a/src/views/qualityManagement/tankSolutionSystem/inspectionReport.vue +++ b/src/views/qualityManagement/tankSolutionSystem/inspectionReport.vue @@ -66,7 +66,7 @@
@@ -76,7 +76,7 @@ @@ -103,8 +103,9 @@ diff --git a/src/views/qualityManagement/tankSolutionSystem/workTankLine.vue b/src/views/qualityManagement/tankSolutionSystem/workTankLine.vue index 29c17267..2c85be8c 100644 --- a/src/views/qualityManagement/tankSolutionSystem/workTankLine.vue +++ b/src/views/qualityManagement/tankSolutionSystem/workTankLine.vue @@ -19,10 +19,10 @@ - - - + + + @@ -42,13 +42,13 @@ -
+
- - -
+ + +
- +
@@ -72,29 +73,35 @@
曲线信息
-
作业中心:{{ detailForm.wcName }}
-
槽号:{{ detailForm.slotNo }}
-
检测成分:{{ detailForm.testName }}
+
作业中心:{{ detailForm.workCenterName }}
+
曲线时间范围:{{ detailForm.lineTime }}
操作人:{{ detailForm.createTime }}
-
曲线生产时间:{{ detailForm.createUser }}
+
曲线生成时间:{{ detailForm.createUser }}
检测曲线
-
+
+
+