luojie 2 months ago
parent
commit
8db95252f7
26 changed files with 605 additions and 344 deletions
  1. +6
    -6
      src/lang/en/business/study/studyRoom.js
  2. +4
    -0
      src/lang/en/template/lba.js
  3. +51
    -53
      src/lang/en/template/sp.js
  4. +4
    -0
      src/lang/zh/template/lba.js
  5. +50
    -52
      src/lang/zh/template/sp.js
  6. +2
    -0
      src/views/business/comps/template/TemplateTable.vue
  7. +109
    -39
      src/views/business/comps/template/comps/lba/LBA003.vue
  8. +6
    -2
      src/views/business/comps/template/comps/sp/SP007.vue
  9. +138
    -139
      src/views/business/comps/template/formConfig/sp/SP007.js
  10. +6
    -5
      src/views/business/resource/gsp/comps/ffjlList.vue
  11. +1
    -0
      src/views/business/resource/gsp/comps/gspList.vue
  12. +64
    -20
      src/views/business/resource/gsp/comps/rkjl/RkjlImport.vue
  13. +2
    -1
      src/views/business/resource/gsp/comps/rkjlList.vue
  14. +4
    -1
      src/views/business/study/comp/jhbd/Fh.vue
  15. +4
    -1
      src/views/business/study/comp/jhbd/Sy.vue
  16. +4
    -1
      src/views/business/study/comp/jhbd/Xq.vue
  17. +4
    -1
      src/views/business/study/comp/sqbd/Fh.vue
  18. +4
    -1
      src/views/business/study/comp/sqbd/Sh.vue
  19. +4
    -1
      src/views/business/study/comp/sqbd/Sy.vue
  20. +4
    -1
      src/views/business/study/comp/sqbd/Xq.vue
  21. +101
    -5
      src/views/business/study/comp/syjList.vue
  22. +14
    -11
      src/views/business/study/comp/tbbd/Bj.vue
  23. +4
    -1
      src/views/business/study/comp/tbbd/Fh.vue
  24. +4
    -1
      src/views/business/study/comp/tbbd/Sy.vue
  25. +4
    -1
      src/views/business/study/comp/tbbd/Xq.vue
  26. +7
    -1
      src/views/business/study/comp/ytbd/Xq.vue

+ 6
- 6
src/lang/en/business/study/studyRoom.js View File

@ -13,13 +13,13 @@ export default {
jsr: 'End by',
jssj: 'End Date',
zt: 'Status',
syz: '使用中',
yjs: '已结束',
ghlj: '更换笼具',
js: '结束',
ljjl: '笼具记录',
syz: 'In use',
yjs: 'Ended',
ghlj: 'Replace the cage',
js: 'End',
ljjl: 'Cage records',
ghr: '更换人',
ghsj: '更换时间',
ghsj: 'Change time',
ghqlj: '更换前笼具',
ghhlj: '更换后笼具',
}

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

@ -5,5 +5,9 @@ export default {
cztj: 'Work Condition',
czsj: 'Work Time',
jcbmc: 'Analysis Plate Name'
},
lba003: {
jclc: 'Testing Process',
fj: 'Attachment'
}
}

+ 51
- 53
src/lang/en/template/sp.js View File

@ -1,66 +1,64 @@
//色谱
export default {
// 生物样品分析溶液配制表
sp001:{
},
sp001: {},
// 生物样品分析储备液配制表
sp002:{
},
sp002: {},
// 生物样品标曲工作液制备表
sp003:{
sp003: {
rqcz: 'Container Material',
cctj:'Storage Condition',
qsyry:'Source Solution',
ysqsyrynd:'Expected Concentration of Source Solution',
sjqsyrynd:'Actual Concentration of Source Solution',
xsy:'Diluent',
qsbhstd:'STD Starting Number',
mbryyxzq:'Validity Period of Target Solution',
mbrysxr:'Expiration Date of Target Solution',
mbrybh:'Target Solution ID',
qsrybh:'Source Solution ID',
ysqsrytj:'Expected Volume of Source Solution',
sjqsrytj:'Actual Source Solution Volume',
ysxsytj:'Expected Volume of Diluent',
sjxsytj:'Actual Volume of Diluent',
ysmbrynd:'Expected Concentration of Target Solution',
sjmbrynd:'Actual Concentration of Target Solution',
ysmbrytj:'Expected Volume of Target Solution',
sjmbrytj:'Actual Volume of Target Solution',
cctj: 'Storage Condition',
qsyry: 'Source Solution',
ysqsyrynd: 'Expected Concentration of Source Solution',
sjqsyrynd: 'Actual Concentration of Source Solution',
xsy: 'Diluent',
qsbhstd: 'STD Starting Number',
mbryyxzq: 'Validity Period of Target Solution',
mbrysxr: 'Expiration Date of Target Solution',
mbrybh: 'Target Solution ID',
qsrybh: 'Source Solution ID',
ysqsrytj: 'Expected Volume of Source Solution',
sjqsrytj: 'Actual Source Solution Volume',
ysxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
ysmbrynd: 'Expected Concentration of Target Solution',
sjmbrynd: 'Actual Concentration of Target Solution',
ysmbrytj: 'Expected Volume of Target Solution',
sjmbrytj: 'Actual Volume of Target Solution'
},
// 生物样品内标工作液制备表
sp00456:{
mbrybh:'Target Solution ID',
qsrybh:'Source Solution ID',
ysqsrytj:'Expected Volume of Source Solution',
sjqsrytj:'Actual Source Solution Volume',
ysxsytj:'Expected Volume of Diluent',
sjxsytj:'Actual Volume of Diluent',
ysmbrynd:'Expected Concentration of Target Solution',
sjmbrynd:'Actual Concentration of Target Solution',
ysmbrytj:'Expected Volume of Target Solution',
sjmbrytj:'Actual Volume of Target Solution',
mbryyxzq:'Validity Period of Target Solution',
mbrysxr:'Expiration Date of Target Solution',
ysysrybh:'预设原始溶液编号',
sjysrybh:'实际原始溶液编号',
ysysrynd:'预设原始溶液浓度',
sjysrynd:'实际原始溶液浓度',
ysysrytj:'预设原始溶液体积',
sjysrytj:'实际原始溶液体积',
yjxsytj:'Expected Volume of Diluent',
sjxsytj:'Actual Volume of Diluent',
qsyry:'Source Solution',
ysqsyrynd:'Expected Concentration of Source Solution',
sjqsyrynd:'Actual Concentration of Source Solution',
xsy:'Diluent',
// 生物样品内标工作液制备表
sp00456: {
mbrybh: 'Target Solution ID',
qsrybh: 'Source Solution ID',
ysqsrytj: 'Expected Volume of Source Solution',
sjqsrytj: 'Actual Source Solution Volume',
ysxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
ysmbrynd: 'Expected Concentration of Target Solution',
sjmbrynd: 'Actual Concentration of Target Solution',
ysmbrytj: 'Expected Volume of Target Solution',
sjmbrytj: 'Actual Volume of Target Solution',
mbryyxzq: 'Validity Period of Target Solution',
mbrysxr: 'Expiration Date of Target Solution',
ysysrybh: '预设原始溶液编号',
sjysrybh: '实际原始溶液编号',
ysysrynd: '预设原始溶液浓度',
sjysrynd: '实际原始溶液浓度',
ysysrytj: '预设原始溶液体积',
sjysrytj: '实际原始溶液体积',
yjxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
qsyry: 'Source Solution',
ysqsyrynd: 'Expected Concentration of Source Solution',
sjqsyrynd: 'Actual Concentration of Source Solution',
xsy: 'Diluent',
rqcz: 'Container Material',
cctj:'Storage Condition',
cctj: 'Storage Condition'
},
sp007:{
sp007: {
title: '生物样品分析样本处理表',
ybsm: 'Sample Description',
bt: 'Title'
},
// 生物样品分析方法学样品制备表-准确度与精密度
sp008: {

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

@ -5,5 +5,9 @@ export default {
cztj: '操作条件',
czsj: '操作时间',
jcbmc: '检测板名称'
},
lba003: {
jclc: '检测流程',
fj: '附件'
}
}

+ 50
- 52
src/lang/zh/template/sp.js View File

@ -1,66 +1,64 @@
//色谱
export default {
// 生物样品分析溶液配制表
sp001:{
},
sp001: {},
// 生物样品分析储备液配制表
sp002:{
},
sp002: {},
// 生物样品标曲工作液制备表
sp003:{
sp003: {
rqcz: '容器材质',
cctj:'存储条件',
qsyry:'起始源溶液',
ysqsyrynd:'预设起始源溶液浓度',
sjqsyrynd:'实际起始源溶液浓度',
xsy:'稀释液',
qsbhstd:'起始编号STD',
mbryyxzq:'目标溶液有效周期',
mbrysxr:'目标溶液失效日',
mbrybh:'目标溶液编号',
qsrybh:'起始溶液编号',
ysqsrytj:'预设起始溶液体积',
sjqsrytj:'实际起始溶液体积',
ysxsytj:'预设稀释液体积',
sjxsytj:'实际稀释液体积',
ysmbrynd:'预设目标溶液浓度',
sjmbrynd:'实际目标溶液浓度',
ysmbrytj:'预设目标溶液体积',
sjmbrytj:'实际目标溶液体积',
cctj: '存储条件',
qsyry: '起始源溶液',
ysqsyrynd: '预设起始源溶液浓度',
sjqsyrynd: '实际起始源溶液浓度',
xsy: '稀释液',
qsbhstd: '起始编号STD',
mbryyxzq: '目标溶液有效周期',
mbrysxr: '目标溶液失效日',
mbrybh: '目标溶液编号',
qsrybh: '起始溶液编号',
ysqsrytj: '预设起始溶液体积',
sjqsrytj: '实际起始溶液体积',
ysxsytj: '预设稀释液体积',
sjxsytj: '实际稀释液体积',
ysmbrynd: '预设目标溶液浓度',
sjmbrynd: '实际目标溶液浓度',
ysmbrytj: '预设目标溶液体积',
sjmbrytj: '实际目标溶液体积'
},
// 生物样品内标工作液制备表
sp00456:{
mbrybh:'目标溶液编号',
qsrybh:'起始溶液编号',
ysqsrytj:'预设起始溶液体积',
sjqsrytj:'实际起始溶液体积',
ysxsytj:'预设稀释液体积',
sjxsytj:'实际稀释液体积',
ysmbrynd:'预设目标溶液浓度',
sjmbrynd:'实际目标溶液浓度',
ysmbrytj:'预设目标溶液体积',
sjmbrytj:'实际目标溶液体积',
mbryyxzq:'目标溶液有效周期',
mbrysxr:'目标溶液失效日',
ysysrybh:'预设原始溶液编号',
sjysrybh:'实际原始溶液编号',
ysysrynd:'预设原始溶液浓度',
sjysrynd:'实际原始溶液浓度',
ysysrytj:'预设原始溶液体积',
sjysrytj:'实际原始溶液体积',
yjxsytj:'预计稀释液体积',
sjxsytj:'实际稀释液体积',
qsyry:'起始源溶液',
ysqsyrynd:'预设起始源溶液浓度',
sjqsyrynd:'实际起始源溶液浓度',
xsy:'稀释液',
sp00456: {
mbrybh: '目标溶液编号',
qsrybh: '起始溶液编号',
ysqsrytj: '预设起始溶液体积',
sjqsrytj: '实际起始溶液体积',
ysxsytj: '预设稀释液体积',
sjxsytj: '实际稀释液体积',
ysmbrynd: '预设目标溶液浓度',
sjmbrynd: '实际目标溶液浓度',
ysmbrytj: '预设目标溶液体积',
sjmbrytj: '实际目标溶液体积',
mbryyxzq: '目标溶液有效周期',
mbrysxr: '目标溶液失效日',
ysysrybh: '预设原始溶液编号',
sjysrybh: '实际原始溶液编号',
ysysrynd: '预设原始溶液浓度',
sjysrynd: '实际原始溶液浓度',
ysysrytj: '预设原始溶液体积',
sjysrytj: '实际原始溶液体积',
yjxsytj: '预计稀释液体积',
sjxsytj: '实际稀释液体积',
qsyry: '起始源溶液',
ysqsyrynd: '预设起始源溶液浓度',
sjqsyrynd: '实际起始源溶液浓度',
xsy: '稀释液',
rqcz: '容器材质',
cctj:'存储条件',
cctj: '存储条件'
},
sp007:{
sp007: {
title: '生物样品分析样本处理表',
ybsm: '样本说明',
bt: '标题'
},
// 生物样品分析方法学样品制备表-准确度与精密度
sp008: {

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

@ -59,6 +59,7 @@ import LBA003 from "./comps/lba/LBA003.vue";
//ADA
// ADA001-使SP001
// ADA002-使LBA002
// ADA003-使LBA003
//
// YP001-使SP001
@ -136,6 +137,7 @@ export default {
//ADA
'ADA001': 'SP001',
'ADA002': 'LBA002',
'ADA003': 'LBA003',
//
'YP001': 'SP001',
}

+ 109
- 39
src/views/business/comps/template/comps/lba/LBA003.vue View File

@ -2,8 +2,7 @@
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.sp.sp007.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
@ -11,22 +10,18 @@
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" v-if="resourceWz.length>0"/>
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="样本说明" label="样本说明"
ref="ybRef" :formConfig="ybFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<LineLabel label="template.lba.lba003.jclc" />
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.lba.lba003.fj" label="template.lba.lba003.fj"
ref="fjRef" :formConfig="getFjFormConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="附件" label="附件"
ref="fjRef" :formConfig="getFjFormConfig" :formData="formData" />
</div>
</div>
</div>
<button @click="onSave">保存</button>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
@ -36,16 +31,13 @@ import LineLabel from "@/components/Template/LineLabel";
import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step";
import templateMixin from "../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import { EventBus } from "@/utils/eventBus";
import { uniqeResource } from "@/utils/calUnitTools";
import { debounce } from 'lodash-es';
import {getBaseInfoFormConfig, getRemarkFormConfig,getStorageFormConfig,getYbFormConfig,getfjFormConfig} from "../../formConfig/sp/SP007";
export default {
name: "LBA003",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable },
components: { BaseInfoFormPackage, LineLabel, TableList, Step },
mixins: [templateMixin],
props: {
fillType: {
@ -54,25 +46,109 @@ export default {
},
},
computed: {
//
storageFormConfig() {
return getStorageFormConfig(this);
},
//
remarkConig() {
return getRemarkFormConfig();
},
//
ybFormConfig() {
return getYbFormConfig();
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
//
baseInfoFormConfig() {
return getBaseInfoFormConfig(this);
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: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "actFill",
prepend: "V",
maxlength: 50
},
}
},
{
type: "conditionItem",
label: 'template.lba.lba002.cztj',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.lba.lba002.czsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
//
getFjFormConfig() {
return getfjFormConfig(this);
return [
{
type: "attachment",
config: {
attTitle: {
label: 'template.lba.lba003.fj',
type: "attachment",
fillType: "actFill",
},
}
}
]
},
},
@ -84,27 +160,21 @@ export default {
mounted() {
},
methods: {
//
printTag() {
const printConfig = this.getBasePrintConfig();
const { storageCondition, targetCodeSn } = this.formData;
printConfig["存储条件"] = storageCondition;
printConfig["编号"] = targetCodeSn;
EventBus.$emit('showTagPrintDialog', { printConfig })
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "ybRef","stepRef", "remarkRef","fjRef"])
return this.getFilledFormDataByRefs(["baseInfoRef","stepRef", "remarkRef","fjRef"])
},
//
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "ybRef","stepRef", "remarkRef","fjRef"]);
let content = await this.validFormFields(["baseInfoRef","stepRef", "remarkRef","fjRef"]);
return content;
},
getResource() {
let content = this.getFilledFormData();
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
return this.resourceTmp;
},
//

+ 6
- 2
src/views/business/comps/template/comps/sp/SP007.vue View File

@ -14,13 +14,13 @@
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="样本说明" label="样本说明"
<BaseInfoFormPackage fieldItemLabel="template.sp.sp007.ybsm" label="template.sp.sp007.ybsm"
ref="ybRef" :formConfig="ybFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
<BaseInfoFormPackage fieldItemLabel="附件" label="附件"
<BaseInfoFormPackage fieldItemLabel="template.lba.lba003.fj" label="template.lba.lba003.fj"
ref="fjRef" :formConfig="getFjFormConfig" :formData="formData" />
</div>
@ -105,6 +105,10 @@ export default {
},
getResource() {
let content = this.getFilledFormData();
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp = stepResource.sjResource || []
this.yqResourceTmp = stepResource.yqResource || []
return this.resourceTmp;
},
//

+ 138
- 139
src/views/business/comps/template/formConfig/sp/SP007.js View File

@ -1,160 +1,159 @@
export const getBaseInfoFormConfig = ($this) => {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
methodCode: {
label: 'template.common.methodCode',
type: "input",
fillType: "preFill",
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: "inputNumber",
fillType: "actFill",
prepend: "V",
maxlength: 50
},
clpbh: {
label: '处理批编号',
type: "input",
fillType: "actFill",
maxlength: 50
},
}
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: 'preFill',
maxlength: 50
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: $this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
compareTo: "pre",
options: $this.getDictOptions('business_pztj')
}
}
versionNum: {
label: 'template.common.versionNumber',
type: 'inputNumber',
fillType: 'actFill',
prepend: 'V',
maxlength: 50
},
clpbh: {
label: 'template.sp.sp008.clpbh',
type: 'input',
fillType: 'actFill',
maxlength: 50
}
}
},
{
type: 'conditionItem',
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: 'select',
multiple: true,
fillType: 'preFill',
options: $this.getDictOptions('business_pztj'),
otherCode: 'preOther'
},
{
type: "cellItem",
config: {
containerMaterial: {
label: "template.sp.sp003.rqcz",
type: "select",
options: $this.getDictOptions('business_rqcz'),
fillType: "actFill",
otherCode: "containerMaterialOther",
}
}
act: {
label: 'template.common.actualFill',
type: 'select',
fillType: 'actFill',
otherCode: 'actOther',
multiple: true,
compareTo: 'pre',
options: $this.getDictOptions('business_pztj')
}
}
},
{
type: 'cellItem',
config: {
containerMaterial: {
label: 'template.sp.sp003.rqcz',
type: 'select',
options: $this.getDictOptions('business_rqcz'),
fillType: 'actFill',
otherCode: 'containerMaterialOther'
}
}
},
{
type: 'cellItem',
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: 'input'
},
{
type: "cellItem",
label: 'template.sp.sp008.clsj',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
endDate: {
label: 'template.common.endTime',
type: 'input'
}
]
}
}
]
}
//备注
export const getRemarkFormConfig = () => {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
return [
{
type: 'cellItem',
config: {
remark: {
label: '',
type: 'textarea',
fillType: 'actFill',
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
]
}
}
]
}
//样本说明
export const getYbFormConfig = () => {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: '样本说明',
maxlength: 1000,
rows: 5
}
}
return [
{
type: 'cellItem',
config: {
remark: {
label: '',
type: 'textarea',
fillType: 'actFill',
span: 1,
placeholder: 'template.sp.sp007.ybsm',
maxlength: 1000,
rows: 5
}
]
}
}
]
}
//存储条件
export const getStorageFormConfig = ($this) => {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: $this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
]
return [
{
type: 'conditionItem',
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
otherCode: 'storageConditionOther'
}
}
}
]
}
//存储条件
export const getfjFormConfig = () => {
return [
{
type: "attachment",
config: {
attTitle: {
label: '标题',
type: "attachment",
fillType: "preFill",
},
}
}
]
}
return [
{
type: 'attachment',
config: {
attTitle: {
label: 'template.sp.sp007.bt',
type: 'attachment',
fillType: 'actFill'
}
}
}
]
}

+ 6
- 5
src/views/business/resource/gsp/comps/ffjlList.vue View File

@ -163,12 +163,12 @@
v-hasPermi="['business:resource:gsp:ffjlgd']">{{
$t('page.business.resource.gsp.guidang') }}</el-button>
<!-- 解档 -->
<el-button type="text" v-if="scope.row.jlzt == 7 && id == scope.row.gdsqrId" @click="handleJd(scope.row)"
<el-button type="text" v-if="scope.row.jlzt == 7 && id == scope.row.gdsqrId" @click="handleJd(scope.row)"
v-hasPermi="['business:resource:gsp:ffjljd']">{{
$t('page.business.resource.gsp.jiedang') }}</el-button>
<!-- 借阅 -->
<el-button type="text" v-if="scope.row.jlzt == 7 && scope.row.jyzt == 1 && id == scope.row.gdsqrId" @click="handleJy(scope.row)"
v-hasPermi="['business:resource:gsp:ffjljy']">{{
<el-button type="text" v-if="scope.row.jlzt == 7 && scope.row.jyzt == 1 && id == scope.row.gdsqrId"
@click="handleJy(scope.row)" v-hasPermi="['business:resource:gsp:ffjljy']">{{
$t('page.business.resource.gsp.jieyue') }}</el-button>
</template>
</el-table-column>
@ -316,7 +316,7 @@ export default {
'&nbsp;' + value.bh +
'</td>' +
' <td>' +
(value.mdMcs&&value.mdMcs!=''&&value.mdOther&&value.mdOther!=''? (value.mdMcs +","+value.mdOther) :(value.mdMcs +value.mdOther))+
(value.mdMcs && value.mdMcs != '' && value.mdOther && value.mdOther != '' ? (value.mdMcs + "," + value.mdOther) : (value.mdMcs + value.mdOther)) +
'</td>' +
' <td>' +
value.ffzytj +
@ -359,6 +359,7 @@ export default {
'</td>' +
'</tr>'
})
_datastr = _datastr.replaceAll('null', '')
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.gsp.ffhsjl')
@ -380,7 +381,7 @@ export default {
a.href = uri + window.btoa(unescape(encodeURIComponent(exportTemplate)))
a.click()
that.$modal.closeLoading()
this.saveSimpleLog({name:'',nameEn:'',jcmc:'供试品发放回收导出',jcmcEn:'Test Item In-and-Out Record Export'})
this.saveSimpleLog({ name: '', nameEn: '', jcmc: '供试品发放回收导出', jcmcEn: 'Test Item In-and-Out Record Export' })
}).finally(() => {
that.$modal.closeLoading()
})

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

@ -385,6 +385,7 @@ export default {
'</td>' +
'</tr>'
})
_datastr = _datastr.replaceAll('null', '')
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.gsp.gspgl')

+ 64
- 20
src/views/business/resource/gsp/comps/rkjl/RkjlImport.vue View File

@ -1,19 +1,58 @@
<template>
<div>
<!-- 解锁弹窗 -->
<el-dialog :title="$t('page.business.resource.gsp.dr')" :visible.sync="open" width="400px" append-to-body
<el-dialog :title="$t('page.business.resource.gsp.dr')" :visible.sync="open" width="600px" append-to-body
:close-on-click-modal="false">
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">{{ $t('page.business.resource.gsp.tzsc') }}<em>{{ $t('page.business.resource.gsp.djsc') }}</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>{{ $t('page.business.resource.gsp.wjgs') }}</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">{{ $t('page.business.resource.gsp.xzmb') }}</el-link>
</div>
</el-upload>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-upload ref="upload" :data="form" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">{{ $t('page.business.resource.gsp.tzsc') }}<em>{{
$t('page.business.resource.gsp.djsc') }}</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>{{ $t('page.business.resource.gsp.wjgs') }}</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">{{ $t('page.business.resource.gsp.xzmb') }}</el-link>
</div>
</el-upload>
</el-col>
</el-row>
<el-row style="margin-top: 30px;">
<el-col :span="12">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="form.qmyy" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('form.signer')">
<el-input type="text" v-model="nickName" maxlength="50" disabled
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.signerPsw')" prop="qmrmm">
<div class="sbzdtcma"> <input type="text"></div>
<el-input type="password" v-model="form.qmrmm" show-password maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.remark')" prop="qmbz">
<el-input type="textarea" v-model="form.qmbz" :rows="2" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">{{ $t('form.confirm') }}</el-button>
<el-button @click="cancel">{{ $t('form.cancel') }}</el-button>
@ -31,7 +70,10 @@ export default {
data() {
return {
open: false,
form: {},
form: {
qmrmm: null,
qmbz: null
},
rules: {
qmrmm: [{
required: true,
@ -51,7 +93,7 @@ export default {
//
headers: { Authorization: "Bearer " + getToken() },
//
url: process.env.VUE_APP_BASE_API + "/business/gspRkjl/importData"
url: process.env.VUE_APP_BASE_API + "/system/business/gspRkjl/importData"
},
}
},
@ -65,7 +107,7 @@ export default {
methods: {
//
importTemplate() {
this.download('business/gspRkjl/importTemplate', {
this.download('/system/business/gspRkjl/importTemplate', {
}, `【模板】供试品入库记录.xlsx`)
},
//
@ -94,11 +136,7 @@ export default {
},
reset() {
this.form = {
id: null,
ids: null,
mc: null,
bh: null,
qmyy: this.$t('page.business.resource.gsp.jsgsprkjl'),
qmyy: this.$t('page.business.resource.gsp.xzgsprkjl'),
qmrmm: null
}
this.resetForm("form")
@ -120,3 +158,9 @@ export default {
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-upload-dragger {
width: 560px;
}
</style>

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

@ -177,7 +177,7 @@
<!-- 新增 -->
<Xz key="Xz" ref="Xz" @callback="handleQuery" />
<!-- 导入 -->
<RkjlImport key="RkjlImport" ref="RkjlImport" @callback="handleQuery"/>
<RkjlImport key="RkjlImport" ref="RkjlImport" @callback="handleQuery" />
</div>
</div>
@ -325,6 +325,7 @@ export default {
'</td>' +
'</tr>'
})
_datastr = _datastr.replaceAll('null', '')
tabelStr = tabelStr + _datastr + ' <table>'
// Worksheet
var worksheet = that.$t('page.business.resource.gsp.gsprkjl')

+ 4
- 1
src/views/business/study/comp/jhbd/Fh.vue View File

@ -189,7 +189,10 @@ export default {
},
getJjcgjList(val) {
this.$modal.loading()
studyFormPlan_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormPlan_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/jhbd/Sy.vue View File

@ -145,7 +145,10 @@ export default {
methods: {
getJjcgjList(val) {
this.$modal.loading()
studyFormPlan_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormPlan_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/jhbd/Xq.vue View File

@ -345,7 +345,10 @@ export default {
},
getJjcgjList(val) {
this.$modal.loading()
studyFormPlan_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormPlan_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/sqbd/Fh.vue View File

@ -190,7 +190,10 @@ export default {
},
getJjcgjList(val) {
this.$modal.loading()
studyFormApply_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormApply_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/sqbd/Sh.vue View File

@ -165,7 +165,10 @@ export default {
getJjcgjList(val) {
this.$modal.loading()
studyFormApply_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormApply_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/sqbd/Sy.vue View File

@ -148,7 +148,10 @@ export default {
methods: {
getJjcgjList(val) {
this.$modal.loading()
studyFormApply_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormApply_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/sqbd/Xq.vue View File

@ -346,7 +346,10 @@ export default {
},
getJjcgjList(val) {
this.$modal.loading()
studyFormApply_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormApply_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 101
- 5
src/views/business/study/comp/syjList.vue View File

@ -100,7 +100,7 @@
<!-- 笼具更换记录 -->
<Jl key="Jl" ref="Jl" @callback="search" />
<!-- 详情 -->
<Detail key="Detail" ref="Detail" @callback="search" @close="xqClose" v-show="showDetail"/>
<Detail key="Detail" ref="Detail" @callback="search" @close="xqClose" v-show="showDetail" />
</div>
</template>
@ -114,6 +114,7 @@ import Jl from "./syj/Jl";
import Detail from "./syj/Detail";
import { mapGetters } from 'vuex'
import moment from "moment";
import { deepClone } from "@/utils/index";
export default {
name: 'SyjList',
props: {
@ -168,7 +169,105 @@ export default {
},
created() { },
methods: {
//
handleExport() {
let that = this
that.$modal.loading()
let params = deepClone(this.searchForm)
params.pageSize = 999999
studyRoom_list(params).then(response => {
var tabelStr =
'<table border="1" class="html-tabel">' +
'<tr style="background:#eee;">' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.syjh') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.syqy') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.dwzs') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.longju') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.kssyyl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.qyr') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.kssj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.jssyyl') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.jsr') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.jssj') + '</th>' +
'<th style="text-align: center;">' + this.$t('page.business.study.studyRoom.zt') + '</th>' +
' </tr>'
let _datastr = ''
_.forEach(response.rows, function (value) {
let zt = ''
switch (value.zt) {
case 1:
zt = that.$t('page.business.study.studyRoom.syz')
break
case 3:
zt = that.$t('page.business.study.studyRoom.yjs')
break
}
_datastr =
_datastr +
'<tr style="text-align: center;">' +
' <td>' +
value.syjh +
'</td>' +
' <td>' +
'&nbsp;' + value.syqy +
'</td>' +
' <td>' +
value.dwzs +
'</td>' +
' <td>' +
value.lj +
'</td>' +
' <td>' +
value.kssyyl +
'</td>' +
' <td>' +
value.qyrMc +
'</td>' +
' <td>' +
value.createTime +
'</td>' +
' <td>' +
value.jssyyl +
'</td>' +
' <td>' +
value.jsrMc +
'</td>' +
'<td>' +
value.jssj +
'</td>' +
'<td>' +
zt +
'</td>' +
'</tr>'
})
_datastr = _datastr.replaceAll('null', ' ')
tabelStr = tabelStr + _datastr + ' <table>'
console.log(tabelStr)
// Worksheet
var worksheet = that.$t('page.business.study.studyEnter.syjsygl')
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()
that.$modal.closeLoading()
this.saveSimpleLog({ name: '', nameEn: '', jcmc: '饲养间使用管理导出', jcmcEn: 'Animal Room Usage Export' })
}).finally(() => {
that.$modal.closeLoading()
})
},
search() {
this.searchForm.pageNum = 1
this.getList()
@ -215,9 +314,6 @@ export default {
// this.$emit('showDetail', this.showDetail)
// this.$refs.Xq.show(row)
},
handleExport() {
},
xqClose() {
this.showDetail = false
this.$emit('showDetail', this.showDetail)

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

@ -46,7 +46,7 @@
<el-form-item :label="bdmbTitle" prop="templateId">
<SelectTemplate v-model="form.templateId" :disabled="form.id && form.id !== ''"
:name="form.templateMc" :studyType="studyType" :studyFormType="studyFormType"
@change="selectTemplateChange" :needPre="1" :selectedDeptId="selectedDeptId"/>
@change="selectTemplateChange" :needPre="1" :selectedDeptId="selectedDeptId" />
</el-form-item>
</el-col>
</el-row>
@ -174,15 +174,18 @@
<div>{{ $t('page.business.study.studyFormFill.yltj') }}</div>
<div style=" display: flex; flex-wrap: wrap; gap: 16px;">
<div v-for="(item, index) in resource" :key="'r' + index" style=" flex: 0 0 calc(50% - 11px);">
{{ item.bh }}
<el-input type="number" v-model="item.syl" maxlength="50" style="width:150px;">
<template slot="append">
<div style="width: 20px;">
<div style="display: flex;">
<div> {{ item.bh }}</div>
<div>
<el-input type="number" v-model="item.syl" maxlength="50" style="width:100px; margin:0px 0px 0px 5px;" />
</div>
<div>
<div style="width: 70px;">
<BusinessSelect v-model="item.syldw" :showMax="false" dictType="business_tjdw">
</BusinessSelect>
</div>
</template>
</el-input>
</div>
</div>
</div>
</div>
</el-form-item>
@ -479,7 +482,7 @@ export default {
studyType: null,
studyFormType: null,
ccwzlist: [],
selectedDeptId:null,
selectedDeptId: null,
}
},
computed: {
@ -608,9 +611,9 @@ export default {
this.templateData = deepClone(this.form)
const obj = Object.assign({}, this.$route, { title: this.$t('page.business.study.studyFormFill.xzbd') })
this.$tab.updatePage(obj);
let name=this.studyType==1?'试验':(this.studyType==5?'非试验表单':'麻精药表单')
let nameEn=this.studyType==1?'Study':(this.studyType==5?'Non-study':'ontrolled Drug')
this.saveSimpleLog({jcmc:'填报表单新增',jcmcEn:'Record Create',name:name,nameEn:nameEn})
let name = this.studyType == 1 ? '试验' : (this.studyType == 5 ? '非试验表单' : '麻精药表单')
let nameEn = this.studyType == 1 ? 'Study' : (this.studyType == 5 ? 'Non-study' : 'ontrolled Drug')
this.saveSimpleLog({ jcmc: '填报表单新增', jcmcEn: 'Record Create', name: name, nameEn: nameEn })
this.$modal.closeLoading()
})
}

+ 4
- 1
src/views/business/study/comp/tbbd/Fh.vue View File

@ -191,7 +191,10 @@ export default {
},
getJjcgjList(val) {
this.$modal.loading()
studyFormFill_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormFill_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/tbbd/Sy.vue View File

@ -147,7 +147,10 @@ export default {
methods: {
getJjcgjList(val) {
this.$modal.loading()
studyFormFill_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormFill_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 4
- 1
src/views/business/study/comp/tbbd/Xq.vue View File

@ -352,7 +352,10 @@ export default {
},
getJjcgjList(val) {
this.$modal.loading()
studyFormFill_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormFill_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)

+ 7
- 1
src/views/business/study/comp/ytbd/Xq.vue View File

@ -182,10 +182,16 @@ export default {
})
},
getJjcgjList(val) {
studyFormPre_jcgj(_.merge({}, this.queryParamsJcgj, val)).then(response => {
this.$modal.loading()
if(val){
this.queryParamsJcgj=_.merge({}, this.queryParamsJcgj, val)
}
studyFormPre_jcgj(this.queryParamsJcgj).then(response => {
this.jcgjList = response.rows
this.jcgjTotal = response.total
this.$refs.jcgjList.init(this.jcgjList)
}).finally(() => {
this.$modal.closeLoading()
})
},
getQmxxList() {

Loading…
Cancel
Save