diff --git a/src/views/business/comps/template/comps/dl/DL007.vue b/src/views/business/comps/template/comps/dl/DL007.vue index 39f6dfd..2e12a9b 100644 --- a/src/views/business/comps/template/comps/dl/DL007.vue +++ b/src/views/business/comps/template/comps/dl/DL007.vue @@ -209,6 +209,7 @@ export default { qxbd: { label: 'template.dl.dl007.qxbd', type: 'qxbd', + qxbdType: 'DL006', fillType: 'actFill', filledCodes: ['bdmc', 'bdbh'] }, @@ -264,10 +265,18 @@ export default { return await this.validFormFields(refNames) }, getResource() { - const stepResource = this.$refs.yqsyTableRef.getStepResource() - // 使用的试剂、仪器 - this.resourceTmp = stepResource.sjResource || [] - this.yqResourceTmp = stepResource.yqResource || [] + const yqsyData = this.$refs.yqsyTableRef?.getFilledFormData() + const yqsyList = yqsyData?.stepTableFormData || [] + + // 从仪器使用信息表格中提取仪器资源 + this.yqResourceTmp = yqsyList + .filter((item) => item.yqbh) + .map((item) => ({ + bh: item.yqbh, + type: 'yq' + })) + + this.resourceTmp = [] return this.resourceTmp }, onRegentSubmit(e) { @@ -283,7 +292,17 @@ export default { this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params) } if (key === 'qxbd') { - this.$refs.czInfoRef.updateFormData('pykssj', row.startDate) + try { + const bdnr = JSON.parse(row.bdnr) + if (bdnr.startDate) { + const formattedDate = moment(bdnr.startDate).format( + 'YYYY/MM/DD HH:mm' + ) + this.$refs.czInfoRef.updateFormData('pykssj', formattedDate) + } + } catch (error) { + console.error('解析前序表单数据失败:', error) + } } }, // 保存 diff --git a/src/views/business/comps/template/comps/dl/DL008.vue b/src/views/business/comps/template/comps/dl/DL008.vue index c8a8972..a75927c 100644 --- a/src/views/business/comps/template/comps/dl/DL008.vue +++ b/src/views/business/comps/template/comps/dl/DL008.vue @@ -220,6 +220,7 @@ export default { prop: 'jlzb', bodyType: 'input', bodyFillType: 'actFill', + disabled: true, width: 100 }, { diff --git a/src/views/business/comps/template/comps/dl/DL009.vue b/src/views/business/comps/template/comps/dl/DL009.vue index da5400b..6cea609 100644 --- a/src/views/business/comps/template/comps/dl/DL009.vue +++ b/src/views/business/comps/template/comps/dl/DL009.vue @@ -198,16 +198,15 @@ export default { { type: 'cellItem', config: { - kssj: { + startDate: { label: 'template.dl.dl009.kssj', type: 'input', disabled: true }, - jssj: { + endDate: { label: 'template.dl.dl009.jssj', type: 'input', - fillType: 'actFill', - maxlength: 200 + disabled: true } } } diff --git a/src/views/business/comps/template/comps/dl/DL014.vue b/src/views/business/comps/template/comps/dl/DL014.vue index 5abe068..85152c2 100644 --- a/src/views/business/comps/template/comps/dl/DL014.vue +++ b/src/views/business/comps/template/comps/dl/DL014.vue @@ -57,6 +57,7 @@ :formData="formData" @select="onSftjs9Change" @clickButton="handleJlzzsButton" + @blur="onJlzInfoBlur" /> @@ -67,6 +68,7 @@ :showAddRow="false" :formData="jlzmcTableFormData" :prefixKey="`jlzmcTable`" + @blur="onJlzmcTableBlur" > @@ -321,14 +323,20 @@ export default { } // 添加剂量组总数字段 - firstStepConfig.jlzzs = { + const jlzzsConfig = { label: 'template.dl.dl014.jlzzs', type: 'inputNumber', - fillType: 'preFill', - subType: 'button', - subKey: 'jlzzsButton', - buttonName: 'template.dl.dl014.qrButton' + fillType: 'preFill' } + + // 只在 preFill 模式下显示确认按钮 + if (this.fillType === 'preFill') { + jlzzsConfig.subType = 'button' + jlzzsConfig.subKey = 'jlzzsButton' + jlzzsConfig.buttonName = 'template.dl.dl014.qrButton' + } + + firstStepConfig.jlzzs = jlzzsConfig return [ { @@ -477,7 +485,9 @@ export default { return { formData: {}, refConf, - isSftjs9Yes: false // 是否添加S9 + isSftjs9Yes: false, // 是否添加S9 + oldJlzzs: null, // 存储旧的剂量组总数 + oldPxpb: null // 存储旧的平行瓶数 } }, mounted() { @@ -486,6 +496,16 @@ export default { this.isSftjs9Yes = this.formData.sftjs9 === '是' || this.formData.sftjs9 === 'Yes' } + + // 初始化剂量组总数的旧值 + if (this.formData.jlzzs) { + this.oldJlzzs = this.formData.jlzzs + } + + // 初始化平行瓶数的旧值 + if (this.formData.pxpb) { + this.oldPxpb = this.formData.pxpb + } }, methods: { // 删除表格行 @@ -533,6 +553,23 @@ export default { return false } + // 额外校验:检查剂量组名称表格和剂量组列表是否为空 + const jlzmcTableData = this.$refs[refConf.jlzmcTable]?.getFilledFormData() + const jlzmcList = jlzmcTableData?.stepTableFormData || [] + + if (jlzmcList.length === 0) { + this.$message.warning('请先生成剂量组名称') + return false + } + + const jlzTableData = this.$refs[refConf.jlzTable]?.getFilledFormData() + const jlzList = jlzTableData?.stepTableFormData || [] + + if (jlzList.length === 0) { + this.$message.warning('请先生成剂量组列表数据') + return false + } + return this.getFilledFormData() }, // 只做校验 @@ -547,7 +584,29 @@ export default { refConf.remark ] - return await this.validFormFields(refsToValidate) + const validFlag = await this.validFormFields(refsToValidate) + if (!validFlag) { + return false + } + + // 额外校验:检查剂量组名称表格和剂量组列表是否为空 + const jlzmcTableData = this.$refs[refConf.jlzmcTable]?.getFilledFormData() + const jlzmcList = jlzmcTableData?.stepTableFormData || [] + + if (jlzmcList.length === 0) { + this.$message.warning('请先生成剂量组名称') + return false + } + + const jlzTableData = this.$refs[refConf.jlzTable]?.getFilledFormData() + const jlzList = jlzTableData?.stepTableFormData || [] + + if (jlzList.length === 0) { + this.$message.warning('请先生成剂量组列表数据') + return false + } + + return true }, getResource() { // 从仪器使用信息表格中提取仪器资源 @@ -603,6 +662,55 @@ export default { this.isSftjs9Yes = value === '是' || value === 'Yes' } }, + // 处理剂量组配制信息的 blur 事件 + onJlzInfoBlur(e) { + const { key, value } = e + + // 当剂量组总数改变时,清空剂量组名称表格数据和剂量组列表数据 + if (key === 'jlzzs') { + // 检查值是否真的改变了 + if (this.oldJlzzs !== null && this.oldJlzzs !== value) { + // 清空剂量组名称表格数据 + this.$set(this.formData, 'jlzmcTableData', []) + // 同时清空剂量组列表数据 + this.$set(this.formData, 'jlzTableData', []) + + this.$message.info('剂量组总数已改变,已清空剂量组名称和剂量组列表数据') + } + + // 更新旧值 + this.oldJlzzs = value + } + + // 当平行瓶数改变时,清空剂量组列表数据 + if (key === 'pxpb') { + // 检查值是否真的改变了 + if (this.oldPxpb !== null && this.oldPxpb !== value) { + // 清空剂量组列表数据 + this.$set(this.formData, 'jlzTableData', []) + + this.$message.info('平行瓶数已改变,已清空剂量组列表数据') + } + + // 更新旧值 + this.oldPxpb = value + } + }, + // 处理剂量组名称表格的 blur 事件 + onJlzmcTableBlur(e) { + const { colKey } = e + + // 当剂量组名称字段改变时,清空剂量组列表数据 + if (colKey === 'jlzzmc') { + // 检查剂量组列表是否有数据 + const jlzTableData = this.formData.jlzTableData || [] + if (jlzTableData.length > 0) { + // 清空剂量组列表数据 + this.$set(this.formData, 'jlzTableData', []) + this.$message.info('剂量组名称已改变,已清空剂量组列表数据') + } + } + }, // 处理剂量组总数确认按钮 handleJlzzsButton(item) { const { subKey } = item || {} @@ -611,8 +719,9 @@ export default { const jlzInfoData = this.$refs[refConf.jlzInfo]?.getFilledFormData() const jlzzs = jlzInfoData?.jlzzs + // 校验剂量组总数是否有值且大于0 if (!jlzzs || jlzzs <= 0) { - this.$message.warning('请先输入剂量组总数') + this.$message.warning('请输入大于0的剂量组总数') return } @@ -631,8 +740,8 @@ export default { } }, // 处理剂量组名称完成按钮 - handleJlzmcComplete() { - // 获取平行瓶数 + async handleJlzmcComplete() { + // 1. 校验平行瓶数 const jlzInfoData = this.$refs[refConf.jlzInfo]?.getFilledFormData() const pxpb = jlzInfoData?.pxpb @@ -641,7 +750,15 @@ export default { return } - // 从 CustomTable ref 获取最新的剂量组名称列表数据 + // 2. 校验剂量组名称表格是否填写完成 + try { + await this.$refs[refConf.jlzmcTable]?.getFormData() + } catch (error) { + this.$message.warning('请完善剂量组名称信息') + return + } + + // 3. 获取剂量组名称列表数据 const jlzmcTableData = this.$refs[refConf.jlzmcTable]?.getFilledFormData() const jlzmcList = jlzmcTableData?.stepTableFormData || [] @@ -650,15 +767,6 @@ export default { return } - // 检查是否所有剂量组名称都已填写 - const emptyNames = jlzmcList.filter( - (item) => !item.jlzzmc || item.jlzzmc.trim() === '' - ) - if (emptyNames.length > 0) { - this.$message.warning('请填写所有剂量组名称') - return - } - // 生成剂量组列表数据 const newRows = [] diff --git a/src/views/business/comps/template/comps/dl/DL015.vue b/src/views/business/comps/template/comps/dl/DL015.vue index a4b6f1e..49623f4 100644 --- a/src/views/business/comps/template/comps/dl/DL015.vue +++ b/src/views/business/comps/template/comps/dl/DL015.vue @@ -342,6 +342,8 @@ export default { const jlzTableData = bdnr.jlzTableData || [] if (jlzTableData.length === 0) { + // 清空当前的换液情况列表数据 + this.$set(this.formData, 'hyqkTableData', []) this.$message.warning('前序表单中没有剂量组数据') return } @@ -364,6 +366,8 @@ export default { this.$message.success(`已从前序表单加载 ${hyqkData.length} 条剂量组数据`) } catch (error) { console.error('解析前序表单数据失败:', error) + // 解析失败时也清空当前的换液情况列表数据 + this.$set(this.formData, 'hyqkTableData', []) this.$message.error('解析前序表单数据失败') } }