luojie 2 weeks ago
parent
commit
3b8cf7324d
58 changed files with 777 additions and 239 deletions
  1. +1
    -1
      .env.development
  2. +1
    -1
      .env.production
  3. +10
    -0
      src/api/business/study/studyFormFill.js
  4. +5
    -5
      src/components/Template/CustomTable.vue
  5. +3
    -2
      src/components/Template/Step.vue
  6. +1
    -1
      src/components/Template/StepComponents/pcr/bzyp.vue
  7. +1
    -1
      src/components/Template/StepComponents/pcr/jryp_pcr.vue
  8. +1
    -1
      src/components/Template/StepComponents/pcr/nscyp.vue
  9. +1
    -1
      src/components/Template/StepComponents/pcr/sjjy.vue
  10. +1
    -1
      src/components/Template/StepComponents/pcr/wxhy_pcr.vue
  11. +1
    -1
      src/components/Template/StepComponents/pcrfx/ndcd.vue
  12. +1
    -1
      src/components/Template/StepComponents/pcrfxyp/jryp_pcrfxyp.vue
  13. +1
    -1
      src/components/Template/StepComponents/pcrfxyp/sjjy_pcrfxyp.vue
  14. +1
    -1
      src/components/Template/StepComponents/pcrfxyp/xs.vue
  15. +1
    -1
      src/components/Template/StepComponents/ry/clcz.vue
  16. +1
    -1
      src/components/Template/StepComponents/ry/clfcz.vue
  17. +1
    -1
      src/components/Template/StepComponents/ry/czhj.vue
  18. +1
    -1
      src/components/Template/StepComponents/ry/jrjb.vue
  19. +1
    -1
      src/components/Template/StepComponents/ry/jrry.vue
  20. +101
    -0
      src/components/Template/StepComponents/swypfx/jd_swypfx.vue
  21. +31
    -1
      src/components/Template/StepComponents/xb/bpqr.vue
  22. +1
    -1
      src/lang/en.js
  23. +1
    -1
      src/lang/en/template/dl.js
  24. +2
    -2
      src/lang/en/template/lba.js
  25. +11
    -2
      src/lang/en/template/pcr.js
  26. +4
    -1
      src/lang/en/template/sp.js
  27. +1
    -1
      src/lang/zh.js
  28. +1
    -1
      src/lang/zh/template/dl.js
  29. +2
    -2
      src/lang/zh/template/lba.js
  30. +11
    -2
      src/lang/zh/template/pcr.js
  31. +4
    -1
      src/lang/zh/template/sp.js
  32. +1
    -1
      src/views/business/comps/template/comps/dl/DL003.vue
  33. +7
    -1
      src/views/business/comps/template/comps/dl/DL006.vue
  34. +10
    -2
      src/views/business/comps/template/comps/dl/DL008.vue
  35. +11
    -1
      src/views/business/comps/template/comps/dl/DL009.vue
  36. +0
    -16
      src/views/business/comps/template/comps/dl/DL010.vue
  37. +1
    -1
      src/views/business/comps/template/comps/dl/DL011.vue
  38. +1
    -1
      src/views/business/comps/template/comps/dl/DL012.vue
  39. +2
    -0
      src/views/business/comps/template/comps/dl/DL015.vue
  40. +249
    -103
      src/views/business/comps/template/comps/gsp/GSP015.vue
  41. +13
    -0
      src/views/business/comps/template/comps/lba/LBA008.vue
  42. +14
    -1
      src/views/business/comps/template/comps/pcr/PCR005.vue
  43. +16
    -3
      src/views/business/comps/template/comps/pcr/PCR008.vue
  44. +15
    -2
      src/views/business/comps/template/comps/pcr/PCR010.vue
  45. +24
    -20
      src/views/business/comps/template/comps/pcr/PCR011.vue
  46. +13
    -0
      src/views/business/comps/template/comps/pcr/PCR012.vue
  47. +8
    -0
      src/views/business/comps/template/comps/sp/SP001.vue
  48. +19
    -5
      src/views/business/comps/template/comps/sp/SP007.vue
  49. +75
    -10
      src/views/business/comps/template/formConfig/PCRTableConfig.js
  50. +15
    -15
      src/views/business/comps/template/formConfig/gsp/gsp015.js
  51. +37
    -11
      src/views/business/comps/template/formConfig/paralleAndLadderConfig.js
  52. +27
    -0
      src/views/business/comps/template/formConfig/sp/SP007.js
  53. +3
    -2
      src/views/business/comps/template/mixins/templateMixin.js
  54. +4
    -1
      src/views/business/resource/gsp/comps/rkjl/RkjlImport.vue
  55. +2
    -2
      src/views/business/resource/gsp/comps/rkjl/Xz.vue
  56. +4
    -1
      src/views/business/storageLocation/comps/StorageLocationImport.vue
  57. +1
    -1
      src/views/business/study/comp/wzlb/bacteriaList.vue
  58. +1
    -1
      src/views/business/study/comp/wzlb/cellList.vue

+ 1
- 1
.env.development View File

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 华西海圻ELN V1.0
VUE_APP_TITLE = 华西海圻实验室电子记录系统
# 开发环境配置 # 开发环境配置
ENV = 'development' ENV = 'development'

+ 1
- 1
.env.production View File

@ -1,5 +1,5 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 华西海圻ELN V1.0
VUE_APP_TITLE = 华西海圻实验室电子记录系统
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'

+ 10
- 0
src/api/business/study/studyFormFill.js View File

@ -24,6 +24,16 @@ export function studyFormFill_exportDetail(query) {
params: query params: query
}) })
} }
export function studyFormFill_exportTbByFileUrl(query) {
return request({
url: '/system/business/studyFormFill/exportTbByFileUrl',
method: 'get',
params: query
})
}
export function studyFormFill_exportByFileUrl(query) { export function studyFormFill_exportByFileUrl(query) {
return request({ return request({
url: '/system/business/studyFormFill/exportByFileUrl', url: '/system/business/studyFormFill/exportByFileUrl',

+ 5
- 5
src/components/Template/CustomTable.vue View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<div class="custom-table-wrapper" :class="{ 'no-border': !isBorder }"> <div class="custom-table-wrapper" :class="{ 'no-border': !isBorder }">
<div class="custom-table-header" v-if="isBorder">
<div class="custom-table-header no-break" v-if="isBorder">
<div class="custom-table-row"> <div class="custom-table-row">
<div v-if="showSort" class="custom-table-cell header-cell sort-cell"> <div v-if="showSort" class="custom-table-cell header-cell sort-cell">
序号 序号
@ -12,13 +12,13 @@
@change="handleCheckAllChange"></el-checkbox> @change="handleCheckAllChange"></el-checkbox>
</div> </div>
</div> </div>
<div v-for="(col, colIndex) in columns" :key="colIndex" class="custom-table-cell header-cell"
<div v-for="(col, colIndex) in columns" :key="colIndex" class="custom-table-cell header-cell no-break"
:style="getCellWidth(col)"> :style="getCellWidth(col)">
<div class="header-cell-content" v-if="col.headerColumns && col.headerColumns.length > 0"> <div class="header-cell-content" v-if="col.headerColumns && col.headerColumns.length > 0">
<div class="header-columns-grid" <div class="header-columns-grid"
:style="{ 'grid-template-columns': `repeat(${col.span || 2}, 1fr)` }"> :style="{ 'grid-template-columns': `repeat(${col.span || 2}, 1fr)` }">
<div v-for="(headerCol, headerIndex) in col.headerColumns" :key="headerIndex" <div v-for="(headerCol, headerIndex) in col.headerColumns" :key="headerIndex"
class="header-column-item">
class="header-column-item" >
<template v-if="headerCol.type === 'span'"> <template v-if="headerCol.type === 'span'">
<div class="span-content">{{ $t(headerCol.label) }}</div> <div class="span-content">{{ $t(headerCol.label) }}</div>
</template> </template>
@ -74,7 +74,7 @@
</div> </div>
<div class="custom-table-body"> <div class="custom-table-body">
<div v-for="(row, rowIndex) in localDataSource" :key="rowIndex" class="custometable-row">
<div v-for="(row, rowIndex) in localDataSource" :key="rowIndex" class="custometable-row no-break">
<div v-if="showSort" class="custom-table-cell body-cell sort-cell"> <div v-if="showSort" class="custom-table-cell body-cell sort-cell">
{{ rowIndex + 1 }} {{ rowIndex + 1 }}
</div> </div>
@ -83,7 +83,7 @@
<el-checkbox v-model="row._checked" @change="handleCheckChange(row, $event)"></el-checkbox> <el-checkbox v-model="row._checked" @change="handleCheckChange(row, $event)"></el-checkbox>
</div> </div>
</div> </div>
<div v-for="(col, colIndex) in columns" :key="colIndex" class="custom-table-cell body-cell"
<div v-for="(col, colIndex) in columns" :key="colIndex" class="custom-table-cell body-cell no-break"
:style="getCellWidth(col)"> :style="getCellWidth(col)">
<div class="inner-table-cell"> <div class="inner-table-cell">
<div class="flex1" :class="{ 'item-center': !isBorder && col.label }"> <div class="flex1" :class="{ 'item-center': !isBorder && col.label }">

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

@ -106,7 +106,7 @@ import cl from './StepComponents/b/cl.vue';//表配制-称量
// //
//-使-
import jd_swypfx from './StepComponents/swypfx/jd_swypfx.vue';//--
//-使- //-使-
//-使- //-使-
import jryp from './StepComponents/swypfx/jryp.vue';//- import jryp from './StepComponents/swypfx/jryp.vue';//-
@ -449,6 +449,7 @@ export default {
cl, cl,
// //
jd_swypfx,
jryp, jryp,
hhspe, hhspe,
zyfc, zyfc,
@ -665,7 +666,7 @@ export default {
'fr_b': 'Fr', 'fr_b': 'Fr',
// //
'jd_swypfx': 'Jd',
'jd_swypfx': 'jd_swypfx',
'jryp': 'jryp', 'jryp': 'jryp',
'ysfy': 'Lx', 'ysfy': 'Lx',
'hhspe': 'hhspe', 'hhspe': 'hhspe',

+ 1
- 1
src/components/Template/StepComponents/pcr/bzyp.vue View File

@ -35,7 +35,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,将",
label: "仪器将",
type: "text", type: "text",
}, },
ytry: { ytry: {

+ 1
- 1
src/components/Template/StepComponents/pcr/jryp_pcr.vue View File

@ -35,7 +35,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,将",
label: "仪器将",
type: "text", type: "text",
}, },
srry: { srry: {

+ 1
- 1
src/components/Template/StepComponents/pcr/nscyp.vue View File

@ -35,7 +35,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,按照样品排列示意图将无菌去离子水",
label: "仪器按照样品排列示意图将无菌去离子水",
type: "text", type: "text",
}, },
sjry:{ sjry:{

+ 1
- 1
src/components/Template/StepComponents/pcr/sjjy.vue View File

@ -35,7 +35,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,按照样品排列示意图将",
label: "仪器按照样品排列示意图将",
type: "text", type: "text",
}, },
srry: { srry: {

+ 1
- 1
src/components/Template/StepComponents/pcr/wxhy_pcr.vue View File

@ -31,7 +31,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,对样品进行涡旋混匀。",
label: "仪器对样品进行涡旋混匀。",
type: "text", type: "text",
}, },
} }

+ 1
- 1
src/components/Template/StepComponents/pcrfx/ndcd.vue View File

@ -29,7 +29,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,按核酸浓度测定排版表吸取核酸样品和Blank样品",
label: "仪器按核酸浓度测定排版表吸取核酸样品和Blank样品",
type: "text", type: "text",
}, },
ry:{ ry:{

+ 1
- 1
src/components/Template/StepComponents/pcrfxyp/jryp_pcrfxyp.vue View File

@ -35,7 +35,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,将",
label: "仪器将",
type: "text", type: "text",
}, },
srry: { srry: {

+ 1
- 1
src/components/Template/StepComponents/pcrfxyp/sjjy_pcrfxyp.vue View File

@ -35,7 +35,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,按照样品排列示意图将",
label: "仪器按照样品排列示意图将",
type: "text", type: "text",
}, },
srry: { srry: {

+ 1
- 1
src/components/Template/StepComponents/pcrfxyp/xs.vue View File

@ -29,7 +29,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,按上表进行稀释。",
label: "仪器按上表进行稀释。",
type: "text", type: "text",
}, },
} }

+ 1
- 1
src/components/Template/StepComponents/ry/clcz.vue View File

@ -36,7 +36,7 @@ export default {
dwCode: "wzsuldw", dwCode: "wzsuldw",
}, },
text3: { text3: {
label: "物质,称取预计质量为",
label: "物质称取预计质量为",
type: "text", type: "text",
}, },
wzsul: { wzsul: {

+ 1
- 1
src/components/Template/StepComponents/ry/clfcz.vue View File

@ -36,7 +36,7 @@ export default {
dwCode: "wzsuldw1", dwCode: "wzsuldw1",
}, },
text3: { text3: {
label: "物质,称取预计质量为",
label: "物质称取预计质量为",
type: "text", type: "text",
}, },
wzsul: { wzsul: {

+ 1
- 1
src/components/Template/StepComponents/ry/czhj.vue View File

@ -29,7 +29,7 @@ export default {
fillType: "actFill", fillType: "actFill",
}, },
text2: { text2: {
label: "环境下,操作下预计在",
label: "环境下,预计在",
type: "text", type: "text",
}, },
ytczhj: { ytczhj: {

+ 1
- 1
src/components/Template/StepComponents/ry/jrjb.vue View File

@ -31,7 +31,7 @@ import stepMixins from '@/components/Template/mixins/stepMixins.js';
fillType:"actFill", fillType:"actFill",
}, },
text2:{ text2:{
label:"仪器,设置预计温度为",
label:"仪器设置预计温度为",
type:"text", type:"text",
}, },
yjwd:{ yjwd:{

+ 1
- 1
src/components/Template/StepComponents/ry/jrry.vue View File

@ -29,7 +29,7 @@ export default {
type: "yq", type: "yq",
}, },
text2: { text2: {
label: "仪器,吸取",
label: "仪器取",
type: "text", type: "text",
}, },
srry: { srry: {

+ 101
- 0
src/components/Template/StepComponents/swypfx/jd_swypfx.vue View File

@ -0,0 +1,101 @@
<!-- 解冻-改成了融解 -->
<template>
<StepFormPackage ref="stepFormPackageRef" :prefixKey="stepIndex+'_'+'ry_jd'" @resetRecord="resetRecord" :form-config="formConfig"
@select="select"
: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: 'jd_swypfx',
},
},
components: {
StepFormPackage
},
methods: {
select(data) {
const {value,key} = data;
if(key==='sjccwz'){
this.updateWcData("sjwd",value);
}
}
},
computed: {
formConfig() {
let config = [{
config: {
text1: {
label: "将上述样品预计放置于",
type: "text",
},
ccwz: {
type: "input",
// options: this.getDictOptions("business_ccwz"),
fillType: "preFill",
otherCode: "ccwzOther",
},
text3: {
label: "实际放置于",
type: "text",
},
sjccwz: {
type: "select",
options: this.getDictOptions("business_ccwz"),
fillType: "actFill",
otherCode: "sjccwzOther",
compareTo: "ccwz",
},
text4: {
label: "位置,其环境条件预计为",
type: "text",
},
yjwd: {
type: "select",
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "preFill",
otherCode: "yjwdOther",
},
text5: {
label: ",实际条件为",
type: "text",
},
sjwd: {
type: "select",
options: this.getDictOptions("business_cctj"),
multiple: true,
fillType: "actFill",
otherCode: "sjwdOther",
compareTo: "yjwd",
},
text6: {
label: "进行融解",
type: "text",
},
text9: {
type: "text",
label: "。",
},
remark: {
type: "input",
fillType: "actFill",
}
}
}]
return config
}
},
}
</script>
<style lang="scss" scoped></style>

+ 31
- 1
src/components/Template/StepComponents/xb/bpqr.vue View File

@ -52,13 +52,43 @@ export default {
otherCode: "ccwzOther", otherCode: "ccwzOther",
}, },
text3: { text3: {
label: "冰冻时长为",
label: "冰冻时长预计为",
type: "text", type: "text",
}, },
sj: { sj: {
fillType: "actFill", fillType: "actFill",
type: "input", type: "input",
}, },
text6:{
type:"text",
label:"冰冻",
},
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 return config

+ 1
- 1
src/lang/en.js View File

@ -83,7 +83,7 @@ import systemLog from './en/system/systemLog'
import storageLocation from './en/system/storageLocation' import storageLocation from './en/system/storageLocation'
export default { export default {
system: { system: {
name: 'WestChina-Frontier PharmaTech ELN',
name: 'WCFP Electronic Laboratory Notebook',
title: 'HXHQ', title: 'HXHQ',
tip: 'Prompt', tip: 'Prompt',
logOut: 'Are You Sure To Log Out And Exit The System?', logOut: 'Are You Sure To Log Out And Exit The System?',

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

@ -61,7 +61,7 @@ export default {
s9hhybh: 'S9混合液编号', s9hhybh: 'S9混合液编号',
s9hhyyjjrl: 'S9混合液预计加入量', s9hhyyjjrl: 'S9混合液预计加入量',
pbsbh: 'PBS编号', pbsbh: 'PBS编号',
pbsryyjjrl: '0.2mol PBS溶液预计加入量',
pbsryyjjrl: 'PBS溶液预计加入量',
jlzsl: '剂量组数量', jlzsl: '剂量组数量',
wcButton: 'Finsh', wcButton: 'Finsh',
jlzmc: '剂量组名称 ', jlzmc: '剂量组名称 ',

+ 2
- 2
src/lang/en/template/lba.js View File

@ -47,7 +47,7 @@ export default {
dwbh: '动物编号', dwbh: '动物编号',
zzlx: '组织类型', zzlx: '组织类型',
cqzl: '称取重量', cqzl: '称取重量',
ysyjrybjrl: '预设匀浆溶液加入量',
sjyjrybjrl: '实际匀浆溶液加入量'
ysyjrybjrl: '预设匀浆溶液加入量',
sjyjrybjrl: '实际匀浆溶液加入量'
} }
} }

+ 11
- 2
src/lang/en/template/pcr.js View File

@ -37,6 +37,7 @@ export default {
// PCR分析样品处理表 // PCR分析样品处理表
pcr005: { pcr005: {
clpbh: 'Analysis Batch Number', clpbh: 'Analysis Batch Number',
clsj: '处理时间',
ypmc: '样品名称', ypmc: '样品名称',
ypcsnd: '样品初始浓度', ypcsnd: '样品初始浓度',
sxbs: '稀释倍数', sxbs: '稀释倍数',
@ -75,6 +76,7 @@ export default {
ypmc: '样品名称', ypmc: '样品名称',
cjgz: '采集管重', cjgz: '采集管重',
lzzcz: '连组织称重', lzzcz: '连组织称重',
lzzgz: '连组织管重',
zzzl: '组织重量', zzzl: '组织重量',
ysyjrybjrl: '预设匀浆溶液补加入量', ysyjrybjrl: '预设匀浆溶液补加入量',
sjyjrybjrl: '实际匀浆溶液补加入量', sjyjrybjrl: '实际匀浆溶液补加入量',
@ -97,8 +99,15 @@ export default {
yjyjry: '已加匀浆溶液', yjyjry: '已加匀浆溶液',
ypmc: '样品名称', ypmc: '样品名称',
cqzl: '称取重量', cqzl: '称取重量',
ysyjrybjrl: '预设匀浆溶液补加入量',
sjyjrybjrl: '实际匀浆溶液补加入量',
ysyjryjrl: '预设匀浆溶液加入量',
sjyjryjrl: '实际匀浆溶液加入量',
},
pcr011: {
sj: '试剂',
ysjyztj: '预设加样总体积',
sjypjytj: '实际样品加样体积',
yssjjrtj: '预设试剂加入体积',
sjsjjrtj: '实际试剂加入体积',
}, },
pcr012: { pcr012: {
sjwj: '数据文件', sjwj: '数据文件',

+ 4
- 1
src/lang/en/template/sp.js View File

@ -58,7 +58,10 @@ export default {
sp007: { sp007: {
title: '生物样品分析样本处理表', title: '生物样品分析样本处理表',
ybsm: 'Sample Description', ybsm: 'Sample Description',
bt: 'Title'
bt: 'Title',
clhxx: '处理后信息',
hjsj: '处理后样品放入进样环境时间',
cfwz: '存放位置'
}, },
// 生物样品分析方法学样品制备表-准确度与精密度 // 生物样品分析方法学样品制备表-准确度与精密度
sp008: { sp008: {

+ 1
- 1
src/lang/zh.js View File

@ -83,7 +83,7 @@ import storageLocation from './zh/system/storageLocation'
export default { export default {
system: { system: {
name: '华西海圻ELN系统',
name: '华西海圻实验室电子记录系统',
title: '华西海圻管理系统', title: '华西海圻管理系统',
tip: '提示', tip: '提示',
logOut: '确认注销并退出系统吗?', logOut: '确认注销并退出系统吗?',

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

@ -62,7 +62,7 @@ export default {
s9hhybh: 'S9混合液编号', s9hhybh: 'S9混合液编号',
s9hhyyjjrl: 'S9混合液预计加入量', s9hhyyjjrl: 'S9混合液预计加入量',
pbsbh: 'PBS编号', pbsbh: 'PBS编号',
pbsryyjjrl: '0.2mol PBS溶液预计加入量',
pbsryyjjrl: 'PBS溶液预计加入量',
jlzsl: '剂量组数量', jlzsl: '剂量组数量',
wcButton: '完成', wcButton: '完成',
jlzmc: '剂量组名称 ', jlzmc: '剂量组名称 ',

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

@ -47,7 +47,7 @@ export default {
dwbh: '动物编号', dwbh: '动物编号',
zzlx: '组织类型', zzlx: '组织类型',
cqzl: '称取重量', cqzl: '称取重量',
ysyjrybjrl: '预设匀浆溶液加入量',
sjyjrybjrl: '实际匀浆溶液加入量'
ysyjrybjrl: '预设匀浆溶液加入量',
sjyjrybjrl: '实际匀浆溶液加入量'
} }
} }

+ 11
- 2
src/lang/zh/template/pcr.js View File

@ -36,6 +36,7 @@ export default {
// PCR分析样品处理表 // PCR分析样品处理表
pcr005: { pcr005: {
clpbh: '处理批编号', clpbh: '处理批编号',
clsj: '处理时间',
ypmc: '样品名称', ypmc: '样品名称',
ypcsnd: '样品初始浓度', ypcsnd: '样品初始浓度',
sxbs: '稀释倍数', sxbs: '稀释倍数',
@ -74,9 +75,10 @@ export default {
ypmc: '样品名称', ypmc: '样品名称',
cjgz: '采集管重', cjgz: '采集管重',
lzzcz: '连组织称重', lzzcz: '连组织称重',
lzzgz: '连组织管重',
zzzl: '组织重量', zzzl: '组织重量',
ysyjrybjrl: '预设匀浆溶液加入量',
sjyjrybjrl: '实际匀浆溶液加入量',
ysyjryjrl: '预设匀浆溶液加入量',
sjyjryjrl: '实际匀浆溶液加入量',
}, },
pcr009: { pcr009: {
clsj: '处理时间', clsj: '处理时间',
@ -99,6 +101,13 @@ export default {
ysyjrybjrl: '预设匀浆溶液补加入量', ysyjrybjrl: '预设匀浆溶液补加入量',
sjyjrybjrl: '实际匀浆溶液补加入量', sjyjrybjrl: '实际匀浆溶液补加入量',
}, },
pcr011: {
sj: '试剂',
ysjyztj: '预设加样总体积',
sjypjytj: '实际样品加样体积',
yssjjrtj: '预设试剂加入体积',
sjsjjrtj: '实际试剂加入体积',
},
pcr012: { pcr012: {
sjwj: '数据文件', sjwj: '数据文件',
hsndcdwjm: '核酸浓度测定文件名', hsndcdwjm: '核酸浓度测定文件名',

+ 4
- 1
src/lang/zh/template/sp.js View File

@ -58,7 +58,10 @@ export default {
sp007: { sp007: {
title: '生物样品分析样本处理表', title: '生物样品分析样本处理表',
ybsm: '样本说明', ybsm: '样本说明',
bt: '标题'
bt: '标题',
clhxx: '处理后信息',
hjsj: '处理后样品放入进样环境时间',
cfwz: '存放位置'
}, },
// 生物样品分析方法学样品制备表-准确度与精密度 // 生物样品分析方法学样品制备表-准确度与精密度
sp008: { sp008: {

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

@ -385,7 +385,7 @@ export default {
nddw: '', nddw: '',
ly: 'ELN配制', ly: 'ELN配制',
sxrq: null, sxrq: null,
kc: item.jzjrtj + header1.targetDiluentVolumeUnit,
kc: item.jzjrtj,
kcdw: header1.targetDiluentVolumeUnit, kcdw: header1.targetDiluentVolumeUnit,
syl: null, syl: null,
type: null, //null type: null, //null

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

@ -663,6 +663,7 @@ export default {
}, },
// //
clickFinish() { clickFinish() {
let that=this
// //
const { jzs, jlzsl, pxms, qsbh, stepTableFormData = [] } = this.getFilledFormData(); const { jzs, jlzsl, pxms, qsbh, stepTableFormData = [] } = this.getFilledFormData();
// //
@ -672,6 +673,7 @@ export default {
columns.push({ columns.push({
prop: 'jlzb', prop: 'jlzb',
label: 'template.dl.dl006.jlzb', label: 'template.dl.dl006.jlzb',
width: 150,
bodyType: 'input', bodyType: 'input',
bodyFillType: 'preFill', // bodyTypeFillType bodyFillType: 'preFill', // bodyTypeFillType
}); });
@ -685,7 +687,7 @@ export default {
bodyType: 'checkbox', bodyType: 'checkbox',
isNeedCheck: true, isNeedCheck: true,
bodyFillType: 'actFill', // actFillpreFill bodyFillType: 'actFill', // actFillpreFill
width: 300,
width: 250,
checkboxLabel:'', checkboxLabel:'',
headerColumns: [ headerColumns: [
{ {
@ -732,9 +734,12 @@ export default {
prop: 'gspcdqk', prop: 'gspcdqk',
label: 'template.dl.dl006.gspcdqk', label: 'template.dl.dl006.gspcdqk',
bodyType: 'input', bodyType: 'input',
width: 150,
bodyFillType: 'actFill', // bodyTypeFillType bodyFillType: 'actFill', // bodyTypeFillType
}); });
debugger
// 1 // 1
this.rawCzxxColumns = [...columns]; // this.rawCzxxColumns = [...columns]; //
this.$nextTick(() => { // this.$nextTick(() => { //
@ -753,6 +758,7 @@ export default {
const rowData = { const rowData = {
jlzb: stepTableFormData[doseIndex]?.jlzmc || '', jlzb: stepTableFormData[doseIndex]?.jlzmc || '',
gspcdqk: '', gspcdqk: '',
id:that.getuuid()
// undefined // undefined
}; };
newDataSource.push(rowData); newDataSource.push(rowData);

+ 10
- 2
src/views/business/comps/template/comps/dl/DL008.vue View File

@ -471,6 +471,7 @@ export default {
// //
handleCxqkQxbdSelect(row) { handleCxqkQxbdSelect(row) {
let that=this
// //
this.isDataLoaded = false this.isDataLoaded = false
@ -494,10 +495,17 @@ export default {
} }
// 2. // 2.
const tableData = this.generateTableData(
const tableData1 = this.generateTableData(
stepTableFormData_1, stepTableFormData_1,
dynamicColumns.columnKeys dynamicColumns.columnKeys
) )
let tmp=[]
_.forEach(tableData1,function(item){
let a=item
a.id=that.getuuid()
tmp.push(a)
})
const tableData=tmp
if (tableData.length === 0) { if (tableData.length === 0) {
this.clearCxqkTable() this.clearCxqkTable()
return return
@ -521,7 +529,7 @@ export default {
if (columnKeys.length === 0) { if (columnKeys.length === 0) {
return null return null
} }
debugger
const columns = [ const columns = [
{ {
label: 'template.dl.dl008.jlzb', label: 'template.dl.dl008.jlzb',

+ 11
- 1
src/views/business/comps/template/comps/dl/DL009.vue View File

@ -586,6 +586,7 @@ export default {
// //
handleJgxxQxbdSelect(row, savedYqsyData) { handleJgxxQxbdSelect(row, savedYqsyData) {
let that=this
// //
this.isDataLoaded = false this.isDataLoaded = false
@ -614,10 +615,19 @@ export default {
} }
// 2. // 2.
const tableData = this.generateJgxxTableData(
const tableData1 = this.generateJgxxTableData(
stepTableFormData_1, stepTableFormData_1,
dynamicColumns.columnKeys dynamicColumns.columnKeys
) )
let tmp=[]
_.forEach(tableData1,function(item){
let a=item
a.id=that.getuuid()
tmp.push(a)
})
const tableData=tmp
if (tableData.length === 0) { if (tableData.length === 0) {
this.clearJgxxTable() this.clearJgxxTable()
return return

+ 0
- 16
src/views/business/comps/template/comps/dl/DL010.vue View File

@ -216,22 +216,6 @@ export default {
} }
} }
}, },
{
type: 'cellItem',
label: 'template.dl.dl010.jprq',
config: {
startDate: {
label: 'template.dl.dl010.jprqKssj',
type: 'input',
disabled: true
},
endDate: {
label: 'template.dl.dl010.jprqJssj',
type: 'input',
disabled: true
}
}
}
] ]
}, },
// //

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

@ -289,7 +289,7 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs[refConf.pyxx]?.updateFormData( this.$refs[refConf.pyxx]?.updateFormData(
'pytjText', 'pytjText',
'培养条件:温度为温度为37℃±2℃,CO2浓度为5%±0.5%',
'培养条件:温度为温度为37℃±2℃,CO2浓度为5%±1%',
{ isUpdateRecord: false, signData: null } { isUpdateRecord: false, signData: null }
) )
}) })

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

@ -273,7 +273,7 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs[refConf.pyxx]?.updateFormData( this.$refs[refConf.pyxx]?.updateFormData(
'pytjText', 'pytjText',
'培养条件:温度为温度为37℃±2℃,CO2浓度为5%±0.5%',
'培养条件:温度为温度为37℃±2℃,CO2浓度为5%±1%',
{ isUpdateRecord: false, signData: null } { isUpdateRecord: false, signData: null }
) )
}) })

+ 2
- 0
src/views/business/comps/template/comps/dl/DL015.vue View File

@ -29,6 +29,7 @@
<LineLabel label="template.dl.dl015.xbxx" /> <LineLabel label="template.dl.dl015.xbxx" />
<BaseInfoFormPackage <BaseInfoFormPackage
fieldItemLabel="template.dl.dl015.xbxx"
:ref="refConf.xbInfo" :ref="refConf.xbInfo"
:formConfig="xbInfoFormConfig" :formConfig="xbInfoFormConfig"
:formData="formData" :formData="formData"
@ -38,6 +39,7 @@
<!-- 换液情况 --> <!-- 换液情况 -->
<LineLabel label="template.dl.dl015.hyqk" /> <LineLabel label="template.dl.dl015.hyqk" />
<CustomTable <CustomTable
fieldItemLabel="template.dl.dl015.hyqk"
:columns="hyqkColumns" :columns="hyqkColumns"
:ref="refConf.hyqk" :ref="refConf.hyqk"
@onRegentSubmit="(e) => onRegentSubmit(e)" @onRegentSubmit="(e) => onRegentSubmit(e)"

+ 249
- 103
src/views/business/comps/template/comps/gsp/GSP015.vue View File

@ -15,84 +15,126 @@
<el-button class="mt-20" v-if="fillType === 'preFill'" type="primary" <el-button class="mt-20" v-if="fillType === 'preFill'" type="primary"
@click="onAdd('ybsmDataList')">新增</el-button> @click="onAdd('ybsmDataList')">新增</el-button>
<el-button class="mt-20" v-if="fillType === 'actFill'" type="primary" <el-button class="mt-20" v-if="fillType === 'actFill'" type="primary"
@click="onExport">导出</el-button>
<div v-for="(item, index) in formData.ybsmDataList" :key="item.id" class="template-form-item">
<div class="config-header">
<div></div>
<el-popconfirm title="确认删除当前数据?" @confirm="deleteConfig(item, 'ybsmDataList')">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text"
icon="el-icon-delete">{{
$t('template.common.deleteBtn')
}}</el-button>
</el-popconfirm>
</div>
<BaseInfoFormPackage fieldItemLabel="取样进样信息" :ref="`ybsmFormPackageRef${index}`"
@clickButton="(e,d,key,formFields) => handleClickButton(e,d,key,formFields,index)"
:formConfig="ybsmFormConfig" :formData="item" />
<CustomTable :ref="`ybsmTableRef${index}`" :columns="ybsmColumns" prefix="qy"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:showAddRow="fillType === 'preFill'" @onAddRow="() => addTableRow(index)"
fieldItemLabel="取样进样信息" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e)=>onConfigComplete(e,'qy')"
@printTag="(e)=>onPrintTag(e,index)"
:fillType="fillType"
:showFz="false"
:showKspz="false"
@deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
<CustomTable :ref="`jyTableRef${index}`" :columns="yjColumns" prefix="jy"
fieldItemLabel="取样进样信息" @blur="(e) => onHandleTableBlur(e, index, 'jyTableRef')"
:showOperation="fillType === 'actFill'" :showAddRow="false"
:formData="{ stepTableFormData: item.jyStepTableFormData || [], headerSelectFields: item.jyHeaderSelectFields || {} }">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e)=>onConfigComplete(e,'jy')"
@printTag="(e)=>onPrintTag(e,index)"
:fillType="fillType"
:showFz="false"
:showKspz="false"
@deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
</div>
@click="onExportXqjyxx">导出</el-button>
<vue-html2pdf :show-layout="true" pdf-content-width="100%" pdf-format="a2" :pdf-quality="2"
:float-layout="false" pdf-orientation="landscape" :paginate-elements-by-height="0"
:enable-download="false" :preview-modal="false" filename="取样进样信息" :html-to-pdf-options="{
margin: [10, 5, 10, 5], // : [, , , ] (: mm)
// 使
// margin: { top: 20, right: 15, bottom: 20, left: 15 },
filename: 'document.pdf',
image: {
type: 'jpeg',
quality: 2
},
enableLinks: false,
html2canvas: {
scale: 2,
useCORS: true
},
jsPDF: {
unit: 'mm', // : mm
format: 'a2', //
orientation: 'landscape' //
}
}" ref="html2PdfXqjyxx" @beforeDownload="handleBeforeDownload" @progress="onProgressXqjyxx">
<section slot="pdf-content">
<div v-for="(item, index) in formData.ybsmDataList" :key="item.id"
class="template-form-item">
<div class="config-header">
<div></div>
<el-popconfirm title="确认删除当前数据?" @confirm="deleteConfig(item, 'ybsmDataList')">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text"
icon="el-icon-delete">{{
$t('template.common.deleteBtn')
}}</el-button>
</el-popconfirm>
</div>
<BaseInfoFormPackage fieldItemLabel="取样进样信息" :ref="`ybsmFormPackageRef${index}`"
@clickButton="(e, d, key, formFields) => handleClickButton(e, d, key, formFields, index)"
:formConfig="ybsmFormConfig" :formData="item" />
<CustomTable :ref="`ybsmTableRef${index}`" :columns="ybsmColumns" prefix="qy"
:showOperation="fillType === 'actFill' || fillType === 'preFill'"
:showAddRow="fillType === 'preFill'" @onAddRow="() => addTableRow(index)"
fieldItemLabel="取样进样信息" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e) => onConfigComplete(e, 'qy')"
@printTag="(e) => onPrintTag(e, index)" :fillType="fillType" :showFz="false"
:showKspz="false" @deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
<CustomTable :ref="`jyTableRef${index}`" :columns="yjColumns" prefix="jy"
fieldItemLabel="取样进样信息" @blur="(e) => onHandleTableBlur(e, index, 'jyTableRef')"
:showOperation="fillType === 'actFill'" :showAddRow="false"
:formData="{ stepTableFormData: item.jyStepTableFormData || [], headerSelectFields: item.jyHeaderSelectFields || {} }">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e) => onConfigComplete(e, 'jy')"
@printTag="(e) => onPrintTag(e, index)" :fillType="fillType" :showFz="false"
:showKspz="false" @deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
</div>
</section>
</vue-html2pdf>
<LineLabel label="二次稀释信息" /> <LineLabel label="二次稀释信息" />
<el-button class="mt-20" v-if="fillType === 'preFill'" type="primary" <el-button class="mt-20" v-if="fillType === 'preFill'" type="primary"
@click="onAdd('ecDataList')">新增</el-button> @click="onAdd('ecDataList')">新增</el-button>
<el-button class="mt-20" v-if="fillType === 'actFill'" type="primary" <el-button class="mt-20" v-if="fillType === 'actFill'" type="primary"
@click="onExport('ec')">导出</el-button>
<div v-for="(item, index) in formData.ecDataList" :key="item.id" class="template-form-item">
<div class="config-header">
<div></div>
<el-popconfirm title="确认删除当前数据?" @confirm="deleteConfig(item, 'ecDataList')">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text"
icon="el-icon-delete">{{
$t('template.common.deleteBtn')
}}</el-button>
</el-popconfirm>
</div>
<BaseInfoFormPackage fieldItemLabel="二次稀释信息" :ref="`ecFormPackageRef${index}`"
:formConfig="ecFormConfig" :formData="item" />
<CustomTable :ref="`ecTableRef${index}`" :columns="yjColumns" prefix="ec"
fieldItemLabel="二次稀释信息" @blur="(e) => onHandleTableBlur(e, index, 'ecTableRef')"
:showOperation="fillType === 'preFill' || fillType === 'actFill'"
@onAddRow="() => addEcTableRow(index, 'ecTableRef')" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e)=>onConfigComplete(e,'jy')"
@printTag="(e)=>onPrintTag(e,index)"
:fillType="fillType"
:showFz="false"
:showKspz="false"
@deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
</div>
@click="onExportEcxsxx()">导出</el-button>
<vue-html2pdf :show-layout="true" pdf-content-width="100%" pdf-format="a2" :pdf-quality="2"
:float-layout="false" pdf-orientation="landscape" :paginate-elements-by-height="0"
:enable-download="false" :preview-modal="false" filename="二次稀释信息" :html-to-pdf-options="{
margin: [10, 5, 10, 5], // : [, , , ] (: mm)
// 使
// margin: { top: 20, right: 15, bottom: 20, left: 15 },
filename: 'document.pdf',
image: {
type: 'jpeg',
quality: 2
},
enableLinks: false,
html2canvas: {
scale: 2,
useCORS: true
},
jsPDF: {
unit: 'mm', // : mm
format: 'a2', //
orientation: 'landscape' //
}
}" ref="html2PdfEcxsxx" @beforeDownload="handleBeforeDownload" @progress="onProgressEcxsxx">
<section slot="pdf-content">
<div v-for="(item, index) in formData.ecDataList" :key="item.id" class="template-form-item">
<div class="config-header">
<div></div>
<el-popconfirm title="确认删除当前数据?" @confirm="deleteConfig(item, 'ecDataList')">
<el-button slot="reference" v-if="fillType === 'preFill'" type="text"
icon="el-icon-delete">{{
$t('template.common.deleteBtn')
}}</el-button>
</el-popconfirm>
</div>
<BaseInfoFormPackage fieldItemLabel="二次稀释信息" :ref="`ecFormPackageRef${index}`"
:formConfig="ecFormConfig" :formData="item" />
<CustomTable :ref="`ecTableRef${index}`" :columns="yjColumns" prefix="ec"
fieldItemLabel="二次稀释信息" @blur="(e) => onHandleTableBlur(e, index, 'ecTableRef')"
:showOperation="fillType === 'preFill' || fillType === 'actFill'"
@onAddRow="() => addEcTableRow(index, 'ecTableRef')" :formData="item">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion :row="row" :rowIndex="rowIndex" :columns="columns"
@configComplete="(e) => onConfigComplete(e, 'jy')"
@printTag="(e) => onPrintTag(e, index)" :fillType="fillType" :showFz="false"
:showKspz="false" @deleteRow="() => deleteTableRow(rowIndex, index)">
</TableOpertaion>
</template>
</CustomTable>
</div>
</section>
</vue-html2pdf>
<Step :ref="`stepRef`" :formData="formData.stepData || []"></Step> <Step :ref="`stepRef`" :formData="formData.stepData || []"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark" <BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
@ -108,6 +150,7 @@
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage"; import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
import TableOpertaion from "@/components/Template/operation/TableOpertaion"; import TableOpertaion from "@/components/Template/operation/TableOpertaion";
import VueHtml2pdf from 'vue-html2pdf'
import LineLabel from "@/components/Template/LineLabel"; import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table"; import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step"; import Step from "@/components/Template/Step";
@ -118,7 +161,9 @@ import { getuuid, justUpdateFilledFormData } from "@/utils/index";
import { isCommonUnit } from "@/utils/conTools"; import { isCommonUnit } from "@/utils/conTools";
import { convertConcentration } from "@/utils/conConverter";// import { convertConcentration } from "@/utils/conConverter";//
import { volumeConverter } from "@/utils/volConverter";// import { volumeConverter } from "@/utils/volConverter";//
import { getToken } from "@/utils/auth"
import moment from "moment";// import moment from "moment";//
import { studyFormFill_exportTbByFileUrl } from "@/api/business/study/studyFormFill"
import { getBaseInfoFormConfig, getRemarkFormConfig, getYbsmFormConfig, getQyTableColumns, getJyTableColumns, getEcFormConfig } from "../../formConfig/gsp/gsp015"; import { getBaseInfoFormConfig, getRemarkFormConfig, getYbsmFormConfig, getQyTableColumns, getJyTableColumns, getEcFormConfig } from "../../formConfig/gsp/gsp015";
const refConfig = { const refConfig = {
baseInfoRef: "baseInfoRef", baseInfoRef: "baseInfoRef",
@ -128,7 +173,7 @@ const refConfig = {
const compRefs = Object.values(refConfig); const compRefs = Object.values(refConfig);
export default { export default {
name: "SP0021", name: "SP0021",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion },
components: { BaseInfoFormPackage, LineLabel, VueHtml2pdf, TableList, Step, CustomTable, TableOpertaion },
mixins: [templateMixin], mixins: [templateMixin],
props: { props: {
fillType: { fillType: {
@ -170,56 +215,122 @@ export default {
return { return {
refConfig, refConfig,
currentIndex: -1, currentIndex: -1,
appTitle: process.env.VUE_APP_TITLE,
baseUrl: process.env.VUE_APP_FILE_DOMAIN,
uploadFileUrl: process.env.VUE_APP_BASE_API + '/file/upload', //
}; };
}, },
mounted() { mounted() {
}, },
methods: { methods: {
onConfigComplete(e,type){
const {rowData,headerSelectFields} = e;
//blog
async handleBeforeDownload({ html2pdf, options, pdfContent }) {
this.$modal.loading()
// 1. 使 html2pdf PDF jsPDF
const pdf = await html2pdf()
.set(options) //
.from(pdfContent) // PDF
.toPdf() // PDF
.get('pdf'); // jsPDF
// 2. jsPDF Blob
const blob = pdf.output('blob');
// 3. Blob
await this.uploadPdfToServer(blob);
// .save()
// pdf.save('my-document.pdf');
},
//
async uploadPdfToServer(blob) {
let that=this
const formData = new FormData();
formData.append('file', blob, 'hxhq-export-form.pdf');
try {
const response = await fetch(this.uploadFileUrl, {
method: 'POST',
headers: {
Authorization: "Bearer " + getToken(),
},
body: formData
});
//
if (!response.ok) {
//
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.message || `HTTP error! status: ${response.status}`);
}
// JSON
const data = await response.json();
// console.log('JSON:', data);
if (data.code == 200) {
studyFormFill_exportTbByFileUrl(
{
url: data.data.url,
studyFormFillId:that.formData.id,
version: that.appTitle,
lang: that.$store.getters.language.split("_")[0]
}
).then(response => {
window.open(that.baseUrl + response.msg)
}).finally(() => {
this.$modal.closeLoading()
})
} else {
this.$modal.msgError(data.msg)
this.$modal.closeLoading()
}
} catch (error) {
this.$modal.msgError("导出失败,稍后再试")
this.$modal.closeLoading()
}
},
onConfigComplete(e, type) {
const { rowData, headerSelectFields } = e;
let params = { let params = {
studySubjectId: this.formData.studySubjectId, studySubjectId: this.formData.studySubjectId,
studyId: this.formData.studyId, studyId: this.formData.studyId,
studyFormId: this.formData.id, studyFormId: this.formData.id,
}; };
if(type === 'qy'){
params = {
if (type === 'qy') {
params = {
...params, ...params,
bh:rowData.qybh,//
nd:rowData.sjzjnd,//
nddw:headerSelectFields.sjzjnddw,//
kc:rowData.sjqyl,//
kcdw:headerSelectFields.sjqydw,//
bh: rowData.qybh,//
nd: rowData.sjzjnd,//
nddw: headerSelectFields.sjzjnddw,//
kc: rowData.sjqyl,//
kcdw: headerSelectFields.sjqydw,//
} }
}else if(type === 'jy'){
params = {
} else if (type === 'jy') {
params = {
...params, ...params,
bh:rowData.jybh,//
nd:rowData.sjjynd,//
nddw:headerSelectFields.sjjynddw,//
kc:rowData.ztj,//
kcdw:headerSelectFields.ztjdw,//
bh: rowData.jybh,//
nd: rowData.sjjynd,//
nddw: headerSelectFields.sjjynddw,//
kc: rowData.ztj,//
kcdw: headerSelectFields.ztjdw,//
} }
} }
this.configCompleteRequest(params) this.configCompleteRequest(params)
}, },
onPrintTag(e,index){
console.log(e,index,"onPrintTag")
onPrintTag(e, index) {
console.log(e, index, "onPrintTag")
}, },
handleClickButton(item,signData,key,formFields,index){
handleClickButton(item, signData, key, formFields, index) {
const ref = this.$refs[`ybsmFormPackageRef${index}`][0]; const ref = this.$refs[`ybsmFormPackageRef${index}`][0];
if(key === "startButton"){
ref.updateFormData("qysj",moment().format("YYYY/MM/DD HH:mm:ss"),{ isUpdateRecord: true, signData })
}else if(key === "endButton"){
if (key === "startButton") {
ref.updateFormData("qysj", moment().format("YYYY/MM/DD HH:mm:ss"), { isUpdateRecord: true, signData })
} else if (key === "endButton") {
const qysj = formFields.qysj; const qysj = formFields.qysj;
if(!qysj){
if (!qysj) {
this.$message.error("请先记录开始时间"); this.$message.error("请先记录开始时间");
return; return;
} }
const subQysj = qysj.substr(0,19)
const subQysj = qysj.substr(0, 19)
const endTime = moment().format("YYYY/MM/DD HH:mm:ss"); const endTime = moment().format("YYYY/MM/DD HH:mm:ss");
ref.updateFormData("qysj",`${subQysj} ~ ${endTime}`,{ isUpdateRecord: true, signData })
ref.updateFormData("qysj", `${subQysj} ~ ${endTime}`, { isUpdateRecord: true, signData })
} }
}, },
onHandleTableBlur(e, index, refName) { onHandleTableBlur(e, index, refName) {
@ -234,7 +345,7 @@ export default {
const { bdtjdw, qytjdw, jytjdw, qynddw, ztjdw, sjjynddw } = headerSelectFields || {}; const { bdtjdw, qytjdw, jytjdw, qynddw, ztjdw, sjjynddw } = headerSelectFields || {};
// //
if (!!bdtj && !!qytj) { if (!!bdtj && !!qytj) {
const transBdtj = volumeConverter.convert(bdtj + bdtjdw, ztjdw);// const transBdtj = volumeConverter.convert(bdtj + bdtjdw, ztjdw);//
@ -277,8 +388,43 @@ export default {
this.addEcTableRow(index, "jyTableRef"); this.addEcTableRow(index, "jyTableRef");
}, },
onExport() {
//
onProgressXqjyxx(progress) {
console.log(`生成进度: ${progress}%`)
this.removePageBreak()
if (progress == 100) {
this.$modal.closeLoading()
} else {
this.$modal.loading()
}
},
//
removePageBreak() {
document.querySelectorAll('.html2pdf__page-break').forEach(el => {
el.remove()
})
},
onExportXqjyxx() {
this.$modal.loading()
setTimeout(() => {
this.$refs.html2PdfXqjyxx.generatePdf()
}, 200);
},
//
onProgressEcxsxx(progress) {
console.log(`生成进度: ${progress}%`)
this.removePageBreak()
if (progress == 100) {
this.$modal.closeLoading()
} else {
this.$modal.loading()
}
},
onExportEcxsxx() {
this.$modal.loading()
setTimeout(() => {
this.$refs.html2PdfEcxsxx.generatePdf()
}, 200);
}, },
// //
deleteConfig(item, type = "ybsmDataList") { deleteConfig(item, type = "ybsmDataList") {

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

@ -144,6 +144,19 @@ export default {
type: "input", type: "input",
disabled: true, disabled: true,
}, },
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "preFill",
prepend: "V",
maxlength: 50
},
} }
}, },
{ {

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

@ -148,6 +148,19 @@ export default {
type: "input", type: "input",
disabled: true, disabled: true,
}, },
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "preFill",
prepend: "V",
maxlength: 50
},
} }
}, },
{ {
@ -187,7 +200,7 @@ export default {
}, },
{ {
type: "cellItem", type: "cellItem",
label: 'template.common.configurationTime',
label: 'template.pcr.pcr005.clsj',
config: { config: {
startDate: { startDate: {
label: 'template.common.startTime', label: 'template.common.startTime',

+ 16
- 3
src/views/business/comps/template/comps/pcr/PCR008.vue View File

@ -127,6 +127,19 @@ export default {
type: "input", type: "input",
disabled: true, disabled: true,
}, },
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "preFill",
prepend: "V",
maxlength: 50
},
} }
}, },
{ {
@ -320,12 +333,12 @@ export default {
for (let i = 0; i < tableList.length; i++) { for (let i = 0; i < tableList.length; i++) {
let item = tableList[i] let item = tableList[i]
console.log(item) console.log(item)
let lzzcz = item.lzzcz
let lzzgz = item.lzzgz
let cjgz = item.cjgz let cjgz = item.cjgz
let tabZzzl; let tabZzzl;
// = // =
if(lzzcz && cjgz) {
let temp = subTj([lzzcz, cjgz], [content.headerSelectFields.lzzczUnit, content.headerSelectFields.cjgzUnit])
if(lzzgz && cjgz) {
let temp = subTj([lzzgz, cjgz], [content.headerSelectFields.lzzgzUnit, content.headerSelectFields.cjgzUnit])
let zzzl = temp.total let zzzl = temp.total
let zzzlUnit = temp.unit let zzzlUnit = temp.unit
tabZzzl = volumeConverter.convert(zzzl + zzzlUnit, content.headerSelectFields.zzzlUnit) tabZzzl = volumeConverter.convert(zzzl + zzzlUnit, content.headerSelectFields.zzzlUnit)

+ 15
- 2
src/views/business/comps/template/comps/pcr/PCR010.vue View File

@ -129,6 +129,19 @@ export default {
type: "input", type: "input",
disabled: true, disabled: true,
}, },
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "preFill",
prepend: "V",
maxlength: 50
},
} }
}, },
{ {
@ -258,8 +271,8 @@ export default {
let cqzl = item.cqzl * bs let cqzl = item.cqzl * bs
// //
let ysyjrybjrl = volumeConverter.convert(cqzl + content.headerSelectFields.cqzlUnit, content.headerSelectFields.ysyjrybjrlUnit)
tableList[i].ysyjrybjrl = ysyjrybjrl
let ysyjryjrl = volumeConverter.convert(cqzl + content.headerSelectFields.cqzlUnit, content.headerSelectFields.ysyjryjrlUnit)
tableList[i].ysyjryjrl = ysyjryjrl
} }
} }
this.$refs.stepTableRef.updateDataSource(tableList); this.$refs.stepTableRef.updateDataSource(tableList);

+ 24
- 20
src/views/business/comps/template/comps/pcr/PCR011.vue View File

@ -58,7 +58,7 @@ import { EventBus } from "@/utils/eventBus";
import { volumeConverter } from "@/utils/volConverter";// import { volumeConverter } from "@/utils/volConverter";//
import { convertConcentration } from "@/utils/conConverter";// import { convertConcentration } from "@/utils/conConverter";//
import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue'; import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import { getPCR010Config } from "../../formConfig/PCRTableConfig.js";
import { getPCR011Config } from "../../formConfig/PCRTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue" import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
import { addTj, subTj, uniqeResource, uniqeResourceOne, addDecimals } from "@/utils/calUnitTools"; import { addTj, subTj, uniqeResource, uniqeResourceOne, addDecimals } from "@/utils/calUnitTools";
import ImportExcelDialog from '../../dialog/ImportExcelDialog' import ImportExcelDialog from '../../dialog/ImportExcelDialog'
@ -74,7 +74,7 @@ export default {
}, },
computed: { computed: {
tableStepColumns() { tableStepColumns() {
return getPCR010Config(this);
return getPCR011Config(this);
}, },
// //
storageFormConfig() { storageFormConfig() {
@ -129,6 +129,19 @@ export default {
type: "input", type: "input",
disabled: true, disabled: true,
}, },
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "preFill",
prepend: "V",
maxlength: 50
},
} }
}, },
{ {
@ -177,7 +190,7 @@ export default {
type: 'step', type: 'step',
config: { config: {
yjry: { yjry: {
label: 'template.pcr.pcr010.yjry',
label: 'template.pcr.pcr011.sj',
type: 'input', type: 'input',
fillType: 'preFill', fillType: 'preFill',
subType: 'sj', subType: 'sj',
@ -185,17 +198,7 @@ export default {
subFillType: 'actFill', subFillType: 'actFill',
maxlength: 20 maxlength: 20
}, },
bs: {
label: 'template.pcr.pcr010.bs',
type: 'inputNumber',
fillType: 'actFill',
maxlength: 20
},
dztpbh: {
label: 'template.pcr.pcr010.dztpbh',
type: 'yq',
fillType: 'actFill',
},
} }
} }
] ]
@ -216,7 +219,7 @@ export default {
}, },
methods: { methods: {
downloadExcelTemplate() { downloadExcelTemplate() {
this.exportExcel(['样品名称'], 'PCR分析组织匀浆表-常规导入模板')
this.exportExcel(['样品名称'], 'PCR分析核酸提取样品处理表导入模板')
}, },
showImportExcelDialog() { showImportExcelDialog() {
this.$refs.ImportExcelDialog.show() this.$refs.ImportExcelDialog.show()
@ -249,18 +252,19 @@ export default {
updateTable() { updateTable() {
let content = this.getFilledFormData(); let content = this.getFilledFormData();
let bs = content.bs
content content
if (this.fillType === "actFill") { if (this.fillType === "actFill") {
let tableList = content.stepTableFormData let tableList = content.stepTableFormData
if (tableList && tableList.length > 0) { if (tableList && tableList.length > 0) {
for (let i = 0; i < tableList.length; i++) { for (let i = 0; i < tableList.length; i++) {
let item = tableList[i] let item = tableList[i]
let cqzl = item.cqzl * bs
//
let temp = subTj([item.ysjyztj, item.sjypjytj], [content.headerSelectFields.ysjyztjUnit, content.headerSelectFields.sjypjytjUnit])
let yssjjrtj = temp.total
let yssjjrtjUnit = temp.unit
yssjjrtj = volumeConverter.convert(yssjjrtj + yssjjrtjUnit, content.headerSelectFields.yssjjrtjUnit)
tableList[i].yssjjrtj = yssjjrtj
let ysyjrybjrl = volumeConverter.convert(cqzl + content.headerSelectFields.cqzlUnit, content.headerSelectFields.ysyjrybjrlUnit)
tableList[i].ysyjrybjrl = ysyjrybjrl
} }
} }
this.$refs.stepTableRef.updateDataSource(tableList); this.$refs.stepTableRef.updateDataSource(tableList);

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

@ -130,6 +130,19 @@ export default {
type: "input", type: "input",
disabled: true, disabled: true,
}, },
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "preFill",
prepend: "V",
maxlength: 50
},
} }
}, },
{ {

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

@ -46,6 +46,14 @@ export default {
name: "SP001", name: "SP001",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable }, components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable },
mixins: [templateMixin], mixins: [templateMixin],
provide() {
return {
getMybh: ()=>{
const data = this.$refs['stepFormPackageRef'].getFilledFormData()
return {mybh:data.targetCode+data.targetCodeSn,maxVolume:data.targetActVolume,maxVolumeUnit:data.targetActVolumeUnit}
}
}
},
props: { props: {
fillType: { fillType: {
type: String, type: String,

+ 19
- 5
src/views/business/comps/template/comps/sp/SP007.vue View File

@ -18,10 +18,15 @@
ref="ybRef" :formConfig="ybFormConfig" :formData="formData" /> ref="ybRef" :formConfig="ybFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" /> <LineLabel label="template.common.operationSteps" />
<Step ref="stepRef" :formData="formData.stepData"></Step> <Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="template.lba.lba003.fj" label="template.lba.lba003.fj" <BaseInfoFormPackage fieldItemLabel="template.lba.lba003.fj" label="template.lba.lba003.fj"
ref="fjRef" :formConfig="getFjFormConfig" :formData="formData" /> ref="fjRef" :formConfig="getFjFormConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="template.sp.sp007.clhxx" label="template.sp.sp007.clhxx"
ref="clhxxRef" :formConfig="clhxxConfig" :formData="formData" @clickButton="handleClickButton" />
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div> </div>
</div> </div>
@ -41,7 +46,8 @@ import { getLatestSn } from '@/api/template';
import { EventBus } from "@/utils/eventBus"; import { EventBus } from "@/utils/eventBus";
import { uniqeResource } from "@/utils/calUnitTools"; import { uniqeResource } from "@/utils/calUnitTools";
import { debounce } from 'lodash-es'; import { debounce } from 'lodash-es';
import {getBaseInfoFormConfig, getRemarkFormConfig,getStorageFormConfig,getYbFormConfig,getfjFormConfig} from "../../formConfig/sp/SP007";
import {getBaseInfoFormConfig, getRemarkFormConfig,getStorageFormConfig,getYbFormConfig,getfjFormConfig,getClhxxFormConfig} from "../../formConfig/sp/SP007";
import moment from "moment";
export default { export default {
name: "SP007", name: "SP007",
@ -74,6 +80,10 @@ export default {
getFjFormConfig() { getFjFormConfig() {
return getfjFormConfig(this); return getfjFormConfig(this);
}, },
//
clhxxConfig() {
return getClhxxFormConfig(this);
},
}, },
data() { data() {
@ -84,6 +94,10 @@ export default {
mounted() { mounted() {
}, },
methods: { methods: {
//
handleClickButton(item,signData){
this.$refs.clhxxRef.updateFormData("hjsj", moment().format("YYYY/MM/DD HH:mm"),{isUpdateRecord:true,signData});
},
// //
printTag() { printTag() {
const printConfig = this.getBasePrintConfig(); const printConfig = this.getBasePrintConfig();
@ -96,11 +110,11 @@ export default {
// //
getFilledFormData() { getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "ybRef","stepRef", "remarkRef","fjRef"])
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "ybRef","stepRef", "remarkRef","fjRef","clhxxRef"])
}, },
// //
async getFormData() { async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "ybRef","stepRef", "remarkRef","fjRef"]);
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "ybRef","stepRef", "remarkRef","fjRef","clhxxRef"]);
return content; return content;
}, },
getResource() { getResource() {

+ 75
- 10
src/views/business/comps/template/formConfig/PCRTableConfig.js View File

@ -785,12 +785,12 @@ export const getPCR008Config = ($this) => {
bodyMaxlength: 10 bodyMaxlength: 10
}, },
{ {
label: 'template.pcr.pcr008.lzzcz',
prop: 'lzzcz',
label: 'template.pcr.pcr008.lzzgz',
prop: 'lzzgz',
width: 280, width: 280,
showWidth: 180, showWidth: 180,
fillType: 'preFill', fillType: 'preFill',
headerSelectKey: 'lzzczUnit',
headerSelectKey: 'lzzgzUnit',
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
@ -954,12 +954,12 @@ export const getPCR010Config = ($this) => {
bodySubPlaceholder: 'template.common.xswsPlaceholder' bodySubPlaceholder: 'template.common.xswsPlaceholder'
}, },
{ {
label: 'template.pcr.pcr009.ysyjrybjrl',
prop: 'ysyjrybjrl',
label: 'template.pcr.pcr009.ysyjryjrl',
prop: 'ysyjryjrl',
width: 280, width: 280,
showWidth: 180, showWidth: 180,
fillType: 'preFill', fillType: 'preFill',
headerSelectKey: 'ysyjrybjrlUnit',
headerSelectKey: 'ysyjryjrlUnit',
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
@ -975,17 +975,82 @@ export const getPCR010Config = ($this) => {
headerSelectTo: 'actStartSolutionVolumeUnit' headerSelectTo: 'actStartSolutionVolumeUnit'
}, },
{ {
label: 'template.pcr.pcr009.sjyjrybjrl',
prop: 'sjyjrybjrl',
label: 'template.pcr.pcr009.sjyjryjrl',
prop: 'sjyjryjrl',
width: 280, width: 280,
showWidth: 180, showWidth: 180,
fillType: 'preFill', fillType: 'preFill',
headerSelectKey: 'sjyjrybjrlUnit',
headerSelectKey: 'sjyjryjrlUnit',
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
copyFrom: 'ysyjrybjrl', //复制哪个字段
copyFrom: 'ysyjryjrl', //复制哪个字段
bodyMaxlength: 10 bodyMaxlength: 10
} }
] ]
} }
// PCR010
export const getPCR011Config = ($this) => {
return [
{
label: 'template.pcr.pcr010.ypmc',
prop: 'ypmc',
width: 280,
bodyType: 'input',
fillType: 'preFill',
otherCode: 'bhOther',
bodyFillType: 'preFill'
},
{
label: 'template.pcr.pcr011.ysjyztj',
prop: 'ysjyztj',
width: 280,
showWidth: 180,
fillType: 'preFill',
headerSelectKey: 'ysjyztjUnit',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10,
bodyDisabled: true,
},
{
label: 'template.pcr.pcr011.sjypjytj',
prop: 'sjypjytj',
width: 280,
showWidth: 180,
fillType: 'preFill',
headerSelectKey: 'sjypjytjUnit',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
},
{
label: 'template.pcr.pcr011.yssjjrtj',
prop: 'yssjjrtj',
width: 280,
showWidth: 180,
fillType: 'preFill',
headerSelectKey: 'yssjjrtjUnit',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
},
{
label: 'template.pcr.pcr011.sjsjjrtj',
prop: 'sjsjjrtj',
width: 280,
showWidth: 180,
fillType: 'preFill',
headerSelectKey: 'sjsjjrtjUnit',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
},
]
}

+ 15
- 15
src/views/business/comps/template/formConfig/gsp/gsp015.js View File

@ -115,21 +115,21 @@ export const getQyTableColumns = ($this) => {
{ {
label: '取样编号', label: '取样编号',
prop: 'qybh', prop: 'qybh',
width: 280,
width: 200,
bodyType: 'input', bodyType: 'input',
bodyFillType: 'preFill', bodyFillType: 'preFill',
}, },
{ {
label: '制剂编号', label: '制剂编号',
prop: 'zjbh', prop: 'zjbh',
width: 280,
width: 200,
bodyType: 'gsp', bodyType: 'gsp',
bodyFillType: 'actFill', bodyFillType: 'actFill',
}, },
{ {
label: '预设制剂浓度', label: '预设制剂浓度',
prop: 'yszjnd', prop: 'yszjnd',
width: 280,
width: 200,
headerSelectKey: 'yszjnddw', headerSelectKey: 'yszjnddw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'), headerOptions: $this.getDictOptions('business_nddw'),
@ -140,7 +140,7 @@ export const getQyTableColumns = ($this) => {
{ {
label: '实际制剂浓度', label: '实际制剂浓度',
prop: 'sjzjnd', prop: 'sjzjnd',
width: 280,
width: 200,
headerSelectKey: 'sjzjnddw', headerSelectKey: 'sjzjnddw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'), headerOptions: $this.getDictOptions('business_nddw'),
@ -176,7 +176,7 @@ export const getQyTableColumns = ($this) => {
{ {
label: '预设取样量', label: '预设取样量',
prop: 'ysqyl', prop: 'ysqyl',
width: 280,
width: 200,
headerSelectKey: 'ysqyldw', headerSelectKey: 'ysqyldw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
@ -188,7 +188,7 @@ export const getQyTableColumns = ($this) => {
{ {
label: '实际取样量', label: '实际取样量',
prop: 'sjqyl', prop: 'sjqyl',
width: 280,
width: 200,
headerSelectKey: 'sjqydw', headerSelectKey: 'sjqydw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
@ -206,21 +206,21 @@ export const getJyTableColumns = ($this) => {
{ {
label: '进样编号', label: '进样编号',
prop: 'jybh', prop: 'jybh',
width: 280,
width: 200,
bodyType: 'input', bodyType: 'input',
bodyFillType: 'preFill', bodyFillType: 'preFill',
}, },
{ {
label: '取样编号', label: '取样编号',
prop: 'qybh', prop: 'qybh',
width: 280,
width: 200,
bodyType: 'gsp', bodyType: 'gsp',
bodyFillType: 'actFill', bodyFillType: 'actFill',
}, },
{ {
label: '取样浓度', label: '取样浓度',
prop: 'qynd', prop: 'qynd',
width: 280,
width: 200,
headerSelectKey: 'qynddw', headerSelectKey: 'qynddw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'), headerOptions: $this.getDictOptions('business_nddw'),
@ -230,7 +230,7 @@ export const getJyTableColumns = ($this) => {
{ {
label: '取样体积', label: '取样体积',
prop: 'qytj', prop: 'qytj',
width: 280,
width: 200,
headerSelectKey: 'qytjdw', headerSelectKey: 'qytjdw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
@ -240,7 +240,7 @@ export const getJyTableColumns = ($this) => {
{ {
label: '标定体积', label: '标定体积',
prop: 'bdtj', prop: 'bdtj',
width: 280,
width: 200,
headerSelectKey: 'bdtjdw', headerSelectKey: 'bdtjdw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
@ -250,7 +250,7 @@ export const getJyTableColumns = ($this) => {
{ {
label: '进样体积', label: '进样体积',
prop: 'jytj', prop: 'jytj',
width: 280,
width: 200,
headerSelectKey: 'jytjdw', headerSelectKey: 'jytjdw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
@ -260,7 +260,7 @@ export const getJyTableColumns = ($this) => {
{ {
label: '稀释倍数', label: '稀释倍数',
prop: 'xsbs', prop: 'xsbs',
width: 280,
width: 200,
bodyType: 'inputNumber', bodyType: 'inputNumber',
bodyFillType: 'actFill', bodyFillType: 'actFill',
bodySubType: "inputNumber", bodySubType: "inputNumber",
@ -273,7 +273,7 @@ export const getJyTableColumns = ($this) => {
{ {
label: '终体积', label: '终体积',
prop: 'ztj', prop: 'ztj',
width: 280,
width: 200,
headerSelectKey: 'ztjdw', headerSelectKey: 'ztjdw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_tjdw'), headerOptions: $this.getDictOptions('business_tjdw'),
@ -289,7 +289,7 @@ export const getJyTableColumns = ($this) => {
{ {
label: '实际进样浓度', label: '实际进样浓度',
prop: 'sjjynd', prop: 'sjjynd',
width: 280,
width: 200,
headerSelectKey: 'sjjynddw', headerSelectKey: 'sjjynddw',
fillType: "preFill", fillType: "preFill",
headerOptions: $this.getDictOptions('business_nddw'), headerOptions: $this.getDictOptions('business_nddw'),

+ 37
- 11
src/views/business/comps/template/formConfig/paralleAndLadderConfig.js View File

@ -568,18 +568,44 @@ export const getBaseInfoFormConfig = ($this) => {
maxlength: 50 maxlength: 50
} }
} }
: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
: isLba
? {
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: 'preFill',
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: 'inputNumber',
fillType: 'preFill',
prepend: 'V',
maxlength: 50
}
}
: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
}
} }
}
}, },
{ {
type: 'conditionItem', type: 'conditionItem',

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

@ -158,3 +158,30 @@ export const getfjFormConfig = () => {
} }
] ]
} }
//处理后信息
export const getClhxxFormConfig = ($this) => {
return [
{
type: 'cellItem',
config: {
hjsj: {
label: 'template.sp.sp007.hjsj',
type: 'input',
fillType: 'actFill',
maxlength: 200,
subType: 'button',
subKey: 'hjsjButton',
buttonName: 'template.yp.yp002.hqsj',
disabled: true,
subDisabled: $this.fillType !== 'actFill'
},
cfwz: {
label: 'template.sp.sp007.cfwz',
type: 'input',
fillType: 'actFill',
maxlength: 100
}
}
}
]
}

+ 3
- 2
src/views/business/comps/template/mixins/templateMixin.js View File

@ -73,7 +73,8 @@ export default {
'business_dl_uav', // 毒理-紫外照射操作记录表-UVA-DL023 'business_dl_uav', // 毒理-紫外照射操作记录表-UVA-DL023
'business_pcr_fxffypzbb', //PCR-编号-分析方法学样品制备表 'business_pcr_fxffypzbb', //PCR-编号-分析方法学样品制备表
'business_dl_xbx', //毒理-紫外照射操作记录表-细胞系 'business_dl_xbx', //毒理-紫外照射操作记录表-细胞系
'business_dl_dwzs' //毒理-紫外照射操作记录表-动物种属
'business_dl_dwzs', //毒理-紫外照射操作记录表-动物种属
'business_dl_sjqqtqk' //毒理-细胞收集/低渗及固定操作记录表-收集前其他情况
], ],
props: { props: {
templateData: { templateData: {
@ -433,7 +434,7 @@ export default {
}) })
const validFormData = await Promise.all(refs).catch((err) => { const validFormData = await Promise.all(refs).catch((err) => {
// this.$message.error(err); // this.$message.error(err);
if (err &&err.errorType && err.errorType === 'step') {
if (err && err.errorType && err.errorType === 'step') {
this.$message.error('请添加步骤') this.$message.error('请添加步骤')
return return
} }

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

@ -119,7 +119,10 @@ export default {
this.upload.isUploading = false this.upload.isUploading = false
this.$refs.upload.clearFiles() this.$refs.upload.clearFiles()
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }) this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
this.$emit('callback')
if(response.code == 200) {
this.$emit('callback')
this.cancel()
}
}, },
// //
submitFileForm() { submitFileForm() {

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

@ -54,8 +54,8 @@
<!-- 有效期 --> <!-- 有效期 -->
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('page.business.resource.gsp.yxq')" prop="yxq"> <el-form-item :label="$t('page.business.resource.gsp.yxq')" prop="yxq">
<el-date-picker v-model="form.yxq" type="date" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" :placeholder="$t('form.placeholderInput')">
<el-date-picker v-model="form.yxq" type="datetime" format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss" :placeholder="$t('form.placeholderInput')">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>

+ 4
- 1
src/views/business/storageLocation/comps/StorageLocationImport.vue View File

@ -119,7 +119,10 @@ export default {
this.upload.isUploading = false this.upload.isUploading = false
this.$refs.upload.clearFiles() this.$refs.upload.clearFiles()
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }) this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true })
this.$emit('callback')
if(response.code == 200) {
this.$emit('callback')
this.cancel()
}
}, },
// //
submitFileForm() { submitFileForm() {

+ 1
- 1
src/views/business/study/comp/wzlb/bacteriaList.vue View File

@ -51,7 +51,7 @@
:show-overflow-tooltip="true" /> :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.study.cell.sxr')" align="center" prop="sxr" <el-table-column :label="$t('page.business.study.cell.sxr')" align="center" prop="sxr"
:show-overflow-tooltip="true" /> :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.study.cell.sssy')" align="center" prop="sssy" width="150px" />
<el-table-column :label="$t('page.business.study.cell.sssy')" align="center" prop="studyName" width="150px" />
<el-table-column :label="$t('form.operate')" fixed="right" align="center" <el-table-column :label="$t('form.operate')" fixed="right" align="center"
class-name="small-padding fixed-width" width="250px"> class-name="small-padding fixed-width" width="250px">

+ 1
- 1
src/views/business/study/comp/wzlb/cellList.vue View File

@ -51,7 +51,7 @@
:show-overflow-tooltip="true" /> :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.study.cell.sxr')" align="center" prop="sxr" <el-table-column :label="$t('page.business.study.cell.sxr')" align="center" prop="sxr"
:show-overflow-tooltip="true" /> :show-overflow-tooltip="true" />
<el-table-column :label="$t('page.business.study.cell.sssy')" align="center" prop="sssy" width="150px" />
<el-table-column :label="$t('page.business.study.cell.sssy')" align="center" prop="studyName" width="150px" />
<el-table-column :label="$t('form.operate')" fixed="right" align="center" <el-table-column :label="$t('form.operate')" fixed="right" align="center"
class-name="small-padding fixed-width" width="250px"> class-name="small-padding fixed-width" width="250px">

Loading…
Cancel
Save