ZHANGTENG\张腾 4 days ago
parent
commit
d43d5f3eba
47 changed files with 823 additions and 585 deletions
  1. +5
    -2
      src/components/Template/Step.vue
  2. +211
    -205
      src/components/Template/StepComponents/stepNameConfig.js
  3. +3
    -3
      src/components/Template/StepComponents/xbjzpz/copy.vue
  4. +1
    -1
      src/components/Template/StepComponents/xbjzpz/fr_xbjzpz.vue
  5. +2
    -0
      src/components/Template/StepFormPackage.vue
  6. +42
    -40
      src/components/Template/mixins/formPackageMixins.js
  7. +3
    -1
      src/lang/en/template/commonTemplate.js
  8. +5
    -1
      src/lang/en/template/dl.js
  9. +4
    -2
      src/lang/zh/template/commonTemplate.js
  10. +5
    -1
      src/lang/zh/template/dl.js
  11. +14
    -0
      src/utils/calUnitTools.js
  12. +11
    -3
      src/views/business/comps/select/SelectStudy.vue
  13. +11
    -1
      src/views/business/comps/select/SelectStudyDialog.vue
  14. +2
    -2
      src/views/business/comps/template/comps/bl/BL002.vue
  15. +3
    -0
      src/views/business/comps/template/comps/dl/DL003.vue
  16. +105
    -64
      src/views/business/comps/template/comps/dl/DL011.vue
  17. +38
    -23
      src/views/business/comps/template/comps/dl/DL012.vue
  18. +3
    -0
      src/views/business/comps/template/comps/gsp/DMYPPZJLB.vue
  19. +3
    -0
      src/views/business/comps/template/comps/gsp/GSP001.vue
  20. +4
    -1
      src/views/business/comps/template/comps/gsp/GSP002.vue
  21. +4
    -1
      src/views/business/comps/template/comps/gsp/GSP003.vue
  22. +3
    -0
      src/views/business/comps/template/comps/gsp/GSP004.vue
  23. +6
    -0
      src/views/business/comps/template/comps/gsp/GSP005.vue
  24. +3
    -0
      src/views/business/comps/template/comps/gsp/GSP010.vue
  25. +67
    -17
      src/views/business/comps/template/comps/pcr/PCR007.vue
  26. +3
    -0
      src/views/business/comps/template/comps/sp/SP001.vue
  27. +8
    -8
      src/views/business/comps/template/comps/sp/SP003.vue
  28. +3
    -0
      src/views/business/comps/template/comps/sp/SP00456.vue
  29. +2
    -2
      src/views/business/comps/template/dialog/SelectMixReagentDialog.vue
  30. +52
    -41
      src/views/business/comps/template/dialog/SubPackageDialog.vue
  31. +71
    -41
      src/views/business/comps/template/formConfig/sp/SP0019.js
  32. +1
    -0
      src/views/business/comps/template/mixins/templateMixin.js
  33. +17
    -21
      src/views/business/resource/gsp/comps/ffjlList.vue
  34. +11
    -11
      src/views/business/resource/gsp/comps/gsp/Bj.vue
  35. +6
    -8
      src/views/business/resource/gsp/comps/gsp/Ff.vue
  36. +2
    -3
      src/views/business/resource/gsp/comps/gsp/Gh.vue
  37. +1
    -1
      src/views/business/resource/gsp/comps/gsp/Shbj.vue
  38. +8
    -8
      src/views/business/resource/gsp/comps/gsp/Xq.vue
  39. +11
    -11
      src/views/business/resource/gsp/comps/gsp/Xz.vue
  40. +7
    -9
      src/views/business/resource/gsp/comps/gspList.vue
  41. +7
    -10
      src/views/business/resource/gsp/comps/rkjlList.vue
  42. +10
    -4
      src/views/business/resource/gyzj/comps/ffjlList.vue
  43. +28
    -20
      src/views/business/resource/mjy/comps/ffjlList.vue
  44. +5
    -0
      src/views/business/study/comp/enter.vue
  45. +3
    -3
      src/views/business/study/comp/tbbd/Bj.vue
  46. +7
    -16
      src/views/business/study/comp/tbbd/Blxjsh.vue
  47. +2
    -0
      src/views/business/study/comp/ytbd/Bj.vue

+ 5
- 2
src/components/Template/Step.vue View File

@ -10,7 +10,7 @@
<HandleFormItem type="select" placeholder="请选择" class="step-type-select" :item="stepSelectConfig"
v-model="step.type" @change="onTypeChange(index)" />
<!-- 根据步骤类型显示对应的表单 -->
<component class="flex1" :sn="step.type" :is="getStepComponent(step.type)" :formData="step.formData" :formIndex="formIndex" :formType="formType"
<component class="flex1 w-0" :sn="step.type" :is="getStepComponent(step.type)" :formData="step.formData" :formIndex="formIndex" :formType="formType"
:fieldItemLabel="stepNameConfig[step.type]"
@update="onFormUpdate(index, $event)" :stepIndex = "prefixKey + index" :ref="'stepCompRef_' + index">
</component>
@ -282,7 +282,7 @@ import dypyy from './StepComponents/xbjzpz/dypyy.vue';//细胞/菌株配制-倒
import xd from './StepComponents/xbjzpz/xd.vue';///-
///-使/-
///-使/-
import copy from './StepComponents/xbjzpz/copy.vue';///-CO2
import copy from './StepComponents/xbjzpz/copy.vue';///-CO
import gc from './StepComponents/xbjzpz/gc.vue';///-
import cdmd from './StepComponents/xbjzpz/cdmd.vue';///-
///-使/-
@ -1196,4 +1196,7 @@ export default {
}
}
}
.w-0{
width: 0;
}
</style>

+ 211
- 205
src/components/Template/StepComponents/stepNameConfig.js View File

@ -1,208 +1,214 @@
const result = {
czdd: "操作地点",
czhj: "操作环境",
xzrq: "选择容器",
jrry: "加入溶液",
tpjysd: "天平校验(双点)",
tpjydd: "天平校验(单点)",
zlfz: "质量分装",
qywz: "取用物质",
clcz: "称量(传值)",
clfcz: "称量(非传值)",
bdtj: "标定(体积)",
bdzl: "标定(质量)",
tjphcz: "调节PH(传值)",
tjphfcz: "调节PH(非传值)",
lx: "离心",
ym: "研磨",
ddhy: "颠倒混匀",
jrjb: "加热搅拌",
jb: "搅拌",
cs: "超声",
sy: "水浴",
zy: "正压",
dc: "氮吹",
glzd: "过滤(自动)",
glsd: "过滤(手动)",
jz: "静置",
jd: "解冻",
fy: "孵育",
qcyy: "取出原药",
frdrq: "复溶(多容器)",
fr: "复溶",
hb: "合并",
rs: "染色",
js: "计数",
mj: "灭菌",
fs: "复苏",
fb: "封板",
wxhy: "涡旋混匀",
zyhy: "振摇混匀",
hwhy: "恒温混匀",
kbyq: "空白(仪器)",
kbsjgsp: "空白(试剂/供试品)",
kb: "空白",
jr: "加热",
fz: "分装",
jrry_b: "加入溶液",
cl: "称量",
lx_b: "离心",
cs_b: "超声",
ddhy_b: "颠倒混匀",
wxhy_b: "涡旋混匀",
zyhy_b: "振摇混匀",
hwhy_b: "恒温混匀",
jb_b: "搅拌",
jrjb_b: "加热搅拌",
sy_b: "水浴",
zy_b: "正压",
dc_b: "氮吹",
glzd_b: "过滤(自动)",
glsd_b: "过滤(手动)",
jz_b: "静置",
jd_b: "解冻",
fy_b: "孵育",
fr_b: "复溶",
jd_swypfx: "解冻",
jryp: "加入样品",
ysfy: "衍生反应",
hhspe: "活化(SPE)",
phspe: "平衡(SPE)",
syspe: "上样(SPE)",
lxspe: "淋洗(SPE)",
xtspe: "洗脱(SPE)",
zyfc: "转移(分层)",
jszz: "剪碎组织",
cqzz: "称取组织",
jryjry: "加入匀浆溶液",
ymyj: "研磨匀浆",
yjyfz2: "匀浆液分装2",
yjyfz3: "匀浆液分装3",
yjbc: "匀浆保存",
yjyhh: "匀浆液混合",
fy_spyjzzb: "孵育",
jz_spyjzzb: "静置",
ddhy_qxwdx: "颠倒混匀",
hwph: "恒温平衡",
qxfz: "全血分装",
qxjz: "全血静置",
qxlx: "全血离心",
qxqy: "全血取样",
jzhlx: "静置后离心",
fq2: "分取2",
fq3: "分取3",
hh: "混合",
qx: "清洗",
zc: "暂存",
qy: "弃液",
sjjy: "试剂加样",
jryp_pcr: "加入样品",
bzyp: "补足样品",
jz_pcr: "静置",
nscyp: "NSC样品",
qrhy: "轻柔混匀",
pebwfz: "PE板位放置",
tgbwfz: "天根板位放置",
lsbwfz: "罗氏板位放置",
tqsj: "提取上机",
lssj: "罗氏上机",
yqzt: "仪器暂停",
ecsj: "二次上机",
czclcl: "磁珠残留处理",
ypzy: "样品转移",
lx_pcr: "离心",
hsypfz: "核酸样品分装",
ypbc: "样品保存",
jd_pcr: "解冻",
sjjyst: "试剂加样(手提)",
ddhy_pcr: "颠倒混匀",
wxhy_pcr: "涡旋混匀",
sy_pcr: "水浴",
sslx: "瞬时离心",
xfzcl: "吸附柱处理",
lxdy: "离心(倒液)",
xfzzysjg: "吸附柱转移(收集管)",
xfzzylxg: "吸附柱转移(离心管)",
xt: "洗脱",
ecxt: "二次洗脱",
ndcd: "浓度测定",
jrry_pcrcjg: "加入溶液",
jszz_pcryj: "剪碎组织",
cqzz_pcryj: "称取组织",
jryjry_pcryj: "加入匀浆溶液",
xs: "稀释",
sjjy_pcrfxyp: "试剂加样",
jryp_pcrfxyp: "加入样品",
fmlx: "封膜离心",
pcrsj: "PCR上机",
pbsz: "排版设置",
cbygxz: "参比荧光选择",
yxpcry: "运行PCR仪",
cdnsypfz: "cDNA样品分装",
bb: "包被",
xb: "洗板",
fb_jcb: "封闭",
jy: "加样",
zh: "中和",
jjcsj: "加检测试剂",
sj: "酸解",
sjjy_jcb: "酸解加样",
zhfy: "中和孵育",
ecsj_jcb: "二次酸解",
xs_jcb: "显色",
zz: "终止",
jc: "检测",
dbmby: "读板(酶标仪)",
dbhxfgxt: "读板(化学发光系统)",
dbdhxfgxt: "读板(电化学发光系统)",
dbygxt: "读板(荧光系统)",
dzacl: "读值(ACL)",
qb: "取板",
jzks: "静置开始",
fyxks: "孵育箱开始",
ycfyks: "摇床孵育开始",
ycks: "摇床开始",
js_jcb: "结束",
fm: "覆膜",
pg: "拍干",
czqx: "磁珠清洗",
czzx: "磁珠重悬",
ychy: "摇床混匀",
czzy: "磁珠转移",
sjbj: "试剂标记",
qxb: "取细胞",
qjz: "取菌株",
fr_xbjzpz: "复溶",
lxqy: "离心(弃液)",
cd: "吹打",
xbzy: "细胞转移",
jzzy: "菌株转移",
dypyy: "倒原培养液",
xd: "洗涤",
xh: "消化",
zzxh: "终止消化",
copy: "CO2培养",
gc: "观察",
cdmd: "测定密度",
ds: "低渗",
gd: "固定",
cdxs: "传代/稀释",
gc_xb: "观察",
xdlc: "洗涤(2次)",
bzpyy: "补足培养液",
xh_xb: "消化",
jrrydh: "加入溶液(多行)",
gd_xb: "固定",
rs_xb: "染色",
bpqr: "破片确认",
dp: "滴片",
bprs: "破片染色",
cx: "冲洗",
lg: "晾干",
hygh: "混匀固化",
hwzd: "恒温振荡",
jbcpyj: "加表层培养基",
xs_ptjhfxyp: "稀释"
};
czdd: '操作地点',
czhj: '操作环境',
xzrq: '选择容器',
jrry: '加入溶液',
tpjysd: '天平校验(双点)',
tpjydd: '天平校验(单点)',
zlfz: '质量分装',
qywz: '取用物质',
clcz: '称量(传值)',
clfcz: '称量(非传值)',
bdtj: '标定(体积)',
bdzl: '标定(质量)',
tjphcz: '调节PH(传值)',
tjphfcz: '调节PH(非传值)',
lx: '离心',
ym: '研磨',
ddhy: '颠倒混匀',
jrjb: '加热搅拌',
jb: '搅拌',
cs: '超声',
sy: '水浴',
zy: '正压',
dc: '氮吹',
glzd: '过滤(自动)',
glsd: '过滤(手动)',
jz: '静置',
jd: '解冻',
fy: '孵育',
qcyy: '取出原药',
frdrq: '复溶(多容器)',
fr: '复溶',
hb: '合并',
rs: '染色',
js: '计数',
mj: '灭菌',
fs: '复苏',
fb: '封板',
wxhy: '涡旋混匀',
zyhy: '振摇混匀',
hwhy: '恒温混匀',
kbyq: '空白(仪器)',
kbsjgsp: '空白(试剂/供试品)',
kb: '空白',
jr: '加热',
fz: '分装',
ypfz: '样品分装',
gyzjfz: '给药制剂分装',
gspypfz: '供试品样品分装',
csqx: '超声清洗',
rj: '融解',
dr: '定容',
jrry_b: '加入溶液',
cl: '称量',
lx_b: '离心',
cs_b: '超声',
ddhy_b: '颠倒混匀',
wxhy_b: '涡旋混匀',
zyhy_b: '振摇混匀',
hwhy_b: '恒温混匀',
jb_b: '搅拌',
jrjb_b: '加热搅拌',
sy_b: '水浴',
zy_b: '正压',
dc_b: '氮吹',
glzd_b: '过滤(自动)',
glsd_b: '过滤(手动)',
jz_b: '静置',
jd_b: '解冻',
fy_b: '孵育',
fr_b: '复溶',
jd_swypfx: '融解',
jryp: '加入样品',
ysfy: '衍生反应',
hhspe: '活化(SPE)',
phspe: '平衡(SPE)',
syspe: '上样(SPE)',
lxspe: '淋洗(SPE)',
xtspe: '洗脱(SPE)',
zyfc: '转移(分层)',
jszz: '剪碎组织',
cqzz: '称取组织',
jryjry: '加入匀浆溶液',
ymyj: '研磨匀浆',
yjyfz2: '匀浆液分装2',
yjyfz3: '匀浆液分装3',
yjbc: '匀浆保存',
yjyhh: '匀浆液混合',
fy_spyjzzb: '孵育',
jz_spyjzzb: '静置',
ddhy_qxwdx: '颠倒混匀',
hwph: '恒温平衡',
qxfz: '全血分装',
qxjz: '全血静置',
qxlx: '全血离心',
qxqy: '全血取样',
jzhlx: '静置后离心',
fq2: '分取2',
fq3: '分取3',
hh: '混合',
qx: '清洗',
zc: '暂存',
qy: '弃液',
sjjy: '试剂加样',
jryp_pcr: '加入样品',
bzyp: '补足样品',
jz_pcr: '静置',
nscyp: 'NSC样品',
qrhy: '轻柔混匀',
pebwfz: 'PE板位放置',
tgbwfz: '天根板位放置',
lsbwfz: '罗氏板位放置',
tqsj: '提取上机',
lssj: '罗氏上机',
yqzt: '仪器暂停',
ecsj: '二次上机',
czclcl: '磁珠残留处理',
ypzy: '样品转移',
lx_pcr: '离心',
hsypfz: '核酸样品分装',
ypbc: '样品保存',
jd_pcr: '解冻',
sjjyst: '试剂加样(手提)',
ddhy_pcr: '颠倒混匀',
wxhy_pcr: '涡旋混匀',
sy_pcr: '水浴',
sslx: '瞬时离心',
xfzcl: '吸附柱处理',
lxdy: '离心(倒液)',
xfzzysjg: '吸附柱转移(收集管)',
xfzzylxg: '吸附柱转移(离心管)',
xt: '洗脱',
ecxt: '二次洗脱',
ndcd: '浓度测定',
jrry_pcrcjg: '加入溶液',
jszz_pcryj: '剪碎组织',
cqzz_pcryj: '称取组织',
jryjry_pcryj: '加入匀浆溶液',
xs: '稀释',
sjjy_pcrfxyp: '试剂加样',
jryp_pcrfxyp: '加入样品',
fmlx: '封膜离心',
pcrsj: 'PCR上机',
pbsz: '排版设置',
cbygxz: '参比荧光选择',
yxpcry: '运行PCR仪',
cdnsypfz: 'cDNA样品分装',
bb: '包被',
xb: '洗板',
fb_jcb: '封闭',
jy: '加样',
zh: '中和',
jjcsj: '加检测试剂',
sj: '酸解',
sjjy_jcb: '酸解加样',
zhfy: '中和孵育',
ecsj_jcb: '二次酸解',
xs_jcb: '显色',
zz: '终止',
jc: '检测',
dbmby: '读板(酶标仪)',
dbhxfgxt: '读板(化学发光系统)',
dbdhxfgxt: '读板(电化学发光系统)',
dbygxt: '读板(荧光系统)',
dzacl: '读值(ACL)',
qb: '取板',
jzks: '静置开始',
fyxks: '孵育箱开始',
ycfyks: '摇床孵育开始',
ycks: '摇床开始',
js_jcb: '结束',
fm: '覆膜',
pg: '拍干',
czqx: '磁珠清洗',
czzx: '磁珠重悬',
ychy: '摇床混匀',
czzy: '磁珠转移',
sjbj: '试剂标记',
qxb: '取细胞',
qjz: '取菌株',
fr_xbjzpz: '复融',
lxqy: '离心(弃液)',
cd: '吹打',
xbzy: '细胞转移',
jzzy: '菌株转移',
dypyy: '倒原培养液',
xd: '洗涤',
xh: '消化',
zzxh: '终止消化',
copy: 'CO₂‌培养',
gc: '观察',
cdmd: '测定密度',
ds: '低渗',
gd: '固定',
cdxs: '传代/稀释',
gc_xb: '观察',
xdlc: '洗涤(2次)',
bzpyy: '补足培养液',
xh_xb: '消化',
jrrydh: '加入溶液(多行)',
gd_xb: '固定',
rs_xb: '染色',
bpqr: '破片确认',
dp: '滴片',
bprs: '破片染色',
cx: '冲洗',
lg: '晾干',
hygh: '混匀固化',
hwzd: '恒温振荡',
jbcpyj: '加表层培养基',
xs_ptjhfxyp: '稀释'
}
export default result

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

@ -1,4 +1,4 @@
<!-- CO2培养 -->
<!-- CO培养 -->
<template>
<StepFormPackage :fieldItemLabel = "fieldItemLabel" ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_copy'" @resetRecord = "resetRecord" :form-config="formConfig" :formData="formData" />
</template>
@ -23,7 +23,7 @@ export default {
let config = [{
config: {
text1: {
label: "使用CO2培养箱",
label: "使用CO₂‌培养箱",
type: "text",
},
yq: {
@ -31,7 +31,7 @@ export default {
fillType: "actFill",
},
text2: {
label: "仪器,在温度为37±2°C、CO2浓度为5%±0.5%的条件下进行培养,培养",
label: "仪器,在温度为37±2°C、CO₂‌浓度为5%±0.5%的条件下进行培养,培养",
type: "text",
},
startDate: {

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

@ -1,4 +1,4 @@
<!-- -->
<!-- -->
<template>
<StepFormPackage :fieldItemLabel = "fieldItemLabel" ref = "stepFormPackageRef" :prefixKey="stepIndex+'_'+'xbjzpz_fr_xbjzpz'" @resetRecord = "resetRecord" :form-config="formConfig" :formData = "formData" />
</template>

+ 2
- 0
src/components/Template/StepFormPackage.vue View File

@ -250,6 +250,7 @@ export default {
o.syldw = formFields[item.dwCode];//
}
sjResource.push(o);
}
}else if(item.type === "yq"){
if(formFields[key]){
@ -261,6 +262,7 @@ export default {
}
}
}
console.log(sjResource,yqResource,allFieldsConfig,formFields,"sjResource")
return {
sjResource,
yqResource,

+ 42
- 40
src/components/Template/mixins/formPackageMixins.js View File

@ -1,5 +1,5 @@
import _ from 'lodash'
import { getuuid, isEqual, isValueEmpty,isRegent } from '@/utils/index.js'
import { getuuid, isEqual, isValueEmpty, isRegent } from '@/utils/index.js'
import { isShowOtherByCheckboxTree } from '@/utils/formPackageCommon.js'
import moment from 'moment'
@ -63,8 +63,8 @@ export default {
this.$set(this.errors, key, false)
}
},
getOrangeBg(key,sItem) {
if(sItem.compareText){
getOrangeBg(key, sItem) {
if (sItem.compareText) {
return sItem.compareText == this.formFields[key]
}
return this.orangeBgFields[key]
@ -82,7 +82,9 @@ export default {
},
//试剂/仪器等弹窗提交
onRegentSubmit(data, inputValue, key, item) {
this.formFields[`selectInfo_${key}`] = JSON.parse(JSON.stringify(data.selectInfo));
if (data.selectInfo) {
this.formFields[`selectInfo_${key}`] = JSON.parse(JSON.stringify(data.selectInfo));
}
if (data.type === "yq") {
this.formFields[`yqInfo_${key}`] = JSON.parse(JSON.stringify(data.row));
}
@ -389,45 +391,46 @@ export default {
currentConfig.otherCode
)
}
})
// 处理可能存在的直接otherCode字段
if (item.config?.otherCode) {
config[item.config?.otherCode] = item.config?.otherCode
}
if (item.config?.thirdOtherCode) {
config[item.config?.thirdOtherCode] = item.config?.thirdOtherCode
}
if (isRegent(item.config) || isRegent(item.config,"subType")) {
// 处理selectInfo_开头的字段,步骤表单需要保留selectInfo_开头的字段
// 优先使用this.formFields中以selectInfo_开头的字段
let selectInfoKeys = [], yqInfoKeys = [];
if (this.formFields) {
selectInfoKeys = Object.keys(this.formFields).filter((key) =>
key.startsWith('selectInfo_')
)
yqInfoKeys = Object.keys(this.formFields).filter((key) =>
key.startsWith('yqInfo_')
)
// 处理可能存在的直接otherCode字段
if (currentConfig.otherCode) {
config[currentConfig.otherCode] = currentConfig.otherCode
}
// 如果this.formFields中没有,则使用formData中的
if (selectInfoKeys.length === 0 && formData) {
selectInfoKeys = Object.keys(formData).filter((key) =>
key.startsWith('selectInfo_')
)
if (currentConfig.thirdOtherCode) {
config[currentConfig.thirdOtherCode] = currentConfig.thirdOtherCode
}
if (yqInfoKeys.length === 0 && formData) {
yqInfoKeys = Object.keys(formData).filter((key) =>
key.startsWith('yqInfo_')
)
if (isRegent(currentConfig) || isRegent(currentConfig, "subType")) {
// 处理selectInfo_开头的字段,步骤表单需要保留selectInfo_开头的字段
// 优先使用this.formFields中以selectInfo_开头的字段
let selectInfoKeys = [], yqInfoKeys = [];
if (this.formFields) {
selectInfoKeys = Object.keys(this.formFields).filter((key) =>
key.startsWith('selectInfo_')
)
yqInfoKeys = Object.keys(this.formFields).filter((key) =>
key.startsWith('yqInfo_')
)
}
// 如果this.formFields中没有,则使用formData中的
if (selectInfoKeys.length === 0 && formData) {
selectInfoKeys = Object.keys(formData).filter((key) =>
key.startsWith('selectInfo_')
)
}
if (yqInfoKeys.length === 0 && formData) {
yqInfoKeys = Object.keys(formData).filter((key) =>
key.startsWith('yqInfo_')
)
}
selectInfoKeys.forEach((key) => {
result[key] = this.formFields[key] || formData[key] || ''
})
yqInfoKeys.forEach((key) => {
result[key] = this.formFields[key] || formData[key] || ''
})
}
selectInfoKeys.forEach((key) => {
result[key] = this.formFields[key] || formData[key] || ''
})
yqInfoKeys.forEach((key) => {
result[key] = this.formFields[key] || formData[key] || ''
})
}
})
}
})
@ -647,7 +650,6 @@ export default {
return new Promise((resolve, reject) => {
if (validateResult.valid && subComponentValidateResult.valid) {
console.log(this.formFields, 'this.formFields')
resolve(this.formFields)
} else if (!validateResult.valid) {
// this.$message.error("表单内容未填完,请填写后再提交");

+ 3
- 1
src/lang/en/template/commonTemplate.js View File

@ -9,6 +9,7 @@ export default {
instrumentInfo: 'Instrument Usage',
storageCondition: 'Storage Conditions',
operationSteps: 'Operation Workflow',
bzgzypz: '标曲工作液配制',
remark: 'Comments',
step: 'Step',
bqdy: 'Label Print',
@ -23,7 +24,7 @@ export default {
sjInfo:'Reagent Info',
gyzjInfo:'Formulation Info',
gspInfo:'Specimen Info',
gspsywzInfo:'试验物信息',
gspsywzInfo:'试验物信息',
mjyInfo:'Controlled Drug Info',
storageConditionLabel: 'Storage Condition',
@ -56,6 +57,7 @@ export default {
addBtn: 'Add',
deleteBtn: 'Delete',
downloadTemplate: 'Download Template',
downloadTableData: 'Download Table',
importTemplate: 'Import Template',
// 错误提示

+ 5
- 1
src/lang/en/template/dl.js View File

@ -168,7 +168,11 @@ export default {
pytjText: 'Culture Conditions',
pykssj: 'Culture Start Time',
pykssjButton: 'Start',
bqdy: 'Label Print'
bqdy: 'Label Print',
gcbz:'View Remark',
czrqm:'Signed By',
czrqmsj:'Date',
xbfshzk:'Post-thaw cell condition'
},
dl012: {
...common,

+ 4
- 2
src/lang/zh/template/commonTemplate.js View File

@ -7,14 +7,15 @@ export default {
sjInfo:'试验试剂信息',
gyzjInfo:'给药制剂信息',
gspInfo:'供试品信息',
gspsywzInfo:'试验物信息',
gspsywzInfo:'试验物信息',
mjyInfo:'麻精药信息',
reagentInfo: '试验试剂信息',
wzInfo: '试验物信息',
wzInfo: '试验物信息',
instrumentInfo: '仪器使用信息',
storageCondition: '存储条件',
operationSteps: '操作步骤',
bzgzypz: '标曲工作液配制',
step: '步骤',
remark: '备注',
bqdy: '标签打印',
@ -57,6 +58,7 @@ export default {
saveBtn: '保存',
deleteBtn: '刪除',
downloadTemplate: '下载模板',
downloadTableData: '下载表格数据',
importTemplate: '导入模板',
// 错误提示

+ 5
- 1
src/lang/zh/template/dl.js View File

@ -165,7 +165,11 @@ export default {
pytjText: '培养条件',
pykssj: '培养开始时间',
pykssjButton: '开始',
bqdy: '标签打印'
bqdy: '标签打印',
gcbz:'观察备注',
czrqm:'操作人签名',
czrqmsj:'操作人签名时间',
xbfshzk:'细胞复苏后状况'
},
dl012: {
...common,

+ 14
- 0
src/utils/calUnitTools.js View File

@ -9,6 +9,13 @@ export function addTj(valueArr, unitArr) {
mixIndex = thisIndex < mixIndex ? thisIndex : mixIndex
}
if (mixIndex === -1) {
return {
total: 0,
unit: 'mL'
}
}
let total = 0
for (let i = 0; i < unitArr.length; i++) {
let thisIndex = unit.indexOf(unitArr[i])
@ -38,6 +45,13 @@ export function subTj(valueArr, unitArr) {
mixIndex = thisIndex < mixIndex ? thisIndex : mixIndex
}
if (mixIndex === -1) {
return {
total: 0,
unit: 'mL'
}
}
let total = multiplyDecimals(
parseFloat(valueArr[0]),
Math.pow(1000, unit.indexOf(unitArr[0]) - mixIndex)

+ 11
- 3
src/views/business/comps/select/SelectStudy.vue View File

@ -2,9 +2,11 @@
<template>
<div>
<el-input v-model="selected.name" :placeholder="$t('form.placeholderSelect')" :disabled="disabled"
<el-input v-model="selected.name" v-if="!showSn" :placeholder="$t('form.placeholderSelect')" :disabled="disabled"
@click.native="showStudy" />
<SelectStudyDialog ref="selectStudyDialog" @callback="handleChange" />
<el-input v-model="selected.sn" v-if="showSn" :placeholder="$t('form.placeholderSelect')" :disabled="disabled"
@click.native="showStudy" />
<SelectStudyDialog ref="selectStudyDialog" @callback="handleChange" />
</div>
</template>
@ -30,6 +32,10 @@ export default {
type: Number,
default: 0
},
showSn: {
type: Boolean,
default: false
}
},
watch: {
value: {
@ -43,7 +49,8 @@ export default {
return {
selected: {
id: '',
name: ''
name: '',
sn: ''
},
};
},
@ -60,6 +67,7 @@ export default {
handleChange(obj) {
this.selected.name = obj.name
this.selected.id = obj.id
this.selected.sn = obj.sn
this.$emit('change', _.merge({}, obj, { key: this.selectkey }))
this.$emit('input', obj.id)
},

+ 11
- 1
src/views/business/comps/select/SelectStudyDialog.vue View File

@ -68,6 +68,10 @@ export default {
name: "SelectStudyDialog",
components: { SelectDeptUser },
props: {
showSn: {
type: Boolean,
default: false
}
},
watch: {
},
@ -106,11 +110,13 @@ export default {
this.selectList = selection
this.selectedId = _.map(this.selectList, 'id').join(',')
this.selectedName = _.map(this.selectList, 'name').join(',')
this.selectedSn = _.map(this.selectList, 'sn').join(',')
},
show(val) {
this.searchForm = _.merge({}, this.searchForm, val)
this.selectedId = ''
this.selectedName = ''
this.selectedSn = ''
this.checkedOther = false
this.others = ''
this.$emit('callback', { id: '', name: '', other: '' })
@ -121,6 +127,7 @@ export default {
this.open = true
this.selectedId = ''
this.selectedName = ''
this.selectedSn = ''
this.checkedOther = false
this.others = ''
this.$emit('callback', { id: '', name: '', other: '' })
@ -146,12 +153,15 @@ export default {
},
handleSelect() {
let name=''
let sn = ''
if(this.selectedName!=''&&this.others!=''){
name=this.selectedName+','+this.others
sn=this.selectedSn+','+this.others
}else{
name=this.selectedName+this.others
sn=this.selectedSn+this.others
}
this.$emit('callback', { id: this.selectedId, name: name, mdOther: this.others })
this.$emit('callback', { id: this.selectedId, name: name, mdOther: this.others, sn: sn })
this.open = false
}
}

+ 2
- 2
src/views/business/comps/template/comps/bl/BL002.vue View File

@ -219,10 +219,10 @@ export default {
if( stepTableFormData && stepTableFormData.length >0 ){
stepTableFormData.map((item,index)=>{
if(!item.smryqrxx && item.smryqrxx !== false){
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(index, {...item,smryqrxx:false})
this.$refs.dwybTableRef.updateDataSourceByRowIndex(index, {...item,smryqrxx:false})
}
if(!item.ztblxjqrxx && item.ztblxjqrxx !== false){
this.$refs.yqsyTableRef.updateDataSourceByRowIndex(index, {...item,ztblxjqrxx:false})
this.$refs.dwybTableRef.updateDataSourceByRowIndex(index, {...item,ztblxjqrxx:false})
}
})
}

+ 3
- 0
src/views/business/comps/template/comps/dl/DL003.vue View File

@ -551,6 +551,9 @@ export default {
if (this.$refs.jzjzTableRef) {
this.$refs.jzjzTableRef.updateDataSourceByRowIndex(rowIndex, { ...currentItem });
}
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
} catch (error) {
// 8.
this.$message.error('子码生成失败,请重试');

+ 105
- 64
src/views/business/comps/template/comps/dl/DL011.vue View File

@ -8,24 +8,11 @@
</div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPackage
fieldItemLabel="template.common.baseInfo"
label="template.common.baseInfo"
:ref="refConf.base"
:formConfig="baseInfoFormConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
:ref="refConf.base" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList
label="template.common.reagentInfo"
:columns="sysjColumns"
:dataSource="resourceSj"
/>
<TableList
label="template.common.instrumentInfo"
:columns="yqColumns"
:dataSource="yqResource"
/>
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resourceSj" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<!-- 细胞信息 -->
<LineLabel label="template.dl.dl011.xbxx" />
@ -35,14 +22,8 @@
$t('template.dl.dl011.bqdy')
}}</el-button>
</div>
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.xbxx"
:formConfig="xbxxConfig"
@onRegentSubmit="(data) => onTableRegentSubmit(data)"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.xbxx" :formConfig="xbxxConfig"
@onRegentSubmit="(data) => onTableRegentSubmit(data)" :formData="formData" />
</div>
<LineLabel label="template.dl.dl011.fxbz" />
@ -51,24 +32,55 @@
<!-- 预留区域 - 培养信息 -->
<LineLabel label="template.dl.dl011.pyxx" />
<div class="template-form-item">
<BaseInfoFormPackage
fieldItemLabel=""
label=""
:ref="refConf.pyxx"
:formConfig="pyxxConfig"
:formData="formData"
@onRegentSubmit="(data) => onTableRegentSubmit(data)"
@clickButton="handlePyxxClickButton"
/>
<BaseInfoFormPackage fieldItemLabel="" label="" :ref="refConf.pyxx" :formConfig="pyxxConfig"
:formData="formData" @onRegentSubmit="(data) => onTableRegentSubmit(data)"
@clickButton="handlePyxxClickButton" />
</div>
<BaseInfoFormPackage
fieldItemLabel="template.dl.dl007.bz"
label="template.dl.dl007.bz"
:ref="refConf.remark"
:formConfig="remarkConfig"
:formData="formData"
/>
<BaseInfoFormPackage fieldItemLabel="template.dl.dl007.bz" label="template.dl.dl007.bz" :ref="refConf.remark"
:formConfig="remarkConfig" :formData="formData" />
<template v-if="jcgjList.length > 0">
<LineLabel label="template.dl.dl011.xbfshzk" />
<div v-for="(item, index) in jcgjList" :key="index" class="guancha-content">
<div style="display: flex; margin-top: 20px;" v-if="lang=='zh'">
<div style="width: 100px; text-align: right;">{{ JSON.parse(item.jcnr)[0].name }}</div>
<div style="width: 800px; padding-left: 10px;">
<el-input v-model="JSON.parse(item.jcnr)[0].value" :disabled="true">
</el-input>
</div>
</div>
<div style="display: flex; margin-top: 20px;" v-if="lang=='en'">
<div style="width: 100px; text-align: right;">{{ JSON.parse(item.jcnrEn)[0].name }}</div>
<div style="width: 800px; padding-left: 10px;">
<el-input v-model="JSON.parse(item.jcnrEn)[0].value" :disabled="true">
</el-input>
</div>
</div>
<div style="display: flex; margin-top: 20px;">
<div style="width: 100px; text-align: right;">{{ $t('template.dl.dl011.gcbz') }}</div>
<div style="width: 800px; padding-left: 10px;">
<el-input type="textarea" :rows="4" :disabled="true" v-model="item.remark">
</el-input>
</div>
</div>
<div style="display: flex; margin-top: 20px;margin-left: 110px; justify-content: space-between; width: 800px;">
<div style="width: 150px; ">
<div>{{ $t('template.dl.dl011.czrqm') }}</div>
<div style="margin-top: 10px;">
<el-input v-model="item.qmrMc" :disabled="true">
</el-input>
</div>
</div>
<div style="width: 150px;">
<div>{{ $t('template.dl.dl011.czrqmsj') }}</div>
<div style="margin-top: 10px;">
<el-input v-model="item.createTime" :disabled="true">
</el-input>
</div>
</div>
</div>
</div>
</template>
</div>
</div>
</div>
@ -76,6 +88,7 @@
</template>
<script>
import { studyFormFill_jcgj } from "@/api/business/study/studyFormFill"
import BaseInfoFormPackage from '@/components/Template/BaseInfoFormPackage'
import TableOpertaionDelete from '@/components/Template/operation/TableOpertaionDelete.vue'
import CustomTable from '@/components/Template/CustomTable.vue'
@ -110,9 +123,9 @@ export default {
mixins: [templateMixin],
provide() {
return {
getMybh: ()=>{
getMybh: () => {
const data = this.$refs[refConf.xbxx].getFilledFormData()
return {mybh:data.fshxbbh+data.fshxbbhCodeSn,maxVolume:data.fshxbsjtj,maxVolumeUnit:data.fshxbsjtjUnit}
return { mybh: data.fshxbbh + data.fshxbbhCodeSn, maxVolume: data.fshxbsjtj, maxVolumeUnit: data.fshxbsjtjUnit }
}
}
},
@ -208,21 +221,21 @@ export default {
pykssj:
this.fillType === 'actFill'
? {
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
subType: 'button',
subKey: 'pykssjButton',
disabled: true,
subDisabled: false,
buttonName: 'template.dl.dl011.pykssjButton'
}
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
subType: 'button',
subKey: 'pykssjButton',
disabled: true,
subDisabled: false,
buttonName: 'template.dl.dl011.pykssjButton'
}
: {
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
disabled: true
}
label: 'template.dl.dl011.pykssj',
type: 'input',
fillType: 'actFill',
disabled: true
}
}
}
]
@ -273,8 +286,6 @@ export default {
compareTo: 'fshxbyjtj',
subOptions: this.getDictOptions('business_tjdw'),
maxlength: 10,
subDisabled:true
}
}
}
@ -291,7 +302,7 @@ export default {
this.$nextTick(() => {
this.$refs[refConf.pyxx]?.updateFormData(
'pytjText',
'培养条件:温度为温度为37℃±2℃,CO2浓度为5%±1%',
'培养条件:温度为温度为37℃±2℃,CO₂‌浓度为5%±1%',
{ isUpdateRecord: false, signData: null }
)
})
@ -299,10 +310,10 @@ export default {
//
if (this.fillType !== 'actFill') return
const data = this.getFilledFormDataByRefs([refConf.xbxx])
if(!data.fshxbsjtjUnit){
this.$refs[refConf.xbxx].batchUpdateFormData({'fshxbsjtjUnit':data.fshxbyjtjUnit})
if (!data.fshxbsjtjUnit) {
this.$refs[refConf.xbxx].batchUpdateFormData({ 'fshxbsjtjUnit': data.fshxbyjtjUnit })
}
//
setTimeout(() => {
@ -318,6 +329,10 @@ export default {
const res = await getLatestSn({ pre: fshxbbh, type: 1, count: 1 })
if (res.code !== 200 || !res.data?.length) return
this.$refs[refConf.xbxx].batchUpdateFormData({ fshxbbhCodeSn: res.data[0] })
//
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
} catch (e) {
this.$message.error('复苏后细胞编号生成失败,请重试')
}
@ -326,10 +341,25 @@ export default {
data() {
return {
formData: {},
jcgjList: [],
lang: this.$store.getters.language.split("_")[0],
refConf
}
},
created() {
this.getJjcgjList()
},
methods: {
getJjcgjList() {
studyFormFill_jcgj({
pageNum: 1,
jcmc: '生长情况',
formId: this.templateData.id,
pageSize: 99,
}).then(response => {
this.jcgjList = response.rows
})
},
onTableRegentSubmit(data) {
if (data.key === 'xbdcbh') {
this.$refs.xbxxRef.updateFormData('xbdcbh_tj', data.selectInfo.row.tj)
@ -431,7 +461,7 @@ export default {
tmpResource,
stepResource.sjResource || []
)
this.yqResourceTmp = uniqeYqOne([...stepResource.yqResource || [],...tmpYq])
this.yqResourceTmp = uniqeYqOne([...stepResource.yqResource || [], ...tmpYq])
return this.resourceTmp
},
//
@ -466,4 +496,15 @@ export default {
font-size: 16px;
color: #303133;
}
.guancha-content{
background: #fff;
padding: 20px;
border-radius: 8px;
-webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
margin-top: 20px;
padding: 20px;
border-radius: 5px 5px;
page-break-inside: avoid;
}
</style>

+ 38
- 23
src/views/business/comps/template/comps/dl/DL012.vue View File

@ -254,7 +254,7 @@ export default {
subOptions: this.getDictOptions('business_tjdw'),
maxlength: 10,
compareTo: 'zbhxbyjtj',
copyFrom: 'zbhxbyjtj'
copyFrom: 'zbhxbyjtj',
}
}
}
@ -273,7 +273,7 @@ export default {
this.$nextTick(() => {
this.$refs[refConf.pyxx]?.updateFormData(
'pytjText',
'培养条件:温度为温度为37℃±2℃,CO2浓度为5%±1%',
'培养条件:温度为温度为37℃±2℃,CO₂‌浓度为5%±1%',
{ isUpdateRecord: false, signData: null }
)
})
@ -314,6 +314,14 @@ export default {
// zbxbs
async generateZbhxbbhFields() {
const data = this.getFilledFormDataByRefs([refConf.xbxx])
if(!data.zbhxbsjtjUnit){
this.$refs[refConf.xbxx].batchUpdateFormData({'zbhxbsjtjUnit':data.fshxbyjtjUnit})
}
//
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
const { zbxbs, zbhxbbh_1 } = data || {}
if (!zbxbs || !zbhxbbh_1) return
@ -359,9 +367,12 @@ export default {
onTableRegentSubmit(data) {
if (data.key === 'xbzbqbh') {
const selectedRows = data.selectInfo?.selectedRows || []
const firstRow = selectedRows[0] || {}
this.$refs.xbxxRef.updateFormData('xbzbqbh_tj', firstRow.tj)
this.$refs.xbxxRef.updateFormData('xbzbqbh_dw', firstRow.tjdw)
this.$refs.xbxxRef.updateFormData('xbzbqbh_count', selectedRows.length)
for(let i=1; i<=selectedRows.length; i++){
const row = selectedRows[i-1] || {}
this.$refs.xbxxRef.updateFormData(`xbzbqbh_bh_${i}`, row.bh)
this.$refs.xbxxRef.updateFormData(`xbzbqbh_dw_${i}`, row.tjdw || '')
}
}
if (data.key === 'pyxbh') {
const row = data.selectInfo?.row || {}
@ -426,24 +437,28 @@ export default {
})
}
//使
tmpResource.push({
mc: null,
bh: content.xbzbqbh,
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: null,
type: 9, //使
elnType: null, //null
syldw: content.xbzbqbh_dw,
yxzq: null,
yxzqdw: null,
})
let xbzbqbh_count = content.xbzbqbh_count || formData.xbzbqbh_count || 0;
for(let i=1; i<=xbzbqbh_count; i++){
tmpResource.push({
mc: null,
bh: content[`xbzbqbh_bh_${i}`] || formData[`xbzbqbh_bh_${i}`],
ph: '',
ndz: '',
nd: '',
nddw: '',
ly: '',
sxrq: null,
kc: null,
kcdw: null,
syl: null,
type: 9, //使
elnType: null, //null
syldw: content[`xbzbqbh_dw_${i}`] || formData[`xbzbqbh_dw_${i}`],
yxzq: null,
yxzqdw: null,
})
}
//使
tmpYq.push({
mc: content.pyxbh_mc || formData.pyxbh_mc,

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

@ -311,6 +311,9 @@ export default {
})
if (result.code == 200) {
this.$refs[`formConfigStepFormPackageRef_${i}`][0].updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
}
}
}

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

@ -381,6 +381,9 @@ export default {
})
if (result.code == 200) {
this.$refs[`formConfigStepFormPackageRef_${i}`][0].updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
}
}
}

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

@ -640,6 +640,9 @@ export default {
}
this.$refs[ref][0]?.updateDataSourceByRowIndex(idx, { subTargetSolutionCode: snList[idx], ...expDate });
});
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
resolve()
} else {
reject()
@ -851,7 +854,7 @@ export default {
let fzItem = fzsj.fzList[k]
tmpResource.push({
mc: null,
bh: fzsj.mybh + fzItem.preCode + fzItem.subCode,
bh: fzItem.preCode ,
ph: null,
ndz: stepTableFormData[j].actSolutionConcentration + paralleConfigs.headerSelectFields.actSolutionConcentrationUnit,
nd: stepTableFormData[j].actSolutionConcentration,

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

@ -12,7 +12,7 @@
<!-- 基本信息 -->
<TableList label="template.common.gspsywzInfo" :columns="gspColumns" :dataSource="resourceGsp" />
<TableList label="template.common.sjInfo" :columns="sjColumns" :dataSource="resourceSj" />
<!-- <TableList label="template.common.gyzjInfo" :columns="gyzjColumns" :dataSource="resourceGyzj" /> -->
<TableList label="template.common.gyzjInfo" :columns="gyzjColumns" :dataSource="resourceGyzj" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<!-- 存储条件 -->
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
@ -357,6 +357,9 @@ export default {
})
if (result.code == 200) {
this.$refs[`formConfigStepFormPackageRef_${i}`][0].updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
}
}
}

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

@ -610,6 +610,9 @@ export default {
}
this.$refs[ref][0]?.updateDataSourceByRowIndex(idx, { subTargetSolutionCode: snList[idx], ...expDate });
});
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
resolve()
} else {
reject()

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

@ -809,6 +809,9 @@ export default {
})
if (result.code == 200) {
this.$refs[`formZlConfigFormPackageRef_${i}`][0].updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
}
}
}
@ -823,6 +826,9 @@ export default {
})
if (result.code == 200) {
this.$refs[`formRyConfigFormPackageRef_${i}`][0].updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData();
}, 100);
}
}
}

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

@ -310,6 +310,9 @@ export default {
})
if (result.code == 200) {
this.$refs[`formConfigStepFormPackageRef_${i}`][0].updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData();
}, 100);
}
}
}

+ 67
- 17
src/views/business/comps/template/comps/pcr/PCR007.vue View File

@ -21,13 +21,16 @@
$t('template.common.downloadTemplate') }}</el-button>
<el-button type="primary" @click="showImportExcelDialog">{{
$t('template.common.importTemplate')
}}</el-button>
}}</el-button>
</div>
<el-button type="primary" @click="downloadTableData">{{
$t('template.common.downloadTableData') }}</el-button>
<CustomTable @blur="onHandleTableBlur" @headerSelectChange="onHandleTableBlur"
:ref="`stepTableRef`" :columns="tableStepColumns" :formData="formData" :prefixKey="`table`"
:showOperation="fillType === 'preFill'"
fieldItemLabel="template.common.operationSteps" @clickButton="handleClickButton">
:showOperation="fillType === 'preFill'" fieldItemLabel="template.common.operationSteps"
@clickButton="handleClickButton">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :fillType="fillType" :row="row" :rowIndex="rowIndex" :columns="columns"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"></TableOpertaion>
@ -53,19 +56,21 @@ import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../mixins/templateMixin.js";
import CustomTable from '@/components/Template/CustomTable.vue';
import { isValueEmpty } from '@/utils/index';
import { isValueEmpty, getStringWidth } from '@/utils/index';
import { getLatestSnArr } from '@/api/template';
import { EventBus } from "@/utils/eventBus";
import { volumeConverter } from "@/utils/volConverter";//
import { convertConcentration } from "@/utils/conConverter";//
import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import { getPCR007Config } from "../../formConfig/PCRTableConfig.js";
import { getPCR007Config } from "../../formConfig/PCRTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import { addTj, uniqeResource, uniqeResourceOne, addDecimals,uniqeYqOne } from "@/utils/calUnitTools";
import { addTj, uniqeResource, uniqeResourceOne, addDecimals, uniqeYqOne } from "@/utils/calUnitTools";
import ImportExcelDialog from '../../dialog/ImportExcelDialog'
import { getBalance } from '@/utils/tpph.js';
import * as XLSX from 'xlsx'
export default {
name: "PCR005",
name: "PCR007",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog, ImportExcelDialog },
mixins: [templateMixin],
props: {
@ -192,9 +197,54 @@ export default {
},
mounted() {
const formData = this.getFormDataByTemplateData();
this.onHandleTableBlur()
},
methods: {
downloadTableData() {
this.$modal.loading()
let content = this.getFilledFormData();
var tabelStr =
'<table border="1" class="html-tabel">' +
'<tr style="background:#eee;">' +
'<th style="text-align: center;">' + '样品名称' + '</th>' +
'<th style="text-align: center;">' + '采集管重量' + content.headerSelectFields.cjgzlUnit + '</th>' +
' </tr>'
let _datastr = ''
_.forEach(content.stepTableFormData, function (value) {
_datastr =
_datastr +
'<tr style="text-align: center;">' +
' <td>' +
value.ypmc +
'</td>' +
' <td>' +
value.cjgzl +
'</td>' +
'</tr>'
})
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = this.formData.bdmc
var uri = 'data:application/vnd.ms-excel;base64,'
// HTML
var exportTemplate = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${worksheet}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head>
<body>
${tabelStr}
</body>
</html>`
var a = document.createElement('a')
a.download = worksheet + '.xls'
a.href = uri + window.btoa(unescape(encodeURIComponent(exportTemplate)))
a.click()
this.$modal.closeLoading()
},
downloadExcelTemplate() {
this.exportExcel(['样品名称', '样品初始浓采样前样品管试剂预计添加体积度'], 'PCR分析采集管称重记录表导入模板')
},
@ -212,7 +262,7 @@ export default {
list.push({
ypmc: item[0],
cyqypgsjyjtjtj: item[1],
id:this.getuuid(),
id: this.getuuid(),
})
})
this.$refs.stepTableRef.addRows(list)
@ -256,11 +306,11 @@ export default {
//使
tmpYq.push(content.selectInfo_solution || formData.selectInfo_solution)
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp = uniqeResource(tmpResource, stepResource.sjResource || [])
this.yqResourceTmp = uniqeYqOne([...stepResource.yqResource || [],...tmpYq])
this.yqResourceTmp = uniqeYqOne([...stepResource.yqResource || [], ...tmpYq])
return this.resourceTmp;
},
//
@ -276,18 +326,18 @@ export default {
}
},
//
async handleClickButton(e, rowIndex,colIndex,ee,data) {
if(e==='targetDiluentVolumePrecision'){
async handleClickButton(e, rowIndex, colIndex, ee, data) {
if (e === 'targetDiluentVolumePrecision') {
const content = this.getFilledFormData()
let formData = this.formData;
let formData = this.formData;
let qy = content.yqInfo_solution || formData.yqInfo_solution
let dw = content.headerSelectFields.cjgzlUnit
let x = await getBalance({yq:qy,dw:dw})
if(x && x.success){
this.$refs.stepTableRef?.updateDataSourceByRowIndex(rowIndex, { cjgzl: x.value },{signData:data,updateFields:['cjgzl']});
}else{
let x = await getBalance({ yq: qy, dw: dw })
if (x && x.success) {
this.$refs.stepTableRef?.updateDataSourceByRowIndex(rowIndex, { cjgzl: x.value }, { signData: data, updateFields: ['cjgzl'] });
} else {
this.$message.error(x.message || '称量失败')
}
}

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

@ -301,6 +301,9 @@ export default {
})
if (result.code == 200) {
this.$refs.stepFormPackageRef.updateFormData("targetCodeSn", result.data[0])
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
}
}, 100),
//

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

@ -12,9 +12,9 @@
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<!-- <BaseInfoFormPackage label="存储条件" ref="storageConditionRef" :formConfig="storageFormConfig"
:formData="formData" /> -->
<LineLabel label="template.common.operationSteps" />
<LineLabel label="template.common.bzgzypz" />
<div class="template-form-item">
<BaseInfoFormPackage ref="stepFormPackageRef" fieldItemLabel="template.common.operationSteps"
<BaseInfoFormPackage ref="stepFormPackageRef" fieldItemLabel="template.common.bzgzypz"
@onRegentSubmit="onRegentSubmit"
@beforeReagentSubmit="onBeforeReagentSubmit"
@select = "onFormSelect"
@ -22,7 +22,7 @@
:formData="formData" />
<CustomTable
@headerSelectChange="onHeaderSelectChange"
fieldItemLabel="template.common.operationSteps" @blur="onHandleTableBlur"
fieldItemLabel="template.common.bzgzypz" @blur="onHandleTableBlur"
@beforeSaveRecord = "beforeSaveRecord"
:showAddRow="false" :showOperation="fillType === 'actFill'"
ref="stepTableRef" :columns="stepColumns" :formData="formData">
@ -287,7 +287,7 @@ export default {
{
label: "template.sp.sp003.qsrybh",
prop: "startSolutionCode",
width: 180,
width: 200,
bodyType: "input",
bodyFillType: "actFill",
bodyMaxlength: 10,
@ -296,7 +296,7 @@ export default {
{
label: "template.sp.sp003.ysqsrytj",
prop: "targetStartSolutionVolume",
width: 180,
width: 200,
showWidth: 90,
headerSelectKey: "targetStartSolutionVolumeUnit",
fillType: "preFill",
@ -317,7 +317,7 @@ export default {
{
label: "template.sp.sp003.sjqsrytj",
prop: "actStartSolutionVolume",
width: 180,
width: 200,
showWidth: 90,
headerSelectKey: "actStartSolutionVolumeUnit",
fillType: "preFill",
@ -331,7 +331,7 @@ export default {
{
label: "template.sp.sp003.ysxsytj",
prop: "targetDiluentVolume",
width: 180,
width: 200,
showWidth: 90,
headerSelectKey: "targetDiluentVolumeUnit",
fillType: "preFill",
@ -352,7 +352,7 @@ export default {
{
label: "template.sp.sp003.sjxsytj",
prop: "actDiluentVolume",
width: 180,
width: 200,
showWidth: 90,
headerSelectKey: "actDiluentVolumeUnit",
fillType: "preFill",

+ 3
- 0
src/views/business/comps/template/comps/sp/SP00456.vue View File

@ -299,6 +299,9 @@ export default {
}
this.$refs[currentRef][0]?.updateDataSourceByRowIndex(idx, { subTargetSolutionCode: snList[idx], ...expDate });
});
setTimeout(() => {
this.justUpdateFilledFormData()
}, 100)
resolve()
} else {
reject()

+ 2
- 2
src/views/business/comps/template/dialog/SelectMixReagentDialog.vue View File

@ -179,7 +179,7 @@ export default {
this.$emit('cancel');
},
onSubmit() {
let row = this.otherChecked ? {bh: this.otherReagent}:this.currentRow;
let row = this.otherChecked ?(this.checkType === "checkbox"?[{bh: this.otherReagent}]:{bh: this.otherReagent}):this.currentRow;
const selectedValue = this.otherChecked ? this.otherReagent : this.selectedId;
const selectInfo = this.otherChecked ?{
mc: "",
@ -232,7 +232,7 @@ export default {
if(this.otherChecked && this.otherReagent){
selectedInfo = this.otherReagent;
}else{
selectedInfo = row.map((item)=>(item.bdbh||item.bh)).join(",");
selectedInfo = row.map((item)=>(item.bdbh||item.bh)).join("");
}
callbackData = {
uuid: this.uuid,

+ 52
- 41
src/views/business/comps/template/dialog/SubPackageDialog.vue View File

@ -5,18 +5,18 @@
<div class="header-container">
<div class="header-item">
<div class="header-title">包装编号</div>
<HandleFormItem :fieldKey="formData.mybh +id+ '_mybh'" :isFieldsRecord="false" :item="inputItem"
:type = "mybhOptions.length ? 'select' : 'input'"
@change="onChangeMybh"
:error="formErrors.mybh" v-model="formData.mybh" />
<HandleFormItem :fieldKey="formData.mybh + id + '_mybh'" :isFieldsRecord="false" :item="inputItem"
:type="mybhOptions.length ? 'select' : 'input'" @change="onChangeMybh" :error="formErrors.mybh"
v-model="formData.mybh" />
</div>
<div class="header-item">
<div class="header-title">分装数量</div>
<div class="item-center">
<HandleFormItem :isFieldsRecord="false" :fieldKey="formData.mybh +id+ '_fzsl'"
:item="integerInputNumberItem" type="inputNumber" :error="formErrors.fzsl"
v-model="formData.fzsl" />
<el-button class="ml-5" type="primary" :disabled="!formData.fzsl" plain @click="onBlurFzsl(formData.fzsl)">确定</el-button>
<HandleFormItem :isFieldsRecord="false" :fieldKey="formData.mybh + id + '_fzsl'"
:item="integerInputNumberItem" type="inputNumber" :error="formErrors.fzsl"
v-model="formData.fzsl" />
<el-button class="ml-5" type="primary" :disabled="!formData.fzsl" plain
@click="onBlurFzsl(formData.fzsl)">确定</el-button>
</div>
</div>
</div>
@ -25,13 +25,13 @@
<span>分装编号</span>
<span class="ml-20">单位</span>
<div class="unit-select">
<HandleFormItem :fieldKey="formData.mybh +id+ '_dw'" :isFieldsRecord="false" :item="unitItem"
<HandleFormItem :fieldKey="formData.mybh + id + '_dw'" :isFieldsRecord="false" :item="unitItem"
type="select" :error="formErrors.dw" @blur="(e) => onCommonBlur(e, 'dw')"
v-model="formData.dw" />
</div>
<span class="ml-20">每份包装量</span>
<div class="unit-select">
<HandleFormItem :fieldKey="formData.mybh +id+ '_mfbzl'" type="inputNumber"
<HandleFormItem :fieldKey="formData.mybh + id + '_mfbzl'" type="inputNumber"
:error="formErrors.mfbzl" :isFieldsRecord="false" :item="inputNumberItem"
v-model="formData.mfbzl" />
</div>
@ -164,12 +164,12 @@ export default {
this.fzListErrors = new Array(this.fzList.length).fill(false);
delete cloneData.fzList;
}
const { mybhOptions=[] } = cloneData;
if(mybhOptions.length){
const { mybhOptions = [] } = cloneData;
if (mybhOptions.length) {
this.mybhOptions = mybhOptions
this.inputItem.options = mybhOptions;
this.inputItem.disabled = false;
}else{
} else {
this.inputItem.disabled = true;
}
this.id = data.id;
@ -376,39 +376,48 @@ export default {
//
async onBlurFzsl(e) {
console.log(e, "失去焦点时的数量")
//
if (e) {
this.formErrors.fzsl = false;
}
//
this.fzList = [];
this.fzListErrors = [];
const result = await getLatestSn({
pre: this.formData.mybh,
count: e,
type: 2,
})
if (result.code === 200) {
const codes = result.data;
//
for (let i = 0; i < e; i++) {
this.fzList.push({
num: "",
subCode: codes[i],
preCode: `${this.formData.mybh}-set${codes[i]}`
});
//
this.fzListErrors.push(false);
this.$modal.confirm("分装数量确认后会永久占用分装流水号,且事后无法修改", '提示', {
confirmButtonText: this.$t('form.saveConfirm'),
cancelButtonText: this.$t('form.cancel'),
type: 'warning'
}).then(async () => {
//
if (e) {
this.formErrors.fzsl = false;
}
}
//
this.fzList = [];
this.fzListErrors = [];
const result = await getLatestSn({
pre: this.formData.mybh,
count: e,
type: 2,
})
if (result.code === 200) {
const codes = result.data;
//
for (let i = 0; i < e; i++) {
this.fzList.push({
num: "",
subCode: codes[i],
preCode: `${this.formData.mybh}-set${codes[i]}`
});
//
this.fzListErrors.push(false);
}
}
}).catch(() => {
//
});
},
//
onChangeMybh(e,type) {
if(type === "change" && this.formData.fzsl){
onChangeMybh(e, type) {
if (type === "change" && this.formData.fzsl) {
this.onBlurFzsl(this.formData.fzsl)
}
},
onAverage() {
const { mfbzl } = this.formData;
@ -483,10 +492,12 @@ export default {
border-radius: 4px;
padding: 20px;
}
.item-center{
.item-center {
display: flex;
align-items: center;
}
.header-title {
margin-bottom: 10px;
}

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

@ -1,46 +1,76 @@
export const getBaseInfoFormConfig = (formType) => {
return [
{
type: 'cardItem',
config: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
},
methodCode: {
label: 'template.common.methodCode',
type: 'input',
fillType: formType === 'sp0020' ? 'actFill' : 'preFill',
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: 'inputNumber',
fillType: formType === 'sp0020' ? 'actFill' : 'preFill',
prepend: 'V',
maxlength: 50
},
clpbh: {
label: '处理批编号',
type: 'input',
fillType: 'actFill',
maxlength: 50
},
fxpbh: {
label: '分析批编号',
type: 'input',
fillType: 'actFill',
maxlength: 50
return formType === 'sp0019'
? [
{
type: 'cardItem',
config: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
},
clpbh: {
label: '处理批编号',
type: 'input',
fillType: 'actFill',
maxlength: 50
},
fxpbh: {
label: '分析批编号',
type: 'input',
fillType: 'actFill',
maxlength: 50
}
}
}
}
}
]
]
: [
{
type: 'cardItem',
config: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
},
methodCode: {
label: 'template.common.methodCode',
type: 'input',
fillType: formType === 'sp0020' ? 'actFill' : 'preFill',
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: 'inputNumber',
fillType: formType === 'sp0020' ? 'actFill' : 'preFill',
prepend: 'V',
maxlength: 50
},
clpbh: {
label: '处理批编号',
type: 'input',
fillType: 'actFill',
maxlength: 50
},
fxpbh: {
label: '分析批编号',
type: 'input',
fillType: 'actFill',
maxlength: 50
}
}
}
]
}
export const getStorageFormConfig = ($this) => {

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

@ -169,6 +169,7 @@ export default {
id
}
}
console.log(this.formData,"templateData")
const { effectivePeriod, effectivePeriodUnit, expireDate } =
this.formData
//实际填报的时候,如果有了开始时间,并且有有效周期,但是没有失效日,就计算失效日为开始时间+有效周期

+ 17
- 21
src/views/business/resource/gsp/comps/ffjlList.vue View File

@ -78,12 +78,11 @@
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:gsp:ffjldc']">{{
$t('form.export') }}</el-button>
</el-col>
<el-col :span="14" v-if="rkl">
<div class="tv_rkl">
<span style="margin-right: 20px;">{{ $t('page.business.resource.gsp.rkl') }}{{ rkl }}</span>
<span style="margin-right: 20px;">{{ $t('page.business.resource.gsp.ckl') }}{{ ckl }}</span>
<span style="margin-right: 20px;">{{ $t('page.business.resource.gsp.syl') }}{{ syl }}</span>
</div>
<el-col :span="1.5" style="float: right;">
{{ $t('page.business.resource.gsp.ckl') }}{{ ckl !== '' ? ckl : '--' }}
{{ $t('page.business.resource.gsp.rkl') }}{{ rkl != '' ? rkl : '--' }}
{{ $t('page.business.resource.gsp.syl') }}{{ syl != '' ? syl : '--' }}
</el-col>
</el-row>
@ -225,9 +224,9 @@ export default {
single: true,
multiple: true,
total: 0,
rkl: null,
ckl: null,
syl: null,
ckl: '',
rkl: '',
syl: '',
list: [],
//
selectList: [],
@ -466,19 +465,16 @@ export default {
this.total = response.total
this.loading = false
})
if (this.queryParams.startDateCk || this.queryParams.startDateRk || this.queryParams.mc || this.queryParams.ph
|| this.queryParams.gg || this.queryParams.jlzt || this.queryParams.jyzt || this.queryParams.md) {
statistics(this.queryParams).then(response => {
this.rkl = response.data.rkl
this.ckl = response.data.rkl
this.syl = response.data.rkl
})
} else {
this.rkl = null
this.ckl = null
this.syl = null
}
this.getStatistics()
},
getStatistics() {
statistics(this.queryParams).then(response => {
this.syl = response.data.syl
this.ckl = response.data.ckl
this.rkl = response.data.rkl
})
},
//
handleQuery() {
this.queryParams.pageNum = 1

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

@ -26,16 +26,16 @@
</el-form-item>
</el-col>
<!-- 规格 -->
<el-col :span="8">
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.gg')" prop="gg">
<el-input type="text" v-model="form.gg" maxlength="50" :placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
<!-- 规格单位 -->
<el-col :span="4">
<!-- <el-col :span="4">
<BusinessSelect v-model="form.ggdw"
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
</el-col>
</el-col> -->
</el-row>
<el-row>
<!-- 有效期 -->
@ -53,8 +53,8 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- 接收日期 -->
<!-- 接收日期 -->
<!-- <el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.jsrq')" prop="jsrq">
<el-date-picker v-model="form.jsrq" type="datetime" format="yyyy-MM-dd HH:mm"
@ -62,7 +62,7 @@
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-row> -->
<el-row>
<!-- 注意事项 -->
<el-col :span="24">
@ -156,11 +156,11 @@ export default {
message: ' ',
trigger: 'blur'
}],
jsrq: [{
required: true,
message: ' ',
trigger: 'blur'
}],
// jsrq: [{
// required: true,
// message: ' ',
// trigger: 'blur'
// }],
cctj: [{
required: true,
message: ' ',

+ 6
- 8
src/views/business/resource/gsp/comps/gsp/Ff.vue View File

@ -17,7 +17,7 @@
</el-table-column>
<el-table-column :label="$t('page.business.resource.gsp.gg')" align="center" prop="gg">
<template slot-scope="scope">
{{ scope.row.gg }}{{ scope.row.ggdw }}
{{ scope.row.gg }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gsp.yxq')" align="center" prop="yxq"
@ -39,7 +39,7 @@
<el-table-column :label="$t('page.business.resource.mjy.md')" align="center" width="250px">
<template slot-scope="scope">
<SelectStudy v-model="scope.row.mdIds" :selectkey="scope.row.id + ''"
@change="selectStudyChangeBatch" />
@change="selectStudyChangeBatch" :showSn="true"/>
</template>
</el-table-column>
<el-table-column :label="$t('form.remark')" align="center" width="250px">
@ -80,8 +80,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.gg')">
<el-input type="text" v-model="form.gg" maxlength="50" disabled> <template slot="append">{{ form.ggdw
}}</template>
<el-input type="text" v-model="form.gg" maxlength="50" disabled>
</el-input>
</el-form-item>
</el-col>
@ -127,7 +126,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.md')" prop="mdIds">
<SelectStudy v-model="form.mdIds" @change="selectStudyChange" />
<SelectStudy v-model="form.mdIds" @change="selectStudyChange" :showSn="true" />
</el-form-item>
</el-col>
</el-row>
@ -301,8 +300,7 @@ export default {
methods: {
selectStudyChange(val) {
console.log(val)
this.form.mdMcs = val.name
this.form.mdMcs = val.sn
this.form.mdOther = val.mdOther
},
selectStudyChangeBatch(val) {
@ -310,7 +308,7 @@ export default {
if (val && val.id && val.id !== '') {
const _index = _.findIndex(that.selectList, function (o) { return o.id + '' === val.key })
if (_index > -1) {
that.selectList[_index].mdMcs = val.name
that.selectList[_index].mdMcs = val.sn
that.selectList[_index].mdOther = val.mdOther
}
}

+ 2
- 3
src/views/business/resource/gsp/comps/gsp/Gh.vue View File

@ -26,8 +26,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.gg')">
<el-input type="text" v-model="form.gg" maxlength="50" disabled> <template slot="append">{{ form.ggdw
}}</template>
<el-input type="text" v-model="form.gg" maxlength="50" disabled>
</el-input>
</el-form-item>
</el-col>
@ -74,7 +73,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.mjy.rkl')" prop="rkl">
<el-form-item :label="$t('page.business.resource.gsp.rkmz')" prop="rkl">
<el-input type="text" v-model="form.rkl" maxlength="50" :placeholder="$t('form.placeholderInput')">
<template slot="append">{{ form.kcdw }}</template>
</el-input>

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

@ -26,7 +26,7 @@
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.gg')" prop="nddw">
<el-input type="text" v-model="form.gg" maxlength="50" disabled >
<template slot="append">{{ form.ggdw }}</template>
<!-- <template slot="append">{{ form.ggdw }}</template> -->
</el-input>
</el-form-item>
</el-col>

+ 8
- 8
src/views/business/resource/gsp/comps/gsp/Xq.vue View File

@ -38,14 +38,17 @@
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.gg') }}</div>
<el-input type="text" :value="form.gg" maxlength="50" disabled> <template slot="append">{{
form.ggdw }}</template> </el-input>
<el-input type="text" :value="form.gg" maxlength="50" disabled> </el-input>
</div>
</div>
<div class="pal">
<div class="left">
<!-- <div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.jsrq') }}</div>
<el-input type="text" :value="form.jsrq" maxlength="50" disabled />
</div> -->
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.yxq') }}</div>
<el-input type="text" :value="form.yxq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.kcl') }}</div>
@ -54,12 +57,9 @@
</div>
</div>
<div class="pal">
<div class="left">
<div class="left-title">{{ $t('page.business.resource.gsp.yxq') }}</div>
<el-input type="text" :value="form.yxq" maxlength="50" disabled />
</div>
<div class="right">
<div class="right-title">{{ $t('page.business.resource.gsp.zjzt') }}</div>
<div class="left-title">{{ $t('page.business.resource.gsp.zjzt') }}</div>
<el-select v-model="form.zjzt" disabled style="width: 100%;">
<el-option key="1" :label="$t('page.business.resource.resource.zjzt.rk')" :value="1" />
<el-option key="3" :label="$t('page.business.resource.resource.zjzt.yff')" :value="3" />

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

@ -26,16 +26,16 @@
</el-form-item>
</el-col>
<!-- 规格 -->
<el-col :span="8">
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.gg')" prop="gg">
<el-input type="text" v-model="form.gg" maxlength="50" :placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
<!-- 规格单位 -->
<el-col :span="4">
<!-- <el-col :span="4">
<BusinessSelect v-model="form.ggdw"
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
</el-col>
</el-col> -->
</el-row>
<el-row>
<!-- 库存量 -->
@ -47,7 +47,7 @@
<!-- 库存量单位 -->
<el-col :span="4">
<BusinessSelect v-model="form.kcdw"
dictType="business_zldw,business_tjdw"></BusinessSelect>
dictType="business_zldw,business_tjdw,business_kcdw_other"></BusinessSelect>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.yxq')" prop="yxq">
@ -65,13 +65,13 @@
</el-form-item>
</el-col>
<!-- 接收日期 -->
<el-col :span="12">
<!-- <el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.jsrq')" prop="jsrq">
<el-date-picker v-model="form.jsrq" type="datetime" format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss" :placeholder="$t('form.placeholderInput')">
</el-date-picker>
</el-form-item>
</el-col>
</el-col> -->
</el-row>
<el-row>
<!-- 注意事项 -->
@ -166,11 +166,11 @@ export default {
message: ' ',
trigger: 'blur'
}],
jsrq: [{
required: true,
message: ' ',
trigger: 'blur'
}],
// jsrq: [{
// required: true,
// message: ' ',
// trigger: 'blur'
// }],
cctj: [{
required: true,
message: ' ',

+ 7
- 9
src/views/business/resource/gsp/comps/gspList.vue View File

@ -104,7 +104,7 @@
:show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.resource.gsp.gg')" align="center">
<template slot-scope="scope">
{{ scope.row.gg }}{{ scope.row.ggdw }}
{{ scope.row.gg }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gsp.kcl')" align="center">
@ -113,7 +113,7 @@
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.gsp.ph')" align="center" prop="ph" width="150px" sortable="custom" />
<el-table-column :label="$t('page.business.resource.gsp.jsrq')" align="center" prop="jsrq" width="150px" sortable="custom" />
<!-- <el-table-column :label="$t('page.business.resource.gsp.jsrq')" align="center" prop="jsrq" width="150px" sortable="custom" /> -->
<el-table-column :label="$t('page.business.resource.gsp.yxq')" align="center" prop="yxq" width="150px" sortable="custom" />
<el-table-column :label="$t('page.business.resource.gsp.cctj')" align="center" prop="cctj" width="130px" />
@ -315,7 +315,7 @@ export default {
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.gg') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.kcl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.ph') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.jsrq') + '</th>' +
// '<th style="text-align: center;">' + this.$t('page.business.resource.gsp.jsrq') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.cctj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.zjzt') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.resource.gsp.jyzt') + '</th>' +
@ -370,16 +370,14 @@ export default {
'&nbsp;'+value.bh +
'</td>' +
' <td>' +
value.gg + value.ggdw +
value.gg +
'</td>' +
' <td>' +
value.kc + value.kcdw +
'</td>' +
' <td>' +
value.ph +
'</td>' +
' <td>' +
value.jsrq +
'</td>' +
' <td>' +
value.cctj +
@ -513,8 +511,8 @@ export default {
//
getList() {
if (this.daterange != null && this.daterange.length > 0) {
this.queryParams.startDate = this.daterange[0] + ' 00:00:00'
this.queryParams.endDate = this.daterange[1] + ' 23:59:59'
this.queryParams.startDate = this.daterange[0]
this.queryParams.endDate = this.daterange[1]
} else {
this.queryParams.startDate = ''
this.queryParams.endDate = ''

+ 7
- 10
src/views/business/resource/gsp/comps/rkjlList.vue View File

@ -82,8 +82,8 @@
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:gsp:rkdc']">{{
$t('form.export') }}</el-button>
</el-col>
<el-col :span="14" v-if="rkl">
<div class="tv_rkl">{{ $t('page.business.resource.gsp.rkl') }}{{ rkl }}</div>
<el-col :span="1.5" style="float: right;">
{{ $t('page.business.resource.gsp.rkl') }}{{ rkl != '' ? rkl : '--' }}
</el-col>
</el-row>
@ -423,15 +423,12 @@ export default {
this.loading = false
})
if (this.queryParams.startDate || this.queryParams.endDate || this.queryParams.mc || this.queryParams.ph
|| this.queryParams.gg || this.queryParams.jlzt || this.queryParams.jyzt) {
sumRkl(this.queryParams).then(response => {
this.getStatistics()
},
getStatistics() {
sumRkl(this.queryParams).then(response => {
this.rkl = response.data.rkl
})
} else {
this.rkl = null
}
})
},
//
handleQuery() {

+ 10
- 4
src/views/business/resource/gyzj/comps/ffjlList.vue View File

@ -80,7 +80,7 @@
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:gyzj:ffjldc']">{{
$t('form.export') }}</el-button>
</el-col>
<el-col :span="1.5" style="float: right;">
<el-col :span="1.5" style="float: right;" v-if=" showtj">
{{ $t('page.business.resource.gyzj.ckl') }}{{ ckldw != '' ? ckl : '--' }}{{ ckldw }}
{{ $t('page.business.resource.gyzj.rkl') }}{{ rkldw != '' ? rkl : '--' }}{{ rkldw }}
{{ $t('page.business.resource.gyzj.syl') }}{{ syldw != '' ? syl : '--' }}{{ syldw }}
@ -236,6 +236,7 @@ export default {
daterangeCk: [],
daterangeRk: [],
loading: true,
showtj: false,
showDetail: false,
single: true,
multiple: true,
@ -328,16 +329,17 @@ export default {
this.syl =_.divide( _.sumBy(deepClone(response.data), function (item) { return item.syl }), sylCalc)
this.ckl =_.divide( _.sumBy(deepClone(response.data), function (item) { return item.ckl }), cklCalc)
this.rkl =_.divide( _.sumBy(deepClone(response.data), function (item) { return item.rkl }), rklCalc)
this.showtj=true
})
},
getCalc(toUnit) {
let unit = ['pL', 'nL', 'uL', 'mL', 'L']
let result = 1
for (var i = 1; i < unit.length; i++) {
result = result*1000
for (var i = 0; i < unit.length; i++) {
if (unit[i] == toUnit) {
break
}
result = result*1000
}
return result
},
@ -547,7 +549,11 @@ export default {
list(this.queryParams).then(response => {
this.list = response.rows
this.total = response.total
this.getyltj()
if (this.queryParams.mc && this.queryParams.mc != '') {
this.getyltj()
}else{
this.showtj=false
}
this.loading = false
})
},

+ 28
- 20
src/views/business/resource/mjy/comps/ffjlList.vue View File

@ -80,9 +80,9 @@
<el-button type="primary" @click="exportExcel" v-hasPermi="['business:resource:mjy:ffjldc']">{{
$t('form.export') }}</el-button>
</el-col>
<el-col :span="1.5" style="float: right;">
{{$t('page.business.resource.mjy.jsl')}}{{ jsldw!=''? jsl:'--' }}{{ jsldw }}
{{$t('page.business.resource.mjy.syl')}}{{ syldw!=''? syl:'--' }}{{ syldw }}
<el-col :span="1.5" style="float: right;" v-if=" showtj">
{{ $t('page.business.resource.mjy.jsl') }}{{ jsldw != '' ? jsl : '--' }}{{ jsldw }}
{{ $t('page.business.resource.mjy.syl') }}{{ syldw != '' ? syl : '--' }}{{ syldw }}
</el-col>
</el-row>
@ -116,7 +116,7 @@
{{ scope.row.rkmz }} {{ scope.row.rkmzdw }}
</template>
</el-table-column>
<el-table-column :label="$t('page.business.resource.mjy.jsl')" align="center"
<el-table-column :label="$t('page.business.resource.mjy.jsl')" align="center"
:width="$i18n.locale === 'zh_CN' ? '100px' : '180px'">
<template slot-scope="scope">
{{ scope.row.jsl }} {{ scope.row.jsldw }}
@ -240,6 +240,7 @@ export default {
daterangeRk: [],
loading: true,
showDetail: false,
showtj: false,
single: true,
multiple: true,
total: 0,
@ -276,7 +277,8 @@ export default {
},
methods: {
getyltj() {
yltj(this.queryParams).then(response => {
let that = this
yltj(that.queryParams).then(response => {
// {
// "jsl": 0,
// "jsldw": "mL",
@ -288,14 +290,14 @@ export default {
let tmpJslUnit = []
let tmpSylUnit = []
_.forEach(deepClone(response.data), function (item) {
//
let _indexJsl= _.findIndex(tmpJslUnit, function (fitem) { return fitem.key == item.jsldw })
//
let _indexJsl = _.findIndex(tmpJslUnit, function (fitem) { return fitem.key == item.jsldw })
if (_indexJsl > -1) {
tmpJslUnit[_indexJsl] = tmpJslUnit[_indexJsl].count + item.count
} else {
tmpJslUnit.push({ key: item.jsldw, count: item.count })
}
//使
//使
let _indexSyl = _.findIndex(tmpSylUnit, function (fitem) { return fitem.key == item.syldw })
if (_indexSyl > -1) {
tmpSylUnit[_indexSyl] = tmpSylUnit[_indexSyl].count + item.count
@ -304,27 +306,29 @@ export default {
}
})
//
let _jsldw=_.maxBy(tmpJslUnit, function(o) { return o.count; })
this.jsldw=_jsldw!=null?_jsldw.key:'';
let _jsldw = _.maxBy(tmpJslUnit, function (o) { return o.count; })
that.jsldw = _jsldw != null ? _jsldw.key : '';
let _syldw=_.maxBy(tmpSylUnit, function(o) { return o.count; })
this.syldw=_syldw!=null?_syldw.key:'';
let _syldw = _.maxBy(tmpSylUnit, function (o) { return o.count; })
that.syldw = _syldw != null ? _syldw.key : '';
//
let jslCalc = this.getCalc(this.jsldw)
let sylCalc = this.getCalc(this.syldw)
this.syl=_.divide(_.sumBy(deepClone(response.data),function(item){return item.syl}), sylCalc)
this.jsl=_.divide(_.sumBy(deepClone(response.data),function(item){return item.jsl}), jslCalc)
let jslCalc = that.getCalc(that.jsldw)
let sylCalc = that.getCalc(that.syldw)
that.syl = _.divide(_.sumBy(deepClone(response.data), function (item) { return item.syl }), sylCalc).toString()
that.jsl = _.divide(_.sumBy(deepClone(response.data), function (item) { return item.jsl }), jslCalc).toString()
this.showtj = true
})
},
getCalc(toUnit) {
getCalc(toUnit) {
let unit = ['pL', 'nL', 'uL', 'mL', 'L']
let result = 1
for (var i = 1; i < unit.length; i++) {
result = result*1000
for (var i = 0; i < unit.length; i++) {
if (unit[i] == toUnit) {
break
}
result = result * 1000
}
return result
},
@ -534,7 +538,11 @@ export default {
list(this.queryParams).then(response => {
this.list = response.rows
this.total = response.total
this.getyltj()
if (this.queryParams.mc && this.queryParams.mc != '') {
this.getyltj()
}else{
this.showtj=false
}
this.loading = false
})
},

+ 5
- 0
src/views/business/study/comp/enter.vue View File

@ -97,6 +97,11 @@ export default {
},
showDetailCallback(val) {
this.showDetail = val
if(!this.showDetail){
// this.$tab.refreshPage();
const obj = Object.assign({}, this.$route, { title: this.study.name+'('+this.study.sn+')' })
this.$tab.updatePage(obj);
}
},
changeTab(item) {
if (this.active !== item.key) {

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

@ -1005,7 +1005,7 @@ export default {
this.$modal.msgError('第' + (i + 1) + "个存储,存储条件不能为空")
return
}
if (!that.cclistYj[i].cctjqt || that.cclistYj[i].cctjqt == '') {
if (that.cclistYj[i].cctj == '其他'&& that.cclistYj[i].cctjqt == '') {
this.$modal.msgError('第' + (i + 1) + "个存储,存储条件不能为空")
return
}
@ -1043,7 +1043,7 @@ export default {
this.$modal.msgError('第' + (i + 1) + "个处置,处置方式不能为空")
return
}
if (!that.czlist[i].czfsqt || that.czlist[i].czfsqt == '') {
if (that.czlist[i].czfs == '其他'&& that.czlist[i].czfsqt == '') {
this.$modal.msgError('第' + (i + 1) + "个存储,处置方式不能为空")
return
}
@ -1057,7 +1057,7 @@ export default {
this.$modal.msgError('第' + (i + 1) + "个存储,存储条件不能为空")
return
}
if (!that.cclist[i].cctjqt || that.cclist[i].cctjqt == '') {
if (that.cclist[i].cctj=='其他' && that.cclist[i].cctjqt == '') {
this.$modal.msgError('第' + (i + 1) + "个存储,存储条件不能为空")
return
}

+ 7
- 16
src/views/business/study/comp/tbbd/Blxjsh.vue View File

@ -110,7 +110,7 @@
</template>
<script>
import { studyFormFill_blxjshtg, studyFormFill_blxjshjj, studyFormFill_updateZdgxjl, studyFormFill_updateFhyjjl, studyFormFill_info, studyFormFill_jcgj, studyFormFill_qmxx } from "@/api/business/study/studyFormFill"
import { studyFormFill_blxjshtg, studyFormFill_blxjshjj, studyFormFill_updateZdgxjl, studyFormFill_updateFhyjjl,studyFormFill_updateBdnr, studyFormFill_info, studyFormFill_jcgj, studyFormFill_qmxx } from "@/api/business/study/studyFormFill"
import { mapGetters } from 'vuex'
import JcgjList from "@/views/business/comps/common/JcgjList";
import TemplateTable from '@/views/business/comps/template/TemplateTable';
@ -165,23 +165,14 @@ export default {
onFillFhCallback(data) {
console.log("data:" + JSON.stringify(data))
console.log("formdata:" + JSON.stringify(this.$refs.templateTable.getFilledFormData()))
if (data.type == 'checkbox') {
// {"type":"checkbox","fieldCheckObj":"{\"_methodCode\":{\"checked\":false}}"}
studyFormFill_updateZdgxjl(
if (data.type == 'fieldChanged') {
studyFormFill_updateBdnr(
{
id: this.form.id,
zdgxjl: data.fieldCheckObj
}
).then(response => {
})
}
else if (data.type == 'content') {
// {"type":"content","newRecord":{"userNameCn":"","userNameEn":"tf","key":"_versionNum","field":"-","title":"","time":"2026-01-14 20:23:30","content":"qweqe"},"resourceList":[{"userNameCn":"","userNameEn":"tf","key":"_versionNum","field":"-","title":"","time":"2026-01-14 20:23:30","content":"qweqe"},{"userNameCn":"","userNameEn":"tf","key":"_methodCode","field":"-","title":"","time":"2026-01-14 20:23:28","content":"qweqw"}]}
studyFormFill_updateFhyjjl(
{
id: this.form.id,
content: JSON.stringify(data.newRecord),
fhyjjl: JSON.stringify(data.resourceList)
bdnr: JSON.stringify(this.$refs.templateTable.getFilledFormData()),
zdxgjl: data.resourceList ? JSON.stringify(data.resourceList) : '',
filedValue: data.newRecord ? JSON.stringify(data.newRecord) : '',
submittedCodes: data.submittedCodes ? JSON.stringify(data.submittedCodes) : ''
}
).then(response => {
})

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

@ -235,6 +235,8 @@ export default {
studyFormPre_bcOnly(this.form).then(response => {
this.form = response.data
this.templateData = deepClone(this.form)
const obj = Object.assign({}, this.$route, { title:this.form.bdmc })
this.$tab.updatePage(obj);
this.showIndex = 2
this.$modal.closeLoading()
}).finally(() => {

Loading…
Cancel
Save