diff --git a/src/components/Template/CustomTable.vue b/src/components/Template/CustomTable.vue index b36964d..672beaf 100644 --- a/src/components/Template/CustomTable.vue +++ b/src/components/Template/CustomTable.vue @@ -732,19 +732,7 @@ export default { errors: errors }; }, - // 判断值是否为空 - isValueEmpty(value) { - if (value === null || value === undefined || value === '') { - return true; - } - if (typeof value === 'string' && value.trim() === '') { - return true; - } - if (Array.isArray(value) && value.length === 0) { - return true; - } - return false; - }, + // 表头选择器变化 onHeaderSelectChange(col, value) { if (col.headerSelectTo) { @@ -943,6 +931,9 @@ export default { this.isIndeterminate = false; this.$emit('selectionChange', this.selectedRows); }, + updateHeaderSelectFields(fields) { + this.headerSelectFields = {...this.headerSelectFields, ...fields}; + }, // 更新数据方法,可在formData变更时调用,也可由父组件调用 updateDataSource(dataSource = []) { this.oldLocalDataSource = JSON.parse(JSON.stringify(this.localDataSource)); diff --git a/src/components/Template/Step.vue b/src/components/Template/Step.vue index d039871..aeebc8b 100644 --- a/src/components/Template/Step.vue +++ b/src/components/Template/Step.vue @@ -140,6 +140,12 @@ import fy_spyjzzb from './StepComponents/spyjzzb/fy_spyjzzb.vue';//色谱匀浆 import jz_spyjzzb from './StepComponents/spyjzzb/jz_spyjzzb.vue';//色谱匀浆组织表-静置 +//全血稳定性 +//全血稳定性-颠倒混匀:使用溶液-颠倒混匀 +//全血稳定性-恒温平衡:使用溶液-恒温混匀 +import qxfz from './StepComponents/qxwdx/qxfz.vue';//全血稳定性-全血分装 +import qxjz from './StepComponents/qxwdx/qxjz.vue';//全血稳定性-全血静置 + import { public_templateStepList } from '@/api/business/public/public'; @@ -275,6 +281,10 @@ export default { yjbc, fy_spyjzzb, jz_spyjzzb, + + //全血稳定性 + qxfz, + qxjz, }, computed: { stepComponentMap() { @@ -375,6 +385,13 @@ export default { 'yjyhh':'jszz', 'fy_spyjzzb':'fy_spyjzzb', 'jz_spyjzzb':'jz_spyjzzb', + + + //全血稳定性 + 'ddhy_qxwdx': 'Ddhy', + 'hwph':'Hwhy', + 'qxfz':'qxfz', + 'qxjz':'qxjz', } } @@ -436,6 +453,7 @@ export default { type: '', formData: {} }) + justUpdateFilledFormData(); this.$emit('step-added', this.steps.length) } catch (error) { console.error('添加步骤失败:', error) @@ -447,6 +465,7 @@ export default { if (this.steps.length > 1) { const removedStep = this.steps.splice(index, 1)[0] + justUpdateFilledFormData(); this.$emit('step-removed', { index, step: removedStep, remaining: this.steps.length }) } else { this.$message.warning('至少需要保留一个步骤') diff --git a/src/components/Template/StepComponents/qxwdx/qxfz.vue b/src/components/Template/StepComponents/qxwdx/qxfz.vue new file mode 100644 index 0000000..fd5a4b4 --- /dev/null +++ b/src/components/Template/StepComponents/qxwdx/qxfz.vue @@ -0,0 +1,75 @@ + + + + + + \ No newline at end of file diff --git a/src/components/Template/StepComponents/qxwdx/qxjz.vue b/src/components/Template/StepComponents/qxwdx/qxjz.vue new file mode 100644 index 0000000..a7e710b --- /dev/null +++ b/src/components/Template/StepComponents/qxwdx/qxjz.vue @@ -0,0 +1,95 @@ + + + + + + \ No newline at end of file diff --git a/src/components/Template/StepComponents/ry/ddhy.vue b/src/components/Template/StepComponents/ry/ddhy.vue index 90db60f..0137da5 100644 --- a/src/components/Template/StepComponents/ry/ddhy.vue +++ b/src/components/Template/StepComponents/ry/ddhy.vue @@ -23,7 +23,7 @@ import stepMixins from '@/components/Template/mixins/stepMixins.js'; let config = [{ config:{ text1:{ - label:"将溶液进行上下颠倒,预计颠倒", + label:this.sn==='ddhy_qxwdx'?"将全血样品进行轻轻上下颠倒,预计颠倒":"将溶液进行上下颠倒,预计颠倒", type:"text", }, ddcs1:{ diff --git a/src/components/Template/StepComponents/ry/hwhy.vue b/src/components/Template/StepComponents/ry/hwhy.vue index 9eb60af..5171e3e 100644 --- a/src/components/Template/StepComponents/ry/hwhy.vue +++ b/src/components/Template/StepComponents/ry/hwhy.vue @@ -40,7 +40,7 @@ export default { fillType: "preFill", }, text3: { - label: "°C,实际温度为", + label: "°C,设置实际温度为", type: "text", }, sjwd: { @@ -64,7 +64,7 @@ export default { fillType: "preFill", }, text8: { - label: "实际转速为", + label: "实际设置转速为", type: "text", }, sjzs: { @@ -93,7 +93,7 @@ export default { fillType: "preFill", }, text5: { - label: ",实际时长为", + label: ",实际设置时长为", type: "text", }, sjsc: { @@ -108,7 +108,7 @@ export default { fillType: "preFill", }, text6: { - label: ",进行恒温混匀,混匀", + label: this.sn==='hwph'?",进行恒温平衡,平衡": ",进行恒温混匀,混匀", type: "text", }, startDate: { diff --git a/src/views/business/comps/template/comps/sp/SP00456.vue b/src/views/business/comps/template/comps/sp/SP00456.vue index ee2008b..248877e 100644 --- a/src/views/business/comps/template/comps/sp/SP00456.vue +++ b/src/views/business/comps/template/comps/sp/SP00456.vue @@ -10,10 +10,26 @@ ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" /> - - +
+ + + + +
+
{{ $t('template.common.xzpxpz') }} @@ -24,8 +40,18 @@
+ + /> +
@@ -126,15 +152,20 @@ import templateMixin from "../../mixins/templateMixin.js"; import CustomTable from '@/components/Template/CustomTable.vue'; import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue'; import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"; +import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete.vue" import { getExpireDate, duplicateResource } from "@/utils/index.js"; import { getuuid } from "@/utils/index.js"; import { isCommonUnit } from "@/utils/conTools"; import moment from "moment"; import { addTj, uniqeResource, uniqeResourceOne, addDecimals } from "@/utils/calUnitTools"; -import { getLadderColumnsConfig, getParallelColumnsConfig, getLadderFormConfig, getBaseInfoFormConfig, getRemarkFormConfig, getStorageConditionFormConfig, getParalleStepFormConfig } from "../../formConfig/paralleAndLadderConfig.js"; +import { + getLadderColumnsConfig, getParallelColumnsConfig, getLadderFormConfig, + getBaseInfoFormConfig, getRemarkFormConfig, getStorageConditionFormConfig, getParalleStepFormConfig ,getJcbColumnsConfig +} from "../../formConfig/paralleAndLadderConfig.js"; +import LadderConfig from "@/views/business/comps/template/comps/sp/comps/LadderConfig.vue"; export default { name: "SP00456", - components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, SelectReagentDialog, TableOpertaion }, + components: { LadderConfig,BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, SelectReagentDialog, TableOpertaion, TableOpertaionDelete, LadderConfig }, mixins: [templateMixin], props: { fillType: { @@ -155,6 +186,10 @@ export default { }, }, computed: { + //选板信息; + jcbColumns(){ + return getJcbColumnsConfig(this); + }, // 存储条件表单配置 storageFormConfig() { return getStorageConditionFormConfig(this); @@ -183,6 +218,7 @@ export default { }, }, data() { + const labArr = ["LBA005","LBA007"] return { subSolutionVisible: false, currentSubKey: "",//当前点击的子项key @@ -193,6 +229,7 @@ export default { currentTableKey: "",//当前点击的表格key targetAcSolutionFromTable: true,//是否从表格中获取实际原始溶液浓度 currentRowData: {},//当前点击的行数据 + isLba: labArr.includes(this.sn), }; }, mounted() { @@ -204,7 +241,12 @@ export default { } }, methods: { - + deleteJcbRow(rowIndex){ + const jcbRef = this.$refs['jcbRef']; + if (jcbRef) { + jcbRef.deleteRow(rowIndex); + } + }, onBeforeSaveRecord(data, type, configIndex) { if (type === "ladder") { const formFields = this.$refs[`ladderStepFormPackageRef_${configIndex}`][0]?.getFilledFormData(); @@ -407,6 +449,7 @@ export default { paralleTableFormData: [], showParalleConfig: true }); + this.justUpdateFilledFormData(); }, //新增阶梯配制 handleAddLadder() { @@ -422,6 +465,7 @@ export default { ladderTableFormData: [], showLadderConfig: true }); + this.justUpdateFilledFormData(); }, // 删除阶梯配制配置 deleteConfig(type, config) { @@ -616,8 +660,9 @@ export default { }, //只做校验 async validFields() { + const { isLba } = this; + const refsToValidate = isLba ? ["baseInfoRef", "jcbRef", "remarkRef"]: ["baseInfoRef", "storageConditionRef", "remarkRef"] // 构建需要验证的引用数组 - let refsToValidate = ["baseInfoRef", "storageConditionRef", "remarkRef"]; // 添加阶梯配制相关的引用 if (this.formData.ladderConfigs && this.formData.ladderConfigs.length > 0) { @@ -640,21 +685,26 @@ export default { }, getFilledFormData() { const baseData = this.$refs.baseInfoRef.getFilledFormData(); - const conditionData = this.$refs.storageConditionRef.getFilledFormData(); + let conditionData = {}; + if (!this.isLba) { + conditionData = this.$refs.storageConditionRef.getFilledFormData(); + } // 获取所有阶梯配制数据 const ladderConfigsData = []; if (this.formData.ladderConfigs && this.formData.ladderConfigs.length > 0) { for (let i = 0; i < this.formData.ladderConfigs.length; i++) { const id = this.formData.ladderConfigs[i].id; - const ladderFormData = this.$refs[`ladderStepFormPackageRef_${i}`][0].getFilledFormData(); - const ladderTableFormData = this.$refs[`ladderStepTableRef_${i}`][0].getFilledFormData(); - const ladderStepData = this.$refs[`ladderStepRef_${i}`][0].getFilledFormData(); + const { + baseFormData, + tableData, + stepData, + } = this.$refs[`ladderRef_${i}`][0].getFilledFormData(); ladderConfigsData.push({ - ...ladderFormData, - ...ladderTableFormData, - ladderStepData: ladderStepData.stepData, + ...baseFormData, + ...tableData, + ladderStepData: stepData, showLadderConfig: true, id }); diff --git a/src/views/business/comps/template/comps/sp/comps/LadderConfig.vue b/src/views/business/comps/template/comps/sp/comps/LadderConfig.vue new file mode 100644 index 0000000..2912f44 --- /dev/null +++ b/src/views/business/comps/template/comps/sp/comps/LadderConfig.vue @@ -0,0 +1,338 @@ + + + + + \ No newline at end of file diff --git a/src/views/business/comps/template/formConfig/paralleAndLadderConfig.js b/src/views/business/comps/template/formConfig/paralleAndLadderConfig.js index c4de2fc..748fcc1 100644 --- a/src/views/business/comps/template/formConfig/paralleAndLadderConfig.js +++ b/src/views/business/comps/template/formConfig/paralleAndLadderConfig.js @@ -477,7 +477,7 @@ export const getLadderFormConfig = ($this) => { export const getBaseInfoFormConfig = ($this) => { const sn = $this.sn; const labArr = ["LBA005","LBA007"] - const isLab = labArr.includes(sn); + const isLba = labArr.includes(sn); return [ { type: 'cardItem', @@ -509,7 +509,7 @@ export const getBaseInfoFormConfig = ($this) => { }, { type: 'conditionItem', - label:isLab? 'template.lba.lba002.cztj':'template.common.testConfigurationConditions', + label:isLba? 'template.lba.lba002.cztj':'template.common.testConfigurationConditions', config: { pre: { label: 'template.common.preFill', @@ -530,7 +530,7 @@ export const getBaseInfoFormConfig = ($this) => { } } }, - { + isLba?{}:{ type: 'conditionItem', label: 'template.sp.sp00456.rqcz', config: { @@ -546,7 +546,7 @@ export const getBaseInfoFormConfig = ($this) => { }, { type: 'cellItem', - label: 'template.common.configurationTime', + label: isLba?'template.lba.lba002.czsj':'template.common.configurationTime', config: { startDate: { label: 'template.common.startTime', @@ -625,3 +625,21 @@ export const getParalleStepFormConfig = ($this) => { } ] } + +//选板信息; +export const getJcbColumnsConfig = ($this) => { + return [{ + label: 'template.lba.lba002.jcbmc', + prop: 'jcb', + bodyType: 'input', + bodyFillType: 'preFill', + width: 280, + bodyMaxlength:20 + },{ + label: '', + prop: 'jcbBh', + bodyType: 'jcb', + bodyFillType: 'actFill', + width: 280 + }] +} \ No newline at end of file diff --git a/src/views/business/comps/template/mixins/templateMixin.js b/src/views/business/comps/template/mixins/templateMixin.js index 126a174..a4407f1 100644 --- a/src/views/business/comps/template/mixins/templateMixin.js +++ b/src/views/business/comps/template/mixins/templateMixin.js @@ -372,10 +372,8 @@ export default { }, //统一校验form表单是否填写 async validFormFields(refArr = []) { - console.log(refArr,2121) let result = {} const refs = refArr.map((ref) => { - console.log(ref,312312321) let refData = {} if (this.$refs[ref][0]) { refData = this.$refs[ref][0]?.getFormData() || {}