diff --git a/src/views/business/comps/template/comps/dl/DL011.vue b/src/views/business/comps/template/comps/dl/DL011.vue index fbf0b59..ac30ab5 100644 --- a/src/views/business/comps/template/comps/dl/DL011.vue +++ b/src/views/business/comps/template/comps/dl/DL011.vue @@ -84,6 +84,7 @@ import TableList from '@/components/Template/Table' import Step from '@/components/Template/Step' import templateMixin from '../../mixins/templateMixin' import moment from 'moment' +import { getLatestSn } from '@/api/template' import { uniqeYqOne, uniqeResource } from '@/utils/calUnitTools' import { EventBus } from '@/utils/eventBus' @@ -213,6 +214,7 @@ export default { subType: 'button', subKey: 'pykssjButton', disabled: true, + subDisabled: false, buttonName: 'template.dl.dl011.pykssjButton' } : { @@ -297,16 +299,19 @@ export default { if (this.fillType !== 'actFill') return const data = this.getFilledFormDataByRefs([refConf.xbxx]) - const { fshxbbhCodeSn } = data || {} + const { fshxbbh, fshxbbhCodeSn } = data || {} // 如果已经有 fshxbbhCodeSn 值,说明是回显数据,不需要重新生成 - if (fshxbbhCodeSn) return + if (fshxbbhCodeSn || !fshxbbh) return - this.$nextTick(() => { - const updateData = {} - const formattedDate = moment().format('YYMMDD') - updateData['fshxbbhCodeSn'] = formattedDate + '-' + '0001' - this.$refs[refConf.xbxx].batchUpdateFormData(updateData) + this.$nextTick(async () => { + try { + const res = await getLatestSn({ pre: fshxbbh, type: 1, count: 1 }) + if (res.code !== 200 || !res.data?.length) return + this.$refs[refConf.xbxx].batchUpdateFormData({ fshxbbhCodeSn: res.data[0] }) + } catch (e) { + this.$message.error('复苏后细胞编号生成失败,请重试') + } }) }, data() { @@ -420,9 +425,6 @@ export default { this.yqResourceTmp = uniqeYqOne(tmpYq, stepResource.yqResource || []) return this.resourceTmp }, - onRegentSubmit(e) { - // 预留方法,如果需要处理试剂提交事件可以在这里添加 - }, // 保存 async onSave() { const formData = this.getStepResource() diff --git a/src/views/business/comps/template/comps/dl/DL012.vue b/src/views/business/comps/template/comps/dl/DL012.vue index 531f5ea..8c27cda 100644 --- a/src/views/business/comps/template/comps/dl/DL012.vue +++ b/src/views/business/comps/template/comps/dl/DL012.vue @@ -49,6 +49,7 @@ import TableList from '@/components/Template/Table' import Step from '@/components/Template/Step' import templateMixin from '../../mixins/templateMixin' import moment from 'moment' +import { getLatestSn } from '@/api/template' import { uniqeYqOne, uniqeResource } from "@/utils/calUnitTools"; import { EventBus } from "@/utils/eventBus"; @@ -198,6 +199,7 @@ export default { xbzbqbh: { label: 'template.dl.dl012.xbzbqbh', type: 'xb', + checkType:"checkbox", fillType: 'actFill' }, zbxbs: { @@ -278,41 +280,7 @@ export default { // 仅在 actFill 时,根据 zbxbs 生成 zbhxbbh_1/2/3... 写入 formData if (this.fillType === 'actFill') { - const data = this.getFilledFormDataByRefs([refConf.xbxx]) - const { zbxbs, zbhxbbh_1 } = data || {} - if (!zbxbs) return - - let count = 1 - try { - count = Number(zbxbs) - } catch (error) { - count = 1 - } - - // 先写入 this.formData,让 xbxxConfig computed 感知到新字段并生成对应表单项 - const updateData = {} - const formattedDate = moment().format('YYMMDD') - for (let index = 1; index <= count; index++) { - const zbhxbbhKey = 'zbhxbbh_' + index - const codeSnKey = 'zbhxbbhCodeSn_' + index - - if (!data[zbhxbbhKey]) { - this.$set(this.formData, zbhxbbhKey, zbhxbbh_1) - updateData[zbhxbbhKey] = zbhxbbh_1 - } - if (!data[codeSnKey]) { - const codeSnVal = formattedDate + '-' + `${index}`.padStart(4, '0') - this.$set(this.formData, codeSnKey, codeSnVal) - updateData[codeSnKey] = codeSnVal - } - } - - // 等配制更新后,同步到子组件的 formFields - if (Object.keys(updateData).length > 0) { - this.$nextTick(() => { - this.$refs[refConf.xbxx].batchUpdateFormData(updateData) - }) - } + this.generateZbhxbbhFields() } }, data() { @@ -322,15 +290,63 @@ export default { } }, methods: { + // 根据 zbxbs 调用接口生成对应数量的制备后细胞编号(已有的不重复生成) + async generateZbhxbbhFields() { + const data = this.getFilledFormDataByRefs([refConf.xbxx]) + const { zbxbs, zbhxbbh_1 } = data || {} + if (!zbxbs || !zbhxbbh_1) return + + const count = Number(zbxbs) || 1 + + // 检查是否已经生成过(所有编号都已存在则跳过) + const allExist = Array.from({ length: count }, (_, i) => `zbhxbbhCodeSn_${i + 1}`) + .every(key => !!data[key]) + if (allExist) return + + try { + const res = await getLatestSn({ pre: zbhxbbh_1, type: 1, count }) + if (res.code !== 200) return + const snArr = res.data + if (!snArr || snArr.length === 0) return + + const updateData = {} + for (let index = 1; index <= count; index++) { + const zbhxbbhKey = 'zbhxbbh_' + index + const codeSnKey = 'zbhxbbhCodeSn_' + index + + // 先写入 formData,让 xbxxConfig computed 感知到新字段并渲染对应表单项 + if (!data[zbhxbbhKey]) { + this.$set(this.formData, zbhxbbhKey, zbhxbbh_1) + updateData[zbhxbbhKey] = zbhxbbh_1 + } + if (!data[codeSnKey]) { + const codeSnVal = snArr[index - 1] || '' + this.$set(this.formData, codeSnKey, codeSnVal) + updateData[codeSnKey] = codeSnVal + } + } + + if (Object.keys(updateData).length > 0) { + this.$nextTick(() => { + this.$refs[refConf.xbxx]?.batchUpdateFormData(updateData) + }) + } + } catch (e) { + this.$message.error('细胞编号生成失败,请重试') + } + }, onTableRegentSubmit(data) { if (data.key === 'xbzbqbh') { - this.$refs.xbxxRef.updateFormData('xbzbqbh_tj', data.selectInfo.row.tj) - this.$refs.xbxxRef.updateFormData('xbzbqbh_dw', data.selectInfo.row.tjdw) + const selectedRows = data.selectInfo?.selectedRows || [] + const firstRow = selectedRows[0] || {} + this.$refs.xbxxRef.updateFormData('xbzbqbh_tj', firstRow.tj) + this.$refs.xbxxRef.updateFormData('xbzbqbh_dw', firstRow.tjdw) } if (data.key === 'pyxbh') { - this.$refs.pyxxRef.updateFormData('pyxbh_mc', data.selectInfo.row.mc) - this.$refs.pyxxRef.updateFormData('pyxbh_xh', data.selectInfo.row.xh) - this.$refs.pyxxRef.updateFormData('pyxbh_jzrq', data.selectInfo.row.jzrq) + const row = data.selectInfo?.row || {} + this.$refs.pyxxRef.updateFormData('pyxbh_mc', row.mc) + this.$refs.pyxxRef.updateFormData('pyxbh_xh', row.xh) + this.$refs.pyxxRef.updateFormData('pyxbh_jzrq', row.jzrq) } //通知后端保存数据 const params = { @@ -425,9 +441,6 @@ export default { this.yqResourceTmp = uniqeYqOne(tmpYq, stepResource.yqResource || []) return this.resourceTmp; }, - onRegentSubmit(e) { - // 预留方法,如果需要处理试剂提交事件可以在这里添加 - }, // 保存 async onSave() { const formData = this.getStepResource()