diff --git a/src/components/Template/HandleFormItem.vue b/src/components/Template/HandleFormItem.vue index bf6bd51..fc36ed9 100644 --- a/src/components/Template/HandleFormItem.vue +++ b/src/components/Template/HandleFormItem.vue @@ -404,7 +404,7 @@ export default { return false; }, getFlexClass() { - const noFlexArr = ["radio", "checkboxTag", "fqyq","button"] + const noFlexArr = ["radio", "checkboxTag", "fqyq", "button"] return noFlexArr.includes(this.type) ? '' : 'flex1' }, getDecimalDigits() { @@ -657,7 +657,7 @@ export default { // 点击按钮 handleClickButton(item) { this.inputValue = `button-${new Date().getTime()}`; - if(item.noSign){//不需要签名的直接emit + if (item.noSign) {//不需要签名的直接emit this.$emit("clickButton", item); return; } @@ -1152,7 +1152,7 @@ export default { if (!this.isFieldsRecord) {//是否需要记录修改记录 this.$emit("blur", this.inputValue); this.$emit('input', this.inputValue); - this.$emit("change", this.inputValue,"change"); + this.$emit("change", this.inputValue, "change"); return; } // 值发生了变化,需要弹出密码输入框 @@ -1891,6 +1891,15 @@ export default { box-shadow: 0 0 6px #ffc3c3 !important; } + .el-checkbox__label { + white-space: normal; + } + + .checkbox-tree-item .el-checkbox { + display: flex; + align-items: center; + } + .checkbox-item { margin-right: 16px; display: flex; diff --git a/src/components/Template/StepComponents/CdmdComp.vue b/src/components/Template/StepComponents/CdmdComp.vue new file mode 100644 index 0000000..cc062ff --- /dev/null +++ b/src/components/Template/StepComponents/CdmdComp.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/src/components/Template/StepComponents/JcbComp.vue b/src/components/Template/StepComponents/JcbComp.vue index 275226a..c54ade9 100644 --- a/src/components/Template/StepComponents/JcbComp.vue +++ b/src/components/Template/StepComponents/JcbComp.vue @@ -61,6 +61,8 @@ export default { bodyType: "jcb", bodyKey: "clpClick", bodyFillType: "preFill", + bodySubType: 'span', + bodySubKey: 'bh', }, { label: '时间', diff --git a/src/components/Template/StepComponents/xbjzpz/cdmd.vue b/src/components/Template/StepComponents/xbjzpz/cdmd.vue index 3f29db1..125a662 100644 --- a/src/components/Template/StepComponents/xbjzpz/cdmd.vue +++ b/src/components/Template/StepComponents/xbjzpz/cdmd.vue @@ -75,10 +75,14 @@ export default { fillType: "actFill", type: "inputNumber", }, + cdmds:{ + type:"cdmd" + }, text6:{ label: "个/mL。", type: "text", }, + } }] return config diff --git a/src/components/Template/StepFormPackage.vue b/src/components/Template/StepFormPackage.vue index 56340b2..e698525 100644 --- a/src/components/Template/StepFormPackage.vue +++ b/src/components/Template/StepFormPackage.vue @@ -56,6 +56,9 @@ +
{{sItem.otherLabel ? $t(sItem.otherLabel) : $t("template.common.other") }}
@@ -74,6 +77,7 @@ import HandleFormItem from '@/components/Template/HandleFormItem.vue' import formPackageMixins from '@/components/Template/mixins/formPackageMixins.js' import JcbComp from '@/components/Template/StepComponents/JcbComp.vue' +import CdmdComp from '@/components/Template/StepComponents/CdmdComp.vue' import ZLSubPackage from '@/components/Template/StepComponents/ZLSubPackage.vue' import { isShowOther } from "@/utils/formPackageCommon.js"; import { EventBus } from "@/utils/eventBus"; @@ -85,6 +89,7 @@ export default { HandleFormItem, ZLSubPackage, JcbComp, + CdmdComp, }, mixins: [formPackageMixins], props: { diff --git a/src/components/Template/mixins/stepMixins.js b/src/components/Template/mixins/stepMixins.js index 139e8a0..3160df4 100644 --- a/src/components/Template/mixins/stepMixins.js +++ b/src/components/Template/mixins/stepMixins.js @@ -74,15 +74,17 @@ export default { commonHandleJcbUpdate() { this.localFormData = this.formData; if (!this.formData.jcb && this.templateFillType === 'actFill') { - const qbData = this.getQbData(); - this.localFormData = { ...this.localFormData, jcb: qbData }; - justUpdateFilledFormData(); + setTimeout(() => { + const qbData = this.getQbData(); + this.localFormData = { ...this.localFormData, jcb: qbData }; + justUpdateFilledFormData(); + }, 3000); } }, //获取取板数据 getQbData() { let qbData = []; - if (this.templateSn === "LBA003") {//只有lba003才会有取板步骤,所以检测板数据从取板数据里面获取; + if (this.templateSn === "LBA003" || this.templateSn === "ADA003") {//只有lba003才会有取板步骤,所以检测板数据从取板数据里面获取; const stepData = this.getStepData() || []; const filterData = stepData.filter((item) => item.type === "qb"); const allQbData = []; @@ -92,12 +94,12 @@ export default { allQbData.push(...parseData); }) qbData = [...new Map(allQbData.map(item => [item.mc, item])).values()] - } else if (this.templateSn === "LBA002") {//lba002没有取板步骤,所以检测板数据从检测板数据里面获取; - const {stepTableFormData=[]} = this.getJcbData() || {}; - qbData = JSON.parse(JSON.stringify(stepTableFormData)); + } else if (this.templateSn === "LBA002" || this.templateSn === "ADA002") {//lba002没有取板步骤,所以检测板数据从检测板数据里面获取; + const { stepTableFormData = [] } = this.getJcbData() || {}; + qbData = stepTableFormData; } - return { stepTableFormData: qbData } + return { stepTableFormData: JSON.parse(JSON.stringify(qbData)) } }, //回填编号 preField 前缀 updateField 需要更新的字段 async handleBackfillCode(preField, updateField) { @@ -163,16 +165,16 @@ export default { let maxVolume, maxVolumeUnit; if (this.getMybh || this.getMybhByIndex) {//某些表单的步骤需要分装表单上的数据 let result = {}; - if(this.getMybh){ + if (this.getMybh) { result = this.getMybh() - }else if(this.getMybhByIndex){ - result = this.getMybhByIndex(this.formIndex,this.formType) + } else if (this.getMybhByIndex) { + result = this.getMybhByIndex(this.formIndex, this.formType) } const { mybh, mybhOptions = [], maxVolume: max, maxVolumeUnit: unit } = result - if ((!mybh && !mybhOptions.length) || !max || !unit) { - this.$message.warning('请先填写分装数据') - return - } + // if ((!mybh && !mybhOptions.length) || !max || !unit) { + // this.$message.warning('请先填写分装数据') + // return + // } options = mybhOptions fields.push(mybh) maxVolume = max || '' diff --git a/src/views/business/comps/template/comps/dl/DL016.vue b/src/views/business/comps/template/comps/dl/DL016.vue index 564c9de..9a633cc 100644 --- a/src/views/business/comps/template/comps/dl/DL016.vue +++ b/src/views/business/comps/template/comps/dl/DL016.vue @@ -11,18 +11,16 @@ - + - - - + + + @@ -49,10 +47,10 @@ import TableOpertaionDelete from "@/components/Template/operation/TableOpertaion export default { name: "DL016", - dicts: [ - 'business_dl_qsxjbltj','business_tjdw','business_nddw' - ], - components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable,TableOpertaionDelete }, + dicts: [ + 'business_dl_qsxjbltj', 'business_tjdw', 'business_nddw' + ], + components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaionDelete }, mixins: [templateMixin], props: { fillType: { @@ -61,13 +59,13 @@ export default { }, }, computed: { - // 表格数据 - tableFormData() { - return { - stepTableFormData: this.formData.stepTableFormData || [], - headerSelectFields: {} - } - }, + // 表格数据 + tableFormData() { + return { + stepTableFormData: this.formData.stepTableFormData || [], + headerSelectFields: {} + } + }, // 备注表单配制 remarkConig() { return [ @@ -132,7 +130,7 @@ export default { } ] }, - // 细胞信息 + // 细胞信息 swypyjInfoFormConfig() { return [ { @@ -142,16 +140,16 @@ export default { label: 'template.dl.dl016.qxbd', type: 'qxbd', fillType: 'actFill', - qxbdType:'DL014', - filledCodes:['bdmc','bdbh'], + qxbdType: 'DL014', + filledCodes: ['bdmc', 'bdbh'], }, - bltj: { + bltj: { label: 'template.dl.dl016.bltj', type: 'select', fillType: 'preFill', options: this.getDictOptions('business_dl_qsxjbltj'), otherCode: 'bltjOther', - showOtherLabel:false + showOtherLabel: false }, } } @@ -166,7 +164,7 @@ export default { bodyType: "input", bodyFillType: "actFill", width: 180, - bodyDisabled: true, + bodyDisabled: true, }, { label: "template.dl.dl016.xybh", @@ -183,20 +181,20 @@ export default { // width: 180, // bodyFillType: "actFill", // bodyMaxlength: 10, - // headerSelectKey: 'qsxjjrldw', - // fillType: "actFill", - // headerOptions: this.getDictOptions('business_nddw'), - // bodyType: 'inputNumber', - label: "template.dl.dl016.qsxjjrl", - prop: 'qsxjjrl', - width: 280, - headerSelectKey: 'qsxjjrldw', - fillType: "preFill", - headerOptions: this.getDictOptions('business_tjdw'), - bodyType: 'inputNumber', - bodyFillType: 'actFill', - copyFrom: 'ysqyl', - compareTo: 'ysqyl', + // headerSelectKey: 'qsxjjrldw', + // fillType: "actFill", + // headerOptions: this.getDictOptions('business_nddw'), + // bodyType: 'inputNumber', + label: "template.dl.dl016.qsxjjrl", + prop: 'qsxjjrl', + width: 280, + headerSelectKey: 'qsxjjrldw', + fillType: "preFill", + headerOptions: this.getDictOptions('business_tjdw'), + bodyType: 'inputNumber', + bodyFillType: 'actFill', + copyFrom: 'ysqyl', + compareTo: 'ysqyl', } ] }, @@ -207,69 +205,69 @@ export default { }; }, methods: { - onRegentSubmit(e) { - const { selectInfo, key, rowIndex } = e - const { row } = selectInfo - if (key === 'qxbd') { - try { - // 解析前序表单的内容 - const bdnr = JSON.parse(row.bdnr) - // 获取剂量组列表数据 - const stepTableFormData = bdnr.jlzTableData || [] + onRegentSubmit(e) { + const { selectInfo, key, rowIndex } = e + const { row } = selectInfo + if (key === 'qxbd') { + try { + // 解析前序表单的内容 + const bdnr = JSON.parse(row.bdnr) + // 获取剂量组列表数据 + const stepTableFormData = bdnr.jlzTableData || [] - if (stepTableFormData.length === 0) { - // 清空当前的换液情况列表数据 - this.$set(this.formData, 'stepTableFormData', []) - this.$message.warning('前序表单中没有剂量组数据') - return - } + if (stepTableFormData.length === 0) { + // 清空当前的换液情况列表数据 + this.$set(this.formData, 'stepTableFormData', []) + this.$message.warning('前序表单中没有剂量组数据') + return + } - // 从剂量组数据中提取剂量组别和悬液编号 - const itemData = stepTableFormData.map(item => ({ - jlzb: item.jlzb || '', // 剂量组别 - xybh: item.xybh || '', // 悬液编号 - qsxjjrl: '', // - })) - // 使用 $set 更新 formData,触发 CustomTable 的响应式更新 - this.$set(this.formData, 'stepTableFormData', itemData) + // 从剂量组数据中提取剂量组别和悬液编号 + const itemData = stepTableFormData.map(item => ({ + jlzb: item.jlzb || '', // 剂量组别 + xybh: item.xybh || '', // 悬液编号 + qsxjjrl: '', // + })) + // 使用 $set 更新 formData,触发 CustomTable 的响应式更新 + this.$set(this.formData, 'stepTableFormData', itemData) - this.$message.success(`已从前序表单加载 ${itemData.length} 条剂量组数据`) - } catch (error) { - console.error('解析前序表单数据失败:', error) - this.$message.error('解析前序表单数据失败') - } - } - }, - //选择table header下拉框也要更新体积 - onHeaderSelectChange(data){ - const {key, headerSelectFields,dataSource=[]} = data; + this.$message.success(`已从前序表单加载 ${itemData.length} 条剂量组数据`) + } catch (error) { + console.error('解析前序表单数据失败:', error) + this.$message.error('解析前序表单数据失败') + } + } + }, + //选择table header下拉框也要更新体积 + onHeaderSelectChange(data) { + const { key, headerSelectFields, dataSource = [] } = data; const keys = [ 'targetStartSolutionVolumeUnit', 'targetDiluentVolumeUnit', 'targetSolutionConcentrationUnit', 'targetSolutionVolumeUnit', ] - if(keys.includes(key)){ - const {targetStartSolution,subTargetStartSolution} = this.$refs.swypyjInfoRef?.getFilledFormData(); + if (keys.includes(key)) { + const { targetStartSolution, subTargetStartSolution } = this.$refs.swypyjInfoRef?.getFilledFormData(); const params = { subTargetStartSolution, headerSelectFields } - this.batchUpdateTargetStartSolutionVolume(dataSource,targetStartSolution,params) + this.batchUpdateTargetStartSolutionVolume(dataSource, targetStartSolution, params) } }, - beforeSaveRecord(data){ + beforeSaveRecord(data) { const formFields = this.$refs.swypyjInfoRef?.getFilledFormData(); - this.onCommonVerifyNdException(formFields,data); + this.onCommonVerifyNdException(formFields, data); }, //获取已填写的表单数据 getFilledFormData() { - return this.getFilledFormDataByRefs(["baseInfoRef", "swypyjInfoRef", "qcxjjyqkTableRef", "stepRef","remarkRef"]) + return this.getFilledFormDataByRefs(["baseInfoRef", "swypyjInfoRef", "qcxjjyqkTableRef", "stepRef", "remarkRef"]) }, //获取填写完成的表单数据 async getFormData() { - let content = await this.validFormFields(["baseInfoRef", "swypyjInfoRef", "qcxjjyqkTableRef", "stepRef","remarkRef"]); - return content; + let content = await this.validFormFields(["baseInfoRef", "swypyjInfoRef", "qcxjjyqkTableRef", "stepRef", "remarkRef"]); + return content; }, getResource() { //使用的试剂、仪器 @@ -292,5 +290,4 @@ export default { } }; - + diff --git a/src/views/business/comps/template/formConfig/sp/SP0020.js b/src/views/business/comps/template/formConfig/sp/SP0020.js index 65749d1..094f1e5 100644 --- a/src/views/business/comps/template/formConfig/sp/SP0020.js +++ b/src/views/business/comps/template/formConfig/sp/SP0020.js @@ -31,14 +31,22 @@ const getOptions = (sn) => { { label: '精密度与准确性', value: '精密度与准确性' }, { label: '检测限', value: '检测限' }, { label: '提取精密度', value: '提取精密度' }, - { label: '提取前样品稳定性', value: '提取前样品稳定性' }, - { label: '提取后样品稳定性', value: '提取后样品稳定性' }, - { label: 'cDNA样品稳定性', value: 'cDNA样品稳定性' }, + { label: '提取前样品冰浴放置稳定性', value: '提取前样品冰浴放置稳定性' }, + { label: '提取前样品反复冻融稳定性', value: '提取前样品反复冻融稳定性' }, + { label: '提取前样品长期冻存稳定性', value: '提取前样品长期冻存稳定性' }, { label: '方法适用性', value: '方法适用性' }, { label: '基因组DNA残留测定', value: '基因组DNA残留测定' }, { label: '稀释线性', value: '稀释线性' }, - { label: '反复动态稳定性', value: '反复动态稳定性' }, - { label: '标准工作液稳定性', value: '标准工作液稳定性' } + { label: '提取前组织样品裂解液中冰浴放置稳定性', value: '提取前组织样品裂解液中冰浴放置稳定性' }, + { label: '标准工作液稳定性', value: '标准工作液稳定性' }, + { label: '提取前组织样品裂解液中反复冻融稳定性', value: '提取前组织样品裂解液中反复冻融稳定性' }, + { label: '提取前组织样品裂解液中长期冻存稳定性', value: '提取前组织样品裂解液中长期冻存稳定性' }, + { label: '提取后样品室温(10~30℃)放置稳定性', value: '提取后样品室温(10~30℃)放置稳定性' }, + { label: '提取后样品2~8℃放置稳定性', value: '提取后样品2~8℃放置稳定性' }, + { label: '提取后样品反复冻融稳定性', value: '提取后样品反复冻融稳定性' }, + { label: '提取后样品长期冻存稳定性', value: '提取后样品长期冻存稳定性' }, + { label: 'cDNA样品室温(10~30℃)放置稳定性', value: 'cDNA样品室温(10~30℃)放置稳定性' }, + { label: 'cDNA样品2~8℃放置稳定性', value: 'cDNA样品2~8℃放置稳定性' } ] }