Browse Source

2026-06-15

Lab优化
master
fengyuan_yang 3 days ago
parent
commit
3d0c4b76ed
  1. 124
      src/views/modules/lab/labRecord.vue

124
src/views/modules/lab/labRecord.vue

@ -294,23 +294,43 @@
<el-tab-pane label="结果信息" name="resultInfo"> <el-tab-pane label="结果信息" name="resultInfo">
<div style="height: 715px; overflow-y: auto;"> <div style="height: 715px; overflow-y: auto;">
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;"> <el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;">
<el-form-item label="测试开始时间/Test Start Date">
<el-form-item label="测试开始时间">
<el-date-picker v-model="modalData.testStartDate" type="date" value-format="yyyy-MM-dd" :disabled="isLabFieldDisabled('testStartDate')" style="width: 170px" :editable="false"></el-date-picker> <el-date-picker v-model="modalData.testStartDate" type="date" value-format="yyyy-MM-dd" :disabled="isLabFieldDisabled('testStartDate')" style="width: 170px" :editable="false"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="测试完成日期/Completed Date">
<el-form-item label="测试完成日期">
<el-date-picker v-model="modalData.completedDate" type="date" value-format="yyyy-MM-dd" :disabled="isLabFieldDisabled('completedDate')" style="width: 170px" :editable="false"></el-date-picker> <el-date-picker v-model="modalData.completedDate" type="date" value-format="yyyy-MM-dd" :disabled="isLabFieldDisabled('completedDate')" style="width: 170px" :editable="false"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="测试编码/Test Number">
<el-input v-model="modalData.testNumber" :disabled="isLabFieldDisabled('testNumber')" style="width: 170px"></el-input>
<el-form-item label="测试编码">
<el-input v-model="modalData.testNumber" :disabled="isLabFieldDisabled('testNumber')" style="width: 250px"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-form :inline="true" label-position="top" :model="modalData"> <el-form :inline="true" label-position="top" :model="modalData">
<el-form-item label="异常情况及说明/Unnormal Symptom and Description" style="display: block;">
<el-form-item label="异常情况及说明" style="display: block;">
<el-input type="textarea" :rows="3" v-model="modalData.unnormalSymptomAndDescription" :disabled="isLabFieldDisabled('unnormalSymptomAndDescription')" resize="none" style="width: 780px"></el-input> <el-input type="textarea" :rows="3" v-model="modalData.unnormalSymptomAndDescription" :disabled="isLabFieldDisabled('unnormalSymptomAndDescription')" resize="none" style="width: 780px"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-form :inline="true" label-position="top" :model="modalData">
<el-form-item label="备注(测试员)/Tester Comments" style="display: block;">
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: 45px">
<el-form-item style="display: block;">
<template slot="label">
<span class="judge-criteria-label" @click="openTestReportDialog">测试报告</span>
</template>
<div class="judge-criteria-box" @click="openTestReportDialog">
<template v-if="testReportFileList.length > 0">
<el-link
v-for="item in testReportFileList"
:key="item.id"
type="primary"
style="margin-right: 10px"
@click.stop="previewTestReportFile(item)">
{{ item.fileName }}
</el-link>
</template>
<span v-else class="judge-criteria-placeholder">点击测试报告上传附件</span>
</div>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: 20px">
<el-form-item label="备注" style="display: block;">
<el-input type="textarea" :rows="3" v-model="modalData.testerComments" :disabled="isLabFieldDisabled('testerComments')" resize="none" style="width: 780px"></el-input> <el-input type="textarea" :rows="3" v-model="modalData.testerComments" :disabled="isLabFieldDisabled('testerComments')" resize="none" style="width: 780px"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -320,7 +340,7 @@
<el-tab-pane label="审批信息-部门经理" name="departmentManagerInfo"> <el-tab-pane label="审批信息-部门经理" name="departmentManagerInfo">
<div style="height: 715px; overflow-y: auto;"> <div style="height: 715px; overflow-y: auto;">
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;"> <el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;">
<el-form-item label="备注(部门经理)/Department Manager Comments" style="display: block;">
<el-form-item label="备注(部门经理)" style="display: block;">
<el-input type="textarea" :rows="4" v-model="modalData.departmentManagerComments" :disabled="isLabFieldDisabled('departmentManagerComments')" resize="none" style="width: 780px"></el-input> <el-input type="textarea" :rows="4" v-model="modalData.departmentManagerComments" :disabled="isLabFieldDisabled('departmentManagerComments')" resize="none" style="width: 780px"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -330,12 +350,12 @@
<el-tab-pane label="审批信息-实验室" name="labInfo"> <el-tab-pane label="审批信息-实验室" name="labInfo">
<div style="height: 715px; overflow-y: auto;"> <div style="height: 715px; overflow-y: auto;">
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;"> <el-form :inline="true" label-position="top" :model="modalData" style="margin-top: -5px;">
<el-form-item label="备注(实验室)/Lab Comments" style="display: block;">
<el-input type="textarea" :rows="4" v-model="modalData.labComments" :disabled="isLabFieldDisabled('labComments')" resize="none" style="width: 780px"></el-input>
<el-form-item label="备注(实验室)" style="display: block;">
<el-input type="textarea" :rows="3" v-model="modalData.labComments" :disabled="isLabFieldDisabled('labComments')" resize="none" style="width: 780px"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-form :inline="true" label-position="top" :model="modalData">
<el-form-item label="测试人(多选)/Tester">
<el-form :inline="true" label-position="top" :model="modalData" style="margin-top: 45px">
<el-form-item label="测试人">
<el-select <el-select
v-model="modalData.testerList" v-model="modalData.testerList"
multiple multiple
@ -477,6 +497,31 @@
</oss-components> </oss-components>
</el-dialog> </el-dialog>
<el-dialog
title="测试报告附件"
:close-on-click-modal="false"
:visible.sync="testReportDialogVisible"
width="900px"
v-drag
@close="handleTestReportDialogClose">
<oss-components
ref="testReportOss"
:save-visible="authFileSave"
:download-visible="authFileDownLoad"
:remove-visible="authFileRemove"
:preview-visible="authFilePreview"
:disabled="showModalFlag || modalData.status === '已完成'"
:row-click-select="true"
label="序列号"
:height="460"
style="margin-top: 2px"
:columns="judgeCriteriaFileColumnList"
:order-ref1="modalData.site || ''"
:order-ref2="modalData.referenceNo || ''"
order-ref3="testReport">
</oss-components>
</el-dialog>
<el-dialog title="选择-项目" :close-on-click-modal="false" @close="closeProjectInfoDialog" <el-dialog title="选择-项目" :close-on-click-modal="false" @close="closeProjectInfoDialog"
@open="searchProjectInfoList" :visible.sync="chooseProjectListFlag" width="35%"> @open="searchProjectInfoList" :visible.sync="chooseProjectListFlag" width="35%">
<el-form label-position="top" :model="searchProjectData" ref="closeProjectInfoForm"> <el-form label-position="top" :model="searchProjectData" ref="closeProjectInfoForm">
@ -607,7 +652,9 @@ export default {
modalFlag: false, modalFlag: false,
judgeCriteriaDialogVisible: false, judgeCriteriaDialogVisible: false,
testSpecDialogVisible: false, testSpecDialogVisible: false,
testReportDialogVisible: false,
judgeCriteriaFileList: [], judgeCriteriaFileList: [],
testReportFileList: [],
judgeCriteriaFileColumnList: [ judgeCriteriaFileColumnList: [
{ {
columnProp: 'fileName', columnProp: 'fileName',
@ -806,6 +853,7 @@ export default {
return return
} }
this.testSpecDialogVisible = false this.testSpecDialogVisible = false
this.testReportDialogVisible = false
this.modalData.customerId = '' this.modalData.customerId = ''
this.modalData.customerName = '' this.modalData.customerName = ''
this.modalData.projectId = '' this.modalData.projectId = ''
@ -813,6 +861,7 @@ export default {
this.modalData.projectIdFlag = true this.modalData.projectIdFlag = true
this.$set(this.modalData, 'propertyItemList', []) this.$set(this.modalData, 'propertyItemList', [])
this.judgeCriteriaFileList = [] this.judgeCriteriaFileList = []
this.testReportFileList = []
this.searchProjectData.site = site this.searchProjectData.site = site
}, },
loadNodeAuthority (site, stepId) { loadNodeAuthority (site, stepId) {
@ -920,6 +969,12 @@ export default {
ref.handleQuery() ref.handleQuery()
} }
}, },
refreshTestReportOssTable () {
const ref = this.$refs.testReportOss
if (ref && typeof ref.handleQuery === 'function') {
ref.handleQuery()
}
},
refreshJudgeCriteriaFileList () { refreshJudgeCriteriaFileList () {
if (!this.modalData.site || !this.modalData.referenceNo) { if (!this.modalData.site || !this.modalData.referenceNo) {
this.judgeCriteriaFileList = [] this.judgeCriteriaFileList = []
@ -940,6 +995,26 @@ export default {
this.judgeCriteriaFileList = [] this.judgeCriteriaFileList = []
}) })
}, },
refreshTestReportFileList () {
if (!this.modalData.site || !this.modalData.referenceNo) {
this.testReportFileList = []
return Promise.resolve()
}
const params = {
orderRef1: this.modalData.site,
orderRef2: this.modalData.referenceNo,
orderRef3: 'testReport'
}
return queryOss(params).then(({data}) => {
if (data && data.code === 0 && Array.isArray(data.rows)) {
this.testReportFileList = data.rows
} else {
this.testReportFileList = []
}
}).catch(() => {
this.testReportFileList = []
})
},
openJudgeCriteriaDialog () { openJudgeCriteriaDialog () {
if (!this.modalData.site) { if (!this.modalData.site) {
this.$message.warning('请先选择申请工厂') this.$message.warning('请先选择申请工厂')
@ -969,12 +1044,30 @@ export default {
this.refreshTestSpecOssTable() this.refreshTestSpecOssTable()
}) })
}, },
openTestReportDialog () {
if (!this.modalData.site) {
this.$message.warning('请先选择申请工厂')
return
}
if (!this.modalData.referenceNo) {
this.$message.warning('单据编号为空,无法上传附件')
return
}
this.testReportDialogVisible = true
this.refreshTestReportFileList()
this.$nextTick(() => {
this.refreshTestReportOssTable()
})
},
handleJudgeCriteriaDialogClose () { handleJudgeCriteriaDialogClose () {
this.refreshJudgeCriteriaFileList() this.refreshJudgeCriteriaFileList()
}, },
handleTestSpecDialogClose () { handleTestSpecDialogClose () {
// placeholder to align with dialog close event and keep lifecycle symmetric // placeholder to align with dialog close event and keep lifecycle symmetric
}, },
handleTestReportDialogClose () {
this.refreshTestReportFileList()
},
previewJudgeCriteriaFile (row) { previewJudgeCriteriaFile (row) {
if (!this.authFilePreview) { if (!this.authFilePreview) {
this.$message.warning('没有附件预览权限') this.$message.warning('没有附件预览权限')
@ -1008,6 +1101,9 @@ export default {
this.$message.error('文件预览失败') this.$message.error('文件预览失败')
}) })
}, },
previewTestReportFile (row) {
this.previewJudgeCriteriaFile(row)
},
resolvePropertyDefaultValue (item) { resolvePropertyDefaultValue (item) {
if (item && item.defaultValue !== null && item.defaultValue !== undefined && String(item.defaultValue).trim() !== '') { if (item && item.defaultValue !== null && item.defaultValue !== undefined && String(item.defaultValue).trim() !== '') {
return String(item.defaultValue).trim() return String(item.defaultValue).trim()
@ -1474,10 +1570,12 @@ export default {
this.loadModalButtonCondition() this.loadModalButtonCondition()
this.loadNodeAuthority(this.modalData.site || row.site, this.modalData.stepId !== null && this.modalData.stepId !== undefined ? this.modalData.stepId : 10) this.loadNodeAuthority(this.modalData.site || row.site, this.modalData.stepId !== null && this.modalData.stepId !== undefined ? this.modalData.stepId : 10)
this.refreshJudgeCriteriaFileList() this.refreshJudgeCriteriaFileList()
this.refreshTestReportFileList()
} }
}).catch(() => { }).catch(() => {
this.loadNodeAuthority(row.site, row.stepId !== null && row.stepId !== undefined ? row.stepId : 10) this.loadNodeAuthority(row.site, row.stepId !== null && row.stepId !== undefined ? row.stepId : 10)
this.judgeCriteriaFileList = [] this.judgeCriteriaFileList = []
this.testReportFileList = []
}) })
} else { } else {
this.modalTitle = 'Lab 新增' this.modalTitle = 'Lab 新增'
@ -1502,6 +1600,7 @@ export default {
this.$set(this.modalData, 'propertyItemList', []) this.$set(this.modalData, 'propertyItemList', [])
this.$set(this.modalData, 'testerList', []) this.$set(this.modalData, 'testerList', [])
this.judgeCriteriaFileList = [] this.judgeCriteriaFileList = []
this.testReportFileList = []
this.searchProjectData.site = defaultSite this.searchProjectData.site = defaultSite
this.nodeAuthorityLoaded = true this.nodeAuthorityLoaded = true
this.loadNodeAuthority(this.modalData.site, 10) this.loadNodeAuthority(this.modalData.site, 10)
@ -1532,6 +1631,7 @@ export default {
handleModalClose () { handleModalClose () {
this.judgeCriteriaDialogVisible = false this.judgeCriteriaDialogVisible = false
this.testSpecDialogVisible = false this.testSpecDialogVisible = false
this.testReportDialogVisible = false
this.modalFlag = false this.modalFlag = false
}, },
buildLabPayload (source) { buildLabPayload (source) {

Loading…
Cancel
Save