luojie 1 month ago
parent
commit
95530c4f5f
4 changed files with 329 additions and 40 deletions
  1. +7
    -1
      src/views/business/comps/template/comps/dl/DL010.vue
  2. +74
    -28
      src/views/business/comps/template/comps/dl/DL012.vue
  3. +247
    -11
      src/views/business/comps/template/comps/dl/DL013.vue
  4. +1
    -0
      src/views/business/comps/template/mixins/templateMixin.js

+ 7
- 1
src/views/business/comps/template/comps/dl/DL010.vue View File

@ -376,7 +376,13 @@ export default {
prop: 'sjgs',
bodyType: 'checkbox',
checkboxLabel: '',
bodyFillType: 'actFill'
bodyFillType: 'actFill',
headerColumns: [
{ type: 'span', label: '收集' },
{ type: 'inputNumber', fillType: 'actFill', key: 'gs' },
{ type: 'span', label: '骨髓' }
],
span: 3
},
{
label: 'template.dl.dl010.lx',

+ 74
- 28
src/views/business/comps/template/comps/dl/DL012.vue View File

@ -78,6 +78,7 @@
label=""
:ref="refConf.pyxx"
:formConfig="pyxxConfig"
@clickButton="handleClickButton"
:formData="formData"
/>
</div>
@ -188,12 +189,12 @@ export default {
type: 'cellItem',
label: 'template.dl.dl012.czsj',
config: {
kssj: {
startDate: {
label: 'template.dl.dl012.kssj',
type: 'input',
disabled: true
},
jssj: {
endDate: {
label: 'template.dl.dl012.jssj',
type: 'input',
disabled: true
@ -303,35 +304,48 @@ export default {
},
//
xbxxConfig() {
const config = {
xbmc: {
label: 'template.dl.dl012.xbmc',
type: 'select',
options: this.getDictOptions('business_dl_xbmc'),
fillType: 'preFill',
otherCode: 'xbmcOther'
},
xbzbqbh: {
label: 'template.dl.dl012.xbzbqbh',
type: 'xb',
fillType: 'actFill'
},
zbxbs: {
label: 'template.dl.dl012.zbxbs',
type: 'inputNumber',
fillType: 'preFill'
}
}
for (let index = 1; index <= this.zbxbs; index++) {
config['zbhxbbh_' + index] = {
label: 'template.dl.dl012.zbhxbbh',
type: 'input',
subType: 'span',
maxlength: 20,
subKey: 'zbhxbbhCodeSn_' + index,
fillType: 'preFill'
}
}
return [
{
type: 'step',
config: {
xbmc: {
label: 'template.dl.dl012.xbmc',
type: 'select',
options: [],
fillType: 'preFill',
otherCode: 'xbmcOther'
},
xbzbqbh: {
label: 'template.dl.dl012.xbzbqbh',
type: 'xb',
fillType: 'actFill'
},
zbxbs: {
label: 'template.dl.dl012.zbxbs',
type: 'inputNumber',
fillType: 'preFill'
},
zbhxbbh: {
label: 'template.dl.dl012.zbhxbbh',
type: 'input',
subType: 'span',
maxlength: 20,
subKey: 'zbhxbbhCodeSn',
fillType: 'preFill'
},
...config,
// zbhxbbh: {
// label: 'template.dl.dl012.zbhxbbh',
// type: 'input',
// subType: 'span',
// maxlength: 20,
// subKey: 'zbhxbbhCodeSn',
// fillType: 'preFill'
// },
zbhxbyjtj: {
label: 'template.dl.dl012.zbhxbyjtj',
type: 'inputNumber',
@ -365,14 +379,46 @@ export default {
{ isUpdateRecord: false, signData: null }
)
})
const data = this.getFilledFormDataByRefs([refConf.xbxx, refConf.base])
console.log(data)
const { zbxbs, zbhxbbh_1, startDate } = data || {}
if (!zbxbs) return
try {
this.zbxbs = Number(zbxbs)
} catch (error) {
this.zbxbs = 1
}
this.$nextTick(() => {
const updateData = {}
// Convert startDate from "2026-03-07 14:02:15" to "260307" (YYMMDD)
const formattedDate = startDate ? moment(startDate).format('YYMMDD') : ''
for (let index = 1; index <= this.zbxbs; index++) {
updateData['zbhxbbh_' + index] = zbhxbbh_1
updateData['zbhxbbhCodeSn_' + index] =
formattedDate + '-' + `${index}`.padStart(2, '0')
}
this.$refs[refConf.xbxx].batchUpdateFormData(updateData)
})
},
data() {
return {
formData: {},
refConf
refConf,
zbxbs: 1
}
},
methods: {
handleClickButton(e,signData) {
console.log(e)
const { subKey } = e || {}
if (subKey === 'pykssjButton') {
this.$refs[refConf.pyxx].updateFormData(
'pykssj',
moment().format('YYYY/MM/DD HH:mm'),
{ isUpdateRecord: true, signData }
)
}
},
//
deleteTableRow(rowIndex, refName) {
this.$refs[refName].deleteRow(rowIndex)

+ 247
- 11
src/views/business/comps/template/comps/dl/DL013.vue View File

@ -36,11 +36,57 @@
</template>
</CustomTable>
<!-- 预留区域 - 细胞信息 -->
<!-- 细胞信息 -->
<LineLabel label="template.dl.dl013.xbxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.xbxx"
:formConfig="xbxxConfig"
:formData="formData"
/>
</div>
<!-- 预留区域 - 测定信息 -->
<!-- 测定信息 -->
<LineLabel label="template.dl.dl013.cdxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.cdxx"
:formConfig="cdxxConfig"
:formData="formData"
/>
<div>
<el-button type="primary" @click="handleCdxxAdd">新增</el-button>
</div>
</div>
<!-- 测定信息第X次 -->
<div
class="template-form-item"
v-for="(item, index) in cdxxTimeConfigs"
:key="index"
>
<div class="flex-between">
<span>{{ index + 1 }}</span>
<el-button type="danger" plain @click="handleCdxxDelete(index)"
>删除</el-button
>
</div>
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="`cdxx${index}Ref`"
:formConfig="item"
:formData="formData"
@blur="
(e) => {
onBlur(e, index)
}
"
/>
</div>
<BaseInfoFormPackage
fieldItemLabel="template.dl.dl007.bz"
@ -68,7 +114,9 @@ import moment from 'moment'
const refConf = {
base: 'baseInfoRef',
yqsy: 'yqsyTableRef',
remark: 'remarkRef'
remark: 'remarkRef',
xbxx: 'xbxxRef',
cdxx: 'cdxxRef'
}
const refNames = Object.values(refConf)
@ -145,16 +193,15 @@ export default {
type: 'cellItem',
label: 'template.dl.dl013.czsj',
config: {
kssj: {
startDate: {
label: 'template.dl.dl013.kssj',
type: 'input',
disabled: true
},
jssj: {
endDate: {
label: 'template.dl.dl013.jssj',
type: 'input',
fillType: 'actFill',
maxlength: 200
disabled: true
}
}
}
@ -194,30 +241,214 @@ export default {
disabled: true
}
]
},
xbxxConfig() {
return [
{
type: 'step',
config: {
xbmc: {
label: '细胞名称',
type: 'select',
options: this.getDictOptions('business_dl_xbmc'),
fillType: 'actFill',
otherCode: 'xbmcOther'
},
xbbh: {
label: '细胞编号',
type: 'xb',
fillType: 'actFill'
},
xbxytj: {
label: '细胞悬液体积',
type: 'inputNumber',
subType: 'select',
subKey: 'xbxytjUnit',
fillType: 'actFill',
subOptions: this.getDictOptions('business_nddw'),
maxlength: 10
}
}
}
]
},
cdxxConfig() {
return [
{
type: 'step',
config: {
sjmcdptj: {
label: '实际每次滴片体积(ul)',
type: 'inputNumber',
fillType: 'actFill'
},
cdcs: {
label: '测定次数',
type: 'inputNumber',
fillType: 'actFill',
disabled: true
},
pjxbmd: {
label: '平均细胞密度',
type: 'inputNumber',
fillType: 'actFill',
disabled: true
}
}
}
]
},
cdxxTimeConfigs() {
const array = []
for (let index = 1; index <= this.cdcs; index++) {
array.push([
{
type: 'step',
config: {
[`xsbs_${index}`]: {
label: '稀释倍数',
type: 'inputNumber',
maxlength: 4,
fillType: 'actFill'
},
[`xbmd_${index}`]: {
label: '细胞密度(个/ml)',
type: 'input',
fillType: 'actFill',
disabled: true
},
[`zsg_${index}`]: {
label: '左上格(个)',
type: 'inputNumber',
fillType: 'actFill',
maxlength: 10
},
[`ysg_${index}`]: {
label: '右上格(个)',
type: 'inputNumber',
fillType: 'actFill',
maxlength: 10
},
[`zxg_${index}`]: {
label: '左下格(个)',
type: 'inputNumber',
fillType: 'actFill',
maxlength: 10
},
[`yxg_${index}`]: {
label: '右下格(个)',
type: 'inputNumber',
fillType: 'actFill',
maxlength: 10
}
}
}
])
}
return array
}
},
data() {
return {
formData: {},
refConf
refConf,
cdcs: 0
}
},
mounted() {
this.cdcs = this.getCdcsNumber()
},
methods: {
onBlur(e, index) {
console.log(e, 'e+++')
let xbmd = undefined
let xsbs = e[`xsbs_${index + 1}`]
let zsg = e[`zsg_${index + 1}`]
let ysg = e[`ysg_${index + 1}`]
let zxg = e[`zxg_${index + 1}`]
let yxg = e[`yxg_${index + 1}`]
if (xsbs && zsg && ysg && zxg && yxg) {
xsbs = this.getNumber(xsbs)
zsg = this.getNumber(zsg)
ysg = this.getNumber(ysg)
zxg = this.getNumber(zxg)
yxg = this.getNumber(yxg)
xbmd = (((zsg + zxg + ysg + yxg) / 4) * xsbs * 10000).toFixed(1)
}
this.$refs[`cdxx${index}Ref`]?.[0]?.updateFormData(
`xbmd_${index + 1}`,
xbmd,
{
isUpdateRecord: false,
signData: null
}
)
},
// 0
getNumber(data) {
try {
return data ? Number(data) : 0
} catch (error) {
return 0
}
},
// 0
getCdcsNumber() {
const originData = this.getFilledFormDataByRefs([refConf.cdxx])
const { cdcs } = originData || {}
return this.getNumber(cdcs)
},
handleCdxxDelete(index) {
this.$refs[refConf.cdxx].updateFormData(
'cdcs',
this.getCdcsNumber() - 1 < 0 ? 0 : this.getCdcsNumber() - 1,
{
isUpdateRecord: false,
signData: null
}
)
this.cdcs = this.getCdcsNumber()
},
//
handleCdxxAdd() {
this.$refs[refConf.cdxx].updateFormData(
'cdcs',
this.getCdcsNumber() + 1,
{
isUpdateRecord: false,
signData: null
}
)
this.cdcs = this.getCdcsNumber()
},
//
deleteTableRow(rowIndex, refName) {
this.$refs[refName].deleteRow(rowIndex)
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(refNames)
const arr = []
for (let index = 0; index < this.cdcs; index++) {
arr.push(`cdxx${index}Ref`)
}
return this.getFilledFormDataByRefs([...refNames, ...arr])
},
//
async getFormData() {
return await this.validFormFields(refNames)
const arr = []
for (let index = 0; index < this.cdcs; index++) {
arr.push(`cdxx${index}Ref`)
}
return await this.validFormFields([...refNames, ...arr])
},
//
async validFields() {
return await this.validFormFields(refNames)
const arr = []
for (let index = 0; index < this.cdcs; index++) {
arr.push(`cdxx${index}Ref`)
}
return await this.validFormFields([...refNames, ...arr])
},
getResource() {
const stepResource = this.$refs.yqsyTableRef.getStepResource()
@ -264,4 +495,9 @@ export default {
font-size: 16px;
color: #303133;
}
.flex-between {
display: flex;
justify-content: space-between;
align-items: center;
}
</style>

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

@ -42,6 +42,7 @@ export default {
'business_dl_amescltj', // 毒理-Ames处理条件
'business_dl_amesbjjt', // 毒理-Ames背景菌苔
'business_dl_amescdqk', // 毒理-Ames沉淀情况
'business_dl_xbmc', // 毒理-Ames细胞名称
'business_rylx', // 溶液类型
'business_xbzb', // 细胞组别
'business_xblx', // 细胞类型

Loading…
Cancel
Save