diff --git a/src/lang/en/template/dl.js b/src/lang/en/template/dl.js
index 697f361..1f4b018 100644
--- a/src/lang/en/template/dl.js
+++ b/src/lang/en/template/dl.js
@@ -78,7 +78,7 @@ export default {
pykssj: 'Cultivation Start Time',
pyjssj: 'Cultivation End Time',
jsButton: 'End',
- yqsyxxEmpty: 'Please add instrument usage information first'
+ yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting'
},
dl008: {
...common,
@@ -89,8 +89,8 @@ export default {
jzbh2: 'Strain Number',
jzbh3: 'Strain Number',
jzbh4: 'Strain Number',
- yqsyxxEmpty: 'Instrument usage information cannot be empty',
- cxqkEmpty: 'Imaging status cannot be empty'
+ yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting',
+ cxqkEmpty: 'Imaging status has not been filled in, please fill in before submitting'
},
dl009: {
...common,
@@ -107,8 +107,8 @@ export default {
czqkDesc: 'Precipitation codes: "P-" = "None"; "P+" = "Slight"; "P++" = "Moderate"; "P+++" = "Severe".',
bjjtDesc: 'Background lawn codes: "N" = "Normal"; "R1" = "Weak, lawn covers 70%-90% of plate area"; "R2" = "Medium, lawn covers 40%-70% of plate area"; "R3" = "Strong, lawn covers 10%-40% of plate area"; "A" = "Absent, no lawn on plate"; "O" = "Precipitation present, affecting lawn assessment";',
jlsDesc: 'Colony count special case: "*" indicates pinpoint colonies visible on plate;',
- yqsyxxEmpty: 'Instrument usage information cannot be empty',
- jgxxEmpty: 'Result information cannot be empty'
+ yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting',
+ jgxxEmpty: 'Result information has not been filled in, please fill in before submitting'
},
dl010: {
...common,
@@ -194,7 +194,9 @@ export default {
zxg: 'Lower Left Grid (cells)',
yxg: 'Lower Right Grid (cells)',
cdxxTime: 'Time {index}',
- addCdxx: 'Add'
+ addCdxx: 'Add',
+ yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting',
+ cdxxEmpty: 'Measurement information has not been filled in, please fill in before submitting'
},
dl014: {
...common,
@@ -221,7 +223,8 @@ export default {
sjgspjrl: 'Actual Test Article Volume',
gyhzqk: 'Post-dose Status',
qrButton: 'Confirm',
- wcButton: 'Complete'
+ wcButton: 'Complete',
+ yqsyxxEmpty: 'Instrument usage information has not been filled in, please fill in before submitting'
},
dl015: {
...common,
diff --git a/src/lang/zh/template/dl.js b/src/lang/zh/template/dl.js
index c763d74..d1795d0 100644
--- a/src/lang/zh/template/dl.js
+++ b/src/lang/zh/template/dl.js
@@ -81,7 +81,7 @@ export default {
pykssj: '培养开始时间',
pyjssj: '培养结束时间',
jsButton: '结束',
- yqsyxxEmpty: '请先添加仪器使用信息'
+ yqsyxxEmpty: '仪器使用信息还未填写,请填写后再提交'
},
dl008: {
...common,
@@ -92,8 +92,8 @@ export default {
jzbh2: '菌种编号',
jzbh3: '菌种编号',
jzbh4: '菌种编号',
- yqsyxxEmpty: '仪器使用信息不能为空',
- cxqkEmpty: '成像情况不能为空'
+ yqsyxxEmpty: '仪器使用信息还未填写,请填写后再提交',
+ cxqkEmpty: '成像情况还未填写,请填写后再提交'
},
dl009: {
...common,
@@ -110,8 +110,8 @@ export default {
czqkDesc: '沉淀量以代码填入:"P-" 代表 "无沉淀";"P+" 代表 "少量";"P++" 代表 "中等";"P+++" 代表 "严重"。',
bjjtDesc: '背景菌苔以代码填入:"N" 代表 "正常";"R1" 代表 "弱,菌苔约占平皿面积 70%-90%";"R2" 代表 "中,菌苔约占平皿面积 40%-70%";"R3" 代表 "强,菌苔约占平皿面积 10%-40%";"A" 代表 "消失,平皿上无菌苔";"O" 代表 "产生沉淀,影响背景菌苔判断";',
jlsDesc: '菌落数特殊情况:"*" 该平皿可见针尖样菌落;',
- yqsyxxEmpty: '仪器使用信息不能为空',
- jgxxEmpty: '结果信息不能为空'
+ yqsyxxEmpty: '仪器使用信息还未填写,请填写后再提交',
+ jgxxEmpty: '结果信息还未填写,请填写后再提交'
},
dl010: {
...common,
@@ -198,8 +198,8 @@ export default {
yxg: '右下格(个)',
cdxxTime: '第{index}次',
addCdxx: '新增',
- yqsyxxEmpty: '仪器使用信息不能为空,请添加后再提交',
- cdxxEmpty: '测定信息不能为空,请添加后再提交'
+ yqsyxxEmpty: '仪器使用信息还未填写,请填写后再提交',
+ cdxxEmpty: '测定信息还未填写,请填写后再提交'
},
dl014: {
...common,
@@ -227,7 +227,7 @@ export default {
gyhzqk: '给药后状态情况',
qrButton: '确认',
wcButton: '完成',
- yqsyxxEmpty: '仪器使用信息不能为空,请添加后再提交'
+ yqsyxxEmpty: '仪器使用信息还未填写,请填写后再提交'
},
dl015: {
...common,
diff --git a/src/views/business/comps/template/comps/dl/DL007.vue b/src/views/business/comps/template/comps/dl/DL007.vue
index 934a213..4b8e0a7 100644
--- a/src/views/business/comps/template/comps/dl/DL007.vue
+++ b/src/views/business/comps/template/comps/dl/DL007.vue
@@ -142,7 +142,8 @@ export default {
type: 'select',
options: this.getDictOptions('business_sydd'),
fillType: 'actFill',
- otherCode: 'syddOther'
+ otherCode: 'syddOther',
+ otherMaxlength: 50
}
}
},
@@ -223,8 +224,9 @@ export default {
label: 'template.dl.dl007.pyjssj',
type: 'input',
fillType: 'actFill',
- maxlength: 200,
subType: 'button',
+ disabled: true,
+ subDisabled: this.fillType !== 'actFill',
subKey: 'pyjssjButton',
buttonName: 'template.dl.dl007.jsButton'
}
diff --git a/src/views/business/comps/template/comps/dl/DL008.vue b/src/views/business/comps/template/comps/dl/DL008.vue
index 0441972..75d9c66 100644
--- a/src/views/business/comps/template/comps/dl/DL008.vue
+++ b/src/views/business/comps/template/comps/dl/DL008.vue
@@ -155,6 +155,7 @@ export default {
options: this.getDictOptions('business_dl_ameswrqk'),
fillType: 'actFill',
otherCode: 'cxqkwrqkOther',
+ otherMaxlength:200,
showOtherLabel: false
}
}
@@ -307,14 +308,20 @@ export default {
const headerSelectFields = this.formData.headerSelectFields || {}
// 如果没有数据或已经加载过,不处理
- if (!stepTableFormData_1 || stepTableFormData_1.length === 0 || this.isDataLoaded) {
+ if (
+ !stepTableFormData_1 ||
+ stepTableFormData_1.length === 0 ||
+ this.isDataLoaded
+ ) {
return
}
// 从第一行数据中提取列信息(查找 jzbh 开头的 Label 字段)
const firstRow = stepTableFormData_1[0]
- const labelKeys = Object.keys(firstRow).filter(key => key.match(/^jzbh\d+Label$/))
-
+ const labelKeys = Object.keys(firstRow).filter((key) =>
+ key.match(/^jzbh\d+Label$/)
+ )
+
if (labelKeys.length === 0) {
return
}
@@ -335,7 +342,7 @@ export default {
// 从 headerSelectFields 生成表头
labelKeys.sort().forEach((labelKey, index) => {
const colIndex = index + 1
-
+
// 收集该列的所有 headerSelectFields 值(如 1_1, 1_2, 1_3)
const headerValues = []
let rowIndex = 1
@@ -343,10 +350,11 @@ export default {
headerValues.push(headerSelectFields[`${colIndex}_${rowIndex}`])
rowIndex++
}
-
+
// 将多个值用空格拼接,如果没有则使用默认值
- const headerLabel = headerValues.length > 0 ? headerValues.join(' ') : `菌种${colIndex}`
-
+ const headerLabel =
+ headerValues.length > 0 ? headerValues.join(' ') : `菌种${colIndex}`
+
dynamicColumns.push({
label: headerLabel,
prop: `jzbh${colIndex}`,
@@ -382,19 +390,19 @@ export default {
//获取已填写的表单数据
getFilledFormData() {
const baseData = this.getFilledFormDataByRefs(refNames)
-
+
// 从成像情况表格中获取最新数据
const cxqkTableRef = this.$refs[refConf.cxqk]
if (cxqkTableRef) {
const cxqkData = cxqkTableRef.getFilledFormData()
baseData.stepTableFormData_1 = cxqkData.stepTableFormData || []
}
-
+
// 确保 headerSelectFields 被包含在返回的数据中
if (this.formData.headerSelectFields) {
baseData.headerSelectFields = this.formData.headerSelectFields
}
-
+
return baseData
},
//获取填写完成的表单数据
@@ -404,24 +412,25 @@ export default {
},
//只做校验
async validFields() {
- // 1. 校验仪器使用信息表格是否为空(只在 actFill 时校验)
+ // 只在 actFill 时校验表格是否为空
if (this.fillType === 'actFill') {
+ // 1. 校验仪器使用信息表格是否为空
const yqsyTableRef = this.$refs[refConf.yqsy]
const yqsyTableData = yqsyTableRef?.getDataSource() || []
-
+
if (yqsyTableData.length === 0) {
this.$message.warning(this.$t('template.dl.dl008.yqsyxxEmpty'))
return Promise.reject(this.$t('template.dl.dl008.yqsyxxEmpty'))
}
- }
- // 2. 校验成像情况表格是否为空
- const cxqkTableRef = this.$refs[refConf.cxqk]
- const cxqkTableData = cxqkTableRef?.getDataSource() || []
-
- if (cxqkTableData.length === 0) {
- this.$message.warning(this.$t('template.dl.dl008.cxqkEmpty'))
- return Promise.reject(this.$t('template.dl.dl008.cxqkEmpty'))
+ // 2. 校验成像情况表格是否为空
+ const cxqkTableRef = this.$refs[refConf.cxqk]
+ const cxqkTableData = cxqkTableRef?.getDataSource() || []
+
+ if (cxqkTableData.length === 0) {
+ this.$message.warning(this.$t('template.dl.dl008.cxqkEmpty'))
+ return Promise.reject(this.$t('template.dl.dl008.cxqkEmpty'))
+ }
}
// 3. 执行其他表单字段校验
@@ -457,7 +466,7 @@ export default {
this.handleCxqkQxbdSelect(row)
}
},
-
+
// 处理仪器编号选择
handleYqbhSelect(row, rowIndex) {
const params = {
@@ -467,15 +476,15 @@ export default {
}
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params)
},
-
+
// 处理成像情况前序表单选择
handleCxqkQxbdSelect(row) {
// 重置加载标记,允许重新加载数据
this.isDataLoaded = false
-
+
try {
const bdnr = JSON.parse(row.bdnr)
-
+
const headerFields = bdnr.headerFields || {}
const stepTableFormData_1 = bdnr.stepTableFormData_1 || []
@@ -493,7 +502,10 @@ export default {
}
// 2. 生成表格数据
- const tableData = this.generateTableData(stepTableFormData_1, dynamicColumns.columnKeys)
+ const tableData = this.generateTableData(
+ stepTableFormData_1,
+ dynamicColumns.columnKeys
+ )
if (tableData.length === 0) {
this.clearCxqkTable()
return
@@ -501,18 +513,17 @@ export default {
// 3. 更新表格
this.updateCxqkTable(dynamicColumns.columns, tableData, headerFields)
-
} catch (error) {
console.error('解析前序表单数据失败:', error)
this.clearCxqkTable()
}
},
-
+
// 生成动态列配置
generateDynamicColumns(headerFields) {
// 获取所有以 _1 结尾的 key,这些代表列的索引
const columnKeys = Object.keys(headerFields)
- .filter(key => key.endsWith('_1'))
+ .filter((key) => key.endsWith('_1'))
.sort((a, b) => parseInt(a.split('_')[0]) - parseInt(b.split('_')[0]))
if (columnKeys.length === 0) {
@@ -534,7 +545,7 @@ export default {
columnKeys.forEach((key, index) => {
const colIndex = index + 1
const baseColIndex = key.split('_')[0] // 获取列索引,如 "1_1" -> "1"
-
+
// 收集该列的所有 headerFields 值(如 1_1, 1_2, 1_3)
const headerValues = []
let rowIndex = 1
@@ -542,10 +553,10 @@ export default {
headerValues.push(headerFields[`${baseColIndex}_${rowIndex}`])
rowIndex++
}
-
+
// 将多个值用空格拼接
const headerLabel = headerValues.join(' ')
-
+
columns.push({
label: headerLabel,
prop: `jzbh${colIndex}`,
@@ -558,42 +569,42 @@ export default {
return { columns, columnKeys }
},
-
+
// 生成表格数据
generateTableData(stepTableFormData_1, columnKeys) {
const tableData = []
-
+
stepTableFormData_1.forEach((item) => {
const rowData = { jlzb: item.jlzb || '' }
-
+
columnKeys.forEach((_key, index) => {
const colIndex = index + 1
const valueKey = `jzbh${colIndex}`
-
+
// 从 DL006 生成的数据中获取 label 值
// DL006 使用的字段名格式是 czrxm_${index}Label
const labelValue = item[`czrxm_${index}Label`] || ''
-
+
rowData[`${valueKey}Label`] = labelValue
rowData[valueKey] = '' // 空字符串表示初始未填写,不会触发修改确认框
})
-
+
tableData.push(rowData)
})
return tableData
},
-
+
// 更新成像情况表格
updateCxqkTable(columns, tableData, headerFields) {
// 更新动态列配置
this.dynamicCxqkColumns = columns
-
+
// 保存 headerFields 到 formData,用于数据回显
if (!this.formData.headerSelectFields) {
this.$set(this.formData, 'headerSelectFields', {})
}
- Object.keys(headerFields).forEach(key => {
+ Object.keys(headerFields).forEach((key) => {
this.$set(this.formData.headerSelectFields, key, headerFields[key])
})
@@ -602,19 +613,21 @@ export default {
if (tableRef) {
// 更新表格数据
tableRef.updateDataSource(tableData)
-
+
// 将 oldLocalDataSource 设置为当前数据的副本
// 这样初始加载时不会触发修改确认框,但后续修改会正常触发
this.$nextTick(() => {
- tableRef.oldLocalDataSource = JSON.parse(JSON.stringify(tableRef.localDataSource))
+ tableRef.oldLocalDataSource = JSON.parse(
+ JSON.stringify(tableRef.localDataSource)
+ )
})
}
-
+
this.$set(this.formData, 'stepTableFormData_1', tableData)
this.isDataLoaded = true
})
},
-
+
// 清空成像情况表格
clearCxqkTable() {
this.dynamicCxqkColumns = []
diff --git a/src/views/business/comps/template/comps/dl/DL009.vue b/src/views/business/comps/template/comps/dl/DL009.vue
index 6f8f362..b381fc8 100644
--- a/src/views/business/comps/template/comps/dl/DL009.vue
+++ b/src/views/business/comps/template/comps/dl/DL009.vue
@@ -339,20 +339,24 @@ export default {
const headerSelectFields = this.formData.headerSelectFields || {}
// 如果没有数据或已经加载过,不处理
- if (!stepTableFormData_1 || stepTableFormData_1.length === 0 || this.isDataLoaded) {
+ if (
+ !stepTableFormData_1 ||
+ stepTableFormData_1.length === 0 ||
+ this.isDataLoaded
+ ) {
return
}
// 从第一行数据中提取列信息(查找 jzbh 开头的字段,不包括 Label)
const firstRow = stepTableFormData_1[0]
const jzbhKeys = Object.keys(firstRow)
- .filter(key => key.match(/^jzbh\d+$/) && !key.endsWith('Label'))
+ .filter((key) => key.match(/^jzbh\d+$/) && !key.endsWith('Label'))
.sort((a, b) => {
const numA = parseInt(a.replace('jzbh', ''))
const numB = parseInt(b.replace('jzbh', ''))
return numA - numB
})
-
+
if (jzbhKeys.length === 0) {
return
}
@@ -373,10 +377,11 @@ export default {
// 从 headerSelectFields 生成表头
jzbhKeys.forEach((_jzbhKey, index) => {
const colIndex = index + 1
-
+
// 只获取第一个 headerSelectFields 值作为菌种编号(如 T-A02)
- const jzbhLabel = headerSelectFields[`${colIndex}_1`] || `菌种${colIndex}`
-
+ const jzbhLabel =
+ headerSelectFields[`${colIndex}_1`] || `菌种${colIndex}`
+
// 为每个菌种编号添加四列:菌种编号、沉淀情况、背景菌苔、菌落数
dynamicColumns.push({
label: jzbhLabel,
@@ -418,15 +423,19 @@ export default {
// 更新动态列配置
this.dynamicJgxxColumns = dynamicColumns
-
+
// 保存 headerSelectFields 到 formData.headerSelectFields(确保数据一致)
if (!this.formData.headerSelectFields) {
this.$set(this.formData, 'headerSelectFields', {})
}
Object.keys(headerSelectFields).forEach((key) => {
- this.$set(this.formData.headerSelectFields, key, headerSelectFields[key])
+ this.$set(
+ this.formData.headerSelectFields,
+ key,
+ headerSelectFields[key]
+ )
})
-
+
this.isDataLoaded = true
// 等待列配置更新后,更新表格数据
@@ -434,11 +443,13 @@ export default {
const tableRef = this.$refs[refConf.jgxx]
if (tableRef) {
tableRef.updateDataSource(stepTableFormData_1)
-
+
// 将 oldLocalDataSource 设置为当前数据的副本
// 这样初始加载时不会触发修改确认框,但后续修改会正常触发
this.$nextTick(() => {
- tableRef.oldLocalDataSource = JSON.parse(JSON.stringify(tableRef.localDataSource))
+ tableRef.oldLocalDataSource = JSON.parse(
+ JSON.stringify(tableRef.localDataSource)
+ )
})
}
})
@@ -450,7 +461,7 @@ export default {
initializeYqsyTableFromFormData() {
try {
const stepTableFormData = this.formData.stepTableFormData
-
+
if (!stepTableFormData || stepTableFormData.length === 0) {
return
}
@@ -459,10 +470,12 @@ export default {
const tableRef = this.$refs[refConf.yqsy]
if (tableRef) {
tableRef.updateDataSource(stepTableFormData)
-
+
// 将 oldLocalDataSource 设置为当前数据的副本
this.$nextTick(() => {
- tableRef.oldLocalDataSource = JSON.parse(JSON.stringify(tableRef.localDataSource))
+ tableRef.oldLocalDataSource = JSON.parse(
+ JSON.stringify(tableRef.localDataSource)
+ )
})
}
})
@@ -473,7 +486,7 @@ export default {
// 获取已填写的表单数据
getFilledFormData() {
const baseData = this.getFilledFormDataByRefs(refNames)
-
+
// 从仪器使用信息表格中获取最新数据
const yqsyTableRef = this.$refs[refConf.yqsy]
if (yqsyTableRef) {
@@ -481,7 +494,7 @@ export default {
// 仪器使用信息保存到 stepTableFormData(与后端保存的字段名一致)
baseData.stepTableFormData = yqsyData.stepTableFormData || []
}
-
+
// 从结果信息表格中获取最新数据
const jgxxTableRef = this.$refs[refConf.jgxx]
if (jgxxTableRef) {
@@ -489,46 +502,47 @@ export default {
// 结果信息保存到 stepTableFormData_1(与后端保存的字段名一致)
baseData.stepTableFormData_1 = jgxxData.stepTableFormData || []
}
-
+
// 确保 headerSelectFields 被包含在返回的数据中
if (this.formData.headerSelectFields) {
baseData.headerSelectFields = this.formData.headerSelectFields
}
-
+
return baseData
},
// 获取填写完成的表单数据
async getFormData() {
// 先执行自定义校验(包括表格非空校验)
const validResult = await this.validFields()
-
+
// 如果校验通过,返回完整的表单数据(包括 headerSelectFields)
if (validResult) {
return this.getFilledFormData()
}
-
+
return validResult
},
// 只做校验
async validFields() {
- // 1. 校验仪器使用信息表格是否为空(只在 actFill 时校验)
+ // 表格是否为空只在 actFill 时校验
if (this.fillType === 'actFill') {
+ // 1. 校验仪器使用信息表格是否为空
const yqsyTableRef = this.$refs[refConf.yqsy]
const yqsyTableData = yqsyTableRef?.getDataSource() || []
-
+
if (yqsyTableData.length === 0) {
this.$message.warning(this.$t('template.dl.dl009.yqsyxxEmpty'))
return Promise.reject(this.$t('template.dl.dl009.yqsyxxEmpty'))
}
- }
- // 2. 校验结果信息表格是否为空
- const jgxxTableRef = this.$refs[refConf.jgxx]
- const jgxxTableData = jgxxTableRef?.getDataSource() || []
-
- if (jgxxTableData.length === 0) {
- this.$message.warning(this.$t('template.dl.dl009.jgxxEmpty'))
- return Promise.reject(this.$t('template.dl.dl009.jgxxEmpty'))
+ // 2. 校验结果信息表格是否为空
+ const jgxxTableRef = this.$refs[refConf.jgxx]
+ const jgxxTableData = jgxxTableRef?.getDataSource() || []
+
+ if (jgxxTableData.length === 0) {
+ this.$message.warning(this.$t('template.dl.dl009.jgxxEmpty'))
+ return Promise.reject(this.$t('template.dl.dl009.jgxxEmpty'))
+ }
}
// 3. 执行其他表单字段校验
@@ -566,28 +580,44 @@ export default {
// 处理结果信息前序表单选择
if (key === 'jgxxQxbd') {
// 在处理前序表单之前,先保存当前的仪器使用信息和表头数据
- const currentYqsyData = this.formData.stepTableFormData ? JSON.parse(JSON.stringify(this.formData.stepTableFormData)) : []
- const currentHeaderFields = this.formData.headerSelectFields ? JSON.parse(JSON.stringify(this.formData.headerSelectFields)) : {}
-
+ const currentYqsyData = this.formData.stepTableFormData
+ ? JSON.parse(JSON.stringify(this.formData.stepTableFormData))
+ : []
+ const currentHeaderFields = this.formData.headerSelectFields
+ ? JSON.parse(JSON.stringify(this.formData.headerSelectFields))
+ : {}
+
// 使用 $nextTick 确保在下一个 tick 中恢复数据
this.$nextTick(() => {
this.handleJgxxQxbdSelect(row)
-
+
// 再次使用 $nextTick 确保在 handleJgxxQxbdSelect 完成后恢复数据
this.$nextTick(() => {
- if (currentYqsyData.length > 0 && (!this.formData.stepTableFormData || this.formData.stepTableFormData.length === 0)) {
+ if (
+ currentYqsyData.length > 0 &&
+ (!this.formData.stepTableFormData ||
+ this.formData.stepTableFormData.length === 0)
+ ) {
this.$set(this.formData, 'stepTableFormData', currentYqsyData)
-
+
// 同时更新表格显示
const yqsyTableRef = this.$refs[refConf.yqsy]
if (yqsyTableRef) {
yqsyTableRef.updateDataSource(currentYqsyData)
}
}
-
+
// 如果当前表头数据为空,恢复之前的表头数据
- if (Object.keys(currentHeaderFields).length > 0 && (!this.formData.headerSelectFields || Object.keys(this.formData.headerSelectFields).length === 0)) {
- this.$set(this.formData, 'headerSelectFields', currentHeaderFields)
+ if (
+ Object.keys(currentHeaderFields).length > 0 &&
+ (!this.formData.headerSelectFields ||
+ Object.keys(this.formData.headerSelectFields).length === 0)
+ ) {
+ this.$set(
+ this.formData,
+ 'headerSelectFields',
+ currentHeaderFields
+ )
}
})
})
@@ -791,9 +821,9 @@ export default {
if (this.dynamicJgxxColumns.length === 0) {
return
}
-
+
// 遍历动态列配置,更新 select 类型的 bodyOptions
- this.dynamicJgxxColumns.forEach(col => {
+ this.dynamicJgxxColumns.forEach((col) => {
if (col.bodyType === 'select') {
if (col.prop.startsWith('czqk')) {
col.bodyOptions = this.getDictOptions('business_dl_amescdqk')
diff --git a/src/views/business/comps/template/comps/dl/DL010.vue b/src/views/business/comps/template/comps/dl/DL010.vue
index a8414ba..8630aef 100644
--- a/src/views/business/comps/template/comps/dl/DL010.vue
+++ b/src/views/business/comps/template/comps/dl/DL010.vue
@@ -173,6 +173,7 @@ export default {
type: 'select',
options: this.getDictOptions('business_dwzs'),
fillType: 'preFill',
+ otherMaxlength: 50,
otherCode: 'dwzsOther'
}
}
@@ -210,6 +211,7 @@ export default {
type: 'select',
options: this.getDictOptions('business_cjbw'),
fillType: 'preFill',
+ otherMaxlength: 50,
otherCode: 'cjbwOther'
}
}
@@ -479,16 +481,16 @@ export default {
// 使用的试剂、仪器
this.resourceTmp = sjxxStepResource.sjResource || []
this.yqResourceTmp = sjxxStepResource.yqResource || []
-
+
// 获取采集信息表格数据
const sjxxTableData = this.$refs.sjxxTableRef?.getFilledFormData()
const sjxxList = sjxxTableData?.stepTableFormData || []
const headerSelectFields = sjxxTableData?.headerSelectFields || {}
-
+
// 提取实际0.9%氯化钠注射液加入量和实际加入血清的数据
// 转换为标准资源格式
const sjxxResource = []
-
+
sjxxList.forEach((item) => {
// 实际0.9%氯化钠注射液加入量
if (item.sjlhnzsjyjrl) {
@@ -510,7 +512,7 @@ export default {
yxzqdw: null // 有效期单位
})
}
-
+
// 实际加入血清
if (item.sjjrxq) {
sjxxResource.push({
@@ -532,7 +534,7 @@ export default {
})
}
})
-
+
// 将采集信息数据添加到资源列表中
return [...this.resourceTmp, ...sjxxResource]
},
diff --git a/src/views/business/comps/template/comps/dl/DL011.vue b/src/views/business/comps/template/comps/dl/DL011.vue
index f0c354b..3e116c6 100644
--- a/src/views/business/comps/template/comps/dl/DL011.vue
+++ b/src/views/business/comps/template/comps/dl/DL011.vue
@@ -198,6 +198,8 @@ export default {
fillType: 'actFill',
subType: 'button',
subKey: 'pykssjButton',
+ subDisabled: this.fillType !== 'actFill',
+ disabled: true,
buttonName: 'template.dl.dl011.pykssjButton'
}
}
@@ -214,7 +216,8 @@ export default {
type: 'select',
options: this.getDictOptions('business_dl_xbmc'),
fillType: 'preFill',
- otherCode: 'xbmcOther'
+ otherCode: 'xbmcOther',
+ otherMaxlength: 50
},
xbdcbh: {
label: 'template.dl.dl011.xbdcbh',
@@ -248,8 +251,7 @@ export default {
copyFrom: 'fshxbyjtj',
compareTo: 'fshxbyjtj',
subOptions: this.getDictOptions('business_nddw'),
- maxlength: 10,
- copyFrom: 'fshxbyjtj' //复制哪个字段
+ maxlength: 10
}
}
}
@@ -257,12 +259,35 @@ export default {
}
},
mounted() {
+ // 获取数据检查 pytjText 是否已有值
+ const pyxxData = this.getFilledFormDataByRefs([refConf.pyxx])
+ const { pytjText } = pyxxData || {}
+
+ // 只有在 pytjText 无值时才设置,避免重复设置
+ if (!pytjText) {
+ this.$nextTick(() => {
+ this.$refs[refConf.pyxx]?.updateFormData(
+ 'pytjText',
+ '培养条件:温度为温度为37℃±2℃,CO2浓度为5%±0.5%',
+ { isUpdateRecord: false, signData: null }
+ )
+ })
+ }
+
+ // 只在实际填报模式下生成编号
+ if (this.fillType !== 'actFill') return
+
+ const data = this.getFilledFormDataByRefs([refConf.xbxx])
+ const { fshxbbhCodeSn } = data || {}
+
+ // 如果已经有 fshxbbhCodeSn 值,说明是回显数据,不需要重新生成
+ if (fshxbbhCodeSn) return
+
this.$nextTick(() => {
- this.$refs[refConf.pyxx]?.updateFormData(
- 'pytjText',
- '培养条件:温度为温度为37℃±2℃,CO2浓度为5%±0.5%',
- { isUpdateRecord: false, signData: null }
- )
+ const updateData = {}
+ const formattedDate = moment().format('YYMMDD')
+ updateData['fshxbbhCodeSn'] = formattedDate + '-' + '0001'
+ this.$refs[refConf.xbxx].batchUpdateFormData(updateData)
})
},
data() {
@@ -301,28 +326,30 @@ export default {
// 使用的试剂、仪器(来自复苏步骤)
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = [...(stepResource.yqResource || [])]
-
+
// 获取细胞信息
const xbxxData = this.$refs.xbxxRef?.getFilledFormData() || {}
-
+
// 如果选择了细胞冻存编号,添加到细胞细菌信息中
if (xbxxData.xbdcbh) {
const xbInfo = xbxxData.selectInfo_xbdcbh || {}
// 细胞信息格式:不包含 type 字段(参考 StepFormPackage 中 xb 类型的处理)
- this.xbxjTmp = [{
- value: xbxxData.xbdcbh,
- bh: xbInfo.bh || xbxxData.xbdcbh,
- mc: xbInfo.mc || '',
- xh: xbInfo.xh || '',
- jzrq: xbInfo.jzrq || ''
- }]
+ this.xbxjTmp = [
+ {
+ value: xbxxData.xbdcbh,
+ bh: xbInfo.bh || xbxxData.xbdcbh,
+ mc: xbInfo.mc || '',
+ xh: xbInfo.xh || '',
+ jzrq: xbInfo.jzrq || ''
+ }
+ ]
} else {
this.xbxjTmp = []
}
-
+
// 获取培养信息
const pyxxData = this.$refs.pyxxRef?.getFilledFormData() || {}
-
+
// 如果选择了培养箱编号,添加到仪器信息中
if (pyxxData.pyxbh) {
const pyxInfo = pyxxData.selectInfo_pyxbh || {}
@@ -336,7 +363,7 @@ export default {
jzrq: pyxInfo.jzrq || ''
})
}
-
+
return this.resourceTmp
},
onRegentSubmit(e) {
diff --git a/src/views/business/comps/template/comps/dl/DL012.vue b/src/views/business/comps/template/comps/dl/DL012.vue
index ea9538f..30429dd 100644
--- a/src/views/business/comps/template/comps/dl/DL012.vue
+++ b/src/views/business/comps/template/comps/dl/DL012.vue
@@ -194,6 +194,8 @@ export default {
fillType: 'actFill',
subType: 'button',
subKey: 'pykssjButton',
+ disabled: true,
+ subDisabled: this.fillType !== 'actFill',
buttonName: 'template.dl.dl012.pykssjButton'
}
}
@@ -271,30 +273,49 @@ export default {
}
},
mounted() {
- this.$nextTick(() => {
- this.$refs[refConf.pyxx]?.updateFormData(
- 'pytjText',
- '培养条件:温度为温度为37℃±2℃,CO2浓度为5%±0.5%',
- { isUpdateRecord: false, signData: null }
- )
- })
- const data = this.getFilledFormDataByRefs([refConf.xbxx, refConf.base])
- console.log(data)
- const { zbxbs, zbhxbbh_1, startDate } = data || {}
+ console.log(this.fillType, '===>fillType')
+
+ // 获取数据检查 pytjText 是否已有值
+ const pyxxData = this.getFilledFormDataByRefs([refConf.pyxx])
+ const { pytjText } = pyxxData || {}
+
+ // 只有在 pytjText 无值时才设置,避免重复设置
+ if (!pytjText) {
+ this.$nextTick(() => {
+ this.$refs[refConf.pyxx]?.updateFormData(
+ 'pytjText',
+ '培养条件:温度为温度为37℃±2℃,CO2浓度为5%±0.5%',
+ { isUpdateRecord: false, signData: null }
+ )
+ })
+ }
+
+ // 只在实际填报模式下生成编号
+ const data = this.getFilledFormDataByRefs([refConf.xbxx])
+ const { zbxbs, zbhxbbh_1 } = data || {}
if (!zbxbs) return
try {
this.zbxbs = Number(zbxbs)
} catch (error) {
this.zbxbs = 1
}
+ if (this.fillType !== 'actFill') return
this.$nextTick(() => {
const updateData = {}
- // Convert startDate from "2026-03-07 14:02:15" to "260307" (YYMMDD)
- const formattedDate = startDate ? moment(startDate).format('YYMMDD') : ''
+ // 使用当前时间生成编号
+ const formattedDate = moment().format('YYMMDD')
for (let index = 1; index <= this.zbxbs; index++) {
- updateData['zbhxbbh_' + index] = zbhxbbh_1
- updateData['zbhxbbhCodeSn_' + index] =
- formattedDate + '-' + `${index}`.padStart(2, '0')
+ const zbhxbbhKey = 'zbhxbbh_' + index
+ const codeSnKey = 'zbhxbbhCodeSn_' + index
+
+ // 分别判断每个字段,只有无值时才设置
+ if (!data[zbhxbbhKey]) {
+ updateData[zbhxbbhKey] = zbhxbbh_1
+ }
+ if (!data[codeSnKey]) {
+ updateData[codeSnKey] =
+ formattedDate + '-' + `${index}`.padStart(4, '0')
+ }
}
this.$refs[refConf.xbxx].batchUpdateFormData(updateData)
})
@@ -339,28 +360,30 @@ export default {
// 使用的试剂、仪器(来自制备步骤)
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = [...(stepResource.yqResource || [])]
-
+
// 获取细胞信息
const xbxxData = this.$refs.xbxxRef?.getFilledFormData() || {}
-
+
// 如果选择了细胞制备前编号,添加到细胞细菌信息中
if (xbxxData.xbzbqbh) {
const xbInfo = xbxxData.selectInfo_xbzbqbh || {}
// 细胞信息格式:不包含 type 字段
- this.xbxjTmp = [{
- value: xbxxData.xbzbqbh,
- bh: xbInfo.bh || xbxxData.xbzbqbh,
- mc: xbInfo.mc || '',
- xh: xbInfo.xh || '',
- jzrq: xbInfo.jzrq || ''
- }]
+ this.xbxjTmp = [
+ {
+ value: xbxxData.xbzbqbh,
+ bh: xbInfo.bh || xbxxData.xbzbqbh,
+ mc: xbInfo.mc || '',
+ xh: xbInfo.xh || '',
+ jzrq: xbInfo.jzrq || ''
+ }
+ ]
} else {
this.xbxjTmp = []
}
-
+
// 获取培养信息
const pyxxData = this.$refs.pyxxRef?.getFilledFormData() || {}
-
+
// 如果选择了培养箱编号,添加到仪器信息中
if (pyxxData.pyxbh) {
const pyxInfo = pyxxData.selectInfo_pyxbh || {}
@@ -374,7 +397,7 @@ export default {
jzrq: pyxInfo.jzrq || ''
})
}
-
+
return this.resourceTmp
},
onRegentSubmit(e) {
diff --git a/src/views/business/comps/template/comps/dl/DL013.vue b/src/views/business/comps/template/comps/dl/DL013.vue
index 01ba62f..6112df9 100644
--- a/src/views/business/comps/template/comps/dl/DL013.vue
+++ b/src/views/business/comps/template/comps/dl/DL013.vue
@@ -254,7 +254,9 @@ export default {
type: 'select',
options: this.getDictOptions('business_dl_xbmc'),
fillType: 'actFill',
- otherCode: 'xbmcOther'
+ otherCode: 'xbmcOther',
+ otherMaxlength: 50
+
},
xbbh: {
label: 'template.dl.dl013.xbbh',
@@ -450,13 +452,28 @@ export default {
},
// 新增测定信息
handleCdxxAdd() {
+ // 记录新增前的仪器使用信息
+ const yqsyTableRef = this.$refs[refConf.yqsy]
+ const beforeData = yqsyTableRef?.getDataSource() || []
+
+ // 保存当前的仪器使用信息数据
+ const currentYqsyData = yqsyTableRef?.getFilledFormData() || {}
+
+ // 确保formData中保留了仪器使用信息的数据
+ if (currentYqsyData.stepTableFormData && currentYqsyData.stepTableFormData.length > 0) {
+ // 使用$set确保响应式更新,但保留原有数据
+ this.$set(this.formData, 'yqsyTablestepTableFormData', currentYqsyData.stepTableFormData)
+ this.$set(this.formData, 'yqsyTableheaderSelectFields', currentYqsyData.headerSelectFields || {})
+ this.$set(this.formData, 'yqsyTableheaderFields', currentYqsyData.headerFields || {})
+ }
+
// 初始化测定信息配置列表
if (!this.formData.cdxxConfigs) {
this.$set(this.formData, 'cdxxConfigs', [])
}
- // 添加新的测定信息配置
- this.formData.cdxxConfigs.push({
+ // 创建新的测定信息配置对象
+ const newCdxxItem = {
id: getuuid(),
xsbs: null,
xbmd: null,
@@ -464,7 +481,10 @@ export default {
ysg: null,
zxg: null,
yxg: null
- })
+ }
+
+ // 添加新的测定信息配置
+ this.formData.cdxxConfigs.push(newCdxxItem)
// 更新测定次数
this.$refs[refConf.cdxx]?.updateFormData(
@@ -476,13 +496,24 @@ export default {
}
)
+ // 检查新增后仪器使用信息是否还在
this.$nextTick(() => {
- // 通知后端保存数据
- EventBus.$emit('onModifyRecord', {
- type: 'fieldChanged',
- newRecord: null,
- resourceList: null
- })
+ const afterData = yqsyTableRef?.getDataSource() || []
+
+ // 如果数据被清空了,手动恢复
+ if (afterData.length === 0 && beforeData.length > 0) {
+ yqsyTableRef?.updateDataSource(beforeData)
+ }
+
+ // 触发事件通知父组件数据已更新
+ setTimeout(() => {
+ EventBus.$emit('onModifyRecord', {
+ type: 'fieldChanged',
+ newRecord: null,
+ resourceList: null,
+ source: 'cdxxAdd'
+ })
+ }, 100)
})
},
// 删除表格行
diff --git a/src/views/business/comps/template/comps/dl/DL014.vue b/src/views/business/comps/template/comps/dl/DL014.vue
index b7961eb..8bb3ecd 100644
--- a/src/views/business/comps/template/comps/dl/DL014.vue
+++ b/src/views/business/comps/template/comps/dl/DL014.vue
@@ -298,14 +298,16 @@ export default {
type: 'select',
options: this.getDictOptions('business_dl_qsxjbltj'),
fillType: 'preFill',
- otherCode: 'bltjOther'
+ otherCode: 'bltjOther',
+ otherMaxlength: 50
},
xbmc: {
label: 'template.dl.dl014.xbmc',
type: 'select',
options: this.getDictOptions('business_dl_xbmc'),
fillType: 'preFill',
- otherCode: 'xbmcOther'
+ otherCode: 'xbmcOther',
+ otherMaxlength: 50
}
}
}
@@ -317,7 +319,8 @@ export default {
pxpb: {
label: 'template.dl.dl014.pxpb',
type: 'inputNumber',
- fillType: 'preFill'
+ fillType: 'preFill',
+ maxlength: 2
},
sftjs9: {
label: 'template.dl.dl014.sftjs9',
@@ -343,7 +346,8 @@ export default {
const jlzzsConfig = {
label: 'template.dl.dl014.jlzzs',
type: 'inputNumber',
- fillType: 'preFill'
+ fillType: 'preFill',
+ maxlength: 2
}
// 只在 preFill 模式下显示确认按钮
@@ -369,7 +373,8 @@ export default {
label: 'template.dl.dl014.jlzzmc',
prop: 'jlzzmc',
bodyType: 'input',
- bodyFillType: 'preFill'
+ bodyFillType: 'preFill',
+ bodyMaxlength: 20
}
]
},
@@ -399,7 +404,8 @@ export default {
label: 'template.dl.dl014.jlzb',
prop: 'jlzb',
bodyType: 'input',
- bodyFillType: 'preFill'
+ bodyFillType: 'preFill',
+ bodyMaxlength: 10
},
{
label: 'template.dl.dl014.xybh',
@@ -584,7 +590,7 @@ export default {
if (this.fillType === 'actFill') {
const yqsyTableRef = this.$refs[refConf.yqsy]
const yqsyTableData = yqsyTableRef?.getDataSource() || []
-
+
if (yqsyTableData.length === 0) {
this.$message.warning(this.$t('template.dl.dl014.yqsyxxEmpty'))
return Promise.reject(this.$t('template.dl.dl014.yqsyxxEmpty'))
@@ -892,6 +898,11 @@ export default {
return
}
+ // 保存当前的剂量组名称表格数据,防止被清空
+ if (jlzmcList.length > 0) {
+ this.$set(this.formData, 'jlzmcTableData', jlzmcList)
+ }
+
// 生成剂量组列表数据
const newRows = []
@@ -920,6 +931,17 @@ export default {
// 直接修改 formData,CustomTable 会自动响应
this.$set(this.formData, 'jlzTableData', newRows)
+ // 检查剂量组名称表格数据是否被清空
+ this.$nextTick(() => {
+ const jlzmcTableRef = this.$refs[refConf.jlzmcTable]
+ const currentJlzmcData = jlzmcTableRef?.getDataSource() || []
+
+ // 如果数据被清空了,手动恢复
+ if (currentJlzmcData.length === 0 && jlzmcList.length > 0) {
+ jlzmcTableRef?.updateDataSource(jlzmcList)
+ }
+ })
+
this.$message.success(`已生成 ${newRows.length} 行剂量组数据`)
},
// 保存
diff --git a/src/views/business/comps/template/comps/dl/DL015.vue b/src/views/business/comps/template/comps/dl/DL015.vue
index 46f943e..d5d67f3 100644
--- a/src/views/business/comps/template/comps/dl/DL015.vue
+++ b/src/views/business/comps/template/comps/dl/DL015.vue
@@ -16,8 +16,16 @@
:formData="formData"
/>
-
-
+
+
{
if (item.xybh && !xybhSet.has(item.xybh)) {
xybhSet.add(item.xybh)
@@ -344,9 +353,9 @@ export default {
})
}
})
-
+
this.resourceTmp = [...this.resourceTmp, ...sjResourceFromHyqk]
-
+
return this.resourceTmp
},
onRegentSubmit(e) {
@@ -370,7 +379,7 @@ export default {
}
// 从剂量组数据中提取剂量组别和悬液编号
- const hyqkData = jlzTableData.map(item => ({
+ const hyqkData = jlzTableData.map((item) => ({
jlzb: item.jlzb || '', // 剂量组别
xybh: item.xybh || '', // 悬液编号
hyqszqk: '', // 换液前生长情况
@@ -384,7 +393,9 @@ export default {
// 使用 $set 更新 formData,触发 CustomTable 的响应式更新
this.$set(this.formData, 'stepTableFormData', hyqkData)
- this.$message.success(`已从前序表单加载 ${hyqkData.length} 条剂量组数据`)
+ this.$message.success(
+ `已从前序表单加载 ${hyqkData.length} 条剂量组数据`
+ )
} catch (error) {
console.error('解析前序表单数据失败:', error)
// 解析失败时也清空当前的换液情况列表数据