Browse Source

feat:[模板管理][烦人的浓度计算和单位换算]

lkf
luojie 2 months ago
parent
commit
ad625bf3b1
8 changed files with 80 additions and 6 deletions
  1. +11
    -1
      src/components/Template/BaseInfoFormPackage.vue
  2. +7
    -0
      src/components/Template/CustomTable.vue
  3. +31
    -1
      src/components/Template/HandleFormItem.vue
  4. +4
    -0
      src/views/business/comps/template/TemplateTable.vue
  5. +5
    -3
      src/views/business/comps/template/comps/sp/SP003.vue
  6. +8
    -0
      src/views/business/comps/template/comps/sp/SP00456.vue
  7. +4
    -1
      src/views/business/comps/template/dialog/SelectMixReagentDialog.vue
  8. +10
    -0
      src/views/business/comps/template/mixins/templateMixin.js

+ 11
- 1
src/components/Template/BaseInfoFormPackage.vue View File

@ -103,7 +103,9 @@
:item="sItem" :value="formFields[key]" />
</div>
<div v-else-if="isRegent(sItem)" class="flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey+'_'+key" :type="sItem.type"
<HandleFormItem
@beforeReagentSubmit="(data, callback)=>onBeforeReagentSubmit(data, callback,key)"
:field-item-label="fieldItemLabel" :field-key="prefixKey+'_'+key" :type="sItem.type"
sourceFrom = "baseInfoFormPackage"
:error="errors[key]" @update:error="errors[key] = false"
@onRegentSubmit="(data)=>onRegentSubmit(data,key,sItem)"
@ -158,6 +160,7 @@
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey+'_'+sItem.subKey" class="ml-10" v-else-if="isRegent(sItem,'subType')" :type="sItem.subType"
:item="getRegentItem(sItem,'subType')"
sourceFrom = "baseInfoFormPackage"
@beforeReagentSubmit="(data, callback)=>onBeforeReagentSubmit(data, callback,sItem.subKey)"
@onRegentSubmit="(data)=>onRegentSubmit(data,sItem.subKey,sItem)"
:error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
:value="formFields[sItem.subKey]" />
@ -194,6 +197,7 @@
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey+'_'+sItem.subKey" class="ml-10" v-else-if="isRegent(sItem,'subType')"
sourceFrom = "baseInfoFormPackage"
:error="errors[sItem.subKey]" :type="sItem.subType"
@beforeReagentSubmit="(data, callback)=>onBeforeReagentSubmit(data, callback,sItem.subKey)"
@onRegentSubmit="(data)=>onRegentSubmit(data,sItem.subKey,sItem)"
:item="getRegentItem(sItem,'subType')" :value="formFields[sItem.subKey]" />
</div>
@ -208,6 +212,7 @@
class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel"
sourceFrom = "baseInfoFormPackage"
@beforeReagentSubmit="(data, callback)=>onBeforeReagentSubmit(data, callback,key)"
@onRegentSubmit="(data)=>onRegentSubmit(data,key,sItem)"
:field-key="prefixKey+'_'+key" :type="sItem.type"
:error="errors[key]" @update:error="errors[key] = false"
@ -270,6 +275,11 @@ export default {
isRegent
};
},
methods: {
onBeforeReagentSubmit(data, callback, key) {
this.$emit('beforeReagentSubmit',{selectData:data, callback, key,formFields:this.formFields})
},
}
}
</script>

+ 7
- 0
src/components/Template/CustomTable.vue View File

@ -98,6 +98,7 @@
:item="getBodyItem(col, rowIndex)" :value="row[col.prop]"
:error="hasError(rowIndex, colIndex, col.prop)"
@onRegentSubmit="(data)=>onRegentSubmit(data,col, rowIndex, colIndex, row)"
@beforeReagentSubmit="(data, callback)=>onBeforeReagentSubmit(data, callback,col,row)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" />
</div>
@ -331,6 +332,12 @@ export default {
}
this.$emit("clickable", col, rowIndex, row)
},
onBeforeReagentSubmit(data, callback, col, row){
if (this.templateFillType !== 'actFill') {
return
}
this.$emit("beforeReagentSubmit", {selectData:data, callback, key:col.prop, rowData:row})
},
onRegentSubmit(data, col, rowIndex, colIndex, row){
if (this.templateFillType !== 'actFill') {
return

+ 31
- 1
src/components/Template/HandleFormItem.vue View File

@ -360,10 +360,40 @@ export default {
//
onMixReagentSubmit(data) {
if (data.uuid !== this.uuid) return;
//
const validationController = {
isPrevented: false,
errorMsg: '',
prevent(msg) {
this.isPrevented = true;
if (msg) this.errorMsg = msg;
}
};
//
// validationController.prevent(msg)
this.$emit('beforeReagentSubmit', data, validationController);
//
if (validationController.isPrevented) {
//
if (validationController.errorMsg) {
this.$message.error(validationController.errorMsg);
}
return;
}
//
this.executeReagentSubmit(data);
},
//
executeReagentSubmit(data) {
this.inputValue = data.selectedId;
this.selectRegentInfo = data;
EventBus.$emit("hideSelectMixReagentDialog");
this.onCommonHandleSaveRecord(this.inputValue);
// this.inputValue = this.item.label;
},
///
onCommonHandleRegent(item, type) {

+ 4
- 0
src/views/business/comps/template/TemplateTable.vue View File

@ -240,6 +240,9 @@ export default {
EventBus.$on("showSelectMixReagentDialog", (data) => {
this.$refs.selectMixReagentDialogRef.show(data.studyFormId, data)
})
EventBus.$on("hideSelectMixReagentDialog", (data) => {
this.$refs.selectMixReagentDialogRef.hide()
})
//
EventBus.$on("showEditSignDialog", (data) => {
this.currentEditSignUuid = data.uuid;
@ -255,6 +258,7 @@ export default {
EventBus.$off("showSelectInstrumentDialog");
EventBus.$off("showSelectMixReagentDialog");
EventBus.$off("showEditSignDialog");
EventBus.$off("hideSelectMixReagentDialog");
this.debouncedEmit.cancel()
},
methods: {

+ 5
- 3
src/views/business/comps/template/comps/sp/SP003.vue View File

@ -16,7 +16,9 @@
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<BaseInfoFormPackage ref="stepFormPackageRef" fieldItemLabel="template.common.operationSteps"
@onRegentSubmit="onRegentSubmit" :formConfig="stepFormConfig" @blur="onHandleBlur"
@onRegentSubmit="onRegentSubmit"
@beforeReagentSubmit="onBeforeReagentSubmit"
:formConfig="stepFormConfig" @blur="onHandleBlur"
:formData="formData" />
<CustomTable fieldItemLabel="template.common.operationSteps" @blur="onHandleTableBlur"
:showAddRow="fillType === 'preFill' ? true : false" :showOperation="fillType === 'actFill'"
@ -430,10 +432,10 @@ export default {
if (this.fillType === "actFill") {
this.handleUpdateCode(formData);
}
const re = convertConcentration.convert('100mg/mL',"ng/mL")
console.log(re,"res")
// const re = convertConcentration.convert('100mg/mL',"ng/mL")
},
methods: {
//
onRegentSubmit(data) {
const { selectInfo, key } = data;

+ 8
- 0
src/views/business/comps/template/comps/sp/SP00456.vue View File

@ -33,6 +33,7 @@
}}</el-button>
</div>
<BaseInfoFormPackage @onRegentSubmit="(e) => onRegentSubmit('ladder', ladderIndex, e)"
@beforeReagentSubmit="(data) => onBeforeReagentSubmit(data,ladderIndex, ladderConfig)"
:ref="`ladderStepFormPackageRef_${ladderIndex}`" :formConfig="ladderStepFormConfig"
:formData="ladderConfig" :fieldItemLabel="$t('template.common.jtpz')"
:prefixKey="'ladder_' + ladderIndex" />
@ -76,6 +77,7 @@
<CustomTable @blur="(e) => onHandleTableBlur('paralle', paralleIndex, e)"
:ref="`paralleStepTableRef_${paralleIndex}`" :showOperation="fillType === 'actFill' || fillType === 'preFill'"
:columns="paralleStepColumns"
@beforeReagentSubmit="(data) => onTableBeforeReagentSubmit(data, paralleIndex, paralleConfig)"
@onRegentSubmit="(data) => onTableRegentSubmit('paralle', paralleIndex, data)"
:formData="paralleConfig" :prefixKey="'paralle' + paralleIndex"
:fieldItemLabel="$t('template.common.pxpz')">
@ -432,6 +434,12 @@ export default {
}
},
onTableBeforeReagentSubmit(data){
const {selectData, callback, key, rowData} = data;
if(key === "actStartSolutionCode" && !isCommonUnit(selectData.row.nddw,[rowData.targetStartSolutionConcentrationPrecision])){//table
callback.prevent('浓度单位与预制不符,请重新选择或申请废止并重新预制。');
}
},
// table
onTableRegentSubmit(type, configIndex, data) {
const { selectInfo, rowIndex, key, rowData } = data;

+ 4
- 1
src/views/business/comps/template/dialog/SelectMixReagentDialog.vue View File

@ -119,6 +119,9 @@ export default {
this.handleShowTableInfo(type);
},
hide() {
this.visible = false;
},
handleOtherChange(val) {
this.otherChecked = val;
if (val) {//id
@ -159,7 +162,7 @@ export default {
this.$emit('submit', selectedValue, row);
// eventBus
EventBus.$emit("onMixReagentSubmit", { selectInfo, uuid: this.uuid, selectedId: selectedValue, row,selectType:this.selectType });
this.visible = false;
// this.visible = false;
},
//
handleSelect(code, row) {

+ 10
- 0
src/views/business/comps/template/mixins/templateMixin.js View File

@ -1,6 +1,7 @@
import moment from 'moment'
import { getLatestSn, getLatestSnArr } from '@/api/template';
import { isValueEmpty } from '@/utils/index';
import { isCommonUnit } from "@/utils/conTools";
import { sj_subpackage, sj_startConfiguration, sj_configurationCompleted } from '@/api/business/sj/sj';
export default {
dicts: [
@ -162,6 +163,15 @@ export default {
this.setTemplateData({})
},
methods: {
//试剂弹窗确认前
onBeforeReagentSubmit(data){
const {selectData, callback, key, formFields} = data;
const {subTargetStartSolution} = formFields;
//判断选择的浓度单位和预制的浓度单位是否一致
if(key === "subStartSolution" && !isCommonUnit(selectData.row.nddw,[subTargetStartSolution])){//选择起始源溶液需要同步更新table的变更记录。
callback.prevent('浓度单位与预制不符,请重新选择或申请废止并重新预制。');
}
},
getFormDataByTemplateData() {
let o = {};
const { bdnr } = this.templateData

Loading…
Cancel
Save