From 049fda473cc178917a02f3a174dfd08a84b0cb8d Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 17 九月 2026 10:52:28 +0800
Subject: [PATCH] 新疆——新聚lims 1.每个检验项都要有一个选择检测时间的地方,跟温湿度放在一起,还有检测地点,设备也要单独绑定检验项,最后导出模版再总结到一起 2.产品名称改为检测依据、加一个样品名称手输 3.下单时原始记录模板可以从标准库绑定的模板进行删减
---
src/views/business/inspectionTask/components/InspectionWord.vue | 208 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 168 insertions(+), 40 deletions(-)
diff --git a/src/views/business/inspectionTask/components/InspectionWord.vue b/src/views/business/inspectionTask/components/InspectionWord.vue
index 4c61c6b..666c720 100644
--- a/src/views/business/inspectionTask/components/InspectionWord.vue
+++ b/src/views/business/inspectionTask/components/InspectionWord.vue
@@ -26,6 +26,38 @@
</el-select>
</div>
</div>
+ <div class="template-panel">
+ <el-form :inline="true" :model="currentOtherForm" class="form-inline" size="small" label-width="84px">
+ <el-form-item label="娓╁害:">
+ <el-input v-model="currentOtherForm.temperature" :disabled="state > 1" placeholder="" size="small"
+ style="width: 90px" @change="m => subOtherForm(m, 'temperature')"></el-input>
+ <span class="template-panel__unit">鈩�</span>
+ </el-form-item>
+ <el-form-item label="婀垮害:">
+ <el-input v-model="currentOtherForm.humidity" :disabled="state > 1" placeholder="" size="small"
+ style="width: 90px" @change="m => subOtherForm(m, 'humidity')"></el-input>
+ <span class="template-panel__unit">%RH</span>
+ </el-form-item>
+ <el-form-item label="妫�娴嬫椂闂�:">
+ <el-date-picker v-model="currentOtherForm.detectionTime" :disabled="state > 1" type="date"
+ value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨鏃ユ湡" size="small" style="width: 160px"
+ @change="m => subOtherForm(m, 'detectionTime')"></el-date-picker>
+ </el-form-item>
+ <el-form-item label="妫�娴嬪湴鐐�:">
+ <el-input v-model="currentOtherForm.detectionPlace" :disabled="state > 1" clearable
+ placeholder="璇疯緭鍏ユ娴嬪湴鐐�" size="small" style="width: 200px"
+ @change="m => subOtherForm(m, 'detectionPlace')"></el-input>
+ </el-form-item>
+ <el-form-item v-if="isDirectTemplateOrder()" label="璁惧:">
+ <el-select v-model="currentOtherForm.deviceIds" :disabled="state != 1" multiple filterable clearable
+ size="small" placeholder="璇烽�夋嫨璁惧" style="width: 360px"
+ @change="m => subOtherForm(m, 'deviceIds')">
+ <el-option v-for="device in deviceOptions" :key="device.id" :label="device.label"
+ :value="device.id" />
+ </el-select>
+ </el-form-item>
+ </el-form>
+ </div>
<!-- 甯歌妫�楠屽師濮嬭褰� -->
<div id="tableBox" v-loading="tableLoading" class="center-box">
<table v-for="(item, index) in tableList" :key="index + currentTable + currentSample.id" border="1"
@@ -149,15 +181,6 @@
</el-select>
</div>
</div>
- <div class="body" style="display: flex;padding: 10px;align-items: center;">
- <div class="search_label" style="width: 150px;"><span class="required-span">*</span>鎶ュ憡绫诲瀷</div>
- <div class="search_input" style="width: 100%;">
- <el-select v-model="reportType" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
- <el-option label="妫�娴嬫姤鍛�" :value="0"></el-option>
- <el-option label="妫�楠屾姤鍛�" :value="1"></el-option>
- </el-select>
- </div>
- </div>
<span slot="footer" class="dialog-footer">
<el-button @click="addVerifyDia = false">鍙� 娑�</el-button>
<el-button :loading="submitLoading" type="primary" @click="submit()">纭� 瀹�</el-button>
@@ -229,7 +252,8 @@
getInsProductUnqualifiedRetest,
search, selectUserCondition,
submitPlan,
- verifyPlan
+ verifyPlan,
+ write
} from "@/api/business/inspectionTask";
import { getUserNow, saveUnqualifiedContext } from "@/api/business/rawMaterialOrder";
import InspectionWorker from '@/workers/InspectionWorker.worker';
@@ -335,7 +359,6 @@
widthList: [],
addVerifyDia: false,
verifyUser: null,
- reportType: null,
personList: [],
enumList: [],
tableLoading: false,
@@ -350,10 +373,9 @@
numOptions: [],
temperatureOptions: [],
wareTableData: [],
- otherForm: {
- humidity: null,
- temperature: null,
- },
+ // 妫�娴嬫潯浠舵寜妯℃澘 id 鍒嗙粍锛歿 [templateId]: { temperature, humidity, detectionTime, detectionPlace, deviceIds } }
+ otherForm: {},
+ deviceOptions: [],
equipForm: {
value0: null,
code0: null,
@@ -428,6 +450,16 @@
},
action() {
return this.javaApi + "/insOrderPlan/uploadFile";
+ },
+ // 褰撳墠妯℃澘瀵瑰簲鐨勬娴嬫潯浠�
+ currentOtherForm() {
+ return this.otherForm[this.currentTable] || {
+ temperature: null,
+ humidity: null,
+ detectionTime: null,
+ detectionPlace: null,
+ deviceIds: []
+ }
}
},
created() {
@@ -463,15 +495,25 @@
this.sampleProduct = res.data.sampleProduct
this.currentSample = this.HaveJson(this.sampleProduct[0])
let insProduct = this.HaveJson(this.currentSample.insProduct)
- // 娓╁害銆佹箍搴﹁祴鍊�
- this.otherForm = {
- temperature: this.insOrder.temperature ? this.insOrder.temperature : null,
- humidity: this.insOrder.humidity ? this.insOrder.humidity : null,
- }
+ // 妫�娴嬫潯浠惰祴鍊硷細鎸夋ā鏉� id 鍒嗙粍鍥炴樉
+ this.otherForm = {}
+ const conditionList = this.insOrder.templateConditions || []
+ conditionList.forEach(item => {
+ this.$set(this.otherForm, item.templateId, {
+ temperature: item.temperature != null ? item.temperature : null,
+ humidity: item.humidity != null ? item.humidity : null,
+ detectionTime: item.detectionTime != null ? item.detectionTime : null,
+ detectionPlace: item.detectionPlace != null ? item.detectionPlace : null,
+ deviceIds: Array.isArray(item.deviceIds) ? [...item.deviceIds] : []
+ })
+ })
if (this.typeSource == '1') {
this.retestTag = '1'
}
this.getEquipOptions(1)
+ if (this.sonLaboratory === '鏂拌仛') {
+ this.loadDeviceOptions()
+ }
// 鑾峰彇褰撳墠鏍峰搧鐨勬楠岄」
let list = await this.getCurrentProduct(this.currentSample.id, 0)
if (list === undefined) {
@@ -525,6 +567,8 @@
if (this.tableLists && this.tableLists.length > 0) {
this.tableList = null;
this.tableList = this.tableLists.filter(m => m.templateId == val1)
+ // 妯℃澘闆嗗悎鍙兘鍙樺寲锛岃ˉ榻愭俯搴︺�佹箍搴︽Ы浣�
+ this.tableLists.forEach(m => this.ensureOtherForm(m.templateId))
// 瀵规ā鏉胯繘琛屽鐞�
this.handleTableData()
}
@@ -856,6 +900,8 @@
this.tableList = null;
this.tableList = [this.tableLists[0]]
this.currentTable = this.tableLists[0].templateId;
+ // 琛ラ綈姣忎釜妯℃澘鐨勬俯搴︺�佹箍搴︽Ы浣�
+ this.tableLists.forEach(m => this.ensureOtherForm(m.templateId))
// 澶勭悊椤甸潰鍒楄〃鏁版嵁
this.handleTableData()
}
@@ -885,6 +931,8 @@
this.tableList = [this.tableLists[0]]
this.currentTable = this.tableLists[0].templateId;
this.currentSample.insProduct = this.HaveJson(list)
+ // 琛ラ綈姣忎釜妯℃澘鐨勬俯搴︺�佹箍搴︽Ы浣�
+ this.tableLists.forEach(m => this.ensureOtherForm(m.templateId))
// 澶勭悊椤甸潰鍒楄〃鏁版嵁
this.handleTableData()
}
@@ -1220,15 +1268,24 @@
// 瀵硅緭鍏ュ�艰繘琛屾牸寮忔牎楠�
handleInput(n) {
try {
- n.v.v = n.v.v.replace(/[^\d.^e>\-/+]/g, '');
- n.v.v = n.v.v.replace(/\.{2,}/g, "."); //鍙繚鐣欑涓�涓�. 娓呴櫎澶氫綑鐨�
- n.v.v = n.v.v.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
- n.v.v = n.v.v.replace(/\/{2,}/g, "/"); //鍙繚鐣欑涓�涓�/娓呴櫎澶氫綑鐨�
- n.v.v = n.v.v.replace("/", "$#$").replace(/\//g, "").replace("$#$", "/");
+ const v = n.v.v;
+ // 鑳藉姏鑼冨洿宸插簾寮�,妫�楠屽�肩被鍨嬩笉鍐嶄綔涓哄垽鏂緷鎹�傛暣涓插彧鐢辩畻寮忓瓧绗︾粍鎴愭椂鎵嶈鑼冨寲鏍煎紡,
+ // 鍑虹幇涓枃绛夊叾瀹冨瓧绗﹀嵆鎸夋枃鏈鐞嗗師鏍蜂繚鐣�,鍚﹀垯鏂囧瓧浼氳閫愬瓧鍒犳帀
+ if (typeof v !== "string" || /[^\d.^e>锛炩墺鈮�<锛滄柇瑁傝剢鍖朶-/+]/.test(v)) {
+ return;
+ }
+ n.v.v = v
+ .replace(/\.{2,}/g, ".") //鍙繚鐣欑涓�涓�. 娓呴櫎澶氫綑鐨�
+ .replace(".", "$#$")
+ .replace(/\./g, "")
+ .replace("$#$", ".")
+ .replace(/\/{2,}/g, "/") //鍙繚鐣欑涓�涓�/娓呴櫎澶氫綑鐨�
+ .replace("/", "$#$")
+ .replace(/\//g, "")
+ .replace("$#$", "/");
} catch (error) {
console.log(error);
}
-
},
getInspectionItemType(id) {
for (var a in this.currentSample.insProduct) {
@@ -1288,6 +1345,21 @@
})
}
},
+ // 鏂拌仛鐩存帴缁戝畾妯℃澘鐨勫崟鎹紝璁惧鎸夋ā鏉块�夋嫨
+ isDirectTemplateOrder() {
+ return this.sonLaboratory === '鏂拌仛' && this.currentSample &&
+ (this.currentSample.insProduct || []).some(product => product.templateRowIndex != null)
+ },
+ loadDeviceOptions() {
+ search({ status: 0 }).then(res => {
+ this.deviceOptions = (res.data || []).map(device => ({
+ id: device.id,
+ label: `${device.deviceName}--${device.managementNumber}`
+ }))
+ }).catch(error => {
+ console.error(error)
+ })
+ },
getUserInfo() {
getUserNow().then(res => {
this.userId = res.data.id
@@ -1342,28 +1414,60 @@
this.$message.error('鏈緭鍏ヤ笉閫氳繃鍘熷洜')
}
},
+ // 淇濊瘉妯℃澘鐨勬娴嬫潯浠舵Ы浣嶅瓨鍦�
+ ensureOtherForm(templateId) {
+ if (templateId == null) return
+ if (!this.otherForm[templateId]) {
+ this.$set(this.otherForm, templateId, {
+ temperature: null,
+ humidity: null,
+ detectionTime: null,
+ detectionPlace: null,
+ deviceIds: []
+ })
+ }
+ },
+ // 淇濆瓨褰撳墠妯℃澘鐨勬娴嬫潯浠�
+ subOtherForm(m, type) {
+ const payload = {
+ id: this.insOrder.id,
+ templateId: this.currentTable
+ }
+ if (type === 'deviceIds') {
+ payload.deviceIds = Array.isArray(m) ? [...m] : []
+ } else if (type === 'detectionTime' || type === 'detectionPlace') {
+ payload[type] = m === '' || m == null ? null : m
+ } else {
+ payload[type] = Number(m)
+ }
+ write(payload).then(res => {
+ this.$message.success("淇濆瓨鎴愬姛")
+ })
+ },
submit() {
if (this.verifyUser === null || this.verifyUser === '') {
this.$message.error("璇锋寚瀹氬鏍镐汉鍛�")
return
}
- if (this.reportType === null || this.reportType === '') {
- this.$message.error("璇烽�夋嫨鎶ュ憡绫诲瀷")
- return
- }
- if (!this.otherForm.humidity) {
- this.$message.error("璇疯緭鍏ユ箍搴�")
- return
- }
- if (!this.otherForm.temperature) {
- this.$message.error("璇疯緭鍏ユ俯搴�")
+ const missing = []
+ this.tableLists.forEach(m => {
+ const form = this.otherForm[m.templateId] || {}
+ if (!form.temperature) missing.push(`璇峰~鍐欍��${m.templateName}銆嶇殑娓╁害`)
+ if (!form.humidity) missing.push(`璇峰~鍐欍��${m.templateName}銆嶇殑婀垮害`)
+ if (!form.detectionTime) missing.push(`璇烽�夋嫨銆�${m.templateName}銆嶇殑妫�娴嬫椂闂碻)
+ if (!form.detectionPlace) missing.push(`璇峰~鍐欍��${m.templateName}銆嶇殑妫�娴嬪湴鐐筦)
+ if (this.isDirectTemplateOrder() && (!form.deviceIds || form.deviceIds.length === 0)) {
+ missing.push(`璇烽�夋嫨銆�${m.templateName}銆嶇殑璁惧`)
+ }
+ })
+ if (missing.length > 0) {
+ this.$message.error(missing[0])
return
}
this.submitLoading = true;
checkSubmitPlan({
orderId: this.orderId,
laboratory: this.sonLaboratory,
- reportType: this.reportType,
}).then(res => {
if (res.code === 200) {
if (!res.data || res.data.errorMsg.length == 0) {
@@ -1373,8 +1477,7 @@
laboratory: this.sonLaboratory,
verifyUser: this.verifyUser,
entrustCode: this.insOrder.entrustCode,
- registerInsResults: this.reportType === 1,
- reportType: this.reportType
+ registerInsResults: false,
}).then(res => {
if (res.code === 200) {
this.$message.success("鎿嶄綔鎴愬姛")
@@ -1410,7 +1513,6 @@
laboratory: this.sonLaboratory,
verifyUser: this.verifyUser,
registerInsResults: false,
- reportType: this.reportType
}).then(res => {
if (res.code === 200) {
this.$message.success("鎿嶄綔鎴愬姛")
@@ -1689,6 +1791,32 @@
text-align: left;
}
+/* 褰撳墠妫�楠屾ā鏉跨殑妫�娴嬫潯浠� */
+.template-panel {
+ background-color: #f8f9fb;
+ border: 1px solid #ebeef5;
+ border-radius: 3px;
+ padding: 16px 16px 4px;
+ margin-top: 12px;
+ text-align: left;
+}
+
+/* form-item 鐢� inline-flex 淇濊瘉 label 涓庢帶浠跺悓琛岋紝涓嶄緷璧栬鐩掑搴︽帹绠� */
+.template-panel>>>.el-form-item {
+ display: inline-flex;
+ align-items: center;
+ margin-bottom: 12px;
+}
+
+.template-panel>>>.el-form-item__label {
+ flex: none;
+}
+
+.template-panel__unit {
+ margin-left: 4px;
+ color: #606266;
+}
+
.center {
width: calc(100% - 40px);
/* max-height: 580px; */
--
Gitblit v1.9.3