9 Commits

91 changed files with 3925 additions and 839 deletions
Split View
  1. +31
    -0
      src/components/Template/BaseInfoFormPackage.vue
  2. +130
    -3
      src/components/Template/Step.vue
  3. +126
    -0
      src/components/Template/StepComponents/ames/hwzd.vue
  4. +31
    -0
      src/components/Template/StepComponents/ames/hygh.vue
  5. +79
    -0
      src/components/Template/StepComponents/ames/jbcpyj.vue
  6. +66
    -0
      src/components/Template/StepComponents/ptjhfxyp/xs_ptjhfxyp.vue
  7. +1
    -1
      src/components/Template/StepComponents/qxwdx/qxfz.vue
  8. +37
    -0
      src/components/Template/StepComponents/ry/fz.vue
  9. +62
    -0
      src/components/Template/StepComponents/xb/bpqr.vue
  10. +89
    -0
      src/components/Template/StepComponents/xb/bprs.vue
  11. +88
    -0
      src/components/Template/StepComponents/xb/bzpyy.vue
  12. +49
    -0
      src/components/Template/StepComponents/xb/cx.vue
  13. +45
    -0
      src/components/Template/StepComponents/xb/dp.vue
  14. +51
    -0
      src/components/Template/StepComponents/xb/gc_xb.vue
  15. +88
    -0
      src/components/Template/StepComponents/xb/jrrydh.vue
  16. +41
    -0
      src/components/Template/StepComponents/xb/lg.vue
  17. +118
    -0
      src/components/Template/StepComponents/xb/rs_xb.vue
  18. +92
    -0
      src/components/Template/StepComponents/xb/xdlc.vue
  19. +92
    -0
      src/components/Template/StepComponents/xb/xh_xb.vue
  20. +55
    -0
      src/components/Template/StepComponents/xbjzpz/cd.vue
  21. +90
    -0
      src/components/Template/StepComponents/xbjzpz/cdmd.vue
  22. +107
    -0
      src/components/Template/StepComponents/xbjzpz/cdxs.vue
  23. +71
    -0
      src/components/Template/StepComponents/xbjzpz/copy.vue
  24. +43
    -0
      src/components/Template/StepComponents/xbjzpz/dypyy.vue
  25. +65
    -0
      src/components/Template/StepComponents/xbjzpz/fr_xbjzpz.vue
  26. +51
    -0
      src/components/Template/StepComponents/xbjzpz/gc.vue
  27. +86
    -0
      src/components/Template/StepComponents/xbjzpz/jzzy.vue
  28. +118
    -0
      src/components/Template/StepComponents/xbjzpz/lxqy.vue
  29. +53
    -0
      src/components/Template/StepComponents/xbjzpz/qjz.vue
  30. +53
    -0
      src/components/Template/StepComponents/xbjzpz/qxb.vue
  31. +59
    -0
      src/components/Template/StepComponents/xbjzpz/xbzy.vue
  32. +96
    -0
      src/components/Template/StepComponents/xbjzpz/xd.vue
  33. +1
    -1
      src/components/Template/StepFormPackage.vue
  34. +1
    -0
      src/components/Template/mixins/formPackageMixins.js
  35. +4
    -3
      src/components/Template/mixins/stepMixins.js
  36. +8
    -3
      src/lang/en/template/dl.js
  37. +8
    -3
      src/lang/zh/template/dl.js
  38. +2
    -1
      src/views/business/comps/template/TemplateTable.vue
  39. +15
    -4
      src/views/business/comps/template/comps/dl/DL007.vue
  40. +316
    -93
      src/views/business/comps/template/comps/dl/DL008.vue
  41. +502
    -52
      src/views/business/comps/template/comps/dl/DL009.vue
  42. +1
    -0
      src/views/business/comps/template/comps/gsp/DMYPPZJLB.vue
  43. +1
    -0
      src/views/business/comps/template/comps/gsp/GSP001.vue
  44. +1
    -0
      src/views/business/comps/template/comps/gsp/GSP002.vue
  45. +1
    -0
      src/views/business/comps/template/comps/gsp/GSP003.vue
  46. +1
    -0
      src/views/business/comps/template/comps/gsp/GSP004.vue
  47. +2
    -0
      src/views/business/comps/template/comps/gsp/GSP005.vue
  48. +1
    -0
      src/views/business/comps/template/comps/gsp/GSP010.vue
  49. +1
    -0
      src/views/business/comps/template/comps/lba/LBA008.vue
  50. +2
    -0
      src/views/business/comps/template/comps/pcr/PCR002.vue
  51. +2
    -0
      src/views/business/comps/template/comps/pcr/PCR003.vue
  52. +2
    -0
      src/views/business/comps/template/comps/pcr/PCR004.vue
  53. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR005.vue
  54. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR007.vue
  55. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR008.vue
  56. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR009.vue
  57. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR010.vue
  58. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR011.vue
  59. +1
    -0
      src/views/business/comps/template/comps/pcr/PCR012.vue
  60. +1
    -0
      src/views/business/comps/template/comps/sp/SP001.vue
  61. +5
    -0
      src/views/business/comps/template/comps/sp/SP0020.vue
  62. +2
    -0
      src/views/business/comps/template/comps/sp/SP003.vue
  63. +262
    -247
      src/views/business/comps/template/comps/sp/SP00456.vue
  64. +1
    -0
      src/views/business/comps/template/comps/sp/SP008.vue
  65. +1
    -0
      src/views/business/comps/template/comps/sp/SP009.vue
  66. +4
    -9
      src/views/business/comps/template/comps/sp/comps/LadderConfig.vue
  67. +54
    -56
      src/views/business/comps/template/formConfig/PCRTableConfig.js
  68. +141
    -80
      src/views/business/comps/template/formConfig/paralleAndLadderConfig.js
  69. +1
    -1
      src/views/business/comps/template/formConfig/sp/SP0019.js
  70. +67
    -40
      src/views/business/comps/template/formConfig/sp/SP0020.js
  71. +157
    -158
      src/views/business/comps/template/formConfig/sp/SP0021.js
  72. +1
    -0
      src/views/business/comps/template/formConfig/sp/SP007.js
  73. +67
    -65
      src/views/business/comps/template/mixins/templateMixin.js
  74. +1
    -1
      src/views/business/resource/gsp/comps/gsp/Bj.vue
  75. +1
    -1
      src/views/business/resource/gsp/comps/gsp/Xz.vue
  76. +1
    -1
      src/views/business/resource/gsp/comps/rkjl/Bj.vue
  77. +1
    -1
      src/views/business/resource/gsp/comps/rkjl/Xz.vue
  78. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Bj.vue
  79. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Cc.vue
  80. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Gh.vue
  81. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Rk.vue
  82. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Sqgh.vue
  83. +1
    -1
      src/views/business/resource/gyzj/comps/gyzj/Sqrk.vue
  84. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Bj.vue
  85. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Cc.vue
  86. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Gh.vue
  87. +1
    -1
      src/views/business/resource/mjy/comps/mjy/Rk.vue
  88. +1
    -1
      src/views/business/resource/sj/comps/Bj.vue
  89. +1
    -1
      src/views/business/resource/yq/list.vue
  90. +1
    -1
      src/views/business/storageLocation/list.vue
  91. +2
    -2
      src/views/business/study/comp/tbbd/Bj.vue

+ 31
- 0
src/components/Template/BaseInfoFormPackage.vue View File

@ -153,6 +153,19 @@
</div>
</template>
<div class="flex flex-wrap" v-else-if="item.type === 'explainItem'">
<div v-for="(sItem, key) in item.config" :key="key" class="explain-item">
<div v-if="sItem.type === 'input' || sItem.type === 'textarea' || sItem.type === 'inputNumber'" class="m-r-10">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type" :item="sItem" style="width: auto;flex:1" :style = "{'width': sItem.formWidth ? sItem.formWidth + 'px' : 'auto'}" v-model="formFields[key]"
@copy="onCopy(sItem, key)" @change="(e, type) => onSelectChange(key, e, type)"
:error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
</div>
<span v-else-if="sItem.type === 'span'" class="explain-title">{{ $t(sItem.label) }}</span>
</div>
</div>
<template v-else-if="item.type === 'step'">
<div class="grid-container gap2">
<div v-for="(sItem, key) in item.config" class="c-Item flex item-center"
@ -526,6 +539,24 @@ export default {
.p-r-20 {
padding-right: 20px;
}
.explain-title{
font-size: 14px;
font-weight: normal;
color: #606266;
padding-right: 10px;
}
.explain-item{
display: flex;
align-items: center;
padding: 10px 0;
}
.flex-wrap{
flex-wrap: wrap;
}
.m-r-10{
margin-right: 10px;
}
.p-l-20 {
padding-left: 20px;

+ 130
- 3
src/components/Template/Step.vue View File

@ -11,7 +11,7 @@
v-model="step.type" @change="onTypeChange(index)" />
<!-- 根据步骤类型显示对应的表单 -->
<component class="flex1" :sn="step.type" :is="getStepComponent(step.type)" :formData="step.formData"
@update="onFormUpdate(index, $event)" :stepIndex = "index" :ref="'stepCompRef_' + index">
@update="onFormUpdate(index, $event)" :stepIndex = "prefixKey + index" :ref="'stepCompRef_' + index">
</component>
<div v-if="templateFillType === 'preFill'" class="step-header-item">
<el-popconfirm
@ -79,6 +79,7 @@ import kbyq from "./StepComponents/ry/kbyq.vue";//溶液-空白仪器
import kbsjgsp from "./StepComponents/ry/kbsjgsp.vue";//-/
import kb from "./StepComponents/ry/kb.vue";//-
import jr from "./StepComponents/ry/jr.vue";//-
import fz from "./StepComponents/ry/fz.vue";//-
//
//
@ -260,6 +261,52 @@ import czzy from './StepComponents/jcb/czzy.vue';//检测板配置-磁珠转移
import sjbj from './StepComponents/jcb/sjbj.vue';//-
///
import qxb from './StepComponents/xbjzpz/qxb.vue';///-
import qjz from './StepComponents/xbjzpz/qjz.vue';///-
import fr_xbjzpz from './StepComponents/xbjzpz/fr_xbjzpz.vue';///-
import lxqy from './StepComponents/xbjzpz/lxqy.vue';///-
import cd from './StepComponents/xbjzpz/cd.vue';///-
import xbzy from './StepComponents/xbjzpz/xbzy.vue';///-
import jzzy from './StepComponents/xbjzpz/jzzy.vue';///-
import dypyy from './StepComponents/xbjzpz/dypyy.vue';///-
import xd from './StepComponents/xbjzpz/xd.vue';///-
///-使/-
///-使/-
import copy from './StepComponents/xbjzpz/copy.vue';///-CO2
import gc from './StepComponents/xbjzpz/gc.vue';///-
import cdmd from './StepComponents/xbjzpz/cdmd.vue';///-
///-使/-
///-使/-
import cdxs from './StepComponents/xbjzpz/cdxs.vue';///-/
//
import gc_xb from './StepComponents/xb/gc_xb.vue';//-
import xdlc from './StepComponents/xb/xdlc.vue';//-2
import bzpyy from './StepComponents/xb/bzpyy.vue';//-
import xh_xb from './StepComponents/xb/xh_xb.vue';//-
import jrrydh from './StepComponents/xb/jrrydh.vue';//-
//-使-
import rs_xb from './StepComponents/xb/rs_xb.vue';//-
import bpqr from './StepComponents/xb/bpqr.vue';//-
import dp from './StepComponents/xb/dp.vue';//-
import bprs from './StepComponents/xb/bprs.vue';//-
import cx from './StepComponents/xb/cx.vue';//-
import lg from './StepComponents/xb/lg.vue';//-
//Ames
import hygh from './StepComponents/ames/hygh.vue';//Ames-
import hwzd from './StepComponents/ames/hwzd.vue';//Ames-
import jbcpyj from './StepComponents/ames/jbcpyj.vue';//Ames-
///MRD
import xs_ptjhfxyp from './StepComponents/ptjhfxyp/xs_ptjhfxyp.vue';///MRD-
import { public_templateStepList } from '@/api/business/public/public';
@ -314,6 +361,10 @@ export default {
formData: {
type: Array,
default: () => []
},
prefixKey: {
type: String,
default: ''
}
},
data() {
@ -376,6 +427,7 @@ export default {
kbsjgsp,
kb,
jr,
fz,
//
//
@ -485,6 +537,42 @@ export default {
czzy,
sjbj,
///
qxb,
qjz,
fr_xbjzpz,
lxqy,
cd,
xbzy,
jzzy,
dypyy,
xd,
copy,
gc,
cdmd,
cdxs,
//
gc_xb,
xdlc,
bzpyy,
xh_xb,
jrrydh,
rs_xb,
bpqr,
dp,
bprs,
cx,
lg,
//Ames
hygh,
hwzd,
jbcpyj,
///MRD
xs_ptjhfxyp,
},
computed: {
stepComponentMap() {
@ -536,7 +624,7 @@ export default {
'kbsjgsp': 'kbsjgsp',
'kb': 'kb',
'jr': 'jr',
// 'fz': 'fz',
'fz': 'fz',
//
//
@ -694,7 +782,46 @@ export default {
'ychy':'ychy',
'czzy':'czzy',
'sjbj':'sjbj',
///
'qxb':'qxb',
'qjz':'qjz',
'fr_xbjzpz':'fr_xbjzpz',
'lxqy':'lxqy',
'cd':'cd',
'xbzy':'xbzy',
'jzzy':'jzzy',
'dypyy':'dypyy',
'xd':'xd',
'xh':'xd',
'zzxh':'xd',
'copy':'copy',
'gc':'gc',
'cdmd':'cdmd',
'ds':'xd',
'gd':'xd',
'cdxs':'cdxs',
//
'gc_xb':'gc_xb',
'xdlc':'xdlc',
'bzpyy':'bzpyy',
'xh_xb':'xh_xb',
'jrrydh':'jrrydh',
'gd_xb':'xh_xb',
'rs_xb':'rs_xb',
'bpqr':'bpqr',
'dp':'dp',
'bprs':'bprs',
'cx':'cx',
'lg':'lg',
//Ames
'hygh':'hygh',
'hwzd':'hwzd',
'jbcpyj':'jbcpyj',
///MRD
'xs_ptjhfxyp':'xs_ptjhfxyp',
}
}
return this.componentMap

+ 126
- 0
src/components/Template/StepComponents/ames/hwzd.vue View File

@ -0,0 +1,126 @@
<!-- 恒温振荡 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'ames_hwzd'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'hwzd',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "选择培养箱",
type: "text",
},
yq: {
type: "yq",
fillType: "actFill",
},
text2: {
label: "仪器,放入振荡器",
type: "text",
},
yq1: {
type: "yq",
fillType: "actFill",
},
text3: {
label: "仪器,在37±2°C条件下,设置预计转速",
type: "text",
},
sjjrl: {
type: "inputNumber",
fillType: "preFill",
},
sjjrldw: {
type: "select",
options: this.getDictOptions("business_zsdw"),
selectTo: "sjzsdw",
fillType: "preFill",
},
text5: {
label: ",设置实际转速",
type: "text",
},
jxry: {
type: "inputNumber",
fillType: "actFill",
compareTo:"sjjrl",
copyFrom:"sjjrl"
},
sjzsdw: {
type: "select",
options: this.getDictOptions("business_zsdw"),
fillType: "preFill",
},
text6: {
label: ",设置预计时长为",
type: "text",
},
sjjrl1: {
type: "inputNumber",
fillType: "preFill",
},
yqsc: {
type: "select",
options: this.getDictOptions("business_yqscdw"),
selectTo: "sjscdw",
fillType: "preFill",
},
text7: {
label: ",实际设置时长为",
type: "text",
},
sjsc: {
type: "inputNumber",
fillType: "actFill",
compareTo:"sjjrl1",
copyFrom:"sjjrl1"
},
sjscdw: {
type: "select",
options: this.getDictOptions("business_yqscdw"),
fillType: "preFill",
},
text8: {
label: ",进行振荡。振荡",
type: "text",
},
startDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button1: {
type: "button",
buttonName: "开始",
},
text9: {
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 31
- 0
src/components/Template/StepComponents/ames/hygh.vue View File

@ -0,0 +1,31 @@
<!-- 混匀固化 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'ames_hygh'" @resetRecord="resetRecord" :form-config="formConfig"
:formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
components: {
StepFormPackage
},
computed: {
formConfig() {
return [{
config: {
text1: {
label: "分别进行快速轻摇混匀,倾倒至平皿,平放静置固化。",
type: "text",
},
}
}]
}
},
}
</script>
<style lang="scss" scoped></style>

+ 79
- 0
src/components/Template/StepComponents/ames/jbcpyj.vue View File

@ -0,0 +1,79 @@
<!-- 加表层培养基 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'ames_jbcpyj'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'jbcpyj',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用",
type: "text",
},
yqmc: {
fillType: "preFill",
type: "input",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,吸取表层培养基,各预计吸取",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",各实际吸取",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 66
- 0
src/components/Template/StepComponents/ptjhfxyp/xs_ptjhfxyp.vue View File

@ -0,0 +1,66 @@
<!-- 稀释 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'ptjhfxyp_xs_ptjhfxyp'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'xs_ptjhfxyp',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "将",
type: "text",
},
ytyp: {
fillType: "preFill",
type: "input",
},
tbyp: {
fillType: "actFill",
type: "input",
compareTo:"ytyp",
copyFrom:"ytyp"
},
text2: {
label: "按上述稀释组件项中",
type: "text",
},
ytsz: {
fillType: "preFill",
type: "input",
},
tbsz: {
fillType: "actFill",
type: "input",
compareTo:"ytsz",
copyFrom:"ytsz"
},
text4:{
label: "进行稀释。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 1
- 1
src/components/Template/StepComponents/qxwdx/qxfz.vue View File

@ -1,4 +1,4 @@
<!-- 匀浆液分装2 -->
<!-- 全血分装 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'qxwdx_qxfz'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>

+ 37
- 0
src/components/Template/StepComponents/ry/fz.vue View File

@ -0,0 +1,37 @@
<!-- 分装 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'ry_fz'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'fz',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "待处理。。。。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 62
- 0
src/components/Template/StepComponents/xb/bpqr.vue View File

@ -0,0 +1,62 @@
<!-- 破片确认 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_bpqr'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'bpqr',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "将玻片从冰箱",
type: "text",
},
ccwz: {
type: "select",
options: this.getDictOptions("business_ccwz"),
fillType: "actFill",
otherCode: "ccwzOther",
},
text2: {
label: "取出,其温层为",
type: "text",
},
wc: {
type: "select",
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "actFill",
otherCode: "ccwzOther",
},
text3: {
label: "冰冻时长为",
type: "text",
},
sj: {
fillType: "actFill",
type: "input",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 89
- 0
src/components/Template/StepComponents/xb/bprs.vue View File

@ -0,0 +1,89 @@
<!-- 破片染色 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_bprs'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'bprs',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "将流水号",
type: "text",
},
lsh: {
fillType: "actFill",
type: "input",
},
text2: {
label: "的玻片,放至染色架,再放入加有姬姆萨染色应用液",
type: "text",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text4:{
label: "的染缸中,室温下染色",
type: "text",
},
sj:{
fillType: "preFill",
type: "input",
},
text6:{
label: "染色",
type: "text",
},
startDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button1:{
type:"button",
buttonName:"开始",
},
text7:{
type:"text",
label:"染色",
},
endDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button2:{
type:"button",
buttonName:"结束",
},
text8: {
type: "text",
label: "。",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 88
- 0
src/components/Template/StepComponents/xb/bzpyy.vue View File

@ -0,0 +1,88 @@
<!-- 补足培养液 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_bzpyy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'bzpyy',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用移液器",
type: "text",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "分别加入",
type: "text",
},
rymc:{
fillType: "preFill",
type: "input",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text3:{
label: "预计各加",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",实际各加入",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 49
- 0
src/components/Template/StepComponents/xb/cx.vue View File

@ -0,0 +1,49 @@
<!-- 冲洗 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_cx'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'cx',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用纯水仪",
type: "text",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "的纯水进行冲洗。",
type: "text",
},
check:{
type:"checkbox",
fillType:"actFill",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 45
- 0
src/components/Template/StepComponents/xb/dp.vue View File

@ -0,0 +1,45 @@
<!-- 滴片 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_dp'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'dp',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用移液器",
type: "text",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,吸取细胞悬液进行滴片。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 51
- 0
src/components/Template/StepComponents/xb/gc_xb.vue View File

@ -0,0 +1,51 @@
<!-- 观察 -->
<template>
<StepFormPackage ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_gc_xb'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'gc_xb',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config:{
text1:{
label:"选择显微镜",
type:"text",
},
yq:{
type:"yq",
fillType:"actFill",
},
text2:{
label:"仪器,进行观察。",
type:"text",
},
bz:{
type:"input",
fillType:"actFill",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped>
</style>

+ 88
- 0
src/components/Template/StepComponents/xb/jrrydh.vue View File

@ -0,0 +1,88 @@
<!-- 加入溶液多行 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_jrrydh'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'jrrydh',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用移液器",
type: "text",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,分别加入",
type: "text",
},
rymc:{
fillType: "preFill",
type: "input",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text3:{
label: "溶液,预计各加入",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",实际各加入",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 41
- 0
src/components/Template/StepComponents/xb/lg.vue View File

@ -0,0 +1,41 @@
<!-- 晾干 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_lg'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'lg',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "自然晾干。",
type: "text",
},
check:{
type:"checkbox",
fillType:"actFill",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 118
- 0
src/components/Template/StepComponents/xb/rs_xb.vue View File

@ -0,0 +1,118 @@
<!-- 染色 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_rs_xb'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'rs_xb',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用移液器",
type: "text",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,从上述编号各吸取90ul细胞悬液,再使用移液器",
type: "text",
},
yq1: {
fillType: "actFill",
type: "yq",
},
text3: {
label: "仪器,吸取台盼蓝染色液",
type: "text",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text4:{
label: "溶液,预计各吸取",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text5:{
label: "实际各吸取",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text6:{
label: "进行染色,染色",
type: "text",
},
startDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button1:{
type:"button",
buttonName:"开始",
},
text7:{
type:"text",
label:"染色",
},
endDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button2:{
type:"button",
buttonName:"结束",
},
text8: {
type: "text",
label: "。",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 92
- 0
src/components/Template/StepComponents/xb/xdlc.vue View File

@ -0,0 +1,92 @@
<!-- 洗涤2 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_xdlc'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'xdlc',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用",
type: "text",
},
yqmc: {
fillType: "preFill",
type: "input",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,吸取",
type: "text",
},
rymc:{
fillType: "preFill",
type: "input",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text3:{
label: "溶液,每次各预计吸取体积为",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",每次各实际吸取体积为",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: "加入容器中,分别进行洗涤,各洗涤2次。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 92
- 0
src/components/Template/StepComponents/xb/xh_xb.vue View File

@ -0,0 +1,92 @@
<!-- 消化 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xb_xh_xb'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'xh_xb',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用",
type: "text",
},
yqmc: {
fillType: "preFill",
type: "input",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,分别吸取",
type: "text",
},
rymc:{
fillType: "preFill",
type: "input",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text3:{
label: "溶液,预计各吸取体积为",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",实际各吸取体积为",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: this.sn==='xh_xb'?"进行消化。":this.sn==='gd_xb'?"进行固定。":"",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 55
- 0
src/components/Template/StepComponents/xbjzpz/cd.vue View File

@ -0,0 +1,55 @@
<!-- 吹打 -->
<template>
<StepFormPackage ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_cd'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'cd',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config:{
text1:{
label:"使用",
type:"text",
},
yqmc:{
type:"input",
fillType:"preFill",
},
yq:{
type:"yq",
fillType:"actFill",
},
text2:{
label:"仪器,吹打均匀。",
type:"text",
},
check:{
type:"checkbox",
fillType:"actFill",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped>
</style>

+ 90
- 0
src/components/Template/StepComponents/xbjzpz/cdmd.vue View File

@ -0,0 +1,90 @@
<!-- 测定密度 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_cdmd'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'cdmd',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用倒置显微镜",
type: "text",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,进行",
type: "text",
},
cs: {
fillType: "preFill",
type: "inputNumber",
},
text3: {
label: "次测定,每次滴片体积预计为",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",实际滴片体积为",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: "平均细胞密度为",
type: "text",
},
gs: {
fillType: "actFill",
type: "inputNumber",
},
text6:{
label: "个/mL。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 107
- 0
src/components/Template/StepComponents/xbjzpz/cdxs.vue View File

@ -0,0 +1,107 @@
<!-- 传代/稀释 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_cdxs'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'cdxs',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用",
type: "text",
},
yqmc: {
fillType: "preFill",
type: "input",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,吸取细胞悬液",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
},
sjtjdw:{
fillType: "actFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text3:{
label: ",同时使用",
type: "text",
},
yqmc1: {
fillType: "preFill",
type: "input",
},
yq1: {
fillType: "actFill",
type: "yq",
},
text4: {
label: "吸取",
type: "text",
},
rymc:{
fillType: "preFill",
type: "input",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj2",
dwCode: "sjtjdw2",
},
sjtj2:{
fillType: "actFill",
type: "inputNumber",
},
sjtjdw2:{
fillType: "actFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5: {
label: "至",
type: "text",
},
pyp:{
fillType: "preFill",
type: "input",
},
text6: {
label: "中。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 71
- 0
src/components/Template/StepComponents/xbjzpz/copy.vue View File

@ -0,0 +1,71 @@
<!-- CO2培养 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_copy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'copy',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用CO2培养箱",
type: "text",
},
yq: {
type: "yq",
fillType: "actFill",
},
text2: {
label: "仪器,在温度为37±2°C、CO2浓度为5%±0.5%的条件下进行培养,培养",
type: "text",
},
startDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button1:{
type:"button",
buttonName:"开始",
},
text7:{
type:"text",
label:",培养",
},
endDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button2:{
type:"button",
buttonName:"结束",
},
text8: {
type: "text",
label: "。",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 43
- 0
src/components/Template/StepComponents/xbjzpz/dypyy.vue View File

@ -0,0 +1,43 @@
<!-- 倒原培养液 -->
<template>
<StepFormPackage ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_dypyy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'dypyy',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config:{
text1:{
label:"倒掉原培养液。",
type:"text",
},
check:{
type:"checkbox",
fillType:"actFill",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped>
</style>

+ 65
- 0
src/components/Template/StepComponents/xbjzpz/fr_xbjzpz.vue View File

@ -0,0 +1,65 @@
<!-- 复溶 -->
<template>
<StepFormPackage ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_fr_xbjzpz'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'fr_xbjzpz',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config:{
text1:{
label:"使用恒温水浴锅",
type:"text",
},
yq:{
type:"yq",
fillType:"actFill",
},
text2:{
label:",设置预计温度",
type:"text",
},
temp:{
type:"inputNumber",
fillType:"preFill",
},
text3:{
label:"°C,设置实际温度",
type:"text",
},
actTemp:{
type:"inputNumber",
fillType:"actFill",
compareTo:"temp",
copyFrom:"temp",
},
text4:{
label:"°C,进行融化。",
type:"text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped>
</style>

+ 51
- 0
src/components/Template/StepComponents/xbjzpz/gc.vue View File

@ -0,0 +1,51 @@
<!-- 观察 -->
<template>
<StepFormPackage ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_gc'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'gc',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config:{
text1:{
label:"使用显微镜",
type:"text",
},
yq:{
type:"yq",
fillType:"actFill",
},
text2:{
label:"仪器,进行观察。",
type:"text",
},
check:{
type:"checkbox",
fillType:"actFill",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped>
</style>

+ 86
- 0
src/components/Template/StepComponents/xbjzpz/jzzy.vue View File

@ -0,0 +1,86 @@
<!-- 菌株转移 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_jzzy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'jzzy',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用",
type: "text",
},
yqmc: {
fillType: "preFill",
type: "input",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,将菌株取出,预计取出体积",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text3:{
label: ",实际取出",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text4:{
label: ",转移到",
type: "text",
},
yqmc1: {
fillType: "preFill",
type: "input",
},
text5:{
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 118
- 0
src/components/Template/StepComponents/xbjzpz/lxqy.vue View File

@ -0,0 +1,118 @@
<!-- 离心弃液 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_lxqy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'lxqy',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用离心机",
type: "text",
},
yq: {
type: "yq",
fillType: "actFill",
},
text2: {
label: "仪器,设置预计转速为",
type: "text",
},
sjjrl: {
type: "inputNumber",
fillType: "preFill",
},
sjjrldw: {
type: "select",
options: this.getDictOptions("business_zsdw"),
selectTo: "sjzsdw",
fillType: "preFill",
},
text5: {
label: ",实际设置转速为",
type: "text",
},
jxry: {
type: "inputNumber",
fillType: "actFill",
compareTo:"sjjrl",
copyFrom:"sjjrl"
},
sjzsdw: {
type: "select",
options: this.getDictOptions("business_zsdw"),
fillType: "preFill",
},
text6: {
label: ",设置预计时长为",
type: "text",
},
sjjrl1: {
type: "inputNumber",
fillType: "preFill",
},
yqsc: {
type: "select",
options: this.getDictOptions("business_yqscdw"),
selectTo: "sjscdw",
fillType: "preFill",
},
text7: {
label: ",实际设置时长为",
type: "text",
},
sjsc: {
type: "inputNumber",
fillType: "actFill",
compareTo:"sjjrl1",
copyFrom:"sjjrl1"
},
sjscdw: {
type: "select",
options: this.getDictOptions("business_yqscdw"),
fillType: "preFill",
},
text8: {
label: ",进行离心。离心",
type: "text",
},
startDate: {
type: "input",
fillType: "actFill",
disabled: true,
},
button1: {
type: "button",
buttonName: "开始",
},
text9: {
label: "离心后倒掉上层清液。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 53
- 0
src/components/Template/StepComponents/xbjzpz/qjz.vue View File

@ -0,0 +1,53 @@
<!-- 取菌株 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_qjz'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'qjz',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "选择液氮罐",
type: "text",
},
yq: {
type: "yq",
fillType: "actFill",
},
text2: {
label: ",取出菌株",
type: "text",
},
xb: {
type: "xj",
fillType: "actFill",
},
text3: {
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 53
- 0
src/components/Template/StepComponents/xbjzpz/qxb.vue View File

@ -0,0 +1,53 @@
<!-- 取细胞 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_qxb'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'qxb',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "选择液氮罐",
type: "text",
},
yq: {
type: "yq",
fillType: "actFill",
},
text2: {
label: ",取出细胞",
type: "text",
},
xb: {
type: "xb",
fillType: "actFill",
},
text3: {
label: "。",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 59
- 0
src/components/Template/StepComponents/xbjzpz/xbzy.vue View File

@ -0,0 +1,59 @@
<!-- 细胞转移 -->
<template>
<StepFormPackage ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_xbzy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'xbzy',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config:{
text1:{
label:"使用",
type:"text",
},
yqmc:{
type:"input",
fillType:"preFill",
},
yq:{
type:"yq",
fillType:"actFill",
},
text2:{
label:"仪器,将细胞取出,转移到",
type:"text",
},
yqmc1:{
type:"input",
fillType:"preFill",
},
text3:{
label:"。",
type:"text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped>
</style>

+ 96
- 0
src/components/Template/StepComponents/xbjzpz/xd.vue View File

@ -0,0 +1,96 @@
<!-- 洗涤 -->
<!-- 消化 -->
<!-- 终止消化 -->
<!-- 低渗 -->
<!-- 固定 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_xd'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
<script>
import StepFormPackage from '@/components/Template/StepFormPackage.vue';
import stepMixins from '@/components/Template/mixins/stepMixins.js';
export default {
mixins: [stepMixins],
props: {
sn: {
type: String,
default: 'xd',
},
},
components: {
StepFormPackage
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "使用",
type: "text",
},
yqmc: {
fillType: "preFill",
type: "input",
},
yq: {
fillType: "actFill",
type: "yq",
},
text2: {
label: "仪器,吸取",
type: "text",
},
rymc:{
fillType: "preFill",
type: "input",
},
ry:{
fillType: "actFill",
type: "sj",
ylCode: "sjtj",
dwCode: "sjtjdw",
},
text3:{
label: "溶液,预计吸取体积为",
type: "text",
},
yjtj:{
fillType: "preFill",
type: "inputNumber",
},
yjtjdw:{
fillType: "preFill",
type: "select",
selectTo: "sjtjdw",
options:this.getDictOptions('business_tjdw'),
},
text4:{
label: ",实际体积为",
type: "text",
},
sjtj:{
fillType: "actFill",
type: "inputNumber",
compareTo:"yjtj",
copyFrom:"yjtj"
},
sjtjdw:{
fillType: "preFill",
type: "select",
options: this.getDictOptions('business_tjdw'),
},
text5:{
label: this.sn==='xd'? "加入容器中,进行洗涤。":this.sn==='xh'? "加入容器中,进行消化。":this.sn==='zzxh'? "加入容器中,终止消化。":this.sn==='ds'? "加入容器中,进行低渗。":this.sn==='gd'? "加入容器中,进行固定。":"",
type: "text",
},
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 1
- 1
src/components/Template/StepFormPackage.vue View File

@ -177,7 +177,7 @@ export default {
const sjResource = [],yqResource = [];
for(const key in allFieldsConfig){
const item = allFieldsConfig[key];
if(item.type === "xb" || item.type === "sj" || item.type === "gsp" || item.type === "mix"){
if(item.type === "xj" || item.type === "xb" || item.type === "sj" || item.type === "gsp" || item.type === "mix"){
if(formFields[key]){
let o = {
...formFields[`selectInfo_${key}`],

+ 1
- 0
src/components/Template/mixins/formPackageMixins.js View File

@ -410,6 +410,7 @@ export default {
//再筛选出需要显示其他输入框的选项
const otherOptions = allCheckedOptions.filter((label)=>isShowOtherByCheckboxTree(label))
const isHasOtherInfo = otherOptions.every(item => otherValues[item]);
console.log(isChecked,isHasOtherInfo,"isChecked")
if (!isChecked || !isHasOtherInfo) {
errors.push({
field: key,

+ 4
- 3
src/components/Template/mixins/stepMixins.js View File

@ -2,7 +2,8 @@ export default {
dicts:[
"business_tjdw","business_czhj","business_rqcz","business_zldw",
"business_yqscdw","business_zsdw","business_wddw","business_ccwz","business_ggdw",
"business_hjxx","business_zzzc","business_step_pcr","business_fycx","business_step_pcrfxyp"
"business_hjxx","business_zzzc","business_step_pcr","business_fycx","business_step_pcrfxyp",
"business_cctj"
],
props: {
formData: {
@ -10,8 +11,8 @@ export default {
default: () => ({})
},
stepIndex: {
type: Number,
default: 0
type: String,
default: ''
}
},
methods: {

+ 8
- 3
src/lang/en/template/dl.js View File

@ -77,7 +77,8 @@ export default {
czxx: 'Operation Information',
pykssj: 'Cultivation Start Time',
pyjssj: 'Cultivation End Time',
jsButton: 'End'
jsButton: 'End',
yqsyxxEmpty: 'Please add instrument usage information first'
},
dl008: {
...common,
@ -87,7 +88,9 @@ export default {
jzbh1: 'Strain Number',
jzbh2: 'Strain Number',
jzbh3: 'Strain Number',
jzbh4: 'Strain Number'
jzbh4: 'Strain Number',
yqsyxxEmpty: 'Instrument usage information cannot be empty',
cxqkEmpty: 'Imaging status cannot be empty'
},
dl009: {
...common,
@ -103,7 +106,9 @@ export default {
jls: 'Colony Count',
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;'
jlsDesc: 'Colony count special case: "*" indicates pinpoint colonies visible on plate;',
yqsyxxEmpty: 'Instrument usage information cannot be empty',
jgxxEmpty: 'Result information cannot be empty'
},
dl010: {
...common,

+ 8
- 3
src/lang/zh/template/dl.js View File

@ -80,7 +80,8 @@ export default {
czxx: '操作信息',
pykssj: '培养开始时间',
pyjssj: '培养结束时间',
jsButton: '结束'
jsButton: '结束',
yqsyxxEmpty: '请先添加仪器使用信息'
},
dl008: {
...common,
@ -90,7 +91,9 @@ export default {
jzbh1: '菌种编号',
jzbh2: '菌种编号',
jzbh3: '菌种编号',
jzbh4: '菌种编号'
jzbh4: '菌种编号',
yqsyxxEmpty: '仪器使用信息不能为空',
cxqkEmpty: '成像情况不能为空'
},
dl009: {
...common,
@ -106,7 +109,9 @@ export default {
jls: '菌落数(个)',
czqkDesc: '沉淀量以代码填入:"P-" 代表 "无沉淀";"P+" 代表 "少量";"P++" 代表 "中等";"P+++" 代表 "严重"。',
bjjtDesc: '背景菌苔以代码填入:"N" 代表 "正常";"R1" 代表 "弱,菌苔约占平皿面积 70%-90%";"R2" 代表 "中,菌苔约占平皿面积 40%-70%";"R3" 代表 "强,菌苔约占平皿面积 10%-40%";"A" 代表 "消失,平皿上无菌苔";"O" 代表 "产生沉淀,影响背景菌苔判断";',
jlsDesc: '菌落数特殊情况:"*" 该平皿可见针尖样菌落;'
jlsDesc: '菌落数特殊情况:"*" 该平皿可见针尖样菌落;',
yqsyxxEmpty: '仪器使用信息不能为空',
jgxxEmpty: '结果信息不能为空'
},
dl010: {
...common,

+ 2
- 1
src/views/business/comps/template/TemplateTable.vue View File

@ -270,6 +270,7 @@ export default {
'PCR003': 'PCR003',
'PCR004': 'PCR004',
'PCR005': 'PCR005',
'PCR006': 'SP0020',
'PCR007': 'PCR007',
'PCR008': 'PCR008',
'PCR009': 'PCR009',
@ -283,7 +284,7 @@ export default {
'LBA004': 'LBA004',
'LBA005': 'SP00456',
'LBA006': 'LBA006',
'LBA007': 'LBA007',
'LBA007': 'SP00456',
'LBA008': 'LBA008',
//ADA
'ADA001': 'SP001',

+ 15
- 4
src/views/business/comps/template/comps/dl/DL007.vue View File

@ -50,7 +50,7 @@
fieldItemLabel="template.dl.dl007.bz"
label="template.dl.dl007.bz"
:ref="refConf.remark"
:formConfig="remarkConig"
:formConfig="remarkConfig"
:formData="formData"
/>
</div>
@ -79,6 +79,7 @@ const refNames = Object.values(refConf)
export default {
name: 'DL007',
dicts: ['business_sydd'],
components: {
BaseInfoFormPackage,
LineLabel,
@ -96,7 +97,7 @@ export default {
},
computed: {
//
remarkConig() {
remarkConfig() {
return [
{
type: 'cellItem',
@ -257,10 +258,21 @@ export default {
},
//
async getFormData() {
return await this.validFormFields(refNames)
//
return await this.validFields()
},
//
async validFields() {
// 1. 使
const yqsyTableRef = this.$refs[refConf.yqsy]
const yqsyTableData = yqsyTableRef?.getDataSource() || []
if (yqsyTableData.length === 0) {
this.$message.warning(this.$t('template.dl.dl007.yqsyxxEmpty'))
return Promise.reject(this.$t('template.dl.dl007.yqsyxxEmpty'))
}
// 2.
return await this.validFormFields(refNames)
},
getResource() {
@ -307,7 +319,6 @@ export default {
//
async onSave() {
const formData = this.getStepResource()
console.log(formData, 'formData')
}
}
}

+ 316
- 93
src/views/business/comps/template/comps/dl/DL008.vue View File

@ -85,7 +85,6 @@ import TableOpertaionDelete from '@/components/Template/operation/TableOpertaion
import CustomTable from '@/components/Template/CustomTable.vue'
import LineLabel from '@/components/Template/LineLabel'
import TableList from '@/components/Template/Table'
import Step from '@/components/Template/Step'
import templateMixin from '../../mixins/templateMixin'
import moment from 'moment'
const refConf = {
@ -100,11 +99,11 @@ const refNames = Object.values(refConf)
export default {
name: 'DL008',
dicts: ['business_sydd', 'business_dl_ameswrqk'],
components: {
BaseInfoFormPackage,
LineLabel,
TableList,
Step,
CustomTable,
TableOpertaionDelete
},
@ -213,44 +212,8 @@ export default {
},
// -checkbox
cxqkColumns() {
return [
{
label: 'template.dl.dl008.jlzb',
prop: 'jlzb',
bodyType: 'input',
bodyFillType: 'actFill',
disabled: true,
width: 100
},
{
label: 'template.dl.dl008.jzbh1',
prop: 'jzbh1',
bodyType: 'checkbox',
bodyFillType: 'actFill',
width: 150
},
{
label: 'template.dl.dl008.jzbh2',
prop: 'jzbh2',
bodyType: 'checkbox',
bodyFillType: 'actFill',
width: 150
},
{
label: 'template.dl.dl008.jzbh3',
prop: 'jzbh3',
bodyType: 'checkbox',
bodyFillType: 'actFill',
width: 150
},
{
label: 'template.dl.dl008.jzbh4',
prop: 'jzbh4',
bodyType: 'checkbox',
bodyFillType: 'actFill',
width: 150
}
]
//
return this.dynamicCxqkColumns
},
// 使
yqsyColumns() {
@ -296,7 +259,7 @@ export default {
config: {
cxqkqxbd: {
label: 'template.dl.dl007.qxbd',
qxbdType: 'DL006',
// qxbdType: 'DL006',
type: 'qxbd',
fillType: 'actFill',
filledCodes: ['bdmc', 'bdbh']
@ -309,15 +272,105 @@ export default {
data() {
return {
formData: {},
refConf
refConf,
dynamicCxqkColumns: [], //
isDataLoaded: false //
}
},
mounted() {
//
this.$nextTick(() => {
this.initializeTableFromFormData()
})
},
watch: {
// formData
'formData.stepTableFormData_1': {
handler(newVal) {
if (newVal && newVal.length > 0 && !this.isDataLoaded) {
this.initializeTableFromFormData()
}
},
deep: true,
immediate: true
}
},
mounted() {},
methods: {
//
deleteTableRow(rowIndex, refName) {
this.$refs[refName].deleteRow(rowIndex)
},
//
initializeTableFromFormData() {
try {
const stepTableFormData_1 = this.formData.stepTableFormData_1
const headerSelectFields = this.formData.headerSelectFields || {}
//
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$/))
if (labelKeys.length === 0) {
return
}
// Label
const dynamicColumns = [
{
label: 'template.dl.dl008.jlzb',
prop: 'jlzb',
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 100
}
]
// headerSelectFields
labelKeys.sort().forEach((labelKey, index) => {
const colIndex = index + 1
// headerSelectFields 1_1, 1_2, 1_3
const headerValues = []
let rowIndex = 1
while (headerSelectFields[`${colIndex}_${rowIndex}`]) {
headerValues.push(headerSelectFields[`${colIndex}_${rowIndex}`])
rowIndex++
}
// 使
const headerLabel = headerValues.length > 0 ? headerValues.join(' ') : `菌种${colIndex}`
dynamicColumns.push({
label: headerLabel,
prop: `jzbh${colIndex}`,
bodyType: 'checkbox',
bodyFillType: 'actFill',
checkboxLabel: '',
width: 150
})
})
//
this.dynamicCxqkColumns = dynamicColumns
this.isDataLoaded = true
//
this.$nextTick(() => {
if (this.$refs[refConf.cxqk]) {
this.$refs[refConf.cxqk].updateDataSource(stepTableFormData_1)
}
})
} catch (error) {
console.error('初始化表格数据失败:', error)
}
},
//
handleClickButton(_item, signData) {
this.$refs.cxqkqxbbInfoRef.updateFormData(
@ -328,79 +381,249 @@ export default {
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(refNames)
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
},
//
async getFormData() {
return await this.validFormFields(refNames)
//
return await this.validFields()
},
//
async validFields() {
// 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'))
}
// 3.
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) {
const { selectInfo, key, rowIndex } = e
const { row } = selectInfo
//
if (key === 'yqbh') {
const params = {
yqmc: row.mc,
yqxh: row.xh,
jzrq: row.jzrq
}
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params)
this.handleYqbhSelect(row, rowIndex)
return
}
//
if (key === 'cxqkqxbd') {
// MOCK:
const mockData = [
{
jlzb: 'A',
jzbh1: undefined,
jzbh2: undefined,
jzbh3: undefined,
jzbh4: undefined,
jzbh1Label: '001',
jzbh2Label: '004',
jzbh3Label: '007',
jzbh4Label: '010'
},
{
jlzb: 'A',
jzbh1: undefined,
jzbh2: undefined,
jzbh3: undefined,
jzbh4: undefined,
jzbh1Label: '002',
jzbh2Label: '005',
jzbh3Label: '008',
jzbh4Label: '011'
},
{
jlzb: 'A',
jzbh1: undefined,
jzbh2: undefined,
jzbh3: undefined,
jzbh4: undefined,
jzbh1Label: '003',
jzbh2Label: '006',
jzbh3Label: '009',
jzbh4Label: '012'
}
]
this.$refs[refConf.cxqk].updateDataSource(mockData)
this.handleCxqkQxbdSelect(row)
}
},
//
handleYqbhSelect(row, rowIndex) {
const params = {
yqmc: row.mc,
yqxh: row.xh,
jzrq: row.jzrq
}
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 || []
//
if (!stepTableFormData_1 || stepTableFormData_1.length === 0) {
this.clearCxqkTable()
return
}
// 1.
const dynamicColumns = this.generateDynamicColumns(headerFields)
if (!dynamicColumns) {
this.clearCxqkTable()
return
}
// 2.
const tableData = this.generateTableData(stepTableFormData_1, dynamicColumns.columnKeys)
if (tableData.length === 0) {
this.clearCxqkTable()
return
}
// 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'))
.sort((a, b) => parseInt(a.split('_')[0]) - parseInt(b.split('_')[0]))
if (columnKeys.length === 0) {
return null
}
const columns = [
{
label: 'template.dl.dl008.jlzb',
prop: 'jlzb',
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 100
}
]
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
while (headerFields[`${baseColIndex}_${rowIndex}`]) {
headerValues.push(headerFields[`${baseColIndex}_${rowIndex}`])
rowIndex++
}
//
const headerLabel = headerValues.join(' ')
columns.push({
label: headerLabel,
prop: `jzbh${colIndex}`,
bodyType: 'checkbox',
bodyFillType: 'actFill',
checkboxLabel: '',
width: 150
})
})
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 => {
this.$set(this.formData.headerSelectFields, key, headerFields[key])
})
this.$nextTick(() => {
const tableRef = this.$refs[refConf.cxqk]
if (tableRef) {
//
tableRef.updateDataSource(tableData)
// oldLocalDataSource
//
this.$nextTick(() => {
tableRef.oldLocalDataSource = JSON.parse(JSON.stringify(tableRef.localDataSource))
})
}
this.$set(this.formData, 'stepTableFormData_1', tableData)
this.isDataLoaded = true
})
},
//
clearCxqkTable() {
this.dynamicCxqkColumns = []
this.$set(this.formData, 'stepTableFormData_1', [])
this.$nextTick(() => {
this.$refs[refConf.cxqk]?.updateDataSource([])
})
},
//
async onSave() {
const formData = this.getStepResource()
console.log(formData, 'formData')
}
}
}

+ 502
- 52
src/views/business/comps/template/comps/dl/DL009.vue View File

@ -29,7 +29,7 @@
@onRegentSubmit="(e) => onRegentSubmit(e)"
:showOperation="fillType === 'actFill'"
:showAddRow="fillType === 'actFill'"
:formData="formData"
:formData="yqsyFormData"
:prefixKey="`yqsyTable`"
>
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
@ -49,6 +49,7 @@
:ref="refConf.jgxxQxbd"
:formConfig="jgxxQxbdFormConfig"
:formData="formData"
@onRegentSubmit="onRegentSubmit"
/>
<div class="jgxx-description">
<p>{{ $t('template.dl.dl009.czqkDesc') }}</p>
@ -60,7 +61,7 @@
:ref="refConf.jgxx"
:showOperation="false"
:showAddRow="false"
:formData="formData"
:formData="jgxxFormData"
:prefixKey="`jgxxTable`"
>
</CustomTable>
@ -99,6 +100,12 @@ const refNames = Object.values(refConf)
export default {
name: 'DL009',
dicts: [
'business_dl_amescltj',
'business_sydd',
'business_dl_amescdqk',
'business_dl_amesbjjt'
],
components: {
BaseInfoFormPackage,
LineLabel,
@ -115,6 +122,20 @@ export default {
}
},
computed: {
// 使
yqsyFormData() {
return {
stepTableFormData: this.formData.stepTableFormData || [],
headerSelectFields: {}
}
},
//
jgxxFormData() {
return {
stepTableFormData: this.formData.stepTableFormData_1 || [],
headerSelectFields: {}
}
},
//
remarkConfig() {
return [
@ -246,7 +267,7 @@ export default {
jgxxQxbd: {
label: 'template.dl.dl009.qxbd',
type: 'qxbd',
qxbdType: 'DL006',
// qxbdType: 'DL006',
fillType: 'actFill',
filledCodes: ['bdmc', 'bdbh']
}
@ -256,46 +277,54 @@ export default {
},
//
jgxxColumns() {
return [
{
label: 'template.dl.dl009.jlzb',
prop: 'jlzb',
bodyType: 'input',
bodyFillType: 'actFill'
},
{
label: 'template.dl.dl009.jzbh',
prop: 'jzbh',
bodyType: 'input',
bodyFillType: 'actFill'
},
{
label: 'template.dl.dl009.czqk',
prop: 'czqk',
bodyType: 'select',
bodyFillType: 'actFill',
bodyOptions: this.getDictOptions('business_dl_amescdqk')
},
{
label: 'template.dl.dl009.bjjt',
prop: 'bjjt',
bodyType: 'select',
bodyFillType: 'actFill',
bodyOptions: this.getDictOptions('business_dl_amesbjjt')
},
{
label: 'template.dl.dl009.jls',
prop: 'jls',
bodyType: 'inputNumber',
bodyFillType: 'actFill'
}
]
//
return this.dynamicJgxxColumns
}
},
data() {
return {
formData: {},
refConf
refConf,
dynamicJgxxColumns: [], //
isDataLoaded: false //
}
},
mounted() {
//
this.$nextTick(() => {
this.initializeTableFromFormData()
})
},
watch: {
//
'formData.stepTableFormData_1': {
handler(newVal) {
if (newVal && newVal.length > 0 && !this.isDataLoaded) {
this.initializeTableFromFormData()
}
},
deep: true,
immediate: true
},
// 使
'formData.stepTableFormData': {
handler(newVal) {
if (newVal && newVal.length > 0) {
this.initializeYqsyTableFromFormData()
}
},
deep: true,
immediate: true
},
//
'dict.type.business_dl_amescdqk': {
handler(newVal) {
if (newVal && newVal.length > 0 && this.dynamicJgxxColumns.length > 0) {
// bodyOptions
this.updateDynamicColumnsOptions()
}
},
immediate: true
}
},
methods: {
@ -303,30 +332,212 @@ export default {
deleteTableRow(rowIndex, refName) {
this.$refs[refName].deleteRow(rowIndex)
},
//
initializeTableFromFormData() {
try {
const stepTableFormData_1 = this.formData.stepTableFormData_1
const headerSelectFields = this.formData.headerSelectFields || {}
//
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'))
.sort((a, b) => {
const numA = parseInt(a.replace('jzbh', ''))
const numB = parseInt(b.replace('jzbh', ''))
return numA - numB
})
if (jzbhKeys.length === 0) {
return
}
// jzbh
const dynamicColumns = [
{
label: 'template.dl.dl009.jlzb',
prop: 'jlzb',
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 100
}
]
// headerSelectFields
jzbhKeys.forEach((_jzbhKey, index) => {
const colIndex = index + 1
// headerSelectFields T-A02
const jzbhLabel = headerSelectFields[`${colIndex}_1`] || `菌种${colIndex}`
//
dynamicColumns.push({
label: jzbhLabel,
prop: `jzbh${colIndex}`,
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 150
})
dynamicColumns.push({
label: `${jzbhLabel}${this.$t('template.dl.dl009.czqk')}`,
prop: `czqk${colIndex}`,
bodyType: 'select',
bodyFillType: 'actFill',
bodyOptions: this.getDictOptions('business_dl_amescdqk'),
width: 200
})
dynamicColumns.push({
label: `${jzbhLabel}${this.$t('template.dl.dl009.bjjt')}`,
prop: `bjjt${colIndex}`,
bodyType: 'select',
bodyFillType: 'actFill',
bodyOptions: this.getDictOptions('business_dl_amesbjjt'),
width: 200
})
dynamicColumns.push({
label: `${jzbhLabel}${this.$t('template.dl.dl009.jls')}`,
prop: `jls${colIndex}`,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
width: 200
})
})
//
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.isDataLoaded = true
//
this.$nextTick(() => {
const tableRef = this.$refs[refConf.jgxx]
if (tableRef) {
tableRef.updateDataSource(stepTableFormData_1)
// oldLocalDataSource
//
this.$nextTick(() => {
tableRef.oldLocalDataSource = JSON.parse(JSON.stringify(tableRef.localDataSource))
})
}
})
} catch (error) {
console.error('初始化结果信息表格数据失败:', error)
}
},
// 使
initializeYqsyTableFromFormData() {
try {
const stepTableFormData = this.formData.stepTableFormData
if (!stepTableFormData || stepTableFormData.length === 0) {
return
}
this.$nextTick(() => {
const tableRef = this.$refs[refConf.yqsy]
if (tableRef) {
tableRef.updateDataSource(stepTableFormData)
// oldLocalDataSource
this.$nextTick(() => {
tableRef.oldLocalDataSource = JSON.parse(JSON.stringify(tableRef.localDataSource))
})
}
})
} catch (error) {
console.error('初始化仪器使用信息表格数据失败:', error)
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(refNames)
const baseData = this.getFilledFormDataByRefs(refNames)
// 使
const yqsyTableRef = this.$refs[refConf.yqsy]
if (yqsyTableRef) {
const yqsyData = yqsyTableRef.getFilledFormData()
// 使 stepTableFormData
baseData.stepTableFormData = yqsyData.stepTableFormData || []
}
//
const jgxxTableRef = this.$refs[refConf.jgxx]
if (jgxxTableRef) {
const jgxxData = jgxxTableRef.getFilledFormData()
// stepTableFormData_1
baseData.stepTableFormData_1 = jgxxData.stepTableFormData || []
}
// headerSelectFields
if (this.formData.headerSelectFields) {
baseData.headerSelectFields = this.formData.headerSelectFields
}
return baseData
},
//
async getFormData() {
return await this.validFormFields(refNames)
//
return await this.validFields()
},
//
async validFields() {
// 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'))
}
// 3.
return await this.validFormFields(refNames)
},
getResource() {
const yqsyStepResource = this.$refs.yqsyTableRef.getStepResource()
const jgxxStepResource = this.$refs.jgxxTableRef.getStepResource()
// 使
this.resourceTmp = [
...(yqsyStepResource.sjResource || []),
...(jgxxStepResource.sjResource || [])
]
this.yqResourceTmp = [
...(yqsyStepResource.yqResource || []),
...(jgxxStepResource.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) {
@ -340,12 +551,251 @@ export default {
jzrq: row.jzrq
}
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(rowIndex, params)
return
}
//
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)) : {}
// 使 $nextTick tick
this.$nextTick(() => {
this.handleJgxxQxbdSelect(row)
// 使 $nextTick handleJgxxQxbdSelect
this.$nextTick(() => {
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)
}
})
})
}
},
//
handleJgxxQxbdSelect(row) {
//
this.isDataLoaded = false
try {
if (!row.bdnr) {
this.clearJgxxTable()
return
}
const bdnr = JSON.parse(row.bdnr)
const headerFields = bdnr.headerFields || {}
const stepTableFormData_1 = bdnr.stepTableFormData_1 || []
//
if (!stepTableFormData_1 || stepTableFormData_1.length === 0) {
this.clearJgxxTable()
return
}
// 1.
const dynamicColumns = this.generateDynamicJgxxColumns(headerFields)
if (!dynamicColumns) {
this.clearJgxxTable()
return
}
// 2.
const tableData = this.generateJgxxTableData(
stepTableFormData_1,
dynamicColumns.columnKeys
)
if (tableData.length === 0) {
this.clearJgxxTable()
return
}
// 3.
this.updateJgxxTable(dynamicColumns.columns, tableData, headerFields)
} catch (error) {
console.error('解析前序表单数据失败:', error)
this.clearJgxxTable()
}
},
//
async onSave() {
const formData = this.getStepResource()
console.log(formData, 'formData')
},
//
generateDynamicJgxxColumns(headerFields) {
// _1 key
const columnKeys = Object.keys(headerFields)
.filter((key) => key.endsWith('_1'))
.sort((a, b) => parseInt(a.split('_')[0]) - parseInt(b.split('_')[0]))
if (columnKeys.length === 0) {
return null
}
const columns = [
{
label: 'template.dl.dl009.jlzb',
prop: 'jlzb',
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 100
}
]
columnKeys.forEach((key, index) => {
const colIndex = index + 1
// "1_1" -> "1"
const baseColIndex = key.split('_')[0]
// headerField T-A02
const jzbhLabel = headerFields[`${baseColIndex}_1`] || ''
//
columns.push({
label: jzbhLabel,
prop: `jzbh${colIndex}`,
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
disabled: true,
width: 150
})
columns.push({
label: `${jzbhLabel}${this.$t('template.dl.dl009.czqk')}`,
prop: `czqk${colIndex}`,
bodyType: 'select',
bodyFillType: 'actFill',
bodyOptions: this.getDictOptions('business_dl_amescdqk'),
width: 200
})
columns.push({
label: `${jzbhLabel}${this.$t('template.dl.dl009.bjjt')}`,
prop: `bjjt${colIndex}`,
bodyType: 'select',
bodyFillType: 'actFill',
bodyOptions: this.getDictOptions('business_dl_amesbjjt'),
width: 200
})
columns.push({
label: `${jzbhLabel}${this.$t('template.dl.dl009.jls')}`,
prop: `jls${colIndex}`,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
width: 200
})
})
return { columns, columnKeys }
},
//
generateJgxxTableData(stepTableFormData_1, columnKeys) {
const tableData = []
stepTableFormData_1.forEach((item) => {
const rowData = { jlzb: item.jlzb || '' }
columnKeys.forEach((_key, index) => {
const colIndex = index + 1
// headerFields
const jzbhValue = item[`czrxm_${index}Label`] || ''
//
rowData[`jzbh${colIndex}`] = jzbhValue
rowData[`czqk${colIndex}`] = ''
rowData[`bjjt${colIndex}`] = ''
rowData[`jls${colIndex}`] = ''
})
tableData.push(rowData)
})
return tableData
},
//
updateJgxxTable(columns, tableData, headerFields) {
//
this.dynamicJgxxColumns = columns
// headerFields formData
if (!this.formData.headerSelectFields) {
this.$set(this.formData, 'headerSelectFields', {})
}
Object.keys(headerFields).forEach((key) => {
this.$set(this.formData.headerSelectFields, key, headerFields[key])
})
this.$nextTick(() => {
const tableRef = this.$refs[refConf.jgxx]
if (tableRef) {
//
tableRef.updateDataSource(tableData)
// oldLocalDataSource
//
this.$nextTick(() => {
tableRef.oldLocalDataSource = JSON.parse(
JSON.stringify(tableRef.localDataSource)
)
})
}
this.$set(this.formData, 'stepTableFormData_1', tableData)
this.isDataLoaded = true
})
},
//
clearJgxxTable() {
this.dynamicJgxxColumns = []
this.$set(this.formData, 'stepTableFormData_1', [])
this.$set(this.formData, 'headerSelectFields', {})
this.$nextTick(() => {
this.$refs[refConf.jgxx]?.updateDataSource([])
})
},
//
updateDynamicColumnsOptions() {
if (this.dynamicJgxxColumns.length === 0) {
return
}
// select bodyOptions
this.dynamicJgxxColumns.forEach(col => {
if (col.bodyType === 'select') {
if (col.prop.startsWith('czqk')) {
col.bodyOptions = this.getDictOptions('business_dl_amescdqk')
} else if (col.prop.startsWith('bjjt')) {
col.bodyOptions = this.getDictOptions('business_dl_amesbjjt')
}
}
})
//
this.$forceUpdate()
}
}
}

+ 1
- 0
src/views/business/comps/template/comps/gsp/DMYPPZJLB.vue View File

@ -83,6 +83,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/gsp/GSP001.vue View File

@ -82,6 +82,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/gsp/GSP002.vue View File

@ -227,6 +227,7 @@ export default {
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'paralleStepStorageConditionOther'
}
}

+ 1
- 0
src/views/business/comps/template/comps/gsp/GSP003.vue View File

@ -105,6 +105,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/gsp/GSP004.vue View File

@ -249,6 +249,7 @@ export default {
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'paralleStepStorageConditionOther'
}
}

+ 2
- 0
src/views/business/comps/template/comps/gsp/GSP005.vue View File

@ -300,6 +300,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
sywzbhph: {
@ -493,6 +494,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
yrybhph: {

+ 1
- 0
src/views/business/comps/template/comps/gsp/GSP010.vue View File

@ -240,6 +240,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/lba/LBA008.vue View File

@ -102,6 +102,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 2
- 0
src/views/business/comps/template/comps/pcr/PCR002.vue View File

@ -91,6 +91,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}
@ -219,6 +220,7 @@ export default {
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},

+ 2
- 0
src/views/business/comps/template/comps/pcr/PCR003.vue View File

@ -92,6 +92,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}
@ -220,6 +221,7 @@ export default {
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},

+ 2
- 0
src/views/business/comps/template/comps/pcr/PCR004.vue View File

@ -92,6 +92,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}
@ -220,6 +221,7 @@ export default {
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR005.vue View File

@ -106,6 +106,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR007.vue View File

@ -103,6 +103,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR008.vue View File

@ -85,6 +85,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR009.vue View File

@ -102,6 +102,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR010.vue View File

@ -87,6 +87,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR011.vue View File

@ -87,6 +87,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/pcr/PCR012.vue View File

@ -73,6 +73,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 1
- 0
src/views/business/comps/template/comps/sp/SP001.vue View File

@ -68,6 +68,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 5
- 0
src/views/business/comps/template/comps/sp/SP0020.vue View File

@ -13,6 +13,7 @@
<BaseInfoFormPackage fieldItemLabel="仪器结果" label="仪器结果"
:ref="refConfig.yqjgRef" :formConfig="yqjgFormConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="采集日期" label="采集日期"
v-if="sn ==='SP0020'"
:ref="refConfig.cjrqRef" :formConfig="cjrqFormConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="分析批数据文件" label="分析批数据文件"
:ref="refConfig.fxpsjwjRef" :formConfig="fxpsjwjFormConfig" :formData="formData" />
@ -57,6 +58,10 @@ export default {
type: String,
default: 'preFill',
},
sn: {
type: String,
default: '',
},
},
computed: {
//

+ 2
- 0
src/views/business/comps/template/comps/sp/SP003.vue View File

@ -80,6 +80,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: "storageConditionOther",
},
@ -245,6 +246,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions('business_cctj'),
multiple: true,
otherCode: "stepStorageConditionOther",
},

+ 262
- 247
src/views/business/comps/template/comps/sp/SP00456.vue View File

@ -26,9 +26,11 @@
</div>
<LineLabel :label="getOperationStepsLabel()" />
<div v-if="fillType === 'preFill'" class="mt-20">
<el-button type="primary" @click="handleAddConfig('paralleConfigs')">{{ $t('template.common.xzpxpz')
<el-button type="primary" @click="handleAddConfig('paralleConfigs')">{{
$t('template.common.xzpxpz')
}}</el-button>
<el-button type="primary" @click="handleAddConfig('ladderConfigs')">{{ $t('template.common.xzjtpz')
<el-button type="primary" @click="handleAddConfig('ladderConfigs')">{{
$t('template.common.xzjtpz')
}}</el-button>
</div>
<!-- 阶梯配制区域 -->
@ -37,30 +39,29 @@
<LadderConfig :currentFormConfig="ladderStepFormConfig" :currentFormData="ladderConfig"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="ladderStepColumns" :prefixKey="'ladder_' + ladderIndex"
:configType="'ladder'"
:ref="`ladderRef_${ladderIndex}`" :fieldItemLabel="'template.common.jtpz'"
@deleteConfig="deleteConfig('ladderConfigs',ladderConfig)"
:fillType="fillType" />
:configType="'ladder'" :ref="`ladderRef_${ladderIndex}`"
:fieldItemLabel="'template.common.jtpz'"
@deleteConfig="deleteConfig('ladderConfigs', ladderConfig)" :fillType="fillType" />
</div>
<!-- 平行配制区域 -->
<div
v-for="(paralleConfig, paralleIndex) in formData.paralleConfigs"
<div v-for="(paralleConfig, paralleIndex) in formData.paralleConfigs"
:key="'paralle_' + paralleConfig.id">
<LadderConfig :currentFormConfig="paralleStepFormConfig" :currentFormData="paralleConfig"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="paralleStepColumns" :prefixKey="'paralle_' + paralleIndex"
:configType="'paralle'"
:ref="`paralleRef_${paralleIndex}`" :fieldItemLabel="'template.common.pxpz'"
@deleteConfig="deleteConfig('paralleConfigs',paralleConfig)"
:fillType="fillType" />
:configType="'paralle'" :ref="`paralleRef_${paralleIndex}`"
:fieldItemLabel="'template.common.pxpz'"
@deleteConfig="deleteConfig('paralleConfigs', paralleConfig)" :fillType="fillType" />
</div>
<template v-if="sn === 'LBA005'">
<LineLabel :label="$t('template.lba.lba005.zkpz')" />
<div v-if="fillType === 'preFill'" class="mt-20">
<el-button type="primary" @click="handleAddConfig('paralleConfigs_1')">{{ $t('template.common.xzpxpz')
<el-button type="primary" @click="handleAddConfig('paralleConfigs_1')">{{
$t('template.common.xzpxpz')
}}</el-button>
<el-button type="primary" @click="handleAddConfig('ladderConfigs_1')">{{ $t('template.common.xzjtpz')
<el-button type="primary" @click="handleAddConfig('ladderConfigs_1')">{{
$t('template.common.xzjtpz')
}}</el-button>
</div>
<!-- 阶梯配制区域 -->
@ -69,23 +70,20 @@
<LadderConfig :currentFormConfig="ladderStepFormConfig" :currentFormData="ladderConfig"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="ladderStepColumns" :prefixKey="'ladder_1_' + ladderIndex"
:configType="'ladder'"
:ref="`ladderRef_1_${ladderIndex}`" :fieldItemLabel="'template.common.jtpz'"
@deleteConfig="deleteConfig('ladderConfigs_1',ladderConfig)"
:fillType="fillType" />
:configType="'ladder'" :ref="`ladderRef_1_${ladderIndex}`"
:fieldItemLabel="'template.common.jtpz'"
@deleteConfig="deleteConfig('ladderConfigs_1', ladderConfig)" :fillType="fillType" />
</div>
<!-- 平行配制区域 -->
<div
v-for="(paralleConfig, paralleIndex) in formData.paralleConfigs_1"
<div v-for="(paralleConfig, paralleIndex) in formData.paralleConfigs_1"
:key="'paralle_1_' + paralleConfig.id">
<LadderConfig :currentFormConfig="paralleStepFormConfig" :currentFormData="paralleConfig"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:tableColumns="paralleStepColumns" :prefixKey="'paralle_1_' + paralleIndex"
:configType="'paralle'"
:ref="`paralleRef_1_${paralleIndex}`" :fieldItemLabel="'template.common.pxpz'"
@deleteConfig="deleteConfig('paralleConfigs_1',paralleConfig)"
:fillType="fillType" />
:configType="'paralle'" :ref="`paralleRef_1_${paralleIndex}`"
:fieldItemLabel="'template.common.pxpz'"
@deleteConfig="deleteConfig('paralleConfigs_1', paralleConfig)" :fillType="fillType" />
</div>
</template>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
@ -109,8 +107,7 @@ import CustomTable from '@/components/Template/CustomTable.vue';
import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue";
import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete.vue"
import { getExpireDate, duplicateResource } from "@/utils/index.js";
import { getuuid } from "@/utils/index.js";
import { getExpireDate, duplicateResource, justUpdateFilledFormData, getuuid } from "@/utils/index.js";
import { isCommonUnit } from "@/utils/conTools";
import { addTj, uniqeResource, uniqeResourceOne, addDecimals } from "@/utils/calUnitTools";
import {
@ -118,7 +115,7 @@ import {
getBaseInfoFormConfig, getRemarkFormConfig, getStorageConditionFormConfig, getParalleStepFormConfig, getJcbColumnsConfig
} from "../../formConfig/paralleAndLadderConfig.js";
import LadderConfig from "@/views/business/comps/template/comps/sp/comps/LadderConfig.vue";
const configTyps =[
const configTyps = [
{
configType: "paralle",
ref: "paralleRef",
@ -222,7 +219,7 @@ export default {
getOperationStepsLabel() {
const obj = {
"LBA005": "template.lba.lba005.bzqxpz",//线
"LBA007": "template.lba.lba005.bzqxpz",//
// "LBA007": "template.lba.lba005.bzqxpz",//
}
return obj[this.sn] || 'template.common.operationSteps';//
},
@ -234,15 +231,16 @@ export default {
},
//
async assignNumbersToTableData(config) {
const { configType, ref, configName } = config;
return new Promise(async (resolve, reject) => {
const configs = this.formData[config]
const configs = this.formData[configName]
const { startDate } = this.formData;
// paralleConfigsparalleTableFormData
if (configs && configs.length > 0) {
for (let i = 0; i < configs.length; i++) {
const ref = config === "paralleConfigs" ? `paralleRef_${i}` : `ladderRef_${i}`;
const currentRef = `${ref}_${i}`;
const { stepTableFormData = [], effectivePeriod, effectivePeriodUnit, expireDate } = configs[i];
if (!expireDate && config === "ladderConfigs") {
if (!expireDate && configType === "ladder") {
const date = getExpireDate(startDate, effectivePeriod, effectivePeriodUnit);
configs[i].expireDate = date;
}
@ -257,13 +255,13 @@ export default {
const snList = await this.getLatestSnArr(codes);
tableDataArray.forEach((row, idx) => {
let expDate = {};
if (config === "paralleConfigs" && !row.targetSolutionExpirationDate) {
if (configType === "paralle" && !row.targetSolutionExpirationDate) {
let date = getExpireDate(startDate, row.targetSolutionCycle, row.targetSolutionCyclePrecision);
expDate = {
targetSolutionExpirationDate: date
}
}
this.$refs[ref][0]?.updateDataSourceByRowIndex(idx, { subTargetSolutionCode: snList[idx], ...expDate });
this.$refs[currentRef][0]?.updateDataSourceByRowIndex(idx, { subTargetSolutionCode: snList[idx], ...expDate });
});
resolve()
} else {
@ -272,37 +270,36 @@ export default {
}
}
} else {
resolve()
}
})
},
async handleUpdateCode() {
Promise.all([this.assignNumbersToTableData("ladderConfigs"), this.assignNumbersToTableData("paralleConfigs")
]).then(() => {
const pros = configTyps.map(item => this.assignNumbersToTableData(item));
Promise.all(pros).then(() => {
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params,)
justUpdateFilledFormData();
})
},
//
handleAddConfig(configType) {
//
if (!this.formData[configType]) {
// formdatabug
this.formData = { ...this.formData, ...this.getFilledFormData() };
this.$set(this.formData, configType, []);
// this.formData[configType] = [];
}
//
this.formData[configType].push({
id: getuuid(),
stepData: [],
paralleTableFormData: [],
showParalleConfig: true
});
this.justUpdateFilledFormData();
justUpdateFilledFormData();
},
//
deleteConfig(type, con) {
@ -314,12 +311,7 @@ export default {
this.$set(this.formData, type, newConfigs);
this.$nextTick(() => {
//
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
EventBus.$emit('onModifyRecord', params,)
justUpdateFilledFormData();
})
}
},
@ -329,28 +321,37 @@ export default {
const { isLba } = this;
const refsToValidate = isLba ? ["baseInfoRef", "jcbRef", "remarkRef"] : ["baseInfoRef", "storageConditionRef", "remarkRef"]
//
configTyps.map((item) => {
const { ref, configName } = item;
const configs = this.formData[configName] || [];
configs.map((config, i) => {
if (this.$refs[`${ref}_${i}`]) {
refsToValidate.push(`${ref}_${i}`);
}
})
//
if (this.formData.ladderConfigs && this.formData.ladderConfigs.length > 0) {
for (let i = 0; i < this.formData.ladderConfigs.length; i++) {
refsToValidate.push(`ladderRef_${i}`);
}
}
})
// //
// if (this.formData.ladderConfigs && this.formData.ladderConfigs.length > 0) {
// for (let i = 0; i < this.formData.ladderConfigs.length; i++) {
// refsToValidate.push(`ladderRef_${i}`);
// }
// }
//
if (this.formData.paralleConfigs && this.formData.paralleConfigs.length > 0) {
for (let i = 0; i < this.formData.paralleConfigs.length; i++) {
refsToValidate.push(`paralleRef_${i}`);
}
}
// //
// if (this.formData.paralleConfigs && this.formData.paralleConfigs.length > 0) {
// for (let i = 0; i < this.formData.paralleConfigs.length; i++) {
// refsToValidate.push(`paralleRef_${i}`);
// }
// }
return await this.validFormFields(refsToValidate);
},
getFilledFormData() {
const baseData = this.$refs.baseInfoRef.getFilledFormData();
let conditionData = {},jcbData = [];
let conditionData = {}, jcbData = [];
if (!this.isLba) {
conditionData = this.$refs.storageConditionRef.getFilledFormData();
}else{
} else {
jcbData = this.$refs.jcbRef.getFilledFormData();
}
const remarkData = this.$refs.remarkRef.getFilledFormData();
@ -360,12 +361,12 @@ export default {
...jcbData,
...remarkData
}
configTyps.map((item)=>{
configTyps.map((item) => {
const { ref, configName } = item;
const configs = this.formData[configName] || [];
const configData= [];
configs.map((sItem,index)=>{
const {id} = sItem;
const configData = [];
configs.map((sItem, index) => {
const { id } = sItem;
const {
baseFormData,
tableData,
@ -391,16 +392,18 @@ export default {
}
let content = this.getFilledFormData();
if (content) {
const { ladderConfigs = [], paralleConfigs = [] } = content;
if (ladderConfigs.length > 0) {
const ladderConUnitDiff = ladderConfigs.every(item => isCommonUnit(item.subTargetStartSolution, [item.headerSelectFields.actSolutionConcentrationUnit, item.headerSelectFields.targetSolutionConcentrationUnit]));
const { ladderConfigs = [], paralleConfigs = [], paralleConfigs_1 = [], ladderConfigs_1 = [] } = content;
const lConfig = ladderConfigs || ladderConfigs_1;
const pConfig = paralleConfigs || paralleConfigs_1;
if (lConfig.length > 0) {
const ladderConUnitDiff = lConfig.every(item => isCommonUnit(item.subTargetStartSolution, [item.headerSelectFields.actSolutionConcentrationUnit, item.headerSelectFields.targetSolutionConcentrationUnit]));
if (!ladderConUnitDiff) {
this.$message.error("起始浓度单位与目标浓度单位不符,请重新选择!");
return false;
}
}
if (paralleConfigs.length > 0) {
const paralleConUnitDiff = paralleConfigs.every(item => {
if (pConfig.length > 0) {
const paralleConUnitDiff = pConfig.every(item => {
const { stepTableFormData = [], headerSelectFields = {} } = item;
const conUnits = stepTableFormData.map(item => item.targetStartSolutionConcentrationPrecision);
const { actSolutionConcentrationUnit, targetSolutionConcentrationUnit } = headerSelectFields;
@ -419,175 +422,175 @@ export default {
//resource
let tmpResource = []
if (this.fillType === "actFill") {
debugger
//
if (content.ladderConfigs && content.ladderConfigs.length > 0) {
for (let i = 0; i < content.ladderConfigs.length; i++) {
let ladderConfigs = content.ladderConfigs[i]
let stepTableFormData = ladderConfigs.stepTableFormData
for (let j = 0; j < stepTableFormData.length; j++) {
configTyps.map((item) => {
const { configName, configType } = item;
const configs = content[configName] || [];
if (configType === "ladder") {
for (let i = 0; i < configs.length; i++) {
let ladderConfigs = configs[i]
let stepTableFormData = ladderConfigs.stepTableFormData
for (let j = 0; j < stepTableFormData.length; j++) {
//
let fzTotal = 0//
let fzsj = stepTableFormData[j].fzsj
if (fzsj && fzsj.fzList) {
for (let k = 0; k < fzsj.fzList.length; k++) {
let fzItem = fzsj.fzList[k]
tmpResource.push({
mc: null,
bh: fzsj.mybh + fzItem.preCode + fzItem.subCode,
ph: null,
nd: stepTableFormData[j].actSolutionConcentration,
nddw: ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
ndz: stepTableFormData[j].actSolutionConcentration + ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: ladderConfigs.expireDate,
kc: fzItem.num,
kcdw: fzsj.dw,
type: null,
elnType: this.product,
syl: null,
syldw: ladderConfigs.headerSelectFields.actSolutionVolumeUnit,
yxzq: ladderConfigs.effectivePeriod,
yxzqdw: ladderConfigs.effectivePeriodUnit,
})
fzTotal = addDecimals(fzTotal, fzItem.num)
//
let fzTotal = 0//
let fzsj = stepTableFormData[j].fzsj
if (fzsj && fzsj.fzList) {
for (let k = 0; k < fzsj.fzList.length; k++) {
let fzItem = fzsj.fzList[k]
tmpResource.push({
mc: null,
bh: fzsj.mybh + fzItem.preCode + fzItem.subCode,
ph: null,
nd: stepTableFormData[j].actSolutionConcentration,
nddw: ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
ndz: stepTableFormData[j].actSolutionConcentration + ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: ladderConfigs.expireDate,
kc: fzItem.num,
kcdw: fzsj.dw,
type: null,
elnType: this.product,
syl: null,
syldw: ladderConfigs.headerSelectFields.actSolutionVolumeUnit,
yxzq: ladderConfigs.effectivePeriod,
yxzqdw: ladderConfigs.effectivePeriodUnit,
})
fzTotal = addDecimals(fzTotal, fzItem.num)
}
}
//
//(+)
const { total, unit } = addTj([stepTableFormData[j].actStartSolutionVolume, stepTableFormData[j].actDiluentVolume], [ladderConfigs.headerSelectFields.actStartSolutionVolumeUnit, ladderConfigs.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: stepTableFormData[j].targetSolutionCode + stepTableFormData[j].subTargetSolutionCode,
ph: null,
ndz: stepTableFormData[j].actSolutionConcentration + ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
nd: stepTableFormData[j].actSolutionConcentration,
nddw: ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: ladderConfigs.expireDate,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal > 0 ? fzTotal : null,
syldw: fzTotal > 0 ? fzsj.dw : unit,
yxzq: ladderConfigs.effectivePeriod,
yxzqdw: ladderConfigs.effectivePeriodUnit,
})
//
tmpResource.push({
mc: null,
bh: ladderConfigs.subStartSolution,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: stepTableFormData[j].actStartSolutionVolume,
syldw: ladderConfigs.headerSelectFields.actStartSolutionVolumeUnit,
yxzq: null,
yxzqdw: null,
})
//
tmpResource.push({
mc: null,
bh: ladderConfigs.subSolution,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: stepTableFormData[j].actDiluentVolume,
syldw: ladderConfigs.headerSelectFields.actDiluentVolumeUnit,
yxzq: null,
yxzqdw: null,
})
}
//
//(+)
const { total, unit } = addTj([stepTableFormData[j].actStartSolutionVolume, stepTableFormData[j].actDiluentVolume], [ladderConfigs.headerSelectFields.actStartSolutionVolumeUnit, ladderConfigs.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: stepTableFormData[j].targetSolutionCode + stepTableFormData[j].subTargetSolutionCode,
ph: null,
ndz: stepTableFormData[j].actSolutionConcentration + ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
nd: stepTableFormData[j].actSolutionConcentration,
nddw: ladderConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: ladderConfigs.expireDate,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal > 0 ? fzTotal : null,
syldw: fzTotal > 0 ? fzsj.dw : unit,
yxzq: ladderConfigs.effectivePeriod,
yxzqdw: ladderConfigs.effectivePeriodUnit,
})
//
tmpResource.push({
mc: null,
bh: ladderConfigs.subStartSolution,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: stepTableFormData[j].actStartSolutionVolume,
syldw: ladderConfigs.headerSelectFields.actStartSolutionVolumeUnit,
yxzq: null,
yxzqdw: null,
})
//
tmpResource.push({
mc: null,
bh: ladderConfigs.subSolution,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: stepTableFormData[j].actDiluentVolume,
syldw: ladderConfigs.headerSelectFields.actDiluentVolumeUnit,
yxzq: null,
yxzqdw: null,
})
}
}
}
//
if (content.paralleConfigs && content.paralleConfigs.length > 0) {
for (let i = 0; i < content.paralleConfigs.length; i++) {
let paralleConfigs = content.paralleConfigs[i]
let stepTableFormData = paralleConfigs.stepTableFormData
for (let j = 0; j < stepTableFormData.length; j++) {
//
let fzTotal = 0//
let fzsj = stepTableFormData[j].fzsj
if (fzsj && fzsj.fzList) {
for (let k = 0; k < fzsj.fzList.length; k++) {
let fzItem = fzsj.fzList[k]
tmpResource.push({
mc: null,
bh: fzsj.mybh + fzItem.preCode + fzItem.subCode,
ph: null,
ndz: stepTableFormData[j].actSolutionConcentration + paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
nd: stepTableFormData[j].actSolutionConcentration,
nddw: paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: paralleConfigs.expireDate,
kc: fzItem.num,
kcdw: fzsj.dw,
type: null,
elnType: this.product,
syl: null,
syldw: paralleConfigs.headerSelectFields.actSolutionVolumeUnit,
yxzq: paralleConfigs.effectivePeriod,
yxzqdw: paralleConfigs.effectivePeriodUnit,
})
fzTotal = addDecimals(fzTotal, fzItem.num)
} else {
for (let i = 0; i < configs.length; i++) {
let paralleConfigs = configs[i]
let stepTableFormData = paralleConfigs.stepTableFormData
for (let j = 0; j < stepTableFormData.length; j++) {
//
let fzTotal = 0//
let fzsj = stepTableFormData[j].fzsj
if (fzsj && fzsj.fzList) {
for (let k = 0; k < fzsj.fzList.length; k++) {
let fzItem = fzsj.fzList[k]
tmpResource.push({
mc: null,
bh: fzsj.mybh + fzItem.preCode + fzItem.subCode,
ph: null,
ndz: stepTableFormData[j].actSolutionConcentration + paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
nd: stepTableFormData[j].actSolutionConcentration,
nddw: paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: paralleConfigs.expireDate,
kc: fzItem.num,
kcdw: fzsj.dw,
type: null,
elnType: this.product,
syl: null,
syldw: paralleConfigs.headerSelectFields.actSolutionVolumeUnit,
yxzq: paralleConfigs.effectivePeriod,
yxzqdw: paralleConfigs.effectivePeriodUnit,
})
fzTotal = addDecimals(fzTotal, fzItem.num)
}
}
//
const { total, unit } = addTj([stepTableFormData[j].actSolutionVolume, stepTableFormData[j].actDiluentVolume], [paralleConfigs.headerSelectFields.actSolutionVolumeUnit, paralleConfigs.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: stepTableFormData[j].targetSolutionCode + stepTableFormData[j].subTargetSolutionCode,
ph: null,
nd: stepTableFormData[j].actSolutionConcentration,
ndz: stepTableFormData[j].actSolutionConcentration + paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
nddw: paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: stepTableFormData[j].targetSolutionExpirationDate,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal > 0 ? fzTotal : null,
syldw: fzTotal > 0 ? fzsj.dw : unit,
yxzq: stepTableFormData[j].targetSolutionCycle,
yxzqdw: stepTableFormData[j].targetSolutionCyclePrecision,
})
//
tmpResource.push({
mc: null,
bh: paralleConfigs.subSolution,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: stepTableFormData[j].actDiluentVolume,
syldw: paralleConfigs.headerSelectFields.actDiluentVolumeUnit,
yxzq: null,
yxzqdw: null,
})
}
//
const { total, unit } = addTj([stepTableFormData[j].actSolutionVolume, stepTableFormData[j].actDiluentVolume], [paralleConfigs.headerSelectFields.actSolutionVolumeUnit, paralleConfigs.headerSelectFields.actDiluentVolumeUnit])
tmpResource.push({
mc: null,
bh: stepTableFormData[j].targetSolutionCode + stepTableFormData[j].subTargetSolutionCode,
ph: null,
nd: stepTableFormData[j].actSolutionConcentration,
ndz: stepTableFormData[j].actSolutionConcentration + paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
nddw: paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
ly: 'ELN配制',
sxrq: stepTableFormData[j].targetSolutionExpirationDate,
kc: total,
kcdw: unit,
type: null,
elnType: this.product,
syl: fzTotal > 0 ? fzTotal : null,
syldw: fzTotal > 0 ? fzsj.dw : unit,
yxzq: stepTableFormData[j].targetSolutionCycle,
yxzqdw: stepTableFormData[j].targetSolutionCyclePrecision,
})
//
tmpResource.push({
mc: null,
bh: paralleConfigs.subSolution,
ph: null,
nd: null,
nddw: null,
ndz: null,
ly: null,
sxrq: null,
kc: null,
kcdw: null,
type: 1,
syl: stepTableFormData[j].actDiluentVolume,
syldw: paralleConfigs.headerSelectFields.actDiluentVolumeUnit,
yxzq: null,
yxzqdw: null,
})
}
}
}
})
}
if (tmpResource.length > 0) {
tmpResource = uniqeResourceOne(tmpResource)
@ -596,24 +599,36 @@ export default {
const stepResource = this.getStepResource()
this.resourceTmp = uniqeResource(tmpResource, stepResource.sjResource || [])
this.yqResourceTmp = stepResource.yqResource || []
console.log(this.resourceTmp,"resourceTmp")
return this.resourceTmp;
},
getStepResource() {
const sjResource = [], yqResource = [];
if (this.formData.paralleConfigs && this.formData.paralleConfigs.length > 0) {
for (let i = 0; i < this.formData.paralleConfigs.length; i++) {
const paralleResource = this.$refs[`paralleRef_${i}`][0].getStepResource();
sjResource.push(...paralleResource.sjResource);
yqResource.push(...paralleResource.yqResource);
}
}
if (this.formData.ladderConfigs && this.formData.ladderConfigs.length > 0) {
for (let i = 0; i < this.formData.ladderConfigs.length; i++) {
const ladderResource = this.$refs[`ladderRef_${i}`][0].getStepResource();
sjResource.push(...ladderResource.sjResource);
yqResource.push(...ladderResource.yqResource);
}
}
configTyps.map((item) => {
const { ref, configName } = item;
const configs = this.formData[configName] || [];
configs.map((config, i) => {
if (this.$refs[`${ref}_${i}`]) {
sjResource.push(...this.$refs[`${ref}_${i}`][0].getStepResource().sjResource);
yqResource.push(...this.$refs[`${ref}_${i}`][0].getStepResource().yqResource);
}
})
})
// if (this.formData.paralleConfigs && this.formData.paralleConfigs.length > 0) {
// for (let i = 0; i < this.formData.paralleConfigs.length; i++) {
// const paralleResource = this.$refs[`paralleRef_${i}`][0].getStepResource();
// sjResource.push(...paralleResource.sjResource);
// yqResource.push(...paralleResource.yqResource);
// }
// }
// if (this.formData.ladderConfigs && this.formData.ladderConfigs.length > 0) {
// for (let i = 0; i < this.formData.ladderConfigs.length; i++) {
// const ladderResource = this.$refs[`ladderRef_${i}`][0].getStepResource();
// sjResource.push(...ladderResource.sjResource);
// yqResource.push(...ladderResource.yqResource);
// }
// }
//
const { sj, yq } = duplicateResource(sjResource, yqResource)
return { sjResource: sj, yqResource: yq };

+ 1
- 0
src/views/business/comps/template/comps/sp/SP008.vue View File

@ -90,6 +90,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},

+ 1
- 0
src/views/business/comps/template/comps/sp/SP009.vue View File

@ -95,6 +95,7 @@ export default {
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
multiple: true,
otherCode: "storageConditionOther",
},
}

+ 4
- 9
src/views/business/comps/template/comps/sp/comps/LadderConfig.vue View File

@ -108,15 +108,10 @@ export default {
},
// getFormData
async getFormData() {
const baseFormData = await this.$refs.formPackageRef?.getFormData();
const tableData = await this.$refs.tableRef?.getFormData();
const stepData =await this.$refs.stepRef?.getFormData();
//
if (!baseFormData || !tableData || !stepData) {
return false;
}
return true;
const refs = ['formPackageRef', 'tableRef', 'stepRef']
const pros = refs.map((ref)=>this.$refs[ref]?.getFormData())
const result = await Promise.all(pros);
return result;
},
//
onRegentSubmit(data) {

+ 54
- 56
src/views/business/comps/template/formConfig/PCRTableConfig.js View File

@ -11,9 +11,9 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodySubKey: 'subTargetSolutionCode',
bodyFillType: 'preFill',
width: 280,
myCodeFields: ["targetSolutionCode", "bhOther", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
myCodeFields: ['targetSolutionCode', 'bhOther', 'subTargetSolutionCode'], //分装的母液编号字段
maxVolumeField: 'actSolutionVolume', //分装的最大量字段
maxVolumeFieldUnit: 'actSolutionVolumeUnit' //分装的最大量单位字段
},
{
label: 'template.pcr.pcr002.qsrybh',
@ -42,7 +42,7 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodyMaxlength: 10,
bodyDisabled: true,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
label: 'template.pcr.pcr002.sjqsrytj',
@ -74,7 +74,7 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodyPrecisionKey: 'targetDiluentVolumePrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actDiluentVolumeUnit",
headerSelectTo: 'actDiluentVolumeUnit'
},
{
label: 'template.pcr.pcr002.sjxsytj',
@ -87,7 +87,7 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom: 'targetDiluentVolume', //复制哪个字段
compareTo: 'targetDiluentVolume', //比较哪个字段
compareTo: 'targetDiluentVolume' //比较哪个字段
},
{
label: 'template.pcr.pcr002.ysmbrynd',
@ -99,7 +99,7 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
headerSelectTo:"actSolutionConcentrationUnit",
headerSelectTo: 'actSolutionConcentrationUnit'
},
{
label: 'template.pcr.pcr002.sjmbrynd',
@ -118,7 +118,7 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodyPrecisionKey: 'actSolutionConcentrationPrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionConcentration', //比较哪个字段
compareTo: 'targetSolutionConcentration' //比较哪个字段
},
{
label: 'template.pcr.pcr002.ysmbrytj',
@ -149,17 +149,17 @@ export const getLadderColumnsConfig = ($this, selectKey) => {
bodyMaxlength: 10,
// copyFrom: 'targetSolutionVolume', //复制哪个字段
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionVolume', //比较哪个字段
compareTo: 'targetSolutionVolume' //比较哪个字段
}
]
}
// 平行配置表格列配置
export const getParallelColumnsConfig = ($this) => {
const sn = $this.sn;
const sn = $this.sn
let o = {
"SP004":"business_sp_nbgzy",
"SP005":"business_sp_zkgzy",
"SP006":"business_sp_bzqxzkypzbb",
SP004: 'business_sp_nbgzy',
SP005: 'business_sp_zkgzy',
SP006: 'business_sp_bzqxzkypzbb'
}
return [
{
@ -170,9 +170,9 @@ export const getParallelColumnsConfig = ($this) => {
bodySubType: 'span',
bodySubKey: 'subTargetSolutionCode',
bodyFillType: 'preFill',
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
myCodeFields: ['targetSolutionCode', 'subTargetSolutionCode'], //分装的母液编号字段
maxVolumeField: 'actSolutionVolume', //分装的最大量字段
maxVolumeFieldUnit: 'actSolutionVolumeUnit', //分装的最大量单位字段
width: 280
},
{
@ -203,7 +203,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyPrecisionKey: 'actSolutionConcentrationPrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionConcentration', //比较哪个字段
compareTo: 'targetSolutionConcentration' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysmbrytj',
@ -215,7 +215,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
headerSelectTo:"actSolutionVolumeUnit",
headerSelectTo: 'actSolutionVolumeUnit'
},
{
label: 'template.sp.sp00456.sjmbrytj',
@ -234,7 +234,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyPrecisionKey: 'actSolutionVolumePrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionVolume', //比较哪个字段
compareTo: 'targetSolutionVolume' //比较哪个字段
},
{
label: 'template.sp.sp00456.mbryyxzq',
@ -269,7 +269,7 @@ export const getParallelColumnsConfig = ($this) => {
width: 280,
bodyType: 'clickable',
bodyFillType: 'actFill',
compareTo: 'startSolutionCode', //比较哪个字段
compareTo: 'startSolutionCode' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysysrynd',
@ -291,7 +291,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyDisabled: true,
compareTo: 'targetStartSolutionConcentration', //比较哪个字段
compareTo: 'targetStartSolutionConcentration' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysysrytj',
@ -356,7 +356,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom:"targetDiluentVolume",
copyFrom: 'targetDiluentVolume',
compareTo: 'targetDiluentVolume' //比较哪个字段
}
]
@ -392,7 +392,7 @@ export const getLadderFormConfig = ($this) => {
fillType: 'actFill',
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //比较哪个字段
compareTo: 'targetStartSolution' //比较哪个字段
},
solution: {
label: 'template.sp.sp00456.xsy',
@ -408,6 +408,7 @@ export const getLadderFormConfig = ($this) => {
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},
@ -544,6 +545,7 @@ export const getStorageConditionFormConfig = ($this) => {
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'othersSorageCondition'
}
}
@ -571,6 +573,7 @@ export const getParalleStepFormConfig = ($this) => {
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'paralleStepStorageConditionOther'
}
}
@ -588,7 +591,7 @@ export const getPCR005Config = ($this) => {
bodyType: 'input',
fillType: 'preFill',
otherCode: 'bhOther',
bodyFillType: 'preFill',
bodyFillType: 'preFill'
},
{
label: 'template.pcr.pcr005.ypcsnd',
@ -600,7 +603,7 @@ export const getPCR005Config = ($this) => {
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr005.sxbs',
@ -610,7 +613,7 @@ export const getPCR005Config = ($this) => {
fillType: 'preFill',
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr005.ysypxytj',
@ -622,7 +625,7 @@ export const getPCR005Config = ($this) => {
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr005.sjypxytj',
@ -635,7 +638,7 @@ export const getPCR005Config = ($this) => {
copyFrom: 'ysypxytj', //复制哪个字段
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr005.ysxsyxytj',
@ -657,7 +660,7 @@ export const getPCR005Config = ($this) => {
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 0,
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodySubPlaceholder: 'template.common.xswsPlaceholder'
},
{
label: 'template.pcr.pcr005.sjxsyxytj',
@ -670,7 +673,7 @@ export const getPCR005Config = ($this) => {
copyFrom: 'ysxsyxytj', //复制哪个字段
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr005.ypznd',
@ -691,12 +694,11 @@ export const getPCR005Config = ($this) => {
subPrecision: 0,
showBodySub: $this.fillType === 'preFill',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
},
bodySubPlaceholder: 'template.common.xswsPlaceholder'
}
]
}
// PCR007
export const getPCR007Config = ($this) => {
return [
@ -707,7 +709,7 @@ export const getPCR007Config = ($this) => {
bodyType: 'input',
fillType: 'preFill',
otherCode: 'bhOther',
bodyFillType: 'preFill',
bodyFillType: 'preFill'
},
{
label: 'template.pcr.pcr007.cyqypgsjyjtjtj',
@ -719,7 +721,7 @@ export const getPCR007Config = ($this) => {
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr007.cyqypgsjsjtjtj',
@ -732,7 +734,7 @@ export const getPCR007Config = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'cyqypgsjyjtjtj', //复制哪个字段
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr007.cjgzl',
@ -753,12 +755,11 @@ export const getPCR007Config = ($this) => {
subPrecision: 0,
showBodySub: $this.fillType === 'actFill',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodySubPlaceholder: 'template.common.xswsPlaceholder'
}
]
}
// PCR008
export const getPCR008Config = ($this) => {
return [
@ -769,7 +770,7 @@ export const getPCR008Config = ($this) => {
bodyType: 'input',
fillType: 'preFill',
otherCode: 'bhOther',
bodyFillType: 'preFill',
bodyFillType: 'preFill'
},
{
label: 'template.pcr.pcr008.cjgz',
@ -781,7 +782,7 @@ export const getPCR008Config = ($this) => {
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr008.lzzcz',
@ -798,7 +799,7 @@ export const getPCR008Config = ($this) => {
bodySubType: 'button',
bodySubButtonName: 'form.hqz',
bodySubFillType: 'actFill',
showBodySub: $this.fillType === 'actFill',
showBodySub: $this.fillType === 'actFill'
},
{
label: 'template.pcr.pcr008.zzzl',
@ -819,7 +820,7 @@ export const getPCR008Config = ($this) => {
bodyMaxlength: 10,
bodyDisabled: $this.fillType === 'preFill',
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
label: 'template.pcr.pcr008.ysyjrybjrl',
@ -840,7 +841,7 @@ export const getPCR008Config = ($this) => {
bodyMaxlength: 10,
bodyDisabled: $this.fillType === 'preFill',
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
label: 'template.pcr.pcr008.sjyjrybjrl',
@ -853,13 +854,11 @@ export const getPCR008Config = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'ysyjrybjrl', //复制哪个字段
bodyMaxlength: 10,
bodyMaxlength: 10
}
]
}
// PCR009
export const getPCR009Config = ($this) => {
return [
@ -870,7 +869,7 @@ export const getPCR009Config = ($this) => {
bodyType: 'input',
fillType: 'preFill',
otherCode: 'bhOther',
bodyFillType: 'preFill',
bodyFillType: 'preFill'
},
{
label: 'template.pcr.pcr009.zzz',
@ -882,7 +881,7 @@ export const getPCR009Config = ($this) => {
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr009.ysyjrybjrl',
@ -903,7 +902,7 @@ export const getPCR009Config = ($this) => {
bodyMaxlength: 10,
bodyDisabled: $this.fillType === 'preFill',
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
label: 'template.pcr.pcr009.sjyjrybjrl',
@ -916,12 +915,11 @@ export const getPCR009Config = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'ysyjrybjrl', //复制哪个字段
bodyMaxlength: 10,
bodyMaxlength: 10
}
]
}
// PCR010
export const getPCR010Config = ($this) => {
return [
@ -932,7 +930,7 @@ export const getPCR010Config = ($this) => {
bodyType: 'input',
fillType: 'preFill',
otherCode: 'bhOther',
bodyFillType: 'preFill',
bodyFillType: 'preFill'
},
{
label: 'template.pcr.pcr010.cqzl',
@ -953,7 +951,7 @@ export const getPCR010Config = ($this) => {
subPrecision: 0,
showBodySub: $this.fillType === 'actFill',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodySubPlaceholder: 'template.common.xswsPlaceholder'
},
{
label: 'template.pcr.pcr009.ysyjrybjrl',
@ -974,7 +972,7 @@ export const getPCR010Config = ($this) => {
bodyMaxlength: 10,
bodyDisabled: $this.fillType === 'preFill',
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
label: 'template.pcr.pcr009.sjyjrybjrl',
@ -987,7 +985,7 @@ export const getPCR010Config = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
copyFrom: 'ysyjrybjrl', //复制哪个字段
bodyMaxlength: 10,
bodyMaxlength: 10
}
]
}
}

+ 141
- 80
src/views/business/comps/template/formConfig/paralleAndLadderConfig.js View File

@ -1,3 +1,39 @@
const explainConfig = {
type: 'explainItem',
config: {
text1: {
label: '配制说明:配制',
type: 'span'
},
yb: {
type: 'input',
fillType: 'preFill',
maxlength: 100,
formWidth: 280
},
text2: {
label: '样本,分别配制',
type: 'span'
},
ybs: {
type: 'inputNumber',
fillType: 'preFill',
precision: 0
},
text3: {
label: '套, 序列号为:',
type: 'span'
},
ybh: {
type: 'input',
fillType: 'preFill'
},
text4: {
label: ',单套配制过程如下:',
type: 'span'
}
}
}
// 阶梯配置表格列配置
export const getLadderColumnsConfig = ($this) => {
return [
@ -10,9 +46,9 @@ export const getLadderColumnsConfig = ($this) => {
bodyFillType: 'preFill',
width: 280,
showWidth: 180,
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
myCodeFields: ['targetSolutionCode', 'subTargetSolutionCode'], //分装的母液编号字段
maxVolumeField: 'actSolutionVolume', //分装的最大量字段
maxVolumeFieldUnit: 'actSolutionVolumeUnit' //分装的最大量单位字段
},
{
label: 'template.sp.sp00456.qsrybh',
@ -21,7 +57,7 @@ export const getLadderColumnsConfig = ($this) => {
showWidth: 180,
bodyType: 'input',
bodyFillType: 'actFill',
bodyDisabled: true,
bodyDisabled: true
},
{
label: 'template.sp.sp00456.ysqsrytj',
@ -38,11 +74,11 @@ export const getLadderColumnsConfig = ($this) => {
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'targetStartSolutionVolumePrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
bodyDisabled: true,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
label: 'template.sp.sp00456.sjqsrytj',
@ -75,10 +111,10 @@ export const getLadderColumnsConfig = ($this) => {
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'targetDiluentVolumePrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
headerSelectTo:"actDiluentVolumeUnit",
headerSelectTo: 'actDiluentVolumeUnit'
},
{
label: 'template.sp.sp00456.sjxsytj',
@ -92,7 +128,7 @@ export const getLadderColumnsConfig = ($this) => {
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom: 'targetDiluentVolume', //复制哪个字段
compareTo: 'targetDiluentVolume', //比较哪个字段
compareTo: 'targetDiluentVolume' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysmbrynd',
@ -105,7 +141,7 @@ export const getLadderColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
headerSelectTo:"actSolutionConcentrationUnit",
headerSelectTo: 'actSolutionConcentrationUnit'
},
{
label: 'template.sp.sp00456.sjmbrynd',
@ -124,10 +160,10 @@ export const getLadderColumnsConfig = ($this) => {
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionConcentrationPrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionConcentration', //比较哪个字段
compareTo: 'targetSolutionConcentration' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysmbrytj',
@ -140,7 +176,7 @@ export const getLadderColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
headerSelectTo:"actSolutionVolumeUnit",
headerSelectTo: 'actSolutionVolumeUnit'
},
{
label: 'template.sp.sp00456.sjmbrytj',
@ -159,34 +195,35 @@ export const getLadderColumnsConfig = ($this) => {
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionVolumePrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
// copyFrom: 'targetSolutionVolume', //复制哪个字段
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionVolume', //比较哪个字段
compareTo: 'targetSolutionVolume' //比较哪个字段
}
]
}
// 平行配置表格列配置
export const getParallelColumnsConfig = ($this) => {
const sn = $this.sn;
const sn = $this.sn
let o = {
"SP004":"business_sp_nbgzy",
"SP005":"business_sp_zkgzy",
"SP006":"business_sp_bzqxzkypzbb",
SP004: 'business_sp_nbgzy',
SP005: 'business_sp_zkgzy',
SP006: 'business_sp_bzqxzkypzbb'
}
const dic = o[sn] || 'business_sp_nbgzy'
return [
{
label: 'template.sp.sp00456.mbrybh',
prop: 'targetSolutionCode',
bodyType: 'select',
bodyOptions: $this.getDictOptions(o[sn]),
bodyOptions: $this.getDictOptions(dic),
bodySubType: 'span',
bodySubKey: 'subTargetSolutionCode',
bodyFillType: 'preFill',
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
myCodeFields: ['targetSolutionCode', 'subTargetSolutionCode'], //分装的母液编号字段
maxVolumeField: 'actSolutionVolume', //分装的最大量字段
maxVolumeFieldUnit: 'actSolutionVolumeUnit', //分装的最大量单位字段
showWidth: 180,
width: 280
},
@ -201,7 +238,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
headerSelectTo:"actSolutionConcentrationUnit",
headerSelectTo: 'actSolutionConcentrationUnit'
},
{
label: 'template.sp.sp00456.sjmbrynd',
@ -219,10 +256,10 @@ export const getParallelColumnsConfig = ($this) => {
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionConcentrationPrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionConcentration', //比较哪个字段
compareTo: 'targetSolutionConcentration' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysmbrytj',
@ -235,7 +272,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
headerSelectTo:"actSolutionVolumeUnit",
headerSelectTo: 'actSolutionVolumeUnit'
},
{
label: 'template.sp.sp00456.sjmbrytj',
@ -253,10 +290,10 @@ export const getParallelColumnsConfig = ($this) => {
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionVolumePrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionVolume', //比较哪个字段
compareTo: 'targetSolutionVolume' //比较哪个字段
},
{
label: 'template.sp.sp00456.mbryyxzq',
@ -295,7 +332,7 @@ export const getParallelColumnsConfig = ($this) => {
showWidth: 180,
bodyType: 'sj',
bodyFillType: 'actFill',
compareTo: 'startSolutionCode', //比较哪个字段
compareTo: 'startSolutionCode' //比较哪个字段
},
{
label: 'template.sp.sp00456.ysysrynd',
@ -309,7 +346,7 @@ export const getParallelColumnsConfig = ($this) => {
bodySubOptions: $this.getDictOptions('business_nddw'),
bodySubFillType: 'preFill',
bodyMaxlength: 10,
showBodySub: true,
showBodySub: true
},
{
label: 'template.sp.sp00456.sjysrynd',
@ -319,12 +356,12 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyDisabled: true,
compareTo: 'targetStartSolutionConcentration', //比较哪个字段
compareTo: 'targetStartSolutionConcentration', //比较哪个字段
bodySubKey: 'subTargetAcSolutionUnit',
bodySubType:"input",
bodySubCompareTo:"targetStartSolutionConcentrationPrecision",
bodySubFillType:"actFill",
bodySubDisabled: true,
bodySubType: 'input',
bodySubCompareTo: 'targetStartSolutionConcentrationPrecision',
bodySubFillType: 'actFill',
bodySubDisabled: true
},
{
label: 'template.sp.sp00456.ysysrytj',
@ -341,13 +378,13 @@ export const getParallelColumnsConfig = ($this) => {
bodySubFillType: 'preFill',
bodyMaxlength: 10,
bodyPrecisionKey: 'targetStartSolutionVolumePrecision',
subPrecision:0,
subPrecision: 0,
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodyDisabled: true,
showBodySub: true,
showBodySub: $this.fillType === 'preFill',
headerSelectTo:"actStartSolutionVolumeUnit",
headerSelectTo: 'actStartSolutionVolumeUnit'
},
{
@ -380,11 +417,11 @@ export const getParallelColumnsConfig = ($this) => {
bodySubFillType: 'preFill',
bodyMaxlength: 10,
bodyPrecisionKey: 'targetDiluentVolumePrecision',
subPrecision:0,
subPrecision: 0,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodyDisabled: true,
showBodySub: $this.fillType === 'preFill',
headerSelectTo:"actDiluentVolumeUnit",
headerSelectTo: 'actDiluentVolumeUnit'
},
{
label: 'template.sp.sp00456.sjxsytj',
@ -397,7 +434,7 @@ export const getParallelColumnsConfig = ($this) => {
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom:"targetDiluentVolume",
copyFrom: 'targetDiluentVolume',
compareTo: 'targetDiluentVolume' //比较哪个字段
}
]
@ -405,7 +442,8 @@ export const getParallelColumnsConfig = ($this) => {
//阶梯配置
export const getLadderFormConfig = ($this) => {
return [
const sn = $this.sn
const defaultConfig = [
{
type: 'step',
config: {
@ -434,10 +472,10 @@ export const getLadderFormConfig = ($this) => {
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //比较哪个字段
subKey: "subTargetAcSolutionUnit",
subType:"input",
subDisabled:true,
subCompareTo:"subTargetStartSolution",
subKey: 'subTargetAcSolutionUnit',
subType: 'input',
subDisabled: true,
subCompareTo: 'subTargetStartSolution'
},
solution: {
label: 'template.sp.sp00456.xsy',
@ -453,6 +491,7 @@ export const getLadderFormConfig = ($this) => {
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'stepStorageConditionOther'
},
@ -471,13 +510,17 @@ export const getLadderFormConfig = ($this) => {
}
}
]
if (sn === 'LBA007') {
defaultConfig.unshift(explainConfig)
}
return defaultConfig
}
//试验基本信息
export const getBaseInfoFormConfig = ($this) => {
const sn = $this.sn;
const labArr = ["LBA005","LBA007"]
const isLba = labArr.includes(sn);
const sn = $this.sn
const labArr = ['LBA005', 'LBA007']
const isLba = labArr.includes(sn)
return [
{
type: 'cardItem',
@ -509,7 +552,9 @@ export const getBaseInfoFormConfig = ($this) => {
},
{
type: 'conditionItem',
label:isLba? 'template.lba.lba002.cztj':'template.common.testConfigurationConditions',
label: isLba
? 'template.lba.lba002.cztj'
: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
@ -530,23 +575,27 @@ export const getBaseInfoFormConfig = ($this) => {
}
}
},
isLba?{}:{
type: 'conditionItem',
label: 'template.sp.sp00456.rqcz',
config: {
containerMaterial: {
isLba
? {}
: {
type: 'conditionItem',
label: 'template.sp.sp00456.rqcz',
type: 'select',
options: $this.getDictOptions('business_rqcz'),
fillType: 'actFill',
multiple: true,
otherCode: 'containerMaterialOther'
}
}
},
config: {
containerMaterial: {
label: 'template.sp.sp00456.rqcz',
type: 'select',
options: $this.getDictOptions('business_rqcz'),
fillType: 'actFill',
multiple: true,
otherCode: 'containerMaterialOther'
}
}
},
{
type: 'cellItem',
label: isLba?'template.lba.lba002.czsj':'template.common.configurationTime',
label: isLba
? 'template.lba.lba002.czsj'
: 'template.common.configurationTime',
config: {
startDate: {
label: 'template.common.startTime',
@ -592,6 +641,7 @@ export const getStorageConditionFormConfig = ($this) => {
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'othersSorageCondition'
}
}
@ -601,12 +651,13 @@ export const getStorageConditionFormConfig = ($this) => {
//平行步骤配置
export const getParalleStepFormConfig = ($this) => {
return [
const defaultConfig = [
{
type: 'step',
config: {
solution: {
label: 'template.sp.sp00456.xsy',
labelWidth: 80,
type: 'input',
fillType: 'preFill',
subType: 'sj',
@ -616,30 +667,40 @@ export const getParalleStepFormConfig = ($this) => {
},
paralleStepStorageCondition: {
label: 'template.sp.sp00456.cctj',
labelWidth: 80,
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'paralleStepStorageConditionOther'
}
}
}
]
const sn = $this.sn
if (sn === 'LBA007') {
defaultConfig.unshift(explainConfig)
}
return defaultConfig
}
//选板信息;
export const getJcbColumnsConfig = ($this) => {
return [{
label: 'template.lba.lba002.jcbmc',
prop: 'jcb',
bodyType: 'input',
bodyFillType: 'preFill',
width: 280,
bodyMaxlength:20
},{
label: '',
prop: 'jcbBh',
bodyType: 'jcb',
bodyFillType: 'actFill',
width: 280
}]
}
return [
{
label: 'template.lba.lba002.jcbmc',
prop: 'jcb',
bodyType: 'input',
bodyFillType: 'preFill',
width: 280,
bodyMaxlength: 20
},
{
label: '',
prop: 'jcbBh',
bodyType: 'jcb',
bodyFillType: 'actFill',
width: 280
}
]
}

+ 1
- 1
src/views/business/comps/template/formConfig/sp/SP0019.js View File

@ -22,7 +22,7 @@ export const getBaseInfoFormConfig = (formType) => {
versionNum: {
label: 'template.common.versionNumber',
type: 'inputNumber',
fillType: 'preFill',
fillType: 'actFill',
prepend: 'V',
maxlength: 50
},

+ 67
- 40
src/views/business/comps/template/formConfig/sp/SP0020.js View File

@ -1,9 +1,6 @@
// checkboxTree 类型的配置
const checkboxTreeOptions = [
{
label: '方法学验证',
value: '方法学验证',
children: [
const getOptions = (sn) => {
let children = [
{ label: '储备液比对', value: '储备液比对' },
{ label: '标准曲线线性范围', value: '标准曲线线性范围' },
{ label: '准确度与精密度&灵敏度', value: '准确度与精密度&灵敏度' },
@ -24,34 +21,64 @@ const checkboxTreeOptions = [
{ label: '储备液长期稳定性', value: '储备液长期稳定性' },
{ label: '工作液短期稳定性', value: '工作液短期稳定性' },
{ label: '工作液长期稳定性', value: '工作液长期稳定性' }
]
},
{
label: '样品分析',
value: '样品分析',
children: [
{ label: '样品信息', value: '样品信息' }
]
},
{
label: '其他',
value: '其他',
children: []
];
if (sn === 'PCR006') {
children = [
{ label: '基质效应', value: '基质效应' },
{ label: '选择性', value: '选择性' },
{ label: '特异性', value: '特异性' },
{ label: '方法耐用性', value: '方法耐用性' },
{ label: '精密度与准确性', value: '精密度与准确性' },
{ label: '检测限', value: '检测限' },
{ label: '提取精密度', value: '提取精密度' },
{ label: '提取前样品稳定性', value: '提取前样品稳定性' },
{ label: '提取后样品稳定性', value: '提取后样品稳定性' },
{ label: 'cDNA样品稳定性', value: 'cDNA样品稳定性' },
{ label: '方法适用性', value: '方法适用性' },
{ label: '基因组DNA残留测定', value: '基因组DNA残留测定' },
{ label: '稀释线性', value: '稀释线性' },
{ label: '反复动态稳定性', value: '反复动态稳定性' },
{ label: '标准工作液稳定性', value: '标准工作液稳定性' }
]
}
]
return [
{
label: '方法学验证',
value: '方法学验证',
children
},
{
label: '样品分析',
value: '样品分析',
children: [
{ label: '样品信息', value: '样品信息' }
]
},
{
label: '其他',
value: '其他',
children: []
}
]
}
//试验内容
export const getSynrFormConfig = ()=>{
export const getSynrFormConfig = ($this) => {
return [
{
type: 'checkboxList',
config: {
ffxyz: {
type: 'checkboxTree',
type: 'checkboxTree',
label: '方法学验证',
options:checkboxTreeOptions,
span:1,
fillType:"actFill"
options: getOptions($this.sn),
span: 1,
fillType: "actFill"
},
}
},
@ -59,36 +86,36 @@ export const getSynrFormConfig = ()=>{
}
//仪器结果
export const getYqjgFormConfig = ()=>{
export const getYqjgFormConfig = () => {
return [
{
type: 'checkboxList',
config: {
jg: {
type: 'checkboxTree',
type: 'checkboxTree',
label: '结果',
options:[
options: [
{ label: '分析批接受', value: '分析批接受' },
{ label: '分析批拒绝', value: '分析批拒绝' },
{ label: '部分接受', value: '部分接受' },
],
span:1,
fillType:"actFill"
span: 1,
fillType: "actFill"
},
yzkcjg: {
type: 'textarea',
label: '验证考察结果',
span:1,
fillType:"actFill",
span: 1,
fillType: "actFill",
maxlength: 1000,
rows: 5
rows: 5
},
}
},
]
}
//分析批数据文件
export const getFxpsjwjFormConfig = ()=>{
export const getFxpsjwjFormConfig = () => {
return [
{
type: 'checkboxList',
@ -96,15 +123,15 @@ export const getFxpsjwjFormConfig = ()=>{
fxpsjwjm: {
type: 'input',
label: '分析批数据文件名',
span:1,
fillType:"actFill",
span: 1,
fillType: "actFill",
maxlength: 100,
},
fxpsjlj: {
type: 'input',
label: '分析批数据路径',
span:1,
fillType:"actFill",
span: 1,
fillType: "actFill",
maxlength: 150,
},
}
@ -113,7 +140,7 @@ export const getFxpsjwjFormConfig = ()=>{
}
//采集日期
export const getCjrqFormConfig = ()=>{
export const getCjrqFormConfig = () => {
return [
{
type: 'cellItem',
@ -121,12 +148,12 @@ export const getCjrqFormConfig = ()=>{
cjksrq: {
type: 'datePicker',
label: '采集开始日期',
fillType:"actFill"
fillType: "actFill"
},
cjjsrq: {
type: 'datePicker',
label: '采集结束日期',
fillType:"actFill"
fillType: "actFill"
},
}
},

+ 157
- 158
src/views/business/comps/template/formConfig/sp/SP0021.js View File

@ -1,181 +1,180 @@
export const getBaseInfoFormConfig = ($this) => {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
}
return [
{
type: 'cardItem',
config: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: $this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
compareTo: "pre",
options: $this.getDictOptions('business_pztj')
}
}
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
}
}
},
{
type: 'conditionItem',
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: 'select',
multiple: true,
fillType: 'preFill',
options: $this.getDictOptions('business_pztj'),
otherCode: 'preOther'
},
{
type: 'conditionItem',
label: 'template.sp.sp00456.rqcz',
config: {
containerMaterial: {
label: 'template.sp.sp00456.rqcz',
type: 'select',
options: $this.getDictOptions('business_rqcz'),
fillType: 'actFill',
multiple: true,
otherCode: 'containerMaterialOther'
}
}
act: {
label: 'template.common.actualFill',
type: 'select',
fillType: 'actFill',
otherCode: 'actOther',
multiple: true,
compareTo: 'pre',
options: $this.getDictOptions('business_pztj')
}
}
},
{
type: 'conditionItem',
label: 'template.sp.sp00456.rqcz',
config: {
containerMaterial: {
label: 'template.sp.sp00456.rqcz',
type: 'select',
options: $this.getDictOptions('business_rqcz'),
fillType: 'actFill',
multiple: true,
otherCode: 'containerMaterialOther'
}
}
},
{
type: 'cellItem',
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: 'input'
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
endDate: {
label: 'template.common.endTime',
type: 'input'
}
]
}
}
]
}
//存储条件
export const getStorageFormConfig = ($this) => {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: $this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
return [
{
type: 'conditionItem',
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'storageConditionOther'
}
]
}
}
]
}
//备注
export const getRemarkFormConfig = ($this) => {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
return [
{
type: 'cellItem',
config: {
remark: {
label: '',
type: 'textarea',
fillType: 'actFill',
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
]
}
}
]
}
export const getYbsmFormConfig = ($this) => {
return [
{
type: "step",
config: {
zzmc: {
label: '组织名称',
type: "input",
fillType: "actFill",
maxlength: 50
},
sjd: {
label: '时间点',
type: "input",
fillType: "actFill",
maxlength: 50
},
xsbl: {
label: '稀释比例',
type: "inputNumber",
fillType: "actFill",
maxlength: 10
},
xztp: {
label: '选择天平',
type: "yq",
fillType: "actFill",
},
}
return [
{
type: 'step',
config: {
zzmc: {
label: '组织名称',
type: 'input',
fillType: 'actFill',
maxlength: 50
},
sjd: {
label: '时间点',
type: 'input',
fillType: 'actFill',
maxlength: 50
},
xsbl: {
label: '稀释比例',
type: 'inputNumber',
fillType: 'actFill',
maxlength: 10
},
xztp: {
label: '选择天平',
type: 'yq',
fillType: 'actFill'
}
]
}
}
]
}
export const getTableColumns = ($this) => {
return [
{
label: '动物编号',
prop: 'dwbh',
width: 280,
bodyType: 'input',
bodyFillType: 'actFill',
},
{
label: '称取重量(g)',
prop: 'cqzl',
width: 280,
bodyType: 'input',
bodyDisabled: true,
bodyFillType: 'actFill',
bodySubFillType: 'actFill',
bodySubType:"button",
bodySubKey:"calcCqzl",
bodySubButtonName:"获取值",
},
{
label: '匀浆溶液理论加入量(ml)',
prop: 'lljrl',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
},
{
label: '匀浆溶液实际加入量(ml)',
prop: 'sjjrl',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
},
]
return [
{
label: '动物编号',
prop: 'dwbh',
width: 280,
bodyType: 'input',
bodyFillType: 'actFill'
},
{
label: '称取重量(g)',
prop: 'cqzl',
width: 280,
bodyType: 'input',
bodyDisabled: true,
bodyFillType: 'actFill',
bodySubFillType: 'actFill',
bodySubType: 'button',
bodySubKey: 'calcCqzl',
bodySubButtonName: '获取值'
},
{
label: '匀浆溶液理论加入量(ml)',
prop: 'lljrl',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill'
},
{
label: '匀浆溶液实际加入量(ml)',
prop: 'sjjrl',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill'
}
]
}

+ 1
- 0
src/views/business/comps/template/formConfig/sp/SP007.js View File

@ -135,6 +135,7 @@ export const getStorageFormConfig = ($this) => {
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
multiple: true,
otherCode: 'storageConditionOther'
}
}

+ 67
- 65
src/views/business/comps/template/mixins/templateMixin.js View File

@ -3,8 +3,8 @@ import { getLatestSn, getLatestSnArr } from '@/api/template';
import { isValueEmpty, getStringWidth } from '@/utils/index';
import { isCommonUnit } from "@/utils/conTools";
import { sj_subpackage, sj_startConfiguration, sj_configurationCompleted } from '@/api/business/sj/sj';
import {convertConcentration} from "@/utils/conConverter";//浓度单位转换
import {volumeConverter} from "@/utils/volConverter";//体积单位转换
import { convertConcentration } from "@/utils/conConverter";//浓度单位转换
import { volumeConverter } from "@/utils/volConverter";//体积单位转换
import * as XLSX from 'xlsx'
import { EventBus } from "@/utils/eventBus";
@ -95,7 +95,7 @@ export default {
// this.resourceWz = _.filter(JSON.parse(v.resource), function (o) {
// return o.type == 3 || o.type == 5 || o.type == 7 || o.elnType == 3|| o.elnType == 5 || o.elnType == 7
// })
//试验试剂信息
//试验试剂信息
this.resourceSj = _.filter(JSON.parse(v.resource), function (o) {
return o.type == 1 || o.elnType == 1
})
@ -126,8 +126,8 @@ export default {
studySn,
templateMc,
templateMcEn,
templateId,
templateSn,
templateId,
templateSn,
startDate,
bdmc,
endDate,
@ -141,7 +141,7 @@ export default {
studySn,
templateMc,
templateMcEn,
templateId,
templateId,
templateSn,
startDate,
bdmc,
@ -188,13 +188,13 @@ export default {
yqResource: [], //仪器信息
jcbList: [], //检测板信息
xbxj: [], //细胞细菌信息
resourceTmp: [],//试验试剂信息提交用
yqResourceTmp: [], //仪器信息提交用
jcbListTmp: [], //检测板信息提交用
xbxjTmp:[],//细胞细菌信息提交用
sjColumns: [
xbxjTmp: [],//细胞细菌信息提交用
sjColumns: [
{ label: 'template.common.reagentName', prop: "mc" },//名称
{ label: 'template.common.reagentCode', prop: "bh" },//编号
{ label: 'template.common.reagentNo', prop: "ph" },//批号 试剂,供试品才有
@ -202,7 +202,7 @@ export default {
{ label: 'template.common.source', prop: "ly" },//来源
{ label: 'template.common.reagentExpireDate', prop: "sxrq" },//失效日期
],
gspColumns: [
gspColumns: [
{ label: 'template.common.wzName', prop: "mc" },//名称
{ label: 'template.common.wzCode', prop: "bh" },//编号
{ label: 'template.common.reagentNo', prop: "ph" },//批号 试剂,供试品才有
@ -255,7 +255,7 @@ export default {
},
methods: {
// 只是更新已填写的表单数据,不触发校验
justUpdateFilledFormData(){
justUpdateFilledFormData() {
const params = {
type: "fieldChanged",
newRecord: null,
@ -264,11 +264,11 @@ export default {
EventBus.$emit('onModifyRecord', params,)
},
//试剂弹窗确认前
onBeforeReagentSubmit(data){
const {selectData, callback, key, formFields} = data;
const {subTargetStartSolution} = formFields;
onBeforeReagentSubmit(data) {
const { selectData, callback, key, formFields } = data;
const { subTargetStartSolution } = formFields;
//判断选择的浓度单位和预制的浓度单位是否一致
if(key === "subStartSolution" && !isCommonUnit(selectData.row.nddw,[subTargetStartSolution])){//选择起始源溶液需要同步更新table的变更记录。
if (key === "subStartSolution" && !isCommonUnit(selectData.row.nddw, [subTargetStartSolution])) {//选择起始源溶液需要同步更新table的变更记录。
callback.prevent('浓度单位与预制不符,请重新选择或申请废止并重新预制。');
}
},
@ -381,10 +381,12 @@ export default {
let result = {}
const refs = refArr.map((ref) => {
let refData = {}
if (this.$refs[ref][0]) {
refData = this.$refs[ref][0]?.getFormData() || {}
} else {
refData = this.$refs[ref]?.getFormData() || {}
if (this.$refs[ref]) {
if (this.$refs[ref][0]) {
refData = this.$refs[ref][0]?.getFormData() || {}
} else {
refData = this.$refs[ref]?.getFormData() || {}
}
}
return refData
})
@ -427,8 +429,8 @@ export default {
this.$store.commit('template/SET_TEMPLATE_DATA', data)
},
//统一处理删除行
deleteRow(index,ref) {
if(ref){
deleteRow(index, ref) {
if (ref) {
this.$refs[ref].deleteRow(index);
return;
}
@ -436,14 +438,14 @@ export default {
},
//统一处理浓度校验异常
onCommonVerifyNdException(formFields,data){
const {callback,rowIndex, key,dataSource} = data;
onCommonVerifyNdException(formFields, data) {
const { callback, rowIndex, key, dataSource } = data;
const keys = [
'actStartSolutionVolume',
'actDiluentVolume',
]
if(keys.includes(key)){
const {targetAcSolution} = formFields;
if (keys.includes(key)) {
const { targetAcSolution } = formFields;
if (rowIndex === 0) {//第一行的浓度取选择的溶液,
if (isValueEmpty(targetAcSolution)) {
callback.prevent("请先选择起始源溶液")
@ -481,7 +483,7 @@ export default {
} else if (key === 'targetStartSolution' || key === 'subTargetStartSolution') {
//起始溶液体积失焦时,更新目标溶液预计浓度
const arr = this.$refs.stepTableRef?.getDataSource();
const {headerSelectFields} = this.$refs.stepTableRef?.getFilledFormData();
const { headerSelectFields } = this.$refs.stepTableRef?.getFilledFormData();
const params = {
subTargetStartSolution,
headerSelectFields
@ -508,7 +510,7 @@ export default {
},
//统一处理table失焦事件
onHandleTableBlur(params) {
const { rowIndex, colKey, value, item, dataSource,headerSelectFields } = params
const { rowIndex, colKey, value, item, dataSource, headerSelectFields } = params
if (
colKey === 'targetSolutionVolume' ||
colKey === 'targetSolutionConcentration' ||
@ -524,37 +526,37 @@ export default {
'subTargetStartSolution'
)
const params = {
subTargetStartSolution:subTargetStartSolution,
subTargetStartSolution: subTargetStartSolution,
headerSelectFields
}
if (isValueEmpty(volume)) {
this.$message.error('请先选择预设起始源溶液浓度')
} else {
this.updateTargetStartSolutionVolume(item, volume,params)
this.updateTargetStartSolutionVolume(item, volume, params)
}
} else if (
colKey === 'actStartSolutionVolume' ||
colKey === 'actDiluentVolume'
) {
//实际起始溶液体积和实际目标溶液体积
const {targetAcSolution,subTargetAcSolutionUnit} =
this.$refs.stepFormPackageRef?.getFilledFormData() //获取实际起始溶液浓度
const {headerSelectFields} = this.$refs.stepTableRef?.getFilledFormData();
const { targetAcSolution, subTargetAcSolutionUnit } =
this.$refs.stepFormPackageRef?.getFilledFormData() //获取实际起始溶液浓度
const { headerSelectFields } = this.$refs.stepTableRef?.getFilledFormData();
const p = {
targetStartSolutionUnit:subTargetAcSolutionUnit,
targetStartSolutionUnit: subTargetAcSolutionUnit,
headerSelectFields
}
let initNd = 0;
if(rowIndex === 0){
if (rowIndex === 0) {
initNd = targetAcSolution;
}else{
} else {
initNd = dataSource[rowIndex - 1].actSolutionConcentration;
}
if (isValueEmpty(initNd)) {
this.$message.error('请先选择起始源溶液')
return
} else {
const volResult = this.updateSjmbrynd(item, initNd,p)
const volResult = this.updateSjmbrynd(item, initNd, p)
if (!volResult) {
return
}
@ -564,14 +566,14 @@ export default {
},
//计算目标溶液浓度
calcNd(item, targetAcSolution,params) {
console.log(params,"ppp")
calcNd(item, targetAcSolution, params) {
console.log(params, "ppp")
// debugger
//targetStartSolutionUnit(实际起始源溶液浓度单位)
const {targetStartSolutionUnit,headerSelectFields} = params;
const { targetStartSolutionUnit, headerSelectFields } = params;
//actStartSolutionVolumeUnit(实际起始源溶液体积单位)actSolutionVolumeUnit(实际目标溶液体积单位)
//actDiluentVolumeUnit(实际稀释液体积单位)actSolutionConcentrationUnit(实际目标溶液浓度单位)
const {actStartSolutionVolumeUnit,actSolutionVolumeUnit,actDiluentVolumeUnit,actSolutionConcentrationUnit} = headerSelectFields;
const { actStartSolutionVolumeUnit, actSolutionVolumeUnit, actDiluentVolumeUnit, actSolutionConcentrationUnit } = headerSelectFields;
//实际源溶液浓度÷(实际终体积÷源溶液加入体积);
const precision = item.actSolutionConcentrationPrecision
const volPrecision = item.actSolutionVolumePrecision;
@ -579,24 +581,24 @@ export default {
const actDiluentVolume = item.actDiluentVolume
//实际起始源溶液体积
const actStartSolutionVolume = item.actStartSolutionVolume
if(isValueEmpty(actStartSolutionVolume) || isValueEmpty(actDiluentVolume) || isValueEmpty(targetStartSolutionUnit)){
if (isValueEmpty(actStartSolutionVolume) || isValueEmpty(actDiluentVolume) || isValueEmpty(targetStartSolutionUnit)) {
return false
}
const converActDiluentVolume = volumeConverter.convert(actDiluentVolume+actDiluentVolumeUnit,actSolutionVolumeUnit)
const converActStartSolutionVolume = volumeConverter.convert(actStartSolutionVolume+actStartSolutionVolumeUnit,actSolutionVolumeUnit)
const converActDiluentVolume = volumeConverter.convert(actDiluentVolume + actDiluentVolumeUnit, actSolutionVolumeUnit)
const converActStartSolutionVolume = volumeConverter.convert(actStartSolutionVolume + actStartSolutionVolumeUnit, actSolutionVolumeUnit)
//实际源溶液加入体积+实际稀释液加入体积
const actVol = (
Number(converActDiluentVolume) + Number(converActStartSolutionVolume)
).toFixed(volPrecision)
const targetStartVolUnit = actSolutionConcentrationUnit.split("/")[1];//先按照预设目标溶液浓度的单位标准
const converActVol = volumeConverter.convert(actVol+actSolutionVolumeUnit,targetStartVolUnit)
const converActDiluentVolume1 = volumeConverter.convert(actStartSolutionVolume+actStartSolutionVolumeUnit,targetStartVolUnit)
const converTargetAcSolution = convertConcentration.convert(targetAcSolution+targetStartSolutionUnit,actSolutionConcentrationUnit)
const converActVol = volumeConverter.convert(actVol + actSolutionVolumeUnit, targetStartVolUnit)
const converActDiluentVolume1 = volumeConverter.convert(actStartSolutionVolume + actStartSolutionVolumeUnit, targetStartVolUnit)
const converTargetAcSolution = convertConcentration.convert(targetAcSolution + targetStartSolutionUnit, actSolutionConcentrationUnit)
// 实际目标溶液浓度 = 实际源溶液浓度÷(实际终体积÷源溶液加入体积);
const actNd = (
parseFloat(converTargetAcSolution) / (
parseFloat(converActVol)/parseFloat(converActDiluentVolume1)
parseFloat(converActVol) / parseFloat(converActDiluentVolume1)
)
).toFixed(precision)
const nd = actNd === 'Infinity' ? 0 : Number(actNd)
@ -606,38 +608,38 @@ export default {
},
//计算并更新实际目标溶液浓度 先计算实际目标溶液体积再计算实际目标溶液浓度
updateSjmbrynd(item, targetAcSolution,params) {
return this.calcNd(item, targetAcSolution,params)
updateSjmbrynd(item, targetAcSolution, params) {
return this.calcNd(item, targetAcSolution, params)
},
//更新起始溶液体积时,计算预设起始溶液体积和预设稀释液体积
updateTargetStartSolutionVolume(item, volume,unitParams) {
updateTargetStartSolutionVolume(item, volume, unitParams) {
const precision = item.targetStartSolutionVolumePrecision || 0
const concentration = item.targetSolutionConcentration
const targetVolume = item.targetSolutionVolume
const {subTargetStartSolution,headerSelectFields} = unitParams
const {targetSolutionConcentrationUnit,targetSolutionVolumeUnit,targetStartSolutionVolumeUnit,targetDiluentVolumeUnit} = headerSelectFields
if(
const { subTargetStartSolution, headerSelectFields } = unitParams
const { targetSolutionConcentrationUnit, targetSolutionVolumeUnit, targetStartSolutionVolumeUnit, targetDiluentVolumeUnit } = headerSelectFields
if (
isValueEmpty(concentration) ||
isValueEmpty(targetVolume)||
isValueEmpty(subTargetStartSolution)||
isValueEmpty(targetSolutionConcentrationUnit)||
isValueEmpty(targetSolutionVolumeUnit)||
isValueEmpty(targetStartSolutionVolumeUnit)||
isValueEmpty(targetVolume) ||
isValueEmpty(subTargetStartSolution) ||
isValueEmpty(targetSolutionConcentrationUnit) ||
isValueEmpty(targetSolutionVolumeUnit) ||
isValueEmpty(targetStartSolutionVolumeUnit) ||
isValueEmpty(targetDiluentVolumeUnit)
){
) {
return;
}
const targetStartVolUnit = targetSolutionConcentrationUnit.split("/")[1];//先按照预设目标溶液浓度的单位标准
//将起始溶液浓度转换为和预设目标溶液浓度一样的单位再计算;
const converStartCon = convertConcentration.convert(volume+subTargetStartSolution,targetSolutionConcentrationUnit)
const converStartCon = convertConcentration.convert(volume + subTargetStartSolution, targetSolutionConcentrationUnit)
//将预设目标溶液体积转换为和预设目标溶液浓度单位的分母一样的单位再计算;如:预设目标溶液浓度单位为mg/mL,预设目标溶液体积单位为uL,则将预设目标溶液体积转换为mL
const convertTargetVol = volumeConverter.convert(targetVolume+targetSolutionVolumeUnit,targetStartVolUnit)
const convertTargetVol = volumeConverter.convert(targetVolume + targetSolutionVolumeUnit, targetStartVolUnit)
//预设起始溶液体积:(目标溶液预计浓度 乘以 目标溶液预计体积)除以 起始溶液浓度
const result = Number((concentration * convertTargetVol) / converStartCon)
//根据预设起始溶液体积单位转换计算后的数据
const convertYsVol = volumeConverter.convert(result+targetStartVolUnit,targetStartSolutionVolumeUnit)
const convertYsVol = volumeConverter.convert(result + targetStartVolUnit, targetStartSolutionVolumeUnit)
item.targetStartSolutionVolume = Number(convertYsVol.toFixed(
precision
))
@ -646,9 +648,9 @@ export default {
//预设稀释液体积:目标溶液预计体积 减去 源溶液预计体积;
const precision1 = item.targetDiluentVolumePrecision || 0;
//将预设目标溶液体积转换为和预设起始溶液体积单位一样的单位再计算;
const convertTargetVol1 = volumeConverter.convert(targetVolume+targetSolutionVolumeUnit,targetStartSolutionVolumeUnit)
const convertTargetVol1 = volumeConverter.convert(targetVolume + targetSolutionVolumeUnit, targetStartSolutionVolumeUnit)
const result1 = (convertTargetVol1 - convertYsVol)
item.targetDiluentVolume = Number(volumeConverter.convert(result1+targetStartSolutionVolumeUnit,targetDiluentVolumeUnit).toFixed(precision1))
item.targetDiluentVolume = Number(volumeConverter.convert(result1 + targetStartSolutionVolumeUnit, targetDiluentVolumeUnit).toFixed(precision1))
// this.$refs.stepTableRef.updateDataSourceByRowIndex(rowIndex, { targetDiluentVolume: result1 });
}
},

+ 1
- 1
src/views/business/resource/gsp/comps/gsp/Bj.vue View File

@ -49,7 +49,7 @@
<!-- 存储条件 -->
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="system_business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="system_business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gsp/comps/gsp/Xz.vue View File

@ -61,7 +61,7 @@
<!-- 存储条件 -->
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="system_business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="system_business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
<!-- 接收日期 -->

+ 1
- 1
src/views/business/resource/gsp/comps/rkjl/Bj.vue View File

@ -63,7 +63,7 @@
<!-- 存储条件 -->
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gsp/comps/rkjl/Xz.vue View File

@ -64,7 +64,7 @@
<!-- 存储条件 -->
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Bj.vue View File

@ -46,7 +46,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Cc.vue View File

@ -25,7 +25,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Gh.vue View File

@ -80,7 +80,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.rktj')" prop="rktj">
<BusinessSelect v-model="form.rktj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.rktj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Rk.vue View File

@ -46,7 +46,7 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.rktj')" prop="rktj">
<BusinessSelect v-model="form.rktj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.rktj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
<el-col :span="12">

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Sqgh.vue View File

@ -80,7 +80,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.rktj')" prop="rktj">
<BusinessSelect v-model="form.rktj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.rktj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/gyzj/comps/gyzj/Sqrk.vue View File

@ -47,7 +47,7 @@
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gyzj.rktj')" prop="rktj">
<BusinessSelect v-model="form.rktj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.rktj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Bj.vue View File

@ -46,7 +46,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Cc.vue View File

@ -25,7 +25,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.cctj')" prop="cctj">
<BusinessSelect v-model="form.cctj" dictType="business_cctj" ></BusinessSelect>
<BusinessSelect v-model="form.cctj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Gh.vue View File

@ -83,7 +83,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.rktj')" prop="rktj">
<BusinessSelect v-model="form.rktj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.rktj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/mjy/comps/mjy/Rk.vue View File

@ -52,7 +52,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.rktj')" prop="rktj">
<BusinessSelect v-model="form.rktj" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.rktj" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/sj/comps/Bj.vue View File

@ -49,7 +49,7 @@
<el-col :span="12">
<!-- 存储条件 -->
<el-form-item :label="$t('page.business.resource.sj.cctj')" prop="cctj">
<BusinessSelect dictType="business_cctj" v-model="form.cctj" />
<BusinessSelect dictType="business_cctj" v-model="form.cctj" :multiple="true" />
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/resource/yq/list.vue View File

@ -115,7 +115,7 @@
</el-col>
<el-col :span="12" v-if="form.ccwz == 10">
<el-form-item :label="$t('page.business.resource.yq.wc')" prop="wc">
<BusinessSelect v-model="form.wc" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.wc" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 1
- 1
src/views/business/storageLocation/list.vue View File

@ -79,7 +79,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.system.storageLocation.wc')" prop="compartment">
<BusinessSelect v-model="form.compartment" dictType="business_cctj"></BusinessSelect>
<BusinessSelect v-model="form.compartment" dictType="business_cctj" :multiple="true"></BusinessSelect>
</el-form-item>
</el-col>
</el-row>

+ 2
- 2
src/views/business/study/comp/tbbd/Bj.vue View File

@ -150,7 +150,7 @@
<div style="display: flex; margin-left: 10px;">
<div> 存储条件</div>
<div>
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" style="width: 200px;">
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" :multiple="true" style="width: 200px;">
</BusinessSelect>
</div>
</div>
@ -263,7 +263,7 @@
<div style="display: flex; margin-left: 10px;">
<div> 存储条件</div>
<div>
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" style="width: 200px;">
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" :multiple="true" style="width: 200px;">
</BusinessSelect>
</div>
</div>

Loading…
Cancel
Save