feat(qc): 新增检化验申请单相关API,优化检验项模板接口并清理冗余页面
1. 将检验项模板查询接口从POST改为GET请求 2. 新增检化验申请单的增删改查、批量保存检验数据API 3. 删除多个冗余的质检历史、检验项、检验任务页面
This commit is contained in:
@@ -3,14 +3,14 @@
|
||||
<div v-loading="filterLoading" style="margin-bottom: 16px; min-height: 50px;">
|
||||
<div style="display: flex; align-items: center; margin-bottom: 6px;">
|
||||
<span style="font-size: 13px; color: #909399; white-space: nowrap; margin-right: 12px; width: 68px; text-align: right;">所属单位:</span>
|
||||
<el-radio-group v-model="selectedCompany" size="small" @change="handleCompanyChange">
|
||||
<el-radio-group v-model="selectedCompany" size="small" :disabled="mainLoading" @change="handleCompanyChange">
|
||||
<el-radio-button label="">全部</el-radio-button>
|
||||
<el-radio-button v-for="company in companyOptions" :key="company" :label="company">{{ company }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div style="display: flex; align-items: center; margin-bottom: 6px;">
|
||||
<span style="font-size: 13px; color: #909399; white-space: nowrap; margin-right: 12px; width: 68px; text-align: right;">方案名称:</span>
|
||||
<el-radio-group v-model="selectedScheme" size="small" @change="handleSchemeChange">
|
||||
<el-radio-group v-model="selectedScheme" size="small" :disabled="mainLoading" @change="handleSchemeChange">
|
||||
<el-radio-button label="">全部</el-radio-button>
|
||||
<el-radio-button v-for="scheme in schemeOptions" :key="scheme" :label="scheme">{{ scheme }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
@@ -42,6 +42,9 @@
|
||||
|
||||
<el-table v-loading="mainLoading" :data="mainList" border stripe class="dynamic-table" fit max-height="calc(100vh - 260px)">
|
||||
<el-table-column label="日期" align="center" width="150" fixed="left">
|
||||
<template slot="header">
|
||||
<span class="required-mark">日期</span>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
v-model="scope.row.inspectionDate"
|
||||
@@ -113,30 +116,6 @@
|
||||
/>
|
||||
</div>
|
||||
<el-empty v-else description="请先选择所属单位和检验方案" />
|
||||
|
||||
<el-dialog :title="'新增检验记录'" :visible.sync="addMainDialogVisible" width="600px" append-to-body>
|
||||
<el-form ref="addMainForm" :model="addMainFormData" label-width="100px">
|
||||
<el-form-item label="样品名称" prop="sampleName">
|
||||
<el-input v-model="addMainFormData.sampleName" placeholder="请输入样品名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="样品编号" prop="sampleNo">
|
||||
<el-input v-model="addMainFormData.sampleNo" placeholder="请输入样品编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="来样编号" prop="batchNo">
|
||||
<el-input v-model="addMainFormData.batchNo" placeholder="请输入来样编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验日期" prop="inspectionDate">
|
||||
<el-date-picker v-model="addMainFormData.inspectionDate" type="date" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择检验日期" style="width:100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="addMainFormData.remark" type="textarea" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="addMainDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitAddMain">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -151,7 +130,6 @@ export default {
|
||||
return {
|
||||
filterLoading: false,
|
||||
mainLoading: false,
|
||||
addMainDialogVisible: false,
|
||||
templateList: [],
|
||||
cascadeData: {},
|
||||
companyOptions: [],
|
||||
@@ -166,14 +144,7 @@ export default {
|
||||
pageNum: 1,
|
||||
pageSize: 1000
|
||||
},
|
||||
dateRange: [],
|
||||
addMainFormData: {
|
||||
sampleName: '',
|
||||
sampleNo: '',
|
||||
batchNo: '',
|
||||
inspectionDate: '',
|
||||
remark: ''
|
||||
}
|
||||
dateRange: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -247,6 +218,7 @@ export default {
|
||||
},
|
||||
|
||||
handleCompanyChange() {
|
||||
if (this.mainLoading) return
|
||||
this.selectedScheme = ''
|
||||
if (this.selectedCompany) {
|
||||
this.schemeOptions = this.cascadeData[this.selectedCompany] || []
|
||||
@@ -262,6 +234,7 @@ export default {
|
||||
},
|
||||
|
||||
handleSchemeChange() {
|
||||
if (this.mainLoading) return
|
||||
if (!this.selectedScheme) {
|
||||
this.currentTemplate = null
|
||||
this.mainList = []
|
||||
@@ -365,31 +338,39 @@ export default {
|
||||
},
|
||||
|
||||
handleAddMain() {
|
||||
this.addMainFormData = {
|
||||
const itemMap = {}
|
||||
if (this.checkItems.length > 0) {
|
||||
this.checkItems.forEach(item => {
|
||||
itemMap[item.itemName] = {
|
||||
detailId: undefined,
|
||||
mainId: undefined,
|
||||
itemName: item.itemName,
|
||||
itemValue: '',
|
||||
itemUnit: item.unit,
|
||||
upperLimit: item.targetUpper,
|
||||
lowerLimit: item.targetLower,
|
||||
rangeDesc: ''
|
||||
}
|
||||
})
|
||||
}
|
||||
const newRow = {
|
||||
_isNew: true,
|
||||
_items: itemMap,
|
||||
_originalItems: JSON.parse(JSON.stringify(itemMap)),
|
||||
inspectionDate: '',
|
||||
sampleName: '',
|
||||
sampleNo: '',
|
||||
batchNo: '',
|
||||
inspectionDate: '',
|
||||
remark: ''
|
||||
}
|
||||
this.addMainDialogVisible = true
|
||||
},
|
||||
|
||||
submitAddMain() {
|
||||
const data = {
|
||||
...this.addMainFormData,
|
||||
templateId: this.currentTemplate.templateId
|
||||
}
|
||||
addInspectionMain(data).then(() => {
|
||||
this.$message.success('新增成功')
|
||||
this.addMainDialogVisible = false
|
||||
this.getMainList()
|
||||
}).catch(() => {
|
||||
this.$message.error('新增失败')
|
||||
})
|
||||
this.mainList.unshift(newRow)
|
||||
},
|
||||
|
||||
handleSaveMain(row) {
|
||||
if (!row.inspectionDate) {
|
||||
this.$message.warning('请选择检验日期')
|
||||
return
|
||||
}
|
||||
row._saving = true
|
||||
const detailList = this.checkItems.map(checkItem => {
|
||||
const itemData = row._items[checkItem.itemName]
|
||||
@@ -405,38 +386,20 @@ export default {
|
||||
rangeDesc: itemData.rangeDesc || ''
|
||||
}
|
||||
}).filter(Boolean)
|
||||
updateInspectionMain({
|
||||
mainId: row.mainId,
|
||||
const requestData = {
|
||||
sampleName: row.sampleName,
|
||||
sampleNo: row.sampleNo,
|
||||
batchNo: row.batchNo,
|
||||
inspectionDate: row.inspectionDate,
|
||||
remark: row.remark,
|
||||
templateId: this.currentTemplate.templateId,
|
||||
detailList: detailList
|
||||
}).then(() => {
|
||||
}
|
||||
const isNew = row._isNew || !row.mainId
|
||||
const apiCall = isNew ? addInspectionMain(requestData) : updateInspectionMain({ ...requestData, mainId: row.mainId })
|
||||
apiCall.then(() => {
|
||||
this.$message.success('保存成功')
|
||||
return listInspectionDetail({ mainId: row.mainId, pageNum: 1, pageSize: 9999 })
|
||||
}).then(response => {
|
||||
const details = response.rows || []
|
||||
if (this.checkItems.length > 0) {
|
||||
this.checkItems.forEach(item => {
|
||||
const found = details.find(d => d.itemName === item.itemName)
|
||||
if (found) {
|
||||
row._items[item.itemName] = {
|
||||
detailId: found.detailId,
|
||||
mainId: found.mainId,
|
||||
itemName: found.itemName,
|
||||
itemValue: found.itemValue || '',
|
||||
itemUnit: found.itemUnit || item.unit,
|
||||
upperLimit: found.upperLimit,
|
||||
lowerLimit: found.lowerLimit,
|
||||
rangeDesc: found.rangeDesc
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
row._originalItems = JSON.parse(JSON.stringify(row._items))
|
||||
row._saving = false
|
||||
this.getMainList()
|
||||
}).catch(() => {
|
||||
this.$message.error('保存失败')
|
||||
row._saving = false
|
||||
@@ -515,4 +478,10 @@ export default {
|
||||
::v-deep .dynamic-table .el-table__body-wrapper {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.required-mark::before {
|
||||
content: '*';
|
||||
color: #f56c6c;
|
||||
margin-right: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user