luojie 2 months ago
parent
commit
ec63c72b41
37 changed files with 887 additions and 93 deletions
  1. +8
    -0
      src/api/business/study/studyFormFill.js
  2. +2
    -1
      src/lang/en.js
  3. +2
    -1
      src/lang/en/business/study/studyFormFill.js
  4. +8
    -0
      src/lang/en/template/commonTemplate.js
  5. +4
    -0
      src/lang/en/template/gsp.js
  6. +2
    -1
      src/lang/zh.js
  7. +1
    -1
      src/lang/zh/business/study/drug.js
  8. +2
    -1
      src/lang/zh/business/study/studyFormFill.js
  9. +8
    -0
      src/lang/zh/template/commonTemplate.js
  10. +5
    -1
      src/lang/zh/template/gsp.js
  11. +1
    -1
      src/utils/menu.js
  12. +5
    -1
      src/views/business/comps/select/SelectTemplate.vue
  13. +7
    -1
      src/views/business/comps/template/TemplateTable.vue
  14. +332
    -0
      src/views/business/comps/template/comps/gsp/DMYPPZJLB.vue
  15. +197
    -26
      src/views/business/comps/template/comps/pcr/PCR002.vue
  16. +1
    -1
      src/views/business/comps/template/comps/sp/SP001.vue
  17. +2
    -1
      src/views/business/comps/template/comps/sp/SP002.vue
  18. +2
    -1
      src/views/business/comps/template/comps/sp/SP003.vue
  19. +14
    -13
      src/views/business/comps/template/comps/sp/SP00456.vue
  20. +6
    -3
      src/views/business/comps/template/formConfig/PCRTableConfig.js
  21. +5
    -3
      src/views/business/comps/template/mixins/templateMixin.js
  22. +7
    -0
      src/views/business/form/drug/comp/enter.vue
  23. +2
    -1
      src/views/business/form/drug/comp/tbbdList.vue
  24. +5
    -4
      src/views/business/form/drug/comp/ytbdList.vue
  25. +2
    -0
      src/views/business/form/drug/list.vue
  26. +7
    -0
      src/views/business/form/nonTrial/comp/enter.vue
  27. +2
    -0
      src/views/business/form/nonTrial/list.vue
  28. +1
    -1
      src/views/business/resource/gsp/comps/gsp/Bj.vue
  29. +1
    -1
      src/views/business/resource/gsp/comps/gsp/Xgkc.vue
  30. +2
    -2
      src/views/business/resource/gsp/comps/gsp/Xz.vue
  31. +17
    -21
      src/views/business/resource/sj/comps/Bj.vue
  32. +7
    -0
      src/views/business/study/comp/enter.vue
  33. +183
    -3
      src/views/business/study/comp/tbbd/Bj.vue
  34. +4
    -3
      src/views/business/study/comp/ytbd/Bj.vue
  35. +2
    -0
      src/views/business/study/list.vue
  36. +7
    -0
      src/views/business/systemLog/list.vue
  37. +24
    -0
      src/views/business/template/list.vue

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

@ -111,6 +111,14 @@ export function studyFormFill_tj(data) {
data: data data: data
}) })
} }
//药剂存储
export function studyFormFill_yjcc(data) {
return request({
url: '/system/business/studyFormFill/yjcc',
method: 'post',
data: data
})
}
//观察 //观察
export function studyFormFill_gc(data) { export function studyFormFill_gc(data) {

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

@ -77,7 +77,8 @@ export default {
timeOutContent: timeOutContent:
'The login status has expired. You can enter your password to access the page, or cancel', 'The login status has expired. You can enter your password to access the page, or cancel',
timeOutEnter: 'Enter', timeOutEnter: 'Enter',
timeOutTip: 'Invalid Session, Or Session Has Expired. Please Log In Again.'
timeOutTip: 'Invalid Session, Or Session Has Expired. Please Log In Again.',
enterPage: 'Enter Page'
}, },
form: { form: {
search: 'Search', search: 'Search',

+ 2
- 1
src/lang/en/business/study/studyFormFill.js View File

@ -73,5 +73,6 @@ export default {
fztgjj: 'Approve/Reject Record Abolition', fztgjj: 'Approve/Reject Record Abolition',
ysy: 'Reviewed', ysy: 'Reviewed',
bcjl:'Save', bcjl:'Save',
txbbc:'Fill In And Save'
txbbc:'Fill In And Save',
yjcc:'药剂存储'
} }

+ 8
- 0
src/lang/en/template/commonTemplate.js View File

@ -11,6 +11,13 @@ export default {
operationSteps: 'Operation Workflow', operationSteps: 'Operation Workflow',
remark: 'Comments', remark: 'Comments',
step: 'Step', step: 'Step',
bqdy: 'Label Print',
//平行配制,阶梯配制
xzpxpz:'新增平行配制',
pxpz:'平行配制',
xzjtpz:'新增阶梯配制',
jtpz:'阶梯配制',
// 字段标签 // 字段标签
storageConditionLabel: 'Storage Condition', storageConditionLabel: 'Storage Condition',
@ -39,6 +46,7 @@ export default {
// 按钮 // 按钮
saveBtn: 'Save', saveBtn: 'Save',
deleteBtn: 'Delete',
// 错误提示 // 错误提示
addStepError: 'Please add steps', addStepError: 'Please add steps',

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

@ -30,5 +30,9 @@ export default {
dwpjtz:'Average Body Weight', dwpjtz:'Average Body Weight',
dwsl:'Number', dwsl:'Number',
}, },
// 毒麻药品配制记录表
DMYPPZJLB:{
title: '毒麻药品配制记录表',
}
} }

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

@ -74,7 +74,8 @@ export default {
crowdOut: '该账户已在其他地方登录,是否继续登录,继续登录挤掉原登录账号', crowdOut: '该账户已在其他地方登录,是否继续登录,继续登录挤掉原登录账号',
timeOutContent: '登录状态已过期,您可以输入密码进入页面,或者取消', timeOutContent: '登录状态已过期,您可以输入密码进入页面,或者取消',
timeOutEnter: '进入页面', timeOutEnter: '进入页面',
timeOutTip: '无效的会话,或者会话已过期,请重新登录。'
timeOutTip: '无效的会话,或者会话已过期,请重新登录。',
enterPage: '进入页面'
}, },
form: { form: {
search: '查询', search: '查询',

+ 1
- 1
src/lang/zh/business/study/drug.js View File

@ -36,7 +36,7 @@ export default {
jd: '解档', jd: '解档',
js: '解锁', js: '解锁',
create: '创建精药文件夹',
create: '创建精药文件夹',
inputName: '请输入名称', inputName: '请输入名称',
inputSn: '请输入编号', inputSn: '请输入编号',
inputLeader: '请选择负责人', inputLeader: '请选择负责人',

+ 2
- 1
src/lang/zh/business/study/studyFormFill.js View File

@ -74,5 +74,6 @@ export default {
fztgjj: '废止通过/拒绝', fztgjj: '废止通过/拒绝',
ysy: '已审阅', ysy: '已审阅',
bcjl:'保存记录', bcjl:'保存记录',
txbbc:'填写并保存'
txbbc:'填写并保存',
yjcc:'药剂存储'
} }

+ 8
- 0
src/lang/zh/template/commonTemplate.js View File

@ -11,7 +11,14 @@ export default {
operationSteps: '操作步骤', operationSteps: '操作步骤',
step: '步骤', step: '步骤',
remark: '备注', remark: '备注',
bqdy: '标签打印',
//平行配制,阶梯配制
xzpxpz:'新增平行配制',
pxpz:'平行配制',
xzjtpz:'新增阶梯配制',
jtpz:'阶梯配制',
// 字段标签 // 字段标签
storageConditionLabel: '存储条件', storageConditionLabel: '存储条件',
testName: '试验名称', testName: '试验名称',
@ -40,6 +47,7 @@ export default {
// 按钮 // 按钮
saveBtn: '保存', saveBtn: '保存',
deleteBtn: '刪除',
// 错误提示 // 错误提示
addStepError: '请添加步骤', addStepError: '请添加步骤',

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

@ -30,5 +30,9 @@ export default {
dwpjtz:'动物平均体重', dwpjtz:'动物平均体重',
dwsl:'动物数量', dwsl:'动物数量',
}, },
// 毒麻药品配制记录表
DMYPPZJLB:{
title: '毒麻药品配制记录表',
}
} }

+ 1
- 1
src/utils/menu.js View File

@ -20,7 +20,7 @@ let menuObj = {
档案管理: 'Archive', 档案管理: 'Archive',
试验档案管理: 'Study Archive', 试验档案管理: 'Study Archive',
非试验档案管理: 'Non-study Archive', 非试验档案管理: 'Non-study Archive',
麻精药配档案管理: 'Drug Archive',
麻精药配档案管理: 'Drug Archive',
供试品档案管理: 'Test Item Archive', 供试品档案管理: 'Test Item Archive',
给药制剂档案管理: 'Formulation Archive', 给药制剂档案管理: 'Formulation Archive',
麻精药档案管理: 'Controlled Drug Archive', 麻精药档案管理: 'Controlled Drug Archive',

+ 5
- 1
src/views/business/comps/select/SelectTemplate.vue View File

@ -29,6 +29,10 @@ export default {
type: Number, type: Number,
default: 0 default: 0
}, },
studyType: {
type: Number,
default: 20
},
}, },
watch: { watch: {
value: { value: {
@ -57,7 +61,7 @@ export default {
methods: { methods: {
showSelectTemplate(){ showSelectTemplate(){
if(!this.disabled){ if(!this.disabled){
this.$refs.selectTemplateDialog.show({needPre:this.needPre})
this.$refs.selectTemplateDialog.show({needPre:this.needPre,studyType:this.studyType})
} }
}, },
handleChange(obj) { handleChange(obj) {

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

@ -42,8 +42,11 @@ import SP017 from "./comps/sp/SWYPFXFFXYPZBB/SP017.vue";
import SP018 from "./comps/sp/SWYPFXFFXYPZBB/SP018.vue"; import SP018 from "./comps/sp/SWYPFXFFXYPZBB/SP018.vue";
import Demo from "./comps/sp/Demo.vue"; import Demo from "./comps/sp/Demo.vue";
// //
////
import SYWZPZJHB from "./comps/gsp/SYWZPZJHB.vue"; import SYWZPZJHB from "./comps/gsp/SYWZPZJHB.vue";
import MJYLQSQD from "./comps/gsp/MJYLQSQD.vue"; import MJYLQSQD from "./comps/gsp/MJYLQSQD.vue";
import DMYPPZJLB from "./comps/gsp/DMYPPZJLB.vue";
// PCR // PCR
import PCR001 from "./comps/pcr/PCR001.vue"; import PCR001 from "./comps/pcr/PCR001.vue";
@ -54,8 +57,9 @@ export default {
components: { components: {
Demo, Demo,
SubPackageDialog, TagPrintDialog, SelectReagentDialog, SelectInstrumentDialog, SelectMixReagentDialog, EditSign, SubPackageDialog, TagPrintDialog, SelectReagentDialog, SelectInstrumentDialog, SelectMixReagentDialog, EditSign,
////
MJYLQSQD, SYWZPZJHB, DMYPPZJLB,
// //
MJYLQSQD, SYWZPZJHB,
// //
SP001, SP002, SP003, SP00456,SP007, SP008, SP009, SP010, SP011, SP012, SP013, SP014, SP015, SP016, SP017, SP018, SP001, SP002, SP003, SP00456,SP007, SP008, SP009, SP010, SP011, SP012, SP013, SP014, SP015, SP016, SP017, SP018,
// PCR // PCR
@ -104,8 +108,10 @@ export default {
'SP017': 'SP017', 'SP017': 'SP017',
'SP018': 'SP018', 'SP018': 'SP018',
// //
////
'SYWZPZJHB': 'SYWZPZJHB', 'SYWZPZJHB': 'SYWZPZJHB',
'MJYLQSQD': 'MJYLQSQD', 'MJYLQSQD': 'MJYLQSQD',
'DMYPPZJLB': 'DMYPPZJLB',
//PCR //PCR
'PCR001': 'PCR001', 'PCR001': 'PCR001',
'PCR002': 'PCR002' 'PCR002': 'PCR002'

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

@ -0,0 +1,332 @@
<!-- 毒麻药品配制记录表 -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.gsp.DMYPPZJLB.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" />
<div class="template-form-item">
<el-button class="print-btn" v-if="fillType === 'actFill'" type="primary"
@click="printTag">{{ $t('template.common.bqdy') }}</el-button>
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
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'
export default {
name: "DMYPPZJLB",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
//
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
//
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
//
baseInfoFormConfig() {
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.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')
}
}
},
{
type: "cellItem",
label: 'template.common.configurationTime',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
//
stepFormConfig() {
return [
{
type: "step",
config: {
targetName: {
label: 'template.common.targetSolutionName',
type: "input",
fillType: "preFill",
maxlength: 50
},
targetCode: {
label: 'template.common.targetSolutionCode',
type: "input",
subType: "span",
fillType: "preFill",
subKey: "targetCodeSn",
maxlength: 20
},
targetPreConcentration: {
label: 'template.common.targetPreConcentration',
type: "inputNumber",
subType: "select",
subKey: "targetPreConcentrationUnit",
fillType: "preFill",
subOptions: this.getDictOptions('business_nddw'),
maxlength: 10,
selectTo: "targetActConcentrationUnit",//
},
targetActConcentration: {
label: 'template.common.targetActConcentration',
type: "inputNumber",
subType: "select",
subKey: "targetActConcentrationUnit",
compareTo: "targetPreConcentration",//
fillType: "actFill",
subFillType: "preFill",
subOptions: this.getDictOptions('business_nddw'),
copyFrom: "targetPreConcentration",//
maxlength: 10
},
targetPreVolume: {
label: 'template.common.targetPreVolume',
type: "inputNumber",
subType: "select",
subKey: "targetPreVolumeUnit",
subOptions: this.getDictOptions('business_tjdw'),
fillType: "preFill",
maxlength: 10,
selectTo: "targetActVolumeUnit",//
},
targetActVolume: {
label: 'template.common.targetActVolume',
type: "inputNumber",
subType: "select",
subKey: "targetActVolumeUnit",
fillType: "actFill",
subFillType: "preFill",
subOptions: this.getDictOptions('business_tjdw'),
compareTo: "targetPreVolume",//
copyFrom: "targetPreVolume",//
maxlength: 10
},
effectivePeriod: {
label: 'template.common.effectivePeriod',
type: "inputNumber",
subType: "select",
subKey: "effectivePeriodUnit",
fillType: "preFill",
subOptions: this.getDictOptions('business_yxqdw'),
maxlength: 10
},
expireDate: {
label: 'template.common.expireDate',
type: "input",
},
}
}
]
},
},
data() {
return {
formData: {}
};
},
mounted() {
const formData = this.getFormDataByTemplateData();
if(!formData.targetCodeSn&& this.fillType === "actFill"){
this.getCode(formData);
}
},
methods: {
//
printTag() {
const printConfig = this.getBasePrintConfig();
const { storageCondition, targetCodeSn } = this.formData;
printConfig["存储条件"] = storageCondition;
printConfig["编号"] = targetCodeSn;
EventBus.$emit('showTagPrintDialog', { printConfig })
},
//
getCode: debounce(async function (v) {
const result = await getLatestSn({
count: 1,
pre:v.targetCode,
type:1
})
if (result.code == 200) {
this.$refs.stepFormPackageRef.updateFormData("targetCodeSn", result.data[0])
}
}, 100),
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"])
},
//
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"]);
//resource
let tmpResource = []
if (this.fillType === "actFill") {
//
tmpResource.push({
mc: content.targetName,
bh: content.targetCode + content.targetCodeSn,
ph: '',
ndz: content.targetActConcentration + content.targetActConcentrationUnit,
nd: content.targetActConcentration,
nddw: content.targetActConcentrationUnit,
ly: 'ELN配制',
sxrq: content.expireDate,
kc: content.targetActVolume,
kcdw: content.targetActVolumeUnit,
syl: null,
type: null,
elnType: this.product,
syldw: content.targetActVolumeUnit,
yxzq: content.effectivePeriod,
yxzqdw: content.effectivePeriodUnit,
})
}
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp =uniqeResource(tmpResource,stepResource.sjResource||[])
this.yqResourceTmp = stepResource.yqResource||[]
return content;
},
//
async onSave() {
let content =await this.$refs.stepRef.getFormData();
console.log(content);
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
.print-btn {
margin-bottom: 20px;
}
</style>

+ 197
- 26
src/views/business/comps/template/comps/pcr/PCR002.vue View File

@ -9,19 +9,25 @@
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" <BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" /> ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> <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" /> <TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" /> <LineLabel label="template.common.operationSteps" />
<div class="template-form-item"> <div class="template-form-item">
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" <BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
@clickable="handleFormClickable"
@onSureModifyRecord="onSureModifyRecord"
@resetRecord="resetRecord"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" /> :formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
<CustomTable @blur="onHandleTableBlur"
:ref="`tableRef`" :columns="tableStepColumns"
:formData="formData" :prefixKey="`table`" fieldItemLabel="template.common.operationSteps">
<CustomTable
@blur="onHandleTableBlur"
:ref="`stepTableRef`"
:columns="tableStepColumns"
:formData="formData"
:prefixKey = "`table`"
@clickable="handleClickable"
fieldItemLabel = "template.common.operationSteps"
>
<template slot="operation" slot-scope="{ row, rowIndex, columns }"> <template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion <TableOpertaion
:fillType="fillType" :fillType="fillType"
@ -42,6 +48,8 @@
</div> </div>
</div> </div>
</div> </div>
<SelectReagentDialog @submit="onSelectReagentSubmit" ref="selectReagentDialogRef">
</SelectReagentDialog>
<!-- <button @click="onSave">保存</button> --> <!-- <button @click="onSave">保存</button> -->
</div> </div>
</template> </template>
@ -53,14 +61,15 @@ import TableList from "@/components/Template/Table";
import Step from "@/components/Template/Step"; import Step from "@/components/Template/Step";
import templateMixin from "../../mixins/templateMixin"; import templateMixin from "../../mixins/templateMixin";
import CustomTable from '@/components/Template/CustomTable.vue'; import CustomTable from '@/components/Template/CustomTable.vue';
import { getLatestSn } from '@/api/template';
import { getLatestSnArr } 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 SelectReagentDialog from '../../dialog/SelectReagentDialog.vue';
import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js"; import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js";
import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue"
export default { export default {
name: "PCR001",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable },
name: "PCR002",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog },
mixins: [templateMixin], mixins: [templateMixin],
props: { props: {
fillType: { fillType: {
@ -70,7 +79,7 @@ export default {
}, },
computed: { computed: {
tableStepColumns() { tableStepColumns() {
return getLadderColumnsConfig(this);
return getLadderColumnsConfig(this, 'business_pcr_gzy');
}, },
// //
storageFormConfig() { storageFormConfig() {
@ -233,32 +242,118 @@ export default {
}, },
data() { data() {
return { return {
formData: {}
reagentType: null, // 1- 2-
formData: {},
currentSubKey: "",//key
currentType: "",//
currentRowIndex: "",//
}; };
}, },
mounted() { mounted() {
const formData = this.getFormDataByTemplateData(); const formData = this.getFormDataByTemplateData();
if(this.fillType === "actFill"){
if (this.fillType === "actFill") {
this.getCode(formData); this.getCode(formData);
} }
}, },
methods: { methods: {
//
onSureModifyRecord(key) {
if (key === "subStartSolution") {//table
this.$refs.stepTableRef.updateRecords();
}
},
resetRecord() {
this.$refs.stepTableRef.resetRecord();
},
//
handleFormClickable(obj) {
if (this.fillType === "preFill") {
return;
}
console.log(obj)
const subKey = obj.subKey;
if (subKey === "subStartSolution" || subKey === "subSolution") {//
this.$refs.selectReagentDialogRef.show(this.formData.id)
this.currentSubKey = subKey;
this.reagentType = 1;
}
},
//
handleClickable(col, rowIndex) {
//
this.reagentType = 2
this.rowIndex = rowIndex
this.currentSubKey = col.prop;
console.log("clickable",rowIndex, col)
if(col.prop === "sjry"){
//-
this.$refs.selectReagentDialogRef.show(this.formData.id)
}
},
//
onSelectReagentSubmit(code,row){
if(this.reagentType===1){
this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code);
//
if(this.currentSubKey == 'subStartSolution') {
this.$refs.stepFormPackageRef.updateFormData("targetAcSolution", row.nd + row.nddw);
this.updateStepTableData(row);
}
}else{
this.$refs.stepTableRef.updateDataSourceByRowIndex(this.rowIndex,{
[this.currentSubKey]: code,
})
}
this.$refs.selectReagentDialogRef.onCancel()
},
//table
updateStepTableData(row) {
const { stepTableFormData = [] } = this.$refs.stepTableRef.getFilledFormData();
//
const newStepTableData = JSON.parse(JSON.stringify(stepTableFormData));
//
for (let i = 0; i < newStepTableData.length; i++) {
const item = newStepTableData[i];
if (i === 0) {
// row.code
newStepTableData[i].startSolutionCode = row.bh;
} else {
// targetSolutionCode
// targetSolutionCode
newStepTableData[i].startSolutionCode = newStepTableData[i - 1].targetSolutionCode + newStepTableData[i - 1].subTargetSolutionCode;
}
console.log(item, row, 'updateStepTableData')
const volResult = this.updateSjmbrynd(item, row.nd);
console.log(volResult, 'volResult')
if (!volResult) {
continue
}
item.actSolutionVolume = volResult.actVol;
item.actSolutionConcentration = volResult.actNd;
item.actSolutionExpire = row.sxr;
}
this.$refs.stepTableRef.updateDataSource(newStepTableData);
// tableRef
},
// //
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
async getCode(v) {
const { stepTableFormData = [] } = v;
if (stepTableFormData && stepTableFormData.length > 0 && !stepTableFormData[0].bhCode) {
let postSn = [] let postSn = []
for(let i=0;i<stepTableFormData.length;i++){
for (let i = 0; i < stepTableFormData.length; i++) {
postSn.push({ postSn.push({
pre:stepTableFormData[i].targetSolutionCode,
type:1
pre: stepTableFormData[i].targetSolutionCode,
type: 1
}) })
} }
const result = await getLatestSnArr(postSn) const result = await getLatestSnArr(postSn)
if(result.code == 200){
for(let i=0;i<stepTableFormData.length;i++){
this.$refs.tableRef.updateDataSourceByRowIndex(i,{
if (result.code == 200) {
for (let i = 0; i < stepTableFormData.length; i++) {
this.$refs.stepTableRef.updateDataSourceByRowIndex(i, {
subTargetSolutionCode: result.data[i], subTargetSolutionCode: result.data[i],
}) })
} }
@ -276,11 +371,11 @@ export default {
}, },
// //
getFilledFormData() { getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"])
return this.getFilledFormDataByRefs(["baseInfoRef", "stepFormPackageRef","stepTableRef", "stepRef", "remarkRef"])
}, },
// //
async getFormData() { async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"]);
let content = await this.validFormFields(["baseInfoRef", "stepFormPackageRef", "stepTableRef", "stepRef", "remarkRef"]);
//resource //resource
let tmpResource = [] let tmpResource = []
if (this.fillType === "actFill") { if (this.fillType === "actFill") {
@ -316,6 +411,82 @@ export default {
console.log(content); console.log(content);
}, },
//
deleteRow(rowIndex) {
const stepTableRef = this.$refs['stepTableRef'];
if (stepTableRef) {
stepTableRef.deleteRow(rowIndex);
}
},
configComplete(val) {
if (val.rowData.sjjzxql === '' || val.rowData.sjjzxql === undefined || val.rowData.sjryxql === '' || val.rowData.sjryxql === undefined) {
this.$message.error("表格内容未填完")
return
}
console.log("完成配置数据:" + JSON.stringify(val))
const { total, unit } = addTj([val.rowData.sjjzxql, val.rowData.sjryxql], [val.headerSelectFields.sjjzxqlUnit, val.headerSelectFields.sjryxqlUnit])
let postData = {
mc: null,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.rowData.bh + val.rowData.bhCode,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
kc: total,
kcdw: unit,
}
console.log("完成配置提交数据:" + JSON.stringify(postData))
sj_configurationCompleted(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
startConfig(val) {
console.log("开始配置数据:" + JSON.stringify(val))
let postData = {
bh: val.rowData.bh + val.rowData.bhCode,
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
}
console.log("开始配置提交数据:" + JSON.stringify(postData))
sj_startConfiguration(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
},
subPackageSubmit(val) {
console.log("分装数据:" + JSON.stringify(val))
if (val.fzsj.fzList && val.fzsj.fzList.length > 0) {
let list = []
for (let i = 0; i < val.fzsj.fzList.length; i++) {
let item = val.fzsj.fzList[i]
list.push({
bh: val.fzsj.mybh + item.preCode,
kc: item.num,
kcdw: val.fzsj.dw,
})
}
let postData = {
studyId: this.formData.studyId,
studyFormId: this.formData.id,
studySubjectId: this.formData.studySubjectId,
bh: val.fzsj.mybh,
nd: val.rowData.hhwznd,
nddw: val.headerSelectFields.hhwzndUnit,
list: list
}
console.log("分装提交数据:" + JSON.stringify(postData))
sj_subpackage(postData).then(() => {
}).catch(() => {
})
.finally(() => {
})
}
},
} }
}; };
</script> </script>

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

@ -17,7 +17,7 @@
<LineLabel label="template.common.operationSteps" /> <LineLabel label="template.common.operationSteps" />
<div class="template-form-item"> <div class="template-form-item">
<el-button class="print-btn" v-if="fillType === 'actFill'" type="primary" <el-button class="print-btn" v-if="fillType === 'actFill'" type="primary"
@click="printTag">标签打印</el-button>
@click="printTag">{{ $t('template.common.bqdy') }}</el-button>
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" <BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" /> :formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
</div> </div>

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

@ -9,6 +9,7 @@
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" <BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" /> ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> <TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" /> <TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition" <BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef" label="template.common.storageCondition" ref="storageConditionRef"
@ -16,7 +17,7 @@
<LineLabel label="template.common.operationSteps" /> <LineLabel label="template.common.operationSteps" />
<div class="template-form-item"> <div class="template-form-item">
<el-button class="print-btn" v-if="fillType === 'actFill'" type="primary" <el-button class="print-btn" v-if="fillType === 'actFill'" type="primary"
@click="printTag">标签打印</el-button>
@click="printTag">{{ $t('template.common.bqdy') }}</el-button>
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" <BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" /> :formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
</div> </div>

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

@ -3,12 +3,13 @@
<div> <div>
<div class="detail-container"> <div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc || <div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
"生物样品标曲工作液制备表" }}<img src="@/assets/images/detail-title.png" /></div>
$t('template.sp.sp003.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content"> <div class="detail-content">
<div class="content"> <div class="content">
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" <BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" /> ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> <TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" /> <TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<!-- <BaseInfoFormPackage label="存储条件" ref="storageConditionRef" :formConfig="storageFormConfig" <!-- <BaseInfoFormPackage label="存储条件" ref="storageConditionRef" :formConfig="storageFormConfig"
:formData="formData" /> --> :formData="formData" /> -->

+ 14
- 13
src/views/business/comps/template/comps/sp/SP00456.vue View File

@ -9,14 +9,15 @@
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" <BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo"
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" /> ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" />
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> <TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" />
<TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" />
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" /> <TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" />
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition" <BaseInfoFormPackage fieldItemLabel="template.common.storageCondition"
label="template.common.storageCondition" ref="storageConditionRef" label="template.common.storageCondition" ref="storageConditionRef"
:formConfig="storageFormConfig" :formData="formData" /> :formConfig="storageFormConfig" :formData="formData" />
<LineLabel label="template.common.operationSteps" /> <LineLabel label="template.common.operationSteps" />
<div v-if="fillType === 'preFill'" class="mt-20"> <div v-if="fillType === 'preFill'" class="mt-20">
<el-button type="primary" @click="handleAddParalle">新增平行配制</el-button>
<el-button type="primary" @click="handleAddLadder">新增阶梯配制</el-button>
<el-button type="primary" @click="handleAddParalle">{{ $t('template.common.xzpxpz') }}</el-button>
<el-button type="primary" @click="handleAddLadder">{{ $t('template.common.xzjtpz') }}</el-button>
</div> </div>
<!-- 阶梯配制区域 --> <!-- 阶梯配制区域 -->
@ -24,18 +25,18 @@
<div class="template-form-item"> <div class="template-form-item">
<div class="config-header"> <div class="config-header">
<div>阶梯配制</div>
<div>{{ $t('template.common.jtpz') }}</div>
<el-button v-if="fillType === 'preFill'" type="text" icon="el-icon-delete" <el-button v-if="fillType === 'preFill'" type="text" icon="el-icon-delete"
@click="deleteLadderConfig(ladderIndex)">删除</el-button>
@click="deleteLadderConfig(ladderIndex)">{{ $t('template.common.deleteBtn') }}</el-button>
</div> </div>
<BaseInfoFormPackage @clickable="(e) => handleClickable('ladder', ladderIndex, e)" <BaseInfoFormPackage @clickable="(e) => handleClickable('ladder', ladderIndex, e)"
@resetRecord="(e) => resetRecord('ladder', ladderIndex, e)" @resetRecord="(e) => resetRecord('ladder', ladderIndex, e)"
@onSureModifyRecord="(e) => onSureModifyRecord('ladder', ladderIndex, e)" @onSureModifyRecord="(e) => onSureModifyRecord('ladder', ladderIndex, e)"
:ref="`ladderStepFormPackageRef_${ladderIndex}`" :formConfig="ladderStepFormConfig" :ref="`ladderStepFormPackageRef_${ladderIndex}`" :formConfig="ladderStepFormConfig"
:formData="ladderConfig" fieldItemLabel="阶梯配制" :prefixKey="'ladder_' + ladderIndex" />
:formData="ladderConfig" :fieldItemLabel="$t('template.common.jtpz')" :prefixKey="'ladder_' + ladderIndex" />
<CustomTable @blur="(e) => onHandleTableBlur('ladder', ladderIndex, e)" <CustomTable @blur="(e) => onHandleTableBlur('ladder', ladderIndex, e)"
:ref="`ladderStepTableRef_${ladderIndex}`" :showOperation="fillType === 'actFill'" :columns="ladderStepColumns" :ref="`ladderStepTableRef_${ladderIndex}`" :showOperation="fillType === 'actFill'" :columns="ladderStepColumns"
:formData="ladderConfig" :prefixKey="'ladder_' + ladderIndex" fieldItemLabel="阶梯配制">
:formData="ladderConfig" :prefixKey="'ladder_' + ladderIndex" :fieldItemLabel="$t('template.common.jtpz')">
<template slot="operation" slot-scope="{ row, rowIndex, columns }"> <template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion @printTag="(e) => printTag(e, 'ladderConfigs', ladderIndex)" <TableOpertaion @printTag="(e) => printTag(e, 'ladderConfigs', ladderIndex)"
@startConfig="(val) => startConfig(val, 'ladderConfigs', ladderIndex)" @startConfig="(val) => startConfig(val, 'ladderConfigs', ladderIndex)"
@ -48,28 +49,28 @@
</CustomTable> </CustomTable>
<Step class="mt-0 s-container" :ref="`ladderStepRef_${ladderIndex}`" <Step class="mt-0 s-container" :ref="`ladderStepRef_${ladderIndex}`"
:formData="ladderConfig.ladderStepData" fieldItemLabel="阶梯配制"
:formData="ladderConfig.ladderStepData" :fieldItemLabel="$t('template.common.jtpz')"
:prefixKey="'ladder_' + ladderIndex"></Step> :prefixKey="'ladder_' + ladderIndex"></Step>
</div> </div>
</div> </div>
<!-- 平行配制区域 --> <!-- 平行配制区域 -->
<div label="平行配制" v-for="(paralleConfig, paralleIndex) in formData.paralleConfigs"
<div :label="$t('template.common.pxpz')" v-for="(paralleConfig, paralleIndex) in formData.paralleConfigs"
:key="'paralle_' + paralleIndex"> :key="'paralle_' + paralleIndex">
<div class="template-form-item"> <div class="template-form-item">
<div class="config-header"> <div class="config-header">
<div>平行配制</div>
<div>{{ $t('template.common.pxpz') }}</div>
<el-button v-if="fillType === 'preFill'" type="text" icon="el-icon-delete" <el-button v-if="fillType === 'preFill'" type="text" icon="el-icon-delete"
@click="deleteParalleConfig(paralleIndex)">删除</el-button>
@click="deleteParalleConfig(paralleIndex)">{{ $t('template.common.deleteBtn') }}</el-button>
</div> </div>
<BaseInfoFormPackage @clickable="(e) => handleClickable('paralle', paralleIndex, e)" <BaseInfoFormPackage @clickable="(e) => handleClickable('paralle', paralleIndex, e)"
:ref="`paralleStepFormPackageRef_${paralleIndex}`" :formConfig="paralleStepFormConfig" :ref="`paralleStepFormPackageRef_${paralleIndex}`" :formConfig="paralleStepFormConfig"
:formData="paralleConfig" :prefixKey="'paralle' + paralleIndex" fieldItemLabel="平行配制" />
:formData="paralleConfig" :prefixKey="'paralle' + paralleIndex" :fieldItemLabel="$t('template.common.pxpz')" />
<CustomTable @blur="(e) => onHandleTableBlur('paralle', paralleIndex, e)" <CustomTable @blur="(e) => onHandleTableBlur('paralle', paralleIndex, e)"
:ref="`paralleStepTableRef_${paralleIndex}`" :showOperation="fillType === 'actFill'" :columns="paralleStepColumns" :ref="`paralleStepTableRef_${paralleIndex}`" :showOperation="fillType === 'actFill'" :columns="paralleStepColumns"
@clickable="(e, tableRowIndex, rowData) => handleTableClickable('paralle', paralleIndex, e, tableRowIndex, rowData)" @clickable="(e, tableRowIndex, rowData) => handleTableClickable('paralle', paralleIndex, e, tableRowIndex, rowData)"
:formData="paralleConfig" :prefixKey="'paralle' + paralleIndex" fieldItemLabel="平行配制">
:formData="paralleConfig" :prefixKey="'paralle' + paralleIndex" :fieldItemLabel="$t('template.common.pxpz')">
<template slot="operation" slot-scope="{ row, rowIndex, columns }"> <template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion @printTag="(e) => printTag(e, 'paralleConfigs', paralleIndex)" <TableOpertaion @printTag="(e) => printTag(e, 'paralleConfigs', paralleIndex)"
@startConfig="(val) => startConfig(val, 'paralleConfigs', paralleIndex)" @startConfig="(val) => startConfig(val, 'paralleConfigs', paralleIndex)"
@ -82,7 +83,7 @@
</CustomTable> </CustomTable>
<Step class="mt-0 s-container" :ref="`paralleStepRef_${paralleIndex}`" <Step class="mt-0 s-container" :ref="`paralleStepRef_${paralleIndex}`"
:formData="paralleConfig.paralleStepData" fieldItemLabel="平行配制"
:formData="paralleConfig.paralleStepData" :fieldItemLabel="$t('template.common.pxpz')"
:prefixKey="'paralle' + paralleIndex"></Step> :prefixKey="'paralle' + paralleIndex"></Step>
</div> </div>
</div> </div>

+ 6
- 3
src/views/business/comps/template/formConfig/PCRTableConfig.js View File

@ -1,15 +1,17 @@
// 阶梯配置表格列配置 // 阶梯配置表格列配置
export const getLadderColumnsConfig = ($this) => {
export const getLadderColumnsConfig = ($this, selectKey) => {
return [ return [
{ {
label: 'template.pcr.pcr002.mbrybh', label: 'template.pcr.pcr002.mbrybh',
prop: 'targetSolutionCode', prop: 'targetSolutionCode',
bodyType: 'input',
bodyType: selectKey === '' ? 'input' : 'select',
bodyOptions: $this.getDictOptions(selectKey),
otherCode: 'bhOther',
bodySubType: 'span', bodySubType: 'span',
bodySubKey: 'subTargetSolutionCode', bodySubKey: 'subTargetSolutionCode',
bodyFillType: 'preFill', bodyFillType: 'preFill',
width: 280, width: 280,
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段
myCodeFields: ["targetSolutionCode", "bhOther", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段 maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段 maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
}, },
@ -17,6 +19,7 @@ export const getLadderColumnsConfig = ($this) => {
label: 'template.pcr.pcr002.qsrybh', label: 'template.pcr.pcr002.qsrybh',
prop: 'startSolutionCode', prop: 'startSolutionCode',
width: 280, width: 280,
bodyDisabled: true,
bodyType: 'input', bodyType: 'input',
bodyFillType: 'actFill', bodyFillType: 'actFill',
bodyMaxlength: 10 bodyMaxlength: 10

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

@ -24,7 +24,8 @@ export default {
'business_sp_xzxytyx', //色谱-编号-选择性与特异性 'business_sp_xzxytyx', //色谱-编号-选择性与特异性
'business_sp_zdybs', //色谱-编号-最大样本数 'business_sp_zdybs', //色谱-编号-最大样本数
'business_sp_xskkx', //色谱-编号-稀释可靠性 'business_sp_xskkx', //色谱-编号-稀释可靠性
'business_sp_cbydb' //色谱-编号-储备液对比
'business_sp_cbydb', //色谱-编号-储备液对比
'business_pcr_gzy', // PCR-编号-工作液
], ],
props: { props: {
templateData: { templateData: {
@ -53,11 +54,11 @@ export default {
} = v } = v
if (v.resource) { if (v.resource) {
//type 类型:1:试剂;3:给药制剂;5:麻精药;7:供试品 //type 类型:1:试剂;3:给药制剂;5:麻精药;7:供试品
//试验试剂信息 试剂
//试验试剂信息 试剂
this.resource = _.filter(JSON.parse(v.resource),function(o){ this.resource = _.filter(JSON.parse(v.resource),function(o){
return o.type==1||o.elnType==1 return o.type==1||o.elnType==1
}) })
//试验物资信息 供试品、给药制剂
//试验物资信息 供试品、给药制剂
this.resourceWz =_.filter(JSON.parse(v.resource),function(o){ this.resourceWz =_.filter(JSON.parse(v.resource),function(o){
return o.type==3||o.type==7||o.elnType==3||o.elnType==7 return o.type==3||o.type==7||o.elnType==3||o.elnType==7
}) })
@ -381,6 +382,7 @@ export default {
//计算并更新实际目标溶液浓度 先计算实际目标溶液体积再计算实际目标溶液浓度 //计算并更新实际目标溶液浓度 先计算实际目标溶液体积再计算实际目标溶液浓度
updateSjmbrynd(item, targetAcSolution) { updateSjmbrynd(item, targetAcSolution) {
console.log(item, targetAcSolution, 'updateSjmbrynd')
//实际源溶液浓度÷(实际终体积÷源溶液加入体积); //实际源溶液浓度÷(实际终体积÷源溶液加入体积);
const precision = item.actSolutionConcentrationPrecision const precision = item.actSolutionConcentrationPrecision
const volPrecision = item.actSolutionVolumePrecision || 0 const volPrecision = item.actSolutionVolumePrecision || 0

+ 7
- 0
src/views/business/form/drug/comp/enter.vue View File

@ -61,6 +61,12 @@ export default {
this.tabList.push({ key: 'wzlb', name: 'page.business.study.studyEnter.wzlb' }) this.tabList.push({ key: 'wzlb', name: 'page.business.study.studyEnter.wzlb' })
} }
this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :'' this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :''
if(this.active){
let name = this.tabList[_.findIndex(this.tabList,(o)=>{return o.key===this.active})].name
if(name){
this.saveSimpleLog({name:this.$t(name,'zh_CN'),nameEn:this.$t(name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
}
}
}, },
getInfo(){ getInfo(){
this.$modal.loading() this.$modal.loading()
@ -80,6 +86,7 @@ export default {
}, },
changeTab(item) { changeTab(item) {
if (this.active !== item.key) { if (this.active !== item.key) {
this.saveSimpleLog({name:this.$t(item.name,'zh_CN'),nameEn:this.$t(item.name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
this.active = item.key this.active = item.key
} }
} }

+ 2
- 1
src/views/business/form/drug/comp/tbbdList.vue View File

@ -110,7 +110,7 @@
@click="edit(scope.row)" v-hasPermi="['business:drugFormFill:bj']">{{ @click="edit(scope.row)" v-hasPermi="['business:drugFormFill:bj']">{{
$t('form.edit') }}</el-button> $t('form.edit') }}</el-button>
<!-- 复核 --> <!-- 复核 -->
<el-button type="text" v-if="scope.row.bdzt === 3&&id!=scope.row.userId" @click="fh(scope.row)"
<el-button type="text" v-if="scope.row.bdzt === 3&&(id!=scope.row.userId||id<=103)" @click="fh(scope.row)"
v-hasPermi="['business:drugFormFill:fh']">{{ v-hasPermi="['business:drugFormFill:fh']">{{
$t('page.business.study.studyFormFill.fh') }}</el-button> $t('page.business.study.studyFormFill.fh') }}</el-button>
<!-- 加签 --> <!-- 加签 -->
@ -330,6 +330,7 @@ export default {
let params = caesarCipher(JSON.stringify({ let params = caesarCipher(JSON.stringify({
url: this.$route.fullPath, url: this.$route.fullPath,
studyId: this.searchForm.studyId, studyId: this.searchForm.studyId,
studyType: 10,
formId: null formId: null
})) }))
this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/drug/formFillBj/' + params) this.$tab.openPage(this.$t('page.business.study.studyFormFill.xzbd'), '/drug/formFillBj/' + params)

+ 5
- 4
src/views/business/form/drug/comp/ytbdList.vue View File

@ -96,13 +96,13 @@
<template v-else> <template v-else>
<!-- 有权限审核 --> <!-- 有权限审核 -->
<el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:drugFormPre:sh']" <el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:drugFormPre:sh']"
v-if="scope.row.bdzt === 3&&id!=scope.row.userId">{{ $t('page.business.form.audit') }}</el-button>
v-if="scope.row.bdzt === 3&&(id!=scope.row.userId||id<=103)">{{ $t('page.business.form.audit') }}</el-button>
</template> </template>
</template> </template>
<template v-else> <template v-else>
<!-- 有权限审核 --> <!-- 有权限审核 -->
<el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:drugFormPre:sh']" <el-button type="text" @click="audit(scope.row)" v-hasPermi="['business:drugFormPre:sh']"
v-if="scope.row.bdzt === 3&&id!=scope.row.userId">{{ $t('page.business.form.audit') }}</el-button>
v-if="scope.row.bdzt === 3&&(id!=scope.row.userId||id<=103)">{{ $t('page.business.form.audit') }}</el-button>
</template> </template>
<template v-if="scope.row.bdzt === 5&&id==scope.row.userId"> <template v-if="scope.row.bdzt === 5&&id==scope.row.userId">
<el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi') }}</el-button> <el-button type="text" @click="gb(scope.row)">{{ $t('page.business.study.studyFormPre.guanbi') }}</el-button>
@ -291,7 +291,7 @@ export default {
checkRole, checkRole,
copy() { copy() {
this.$modal.loading() this.$modal.loading()
studyFormPre_studyList().then(response => {
studyFormPre_studyList({type:10}).then(response => {
this.studyList = response.data this.studyList = response.data
this.formXz.studyId = null this.formXz.studyId = null
this.formXz.formPreId = null this.formXz.formPreId = null
@ -303,7 +303,7 @@ export default {
}) })
}, },
previewFzbd() { previewFzbd() {
this.$modal.loading()
this.$modal.loading()
studyFormPre_info({ id: this.formXz.formPreId }).then(response => { studyFormPre_info({ id: this.formXz.formPreId }).then(response => {
this.formDatePreview = _.merge({}, response.data, { this.formDatePreview = _.merge({}, response.data, {
studySn: this.searchForm.studySn, studySn: this.searchForm.studySn,
@ -402,6 +402,7 @@ export default {
studySn: this.searchForm.studySn, studySn: this.searchForm.studySn,
studyMc: this.searchForm.studyMc, studyMc: this.searchForm.studyMc,
studyId: this.searchForm.studyId, studyId: this.searchForm.studyId,
studyType: 10,
permitForSecectUser: 'business:drugFormPre:sh' permitForSecectUser: 'business:drugFormPre:sh'
}) })
}, },

+ 2
- 0
src/views/business/form/drug/list.vue View File

@ -239,11 +239,13 @@ export default {
this.getList() this.getList()
}, },
enter(row){ enter(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'进入麻精药表单',jcmcEn:'Enter Controlled Drug'})
this.$tab.openPage(" ", '/drug/enter/' + row.id+'/ytbd') this.$tab.openPage(" ", '/drug/enter/' + row.id+'/ytbd')
// this.showType = 'enter' // this.showType = 'enter'
// this.$refs.enter.show(row) // this.$refs.enter.show(row)
}, },
detail(row){ detail(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'麻精药表单详情',jcmcEn:'Controlled Drug Detail'})
this.showType = 'detail' this.showType = 'detail'
this.$refs.detail.show(row) this.$refs.detail.show(row)
}, },

+ 7
- 0
src/views/business/form/nonTrial/comp/enter.vue View File

@ -61,6 +61,12 @@ export default {
this.tabList.push({ key: 'syff', name: 'page.business.study.studyEnter.pzfflb' }) this.tabList.push({ key: 'syff', name: 'page.business.study.studyEnter.pzfflb' })
} }
this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :'' this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :''
if(this.active){
let name = this.tabList[_.findIndex(this.tabList,(o)=>{return o.key===this.active})].name
if(name){
this.saveSimpleLog({name:this.$t(name,'zh_CN'),nameEn:this.$t(name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
}
}
}, },
getInfo(){ getInfo(){
this.$modal.loading() this.$modal.loading()
@ -80,6 +86,7 @@ export default {
}, },
changeTab(item) { changeTab(item) {
if (this.active !== item.key) { if (this.active !== item.key) {
this.saveSimpleLog({name:this.$t(item.name,'zh_CN'),nameEn:this.$t(item.name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
this.active = item.key this.active = item.key
} }
} }

+ 2
- 0
src/views/business/form/nonTrial/list.vue View File

@ -239,11 +239,13 @@ export default {
this.getList() this.getList()
}, },
enter(row){ enter(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'进入非试验表单',jcmcEn:'Enter Non-study'})
this.$tab.openPage(" ", '/nonTrial/enter/' + row.id+'/ytbd') this.$tab.openPage(" ", '/nonTrial/enter/' + row.id+'/ytbd')
// this.showType = 'enter' // this.showType = 'enter'
// this.$refs.enter.show(row) // this.$refs.enter.show(row)
}, },
detail(row){ detail(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'非试验表单详情',jcmcEn:'Non-study Detail'})
this.showType = 'detail' this.showType = 'detail'
this.$refs.detail.show(row) this.$refs.detail.show(row)
}, },

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

@ -34,7 +34,7 @@
<!-- 规格单位 --> <!-- 规格单位 -->
<el-col :span="4"> <el-col :span="4">
<BusinessSelect v-model="form.ggdw" <BusinessSelect v-model="form.ggdw"
dictType="system_business_nddw,system_business_zldw,system_business_tjdw"></BusinessSelect>
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>

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

@ -12,7 +12,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<BusinessSelectVue dictType="system_business_nddw,system_business_zldw,system_business_tjdw" v-model="form.kcdw" />
<BusinessSelectVue dictType="business_nddw,business_zldw,business_tjdw" v-model="form.kcdw" />
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>

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

@ -34,7 +34,7 @@
<!-- 规格单位 --> <!-- 规格单位 -->
<el-col :span="4"> <el-col :span="4">
<BusinessSelect v-model="form.ggdw" <BusinessSelect v-model="form.ggdw"
dictType="system_business_nddw,system_business_zldw,system_business_tjdw"></BusinessSelect>
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -47,7 +47,7 @@
<!-- 库存量单位 --> <!-- 库存量单位 -->
<el-col :span="4"> <el-col :span="4">
<BusinessSelect v-model="form.kcdw" <BusinessSelect v-model="form.kcdw"
dictType="system_business_nddw,system_business_zldw,system_business_tjdw"></BusinessSelect>
dictType="business_nddw,business_zldw,business_tjdw"></BusinessSelect>
</el-col> </el-col>
<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">

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

@ -27,7 +27,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<BusinessSelect dictType="system_business_zldw" v-model="form.nndw" />
<BusinessSelect dictType="business_nddw" v-model="form.nddw" />
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<!-- 失效日 --> <!-- 失效日 -->
@ -43,13 +43,13 @@
<el-col :span="12"> <el-col :span="12">
<!-- 存储条件 --> <!-- 存储条件 -->
<el-form-item :label="$t('page.business.resource.sj.cctj')" prop="cctj"> <el-form-item :label="$t('page.business.resource.sj.cctj')" prop="cctj">
<BusinessSelect dictType="system_business_cctj" v-model="form.cctj" />
<BusinessSelect dictType="business_cctj" v-model="form.cctj" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<!-- 存储位置 --> <!-- 存储位置 -->
<el-form-item :label="$t('page.business.resource.sj.ccwz')" prop="ccwz"> <el-form-item :label="$t('page.business.resource.sj.ccwz')" prop="ccwz">
<BusinessSelect dictType="system_business_ccwz" v-model="form.ccwz" />
<BusinessSelect dictType="business_ccwz" v-model="form.ccwz" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -95,7 +95,7 @@
</template> </template>
<script> <script>
import { sj_bj } from "@/api/business/sj/sj"
import { sj_bj, sj_info } from "@/api/business/sj/sj"
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import SelectList from "./SelectList"; import SelectList from "./SelectList";
import BusinessSelect from '@/views/business/comps/select/BusinessSelect'; import BusinessSelect from '@/views/business/comps/select/BusinessSelect';
@ -105,7 +105,6 @@ export default {
components: { SelectList, BusinessSelect }, components: { SelectList, BusinessSelect },
data() { data() {
return { return {
isBatch: false,
ids: [], ids: [],
selectList: [], selectList: [],
open: false, open: false,
@ -127,36 +126,33 @@ export default {
created() { created() {
}, },
methods: { methods: {
showBatch(val) {
this.reset()
this.isBatch = true
this.form.ids = val.map(item => item.id)
this.selectList = val
this.open = true
},
cancel() { cancel() {
this.open = false this.open = false
}, },
reset() { reset() {
this.form = { this.form = {
id: null, id: null,
ids: null,
mc: null, mc: null,
bh: null, bh: null,
nd: null,
nddw: null,
sxr: null,
cctj: null,
ccwz: null,
qmyy: this.$t('form.edit'), qmyy: this.$t('form.edit'),
qmrmm: null
qmrmm: null,
qmbz: null
} }
this.resetForm("form") this.resetForm("form")
}, },
show(row) { show(row) {
this.reset() this.reset()
this.isBatch = false
this.form.ids = []
this.selectList = []
this.form.id = row.id
this.form.mc = row.mc
this.form.bh = row.bh
this.open = true
sj_info({id: row.id}).then(response => {
this.form = response.data
console.log(this.form)
this.open = true
})
}, },
save() { save() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {

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

@ -75,6 +75,12 @@ export default {
this.tabList.push({ key: 'syj', name: 'page.business.study.studyEnter.syjsygl' }) this.tabList.push({ key: 'syj', name: 'page.business.study.studyEnter.syjsygl' })
} }
this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :'' this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :''
if(this.active){
let name = this.tabList[_.findIndex(this.tabList,(o)=>{return o.key===this.active})].name
if(name){
this.saveSimpleLog({name:this.$t(name,'zh_CN'),nameEn:this.$t(name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
}
}
}, },
getInfo(){ getInfo(){
this.$modal.loading() this.$modal.loading()
@ -94,6 +100,7 @@ export default {
}, },
changeTab(item) { changeTab(item) {
if (this.active !== item.key) { if (this.active !== item.key) {
this.saveSimpleLog({name:this.$t(item.name,'zh_CN'),nameEn:this.$t(item.name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
this.active = item.key this.active = item.key
} }
} }

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

@ -28,6 +28,8 @@
<el-button type="primary" @click="next">{{ $t('page.business.study.studyFormFill.next') }}</el-button> <el-button type="primary" @click="next">{{ $t('page.business.study.studyFormFill.next') }}</el-button>
</template> </template>
<template v-else> <template v-else>
<el-button @click="showYjcc" v-if="form.templateShowYjcc==10">{{ $t('page.business.study.studyFormFill.yjcc')
}}</el-button>
<el-button @click="showSave">{{ $t('page.business.study.studyFormFill.save') }}</el-button> <el-button @click="showSave">{{ $t('page.business.study.studyFormFill.save') }}</el-button>
<el-button type="primary" @click="showApprove">{{ $t('page.business.study.studyFormFill.submit') <el-button type="primary" @click="showApprove">{{ $t('page.business.study.studyFormFill.submit')
}}</el-button> }}</el-button>
@ -42,7 +44,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="bdmbTitle" prop="templateId"> <el-form-item :label="bdmbTitle" prop="templateId">
<SelectTemplate v-model="form.templateId" :disabled="form.id && form.id !== ''" <SelectTemplate v-model="form.templateId" :disabled="form.id && form.id !== ''"
:name="form.templateMc" @change="selectTemplateChange" :needPre="1" />
:name="form.templateMc" :studyType="studyType" @change="selectTemplateChange" :needPre="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -223,6 +225,96 @@
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :title="$t('page.business.study.studyFormFill.yjcc')" :visible.sync="openYjcc" width="1200px"
append-to-body :close-on-click-modal="false">
<el-form ref="formYjcc" :model="formYjcc" :rules="rulesYjcc" label-width="120px" v-if="openYjcc">
<div class="sbzdtcma"> <input type="text"> <input type="password" show-password> </div>
<el-row>
<el-col :psna="24">
<el-form-item>
<div>
<el-button type="primary" @click="addCcYj" style="margin-left: 10px;">{{
$t('page.business.study.studyFormFill.tjcc') }}</el-button>
</div>
<template>
<div v-if="cclistYj.length > 0">
<el-card class="box-card" v-for="(citem, cindex) in cclistYj" :key="'cz' + cindex"
style="margin-top: 10px;">
<div slot="header" class="clearfix">
<div style="display: flex;justify-content: space-between;">
<div style="display: flex;">
<div style="display: flex;">
<div> 存储条件</div>
<div>
<BusinessSelect v-model="citem.cctj" dictType="business_cctj" style="width: 200px;">
</BusinessSelect>
</div>
</div>
<div style="display: flex; margin-left: 10px;">
<div> 存储位置</div>
<div>
<BusinessSelect v-model="citem.ccwz" dictType="business_ccwz" style="width: 200px;">
</BusinessSelect>
</div>
</div>
</div>
<div>
<el-button type="danger" icon="el-icon-delete" v-if="cclistYj.length > 1" circle
@click="delccYj(cindex)"></el-button>
</div>
</div>
</div>
<el-checkbox-group v-model="citem.list">
<el-checkbox :label="item.bh" v-for="item in resourceYj" :key="'icz' + item.bh"
:disabled="getDisabledCcYj(item.bh, cindex)"></el-checkbox>
</el-checkbox-group>
</el-card>
</div>
</template>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="$t('form.qmyy')" prop="qmyy">
<el-input type="text" :value="formYjcc.qmyy" 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.remark')" prop="remark">
<el-input type="textarea" v-model="formYjcc.remark" :rows="5" maxlength="500"
:placeholder="$t('form.placeholderInput')">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<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.password')" prop="qmrmm">
<div class="sbzdtcma"> <input type="text"></div>
<el-input type="password" show-password v-model="formYjcc.qmrmm" maxlength="20"
:placeholder="$t('form.placeholderInput')" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="yjcc">{{ $t('form.confirm') }}</el-button>
<el-button @click="openYjcc = false">{{ $t('form.cancel') }}</el-button>
</div>
</el-dialog>
<el-dialog :title="$t('page.business.study.studyFormFill.bcjl')" :visible.sync="openSave" width="600px" <el-dialog :title="$t('page.business.study.studyFormFill.bcjl')" :visible.sync="openSave" width="600px"
append-to-body :close-on-click-modal="false"> append-to-body :close-on-click-modal="false">
<el-form ref="formSave" :model="formSave" :rules="rulesSave" label-width="120px" v-if="openSave"> <el-form ref="formSave" :model="formSave" :rules="rulesSave" label-width="120px" v-if="openSave">
@ -271,7 +363,7 @@
</template> </template>
<script> <script>
import { studyFormFill_bc, studyFormFill_bcOnly, studyFormFill_updateBdnr, studyFormFill_tj, studyFormFill_info, studyFormFill_updateFhyjjl } from "@/api/business/study/studyFormFill"
import { studyFormFill_bc,studyFormFill_yjcc, studyFormFill_bcOnly, studyFormFill_updateBdnr, studyFormFill_tj, studyFormFill_info, studyFormFill_updateFhyjjl } from "@/api/business/study/studyFormFill"
import { study_info } from "@/api/business/study/study" import { study_info } from "@/api/business/study/study"
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import SelectTemplate from "@/views/business/comps/select/SelectTemplate"; import SelectTemplate from "@/views/business/comps/select/SelectTemplate";
@ -307,8 +399,10 @@ export default {
}, },
czlist: [], czlist: [],
cclist: [], cclist: [],
cclistYj: [],
openSave: false, openSave: false,
openApprove: false, openApprove: false,
openYjcc: false,
formSave: { formSave: {
qmyy: this.$t('page.business.study.studyFormFill.txbbc'), qmyy: this.$t('page.business.study.studyFormFill.txbbc'),
remark: '', remark: '',
@ -331,6 +425,22 @@ export default {
ccwz: '', ccwz: '',
ccids: '', ccids: '',
}, },
formYjcc: {
id: null,
qmyy: this.$t('page.business.study.studyFormFill.yjcc'),
remark: '',
resource: '',
qmrmm: '',
sfcz: false,
czfs: '',
czfsqt: '',
czids: '',
sfcc: false,
cctj: '',
ccwz: '',
ccids: '',
},
resourceYj: [],
resource: [], resource: [],
yqResource: [], yqResource: [],
bdmbTitle: this.$t('page.business.form.bdmb'), bdmbTitle: this.$t('page.business.form.bdmb'),
@ -348,7 +458,8 @@ export default {
trigger: 'blur' trigger: 'blur'
}] }]
}, },
templateData: {}
templateData: {},
studyType: null
} }
}, },
computed: { computed: {
@ -387,6 +498,9 @@ export default {
delcc(index) { delcc(index) {
this.cclist.splice(index, 1) this.cclist.splice(index, 1)
}, },
delccYj(index) {
this.cclistYj.splice(index, 1)
},
delcz(index) { delcz(index) {
this.czlist.splice(index, 1) this.czlist.splice(index, 1)
}, },
@ -403,12 +517,20 @@ export default {
ccwz: '' ccwz: ''
}) })
}, },
addCcYj() {
this.cclistYj.push({
list: [],
cctj: '',
ccwz: ''
})
},
getInfo() { getInfo() {
let key = this.$route.params.key let key = this.$route.params.key
if (key && key != undefined && key != '') { if (key && key != undefined && key != '') {
let params = null let params = null
try { try {
params = JSON.parse(caesarDecipher(this.$route.params.key)) params = JSON.parse(caesarDecipher(this.$route.params.key))
this.studyType = params.studyType || null
} catch (e) { } catch (e) {
console.log('参数错误') console.log('参数错误')
} }
@ -474,6 +596,20 @@ export default {
} }
return mark return mark
}, },
getDisabledCcYj(bh, idx) {
let mark = false
for (var i = 0; i < this.cclistYj.length; i++) {
if (idx != i) {
for (var j = 0; j < this.cclistYj[i].list.length; j++) {
if (this.cclistYj[i].list[j] == bh) {
mark = true;
break
}
}
}
}
return mark
},
sfczChange() { sfczChange() {
if (!this.formApprove.sfcz) { if (!this.formApprove.sfcz) {
this.czlist = [] this.czlist = []
@ -496,6 +632,33 @@ export default {
that.openApprove = true that.openApprove = true
} }
}, },
async showYjcc() {
let that = this
let content = await that.$refs.templateTable.getFormData()
if (content) {
that.resetYjcc()
that.formYjcc.id = that.form.id
this.cclistYj = []
that.addCcYj()
that.resourceYj = that.$refs.templateTable.getResource()
that.openYjcc = true
}
},
resetYjcc() {
this.formYjcc = {
id: null,
qmyy: this.$t('page.business.study.studyFormFill.yjcc'),
remark: '',
bdnr: '',
resource: '',
qmrmm: '',
sfcz: false,
czlist: '',
sfcc: false,
cclist: '',
}
this.resetForm("formYjcc")
},
resetApprove() { resetApprove() {
this.formApprove = { this.formApprove = {
id: null, id: null,
@ -618,6 +781,23 @@ export default {
} }
}) })
}, },
yjcc() {
let that = this
this.$refs["formYjcc"].validate(valid => {
if (valid) {
that.$modal.loading()
that.formYjcc.resource = JSON.stringify(that.resource)
that.formApprove.cclist = JSON.stringify(that.cclistYj)
studyFormFill_yjcc(that.formApprove).then(response => {
that.openApprove = false
that.$modal.closeLoading()
that.cancelSave()
}).finally(() => {
that.$modal.closeLoading()
})
}
})
},
tj() { tj() {
let that = this let that = this
this.$refs["formApprove"].validate(valid => { this.$refs["formApprove"].validate(valid => {

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

@ -42,7 +42,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="$t('page.business.form.bdmb')" prop="templateId"> <el-form-item :label="$t('page.business.form.bdmb')" prop="templateId">
<SelectTemplate v-model="form.templateId" :disabled="form.id && form.id !== ''" :needPre="10" <SelectTemplate v-model="form.templateId" :disabled="form.id && form.id !== ''" :needPre="10"
:name="form.templateMc" @change="selectTemplateChange" />
:name="form.templateMc" :studyType="studyType" @change="selectTemplateChange" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -185,7 +185,8 @@ export default {
}] }]
}, },
templateData: {}
templateData: {},
studyType:null
} }
}, },
computed: { computed: {
@ -263,6 +264,7 @@ export default {
edit(row) { edit(row) {
this.reset() this.reset()
this.permitForSecectUser = row.permitForSecectUser this.permitForSecectUser = row.permitForSecectUser
this.studyType = row.studyType||null
if (row && row.id) { if (row && row.id) {
this.showIndex = 2 this.showIndex = 2
this.$modal.loading() this.$modal.loading()
@ -311,7 +313,6 @@ export default {
let content = await this.$refs.templateTable.getFormData() let content = await this.$refs.templateTable.getFormData()
if (content) { if (content) {
this.form.bdnr = JSON.stringify(content) this.form.bdnr = JSON.stringify(content)
debugger
this.openSubmit = true this.openSubmit = true
} }
}, },

+ 2
- 0
src/views/business/study/list.vue View File

@ -238,12 +238,14 @@ export default {
this.getList() this.getList()
}, },
enter(row){ enter(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'进入试验',jcmcEn:'Enter Study'})
this.$tab.openPage(" ", '/study/enter/' + row.id+'/ytbd') this.$tab.openPage(" ", '/study/enter/' + row.id+'/ytbd')
// this.showType = 'enter' // this.showType = 'enter'
// this.$refs.enter.show(row) // this.$refs.enter.show(row)
}, },
detail(row){ detail(row){
this.saveSimpleLog({name:row.name+'('+row.sn+')',nameEn:row.name+'('+row.sn+')',jcmc:'试验详情',jcmcEn:'Study Detail'})
this.showType = 'detail' this.showType = 'detail'
this.$refs.detail.show(row) this.$refs.detail.show(row)
}, },

+ 7
- 0
src/views/business/systemLog/list.vue View File

@ -48,9 +48,16 @@ export default {
this.tabList.push({ key: 'dlrz', name: 'page.system.systemLog.dlrz' }) this.tabList.push({ key: 'dlrz', name: 'page.system.systemLog.dlrz' })
} }
this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :'' this.active = this.$route.params.tab && _.findIndex(this.tabList,(o)=>{return o.key===this.$route.params.tab})>-1 ? this.$route.params.tab: this.tabList.length>0 ? this.tabList[0].key :''
if(this.active){
let name = this.tabList[_.findIndex(this.tabList,(o)=>{return o.key===this.active})].name
if(name){
this.saveSimpleLog({name:this.$t(name,'zh_CN'),nameEn:this.$t(name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
}
}
}, },
changeTab(item) { changeTab(item) {
if (this.active !== item.key) { if (this.active !== item.key) {
this.saveSimpleLog({name:this.$t(item.name,'zh_CN'),nameEn:this.$t(item.name,'en_US'),jcmc:this.$t('system.enterPage','zh_CN'),jcmcEn:this.$t('system.enterPage','en_US')})
this.active = item.key this.active = item.key
} }
} }

+ 24
- 0
src/views/business/template/list.vue View File

@ -123,6 +123,24 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24">
<el-form-item label="填报显示药剂存储按钮:" prop="showYjcc">
<el-select v-model="infoDialog.formData.showYjcc" :placeholder="$t('form.placeholderSelect')" style="width:100%">
<el-option label="否" :value="1" />
<el-option label="是" :value="10" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="所属试验类型:" prop="studyType">
<el-select v-model="infoDialog.formData.studyType" :placeholder="$t('form.placeholderSelect')" style="width:100%">
<el-option label="试验" :value="1" />
<el-option label="非试验" :value="5" />
<el-option label="麻精药表单" :value="10" />
<el-option label="全部" :value="20" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="pdf导出大小:" prop="pdfSize"> <el-form-item label="pdf导出大小:" prop="pdfSize">
<el-select v-model="infoDialog.formData.pdfSize" :placeholder="$t('form.placeholderSelect')" style="width:100%"> <el-select v-model="infoDialog.formData.pdfSize" :placeholder="$t('form.placeholderSelect')" style="width:100%">
@ -244,6 +262,12 @@ export default {
pdfSize: [ pdfSize: [
{ required: true, message:'请选择', trigger: "change" } { required: true, message:'请选择', trigger: "change" }
], ],
showYjcc: [
{ required: true, message:'请选择', trigger: "change" }
],
studyType: [
{ required: true, message:'请选择', trigger: "change" }
],
}, },
}, },
tableDialog: { tableDialog: {

Loading…
Cancel
Save