Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing Details

uat_us
caiyiling 2024-05-17 15:45:43 +08:00
commit 456ff203bb
4 changed files with 1329 additions and 696 deletions

View File

@ -5,7 +5,7 @@
ref="readingRulesForm" ref="readingRulesForm"
v-loading="loading" v-loading="loading"
:model="form" :model="form"
style="width:800px;" style="width: 800px"
:rules="rules" :rules="rules"
label-width="340px" label-width="340px"
size="small" size="small"
@ -17,7 +17,10 @@
> >
<el-radio-group <el-radio-group
v-model="form.ImagePlatform" v-model="form.ImagePlatform"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.ImagePlatform" v-for="item of $d.ImagePlatform"
@ -36,7 +39,10 @@
> >
<el-radio-group <el-radio-group
v-model="form.ReadingTool" v-model="form.ReadingTool"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.ReadingTool" v-for="item of $d.ReadingTool"
@ -47,13 +53,91 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!--支持影像下载-->
<el-form-item
:label="$t('trials:processCfg:form:ReadingImageDownload')"
prop="ReadingImageDownload"
v-if="CriterionType === 0"
>
<el-radio-group
v-model="form.ReadingImageDownload"
:disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
>
<el-radio
v-for="item of $d.ReadingImageDownload"
:key="item.id"
:label="item.value"
>
{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!--支持上传DICOM影像-->
<el-form-item
:label="$t('trials:processCfg:form:ReadingImageUpload')"
prop="ReadingImageUpload"
v-if="CriterionType === 0"
>
<el-radio-group
v-model="form.ReadingImageUpload"
:disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
>
<el-radio
v-for="item of $d.ReadingImageUpload"
:key="item.id"
:label="item.value"
>
{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 影像模态 -->
<el-form-item
:label="$t('trials:readingUnit:readingRules:title:CriterionModalitys')"
prop="CriterionModalitys"
style="position: relative"
>
<el-checkbox-group
v-model="CriterionModalitys"
:disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
>
<el-checkbox v-for="item in modalityList" :label="item" :key="item">{{
item
}}</el-checkbox>
</el-checkbox-group>
<el-button
v-if="
!isConfirm &&
hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
size="mini"
style="position: absolute; top: 0; right: -10px"
@click.stop="handleCheckAllChange"
type="success"
>{{
$t("trials:readingUnit:readingRules:title:CriterionModalitysAll")
}}</el-button
>
</el-form-item>
<el-form-item <el-form-item
:label="$t('trials:consistencyAnalysis:table:isUrgent')" :label="$t('trials:consistencyAnalysis:table:isUrgent')"
prop="DigitPlaces" prop="DigitPlaces"
> >
<el-radio-group <el-radio-group
v-model="form.IsUrgent" v-model="form.IsUrgent"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -71,7 +155,10 @@
> >
<el-radio-group <el-radio-group
v-model="form.IsAdditionalAssessment" v-model="form.IsAdditionalAssessment"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -89,7 +176,10 @@
> >
<el-radio-group <el-radio-group
v-model="form.IsAutoCreate" v-model="form.IsAutoCreate"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -106,10 +196,15 @@
> >
<el-radio-group <el-radio-group
v-model="form.ReadingType" v-model="form.ReadingType"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
@change="() => { isConfirm ||
form.IsArbitrationReading = false !hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
}" "
@change="
() => {
form.IsArbitrationReading = false;
}
"
> >
<el-radio <el-radio
v-for="item of $d.ReadingMethod" v-for="item of $d.ReadingMethod"
@ -127,13 +222,19 @@
> >
<el-radio-group <el-radio-group
v-model="form.IsReadingPeriod" v-model="form.IsReadingPeriod"
:disabled="isConfirm || IsMustGlobalReading || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
@change="(v) => { isConfirm ||
IsMustGlobalReading ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
@change="
(v) => {
if (!v) { if (!v) {
form.IsGlobalReading = v form.IsGlobalReading = v;
form.IsOncologyReading = v form.IsOncologyReading = v;
} }
}" }
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -150,7 +251,12 @@
> >
<el-radio-group <el-radio-group
v-model="form.IsGlobalReading" v-model="form.IsGlobalReading"
:disabled="!form.IsReadingPeriod || IsMustGlobalReading || isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
!form.IsReadingPeriod ||
IsMustGlobalReading ||
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -167,7 +273,11 @@
> >
<el-radio-group <el-radio-group
v-model="form.IsArbitrationReading" v-model="form.IsArbitrationReading"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])) || form.ReadingType !== 2" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit']) ||
form.ReadingType !== 2
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -184,7 +294,12 @@
> >
<el-radio-group <el-radio-group
v-model="form.IsOncologyReading" v-model="form.IsOncologyReading"
:disabled="!form.IsReadingPeriod || !form.IsSystemSetOncology || isConfirm || !hasPermi(['trials:trials-panel:setting:reading-unit:edit'])" :disabled="
!form.IsReadingPeriod ||
!form.IsSystemSetOncology ||
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -197,22 +312,29 @@
</el-form-item> </el-form-item>
<!-- 任务展示方式 --> <!-- 任务展示方式 -->
<el-form-item <el-form-item
:label="$t('trials:readingUnit:readingRules:title:readingTaskViewInOrder')" :label="
$t('trials:readingUnit:readingRules:title:readingTaskViewInOrder')
"
prop="IsReadingTaskViewInOrder" prop="IsReadingTaskViewInOrder"
> >
<el-radio-group <el-radio-group
v-model="form.IsReadingTaskViewInOrder" v-model="form.IsReadingTaskViewInOrder"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
@change="(v) => { isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
@change="
(v) => {
if (v) { if (v) {
form.IsReadingShowSubjectInfo = true form.IsReadingShowSubjectInfo = true;
form.IsReadingShowPreviousResults = true form.IsReadingShowPreviousResults = true;
form.ReadingTaskViewEnum = 0 form.ReadingTaskViewEnum = 0;
form.IseCRFShowInDicomReading = false form.IseCRFShowInDicomReading = false;
} else { } else {
form.ReadingTaskViewEnum = 2 form.ReadingTaskViewEnum = 2;
} }
}" }
"
> >
<el-radio <el-radio
v-for="item of $d.IsReadingTaskViewInOrder" v-for="item of $d.IsReadingTaskViewInOrder"
@ -230,7 +352,12 @@
> >
<el-radio-group <el-radio-group
v-model="form.ReadingTaskViewEnum" v-model="form.ReadingTaskViewEnum"
:disabled="isConfirm || !isReadingTaskViewInOrder || isReadingTaskViewInOrder || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!isReadingTaskViewInOrder ||
isReadingTaskViewInOrder ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.ReadingTaskViewEnum" v-for="item of $d.ReadingTaskViewEnum"
@ -243,16 +370,22 @@
</el-form-item> </el-form-item>
<!-- IR阅片页面是否显示受试者信息 --> <!-- IR阅片页面是否显示受试者信息 -->
<el-form-item <el-form-item
:label="$t('trials:readingUnit:readingRules:title:isReadingShowSubjectInfo')" :label="
$t('trials:readingUnit:readingRules:title:isReadingShowSubjectInfo')
"
prop="IsReadingShowSubjectInfo" prop="IsReadingShowSubjectInfo"
> >
<el-radio-group <el-radio-group
v-model="form.IsReadingShowSubjectInfo" v-model="form.IsReadingShowSubjectInfo"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])) || form.IsReadingTaskViewInOrder" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit']) ||
form.IsReadingTaskViewInOrder
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
:key="'IsReadingShowSubjectInfo'+item.value" :key="'IsReadingShowSubjectInfo' + item.value"
:label="item.value" :label="item.value"
> >
{{ item.label }} {{ item.label }}
@ -261,21 +394,31 @@
</el-form-item> </el-form-item>
<!-- IR阅片页面是否可以查看既往任务结果 --> <!-- IR阅片页面是否可以查看既往任务结果 -->
<el-form-item <el-form-item
:label="$t('trials:readingUnit:readingRules:title:isReadingShowPreviousResults')" :label="
$t(
'trials:readingUnit:readingRules:title:isReadingShowPreviousResults'
)
"
prop="IsReadingShowPreviousResults" prop="IsReadingShowPreviousResults"
> >
<el-radio-group <el-radio-group
v-model="form.IsReadingShowPreviousResults" v-model="form.IsReadingShowPreviousResults"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])) || form.IsReadingTaskViewInOrder" :disabled="
@change="(v) => { isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit']) ||
form.IsReadingTaskViewInOrder
"
@change="
(v) => {
if (!v) { if (!v) {
form.IseCRFShowInDicomReading = true form.IseCRFShowInDicomReading = true;
} }
}" }
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
:key="'IsReadingShowPreviousResults'+item.value" :key="'IsReadingShowPreviousResults' + item.value"
:label="item.value" :label="item.value"
> >
{{ item.label }} {{ item.label }}
@ -284,12 +427,18 @@
</el-form-item> </el-form-item>
<!-- eCRF是否显示在影像阅片页面 --> <!-- eCRF是否显示在影像阅片页面 -->
<el-form-item <el-form-item
:label="$t('trials:readingUnit:readingRules:title:isECRFShowInDicomReading')" :label="
$t('trials:readingUnit:readingRules:title:isECRFShowInDicomReading')
"
prop="IseCRFShowInDicomReading" prop="IseCRFShowInDicomReading"
> >
<el-radio-group <el-radio-group
v-model="form.IseCRFShowInDicomReading" v-model="form.IseCRFShowInDicomReading"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])) || !form.IsReadingShowPreviousResults" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit']) ||
!form.IsReadingShowPreviousResults
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -307,7 +456,10 @@
> >
<el-radio-group <el-radio-group
v-model="form.DigitPlaces" v-model="form.DigitPlaces"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
<el-radio <el-radio
v-for="item of $d.DigitPlaces" v-for="item of $d.DigitPlaces"
@ -318,15 +470,49 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:trials-panel:setting:reading-unit:TrialCriterionAdditionalAssessmentTypeList')" v-if="form.IsAdditionalAssessment && form.TrialCriterionAdditionalAssessmentTypeList && form.TrialCriterionAdditionalAssessmentTypeList.length > 0"> <el-form-item
:label="
$t(
'trials:trials-panel:setting:reading-unit:TrialCriterionAdditionalAssessmentTypeList'
)
"
v-if="
form.IsAdditionalAssessment &&
form.TrialCriterionAdditionalAssessmentTypeList &&
form.TrialCriterionAdditionalAssessmentTypeList.length > 0
"
>
</el-form-item> </el-form-item>
<el-form-item v-for="item of form.TrialCriterionAdditionalAssessmentTypeList" :prop="`AdditionalAssessmentType${item.Id}`" :rules="[ <template v-for="item of form.TrialCriterionAdditionalAssessmentTypeList">
{ required:true,message: $t('common:ruleMessage:select'), trigger: ['blur']}, <el-form-item
]" :label="$fd('AdditionalAssessmentType', item.AdditionalAssessmentType)" v-if="form.IsAdditionalAssessment && form.TrialCriterionAdditionalAssessmentTypeList"> :key="item.Id"
:prop="`AdditionalAssessmentType${item.Id}`"
:rules="[
{
required: true,
message: $t('common:ruleMessage:select'),
trigger: ['blur'],
},
]"
:label="
$fd('AdditionalAssessmentType', item.AdditionalAssessmentType)
"
v-if="
form.IsAdditionalAssessment &&
form.TrialCriterionAdditionalAssessmentTypeList
"
>
<el-radio-group <el-radio-group
v-model="item.IsSelected" v-model="item.IsSelected"
:disabled="isConfirm || (!hasPermi(['trials:trials-panel:setting:reading-unit:edit']))" :disabled="
@change="(v) => {$set(form, 'AdditionalAssessmentType' + item.Id, v)}" isConfirm ||
!hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
@change="
(v) => {
$set(form, 'AdditionalAssessmentType' + item.Id, v);
}
"
> >
<el-radio <el-radio
v-for="item of $d.YesOrNo" v-for="item of $d.YesOrNo"
@ -337,36 +523,42 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:reading-unit:edit'])"> </template>
<!-- 保存 --> <el-form-item
<el-button v-if="
type="primary" !isConfirm &&
@click="handleSave(true)" hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
"
> >
{{ $t('common:button:save') }} <!-- 保存 -->
<el-button type="primary" @click="handleSave(true)">
{{ $t("common:button:save") }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
import { getCriterionReadingInfo, setCriterionReadingInfo } from "@/api/trials";
import { getCriterionReadingInfo, setCriterionReadingInfo, getTrialCriterionAdditionalAssessmentOptionList } from '@/api/trials'
export default { export default {
name: 'ReadingRules', name: "ReadingRules",
props: { props: {
trialReadingCriterionId: { trialReadingCriterionId: {
type: String, type: String,
default() { default() {
return '' return "";
} },
} },
CriterionType: {
type: Number,
default: 0,
},
}, },
data() { data() {
return { return {
additionalAssessmentOptionList: [], additionalAssessmentOptionList: [],
form: { form: {
TrialId: '', TrialId: "",
ImagePlatform: null, ImagePlatform: null,
ReadingTool: 0, ReadingTool: 0,
ReadingTaskViewEnum: null, ReadingTaskViewEnum: null,
@ -391,57 +583,155 @@ export default {
CriterionType: null, CriterionType: null,
AdditionalAssessmentType: null, AdditionalAssessmentType: null,
IsUrgent: false, IsUrgent: false,
TrialCriterionAdditionalAssessmentTypeList: [] TrialCriterionAdditionalAssessmentTypeList: [],
CriterionModalitys: null,
ReadingImageDownload: null,
ReadingImageUpload: null,
}, },
rules: { rules: {
IsAutoCreate: [ IsAutoCreate: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsAdditionalAssessment: [ IsAdditionalAssessment: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
ImagePlatform: [ ImagePlatform: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
ReadingTool: [ ReadingTool: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
ReadingImageDownload: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
ReadingImageUpload: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
ReadingTaskViewEnum: [ ReadingTaskViewEnum: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsImageLabeled: [ IsImageLabeled: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsReadingShowSubjectInfo: [ IsReadingShowSubjectInfo: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsReadingShowPreviousResults: [ IsReadingShowPreviousResults: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
ReadingType: [ ReadingType: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsReadingTaskViewInOrder: [ IsReadingTaskViewInOrder: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsGlobalReading: [ IsGlobalReading: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsArbitrationReading: [ IsArbitrationReading: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsOncologyReading: [ IsOncologyReading: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
DigitPlaces: [ DigitPlaces: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IseCRFShowInDicomReading: [ IseCRFShowInDicomReading: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
], ],
IsReadingPeriod: [ IsReadingPeriod: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } {
] required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
CriterionModalitys: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
{
validator: (rule, value, callback) => {
if (value && Array.isArray(value) && value.length < 0) {
callback(new Error(this.$t("common:ruleMessage:select")));
} else {
callback();
}
},
trigger: ["blur", "change"],
},
],
// IsReadingTaskViewInOrder: [ // IsReadingTaskViewInOrder: [
// { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] } // { required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
// ] // ]
@ -451,17 +741,32 @@ export default {
isConfirm: true, isConfirm: true,
isReadingTaskViewInOrder: null, isReadingTaskViewInOrder: null,
IsMustGlobalReading: false, IsMustGlobalReading: false,
IsNotReadingShowSubjectInfoChange: false IsNotReadingShowSubjectInfoChange: false,
}
modalityList: [],
CriterionModalitys: [],
};
}, },
mounted() { mounted() {
this.initPage() this.initPage();
console.log(this.$d.GlobalAssessType) },
watch: {
CriterionModalitys: {
handler() {
this.form.CriterionModalitys = this.CriterionModalitys.join("|");
},
deep: true,
},
}, },
methods: { methods: {
//
handleCheckAllChange() {
this.CriterionModalitys =
this.CriterionModalitys.length <= 0 ? this.modalityList : [];
},
initPage() { initPage() {
this.loading = true this.loading = true;
const trialId = this.$route.query.trialId const trialId = this.$route.query.trialId;
// getTrialCriterionAdditionalAssessmentOptionList(this.trialReadingCriterionId).then(res => { // getTrialCriterionAdditionalAssessmentOptionList(this.trialReadingCriterionId).then(res => {
// this.additionalAssessmentOptionList = res.Result // this.additionalAssessmentOptionList = res.Result
// if (this.additionalAssessmentOptionList.length > 0) { // if (this.additionalAssessmentOptionList.length > 0) {
@ -469,34 +774,49 @@ export default {
// this.$set(this.form, 'AdditionalAssessmentType'+v.Id, v.IsSelected) // this.$set(this.form, 'AdditionalAssessmentType'+v.Id, v.IsSelected)
// }) // })
// } // }
getCriterionReadingInfo({ trialId, TrialReadingCriterionId: this.trialReadingCriterionId }).then(res => { getCriterionReadingInfo({
this.loading = false trialId,
TrialReadingCriterionId: this.trialReadingCriterionId,
})
.then((res) => {
this.loading = false;
this.modalityList = res.Result.TrialModalitys.split("|").filter(
(item) => item && item.trim()
);
for (const k in this.form) { for (const k in this.form) {
if (res.Result.hasOwnProperty(k)) { if (res.Result.hasOwnProperty(k)) {
this.form[k] = res.Result[k] this.form[k] = res.Result[k];
} }
} }
console.log(this.form.TrialCriterionAdditionalAssessmentTypeList) this.CriterionModalitys = this.form.CriterionModalitys.split("|");
this.form.TrialCriterionAdditionalAssessmentTypeList.forEach(v => { this.form.TrialCriterionAdditionalAssessmentTypeList.forEach((v) => {
this.$set(v, 'IsSelected', v.IsSelected || false) this.$set(v, "IsSelected", v.IsSelected || false);
this.$set(this.form, 'AdditionalAssessmentType'+v.Id, v.IsSelected) this.$set(
}) this.form,
this.isReadingTaskViewInOrder = res.Result.IsReadingTaskViewInOrder "AdditionalAssessmentType" + v.Id,
this.isConfirm = res.Result.IsSign v.IsSelected
this.IsMustGlobalReading = res.Result.IsMustGlobalReading );
this.$emit('setConfirm', res.Result.IsSign) });
this.$emit('setArbitrationReading', res.Result.IsArbitrationReading) this.isReadingTaskViewInOrder = res.Result.IsReadingTaskViewInOrder;
this.$emit('setAdditionalAssessment', this.form.IsAdditionalAssessment) this.isConfirm = res.Result.IsSign;
this.$emit('setIsClinicalReading', res.Result.IsClinicalReading) this.IsMustGlobalReading = res.Result.IsMustGlobalReading;
this.$emit('setGlobalReading', res.Result.IsGlobalReading) this.$emit("setConfirm", res.Result.IsSign);
this.$emit('setOncologyReading', res.Result.IsOncologyReading) this.$emit("setArbitrationReading", res.Result.IsArbitrationReading);
this.$emit('setDigitPlaces', res.Result.DigitPlaces) this.$emit(
"setAdditionalAssessment",
this.form.IsAdditionalAssessment
);
this.$emit("setIsClinicalReading", res.Result.IsClinicalReading);
this.$emit("setGlobalReading", res.Result.IsGlobalReading);
this.$emit("setOncologyReading", res.Result.IsOncologyReading);
this.$emit("setDigitPlaces", res.Result.DigitPlaces);
if (res.Result.ReadingType === 1) { if (res.Result.ReadingType === 1) {
this.$emit('setArbitrationReading', false) this.$emit("setArbitrationReading", false);
} }
}).catch(() => {
this.loading = false
}) })
.catch(() => {
this.loading = false;
});
// }).catch(() => { // }).catch(() => {
// this.loading = false // this.loading = false
// }) // })
@ -504,47 +824,56 @@ export default {
// //
handleSave(isPrompt = true) { handleSave(isPrompt = true) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.$refs['readingRulesForm'].validate((valid) => { this.$refs["readingRulesForm"].validate((valid) => {
if (!valid) { if (!valid) {
resolve(false) resolve(false);
} else { } else {
this.loading = true this.loading = true;
if (this.form.ReadingType === 1) { if (this.form.ReadingType === 1) {
this.form.IsArbitrationReading = false this.form.IsArbitrationReading = false;
} }
// //
this.form.TrialReadingCriterionId = this.trialReadingCriterionId this.form.TrialReadingCriterionId = this.trialReadingCriterionId;
setCriterionReadingInfo(this.form).then(res => { setCriterionReadingInfo(this.form)
this.loading = false .then((res) => {
this.$emit('reloadArbitrationRules') this.loading = false;
this.$emit('setArbitrationReading', this.form.IsArbitrationReading) this.$emit("reloadArbitrationRules");
this.$emit('setAdditionalAssessment', this.form.IsAdditionalAssessment) this.$emit(
this.$emit('setIsClinicalReading', this.form.IsClinicalReading) "setArbitrationReading",
this.$emit('setGlobalReading', this.form.IsGlobalReading) this.form.IsArbitrationReading
this.$emit('setOncologyReading', this.form.IsOncologyReading) );
this.$emit('setDigitPlaces', this.form.DigitPlaces) this.$emit(
"setAdditionalAssessment",
this.form.IsAdditionalAssessment
);
this.$emit("setIsClinicalReading", this.form.IsClinicalReading);
this.$emit("setGlobalReading", this.form.IsGlobalReading);
this.$emit("setOncologyReading", this.form.IsOncologyReading);
this.$emit("setDigitPlaces", this.form.DigitPlaces);
if (this.form.ReadingType === 1) { if (this.form.ReadingType === 1) {
this.$emit('setArbitrationReading', false) this.$emit("setArbitrationReading", false);
} }
if (res.IsSuccess && isPrompt) { if (res.IsSuccess && isPrompt) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(
this.$t("common:message:savedSuccessfully")
);
} }
resolve(true) resolve(true);
}).catch(_ => {
this.loading = false
resolve(false)
}) })
.catch((_) => {
this.loading = false;
resolve(false);
});
} }
}) });
}) });
} },
},
} };
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.reading-rule-config-form{ .reading-rule-config-form {
.fontColor{ .fontColor {
color: red; color: red;
} }
} }

View File

@ -15,13 +15,14 @@
clearable clearable
@change="((val)=>{qsTypeChange(val, form)})" @change="((val)=>{qsTypeChange(val, form)})"
> >
<template v-for="item of $d.Criterion_Question_Type">
<el-option <el-option
v-for="item of $d.Criterion_Question_Type"
v-if="item.value !== 'calculation' && item.value !== 'increment'" v-if="item.value !== 'calculation' && item.value !== 'increment'"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
:label="item.label" :label="item.label"
/> />
</template>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -95,14 +96,15 @@
<el-radio-group <el-radio-group
v-model="form.ValueType" v-model="form.ValueType"
> >
<template v-for="item of $d.ValueType">
<el-radio <el-radio
v-for="item of $d.ValueType"
v-if="item.value !== 3" v-if="item.value !== 3"
:key="item.id" :key="item.id"
:label="item.value" :label="item.value"
> >
{{ item.label }} {{ item.label }}
</el-radio> </el-radio>
</template>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -126,7 +128,7 @@
<el-radio-group <el-radio-group
v-model="form.Unit" v-model="form.Unit"
> >
<el-radio v-for="item of $d.ValueUnit" :label="item.value">{{ item.label }}</el-radio> <el-radio v-for="item of $d.ValueUnit" :label="item.value" :key="item.id">{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- 数值单位 --> <!-- 数值单位 -->
@ -441,7 +443,7 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:readingUnit:qsList:title:limitEdit')"> <el-form-item :label="$t('trials:readingUnit:qsList:title:limitEdit')">
<el-radio-group v-model="form.LimitEdit"> <el-radio-group v-model="form.LimitEdit">
<el-radio v-for="item of $d.LimitEdit" :label="item.value">{{ item.label }}</el-radio> <el-radio v-for="item of $d.LimitEdit" :label="item.value" :key="item.id">{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</div> </div>

View File

@ -3,8 +3,12 @@
<div v-if="isShow" class="content"> <div v-if="isShow" class="content">
<el-tabs v-model="TrialReadingCriterionId" type="border-card"> <el-tabs v-model="TrialReadingCriterionId" type="border-card">
<template v-for="item of trialCriterionList"> <template v-for="item of trialCriterionList">
<el-tab-pane :key="item.TrialReadingCriterionId" :label="item.TrialReadingCriterionName" :name="item.TrialReadingCriterionId"> <el-tab-pane
<div style="text-align: right;padding-bottom: 10px"> :key="item.TrialReadingCriterionId"
:label="item.TrialReadingCriterionName"
:name="item.TrialReadingCriterionId"
>
<div style="text-align: right; padding-bottom: 10px">
<!-- 同步当前标准 --> <!-- 同步当前标准 -->
<el-button <el-button
type="primary" type="primary"
@ -14,15 +18,26 @@
v-if="!hasPermi(['role:admin'])" v-if="!hasPermi(['role:admin'])"
@click="syncSign" @click="syncSign"
> >
{{ $t('trials:readingUnit:button:sync') }} {{ $t("trials:readingUnit:button:sync") }}
</el-button> </el-button>
</div> </div>
<el-collapse v-model="activeCollapse" class="setting-config" v-if="item.isPaneShow && item.TrialReadingCriterionId === TrialReadingCriterionId" > <el-collapse
v-model="activeCollapse"
class="setting-config"
v-if="
item.isPaneShow &&
item.TrialReadingCriterionId === TrialReadingCriterionId
"
>
<!-- 阅片规则 --> <!-- 阅片规则 -->
<el-collapse-item :title="$t('trials:readingUnit:readingRules')" name="1"> <el-collapse-item
:title="$t('trials:readingUnit:readingRules')"
name="1"
>
<ReadingRules <ReadingRules
:ref="`readingRules${item.TrialReadingCriterionId}`" :ref="`readingRules${item.TrialReadingCriterionId}`"
:trial-reading-criterion-id="TrialReadingCriterionId" :trial-reading-criterion-id="TrialReadingCriterionId"
:CriterionType="item.CriterionType"
@setConfirm="setConfirm" @setConfirm="setConfirm"
@reloadArbitrationRules="reloadArbitrationRules" @reloadArbitrationRules="reloadArbitrationRules"
@setArbitrationReading="setArbitrationReading" @setArbitrationReading="setArbitrationReading"
@ -34,7 +49,10 @@
/> />
</el-collapse-item> </el-collapse-item>
<!-- 阅片标准 --> <!-- 阅片标准 -->
<el-collapse-item :title="$t('trials:readingUnit:readingCriterion')" name="2"> <el-collapse-item
:title="$t('trials:readingUnit:readingCriterion')"
name="2"
>
<ReadingCriterions <ReadingCriterions
:ref="`readingCriterions${item.TrialReadingCriterionId}`" :ref="`readingCriterions${item.TrialReadingCriterionId}`"
:trial-reading-criterion-id="TrialReadingCriterionId" :trial-reading-criterion-id="TrialReadingCriterionId"
@ -44,17 +62,38 @@
/> />
</el-collapse-item> </el-collapse-item>
<!-- 全局阅片 --> <!-- 全局阅片 -->
<el-collapse-item v-if="isGlobalReading && CriterionType !== 10" :title="$t('trials:readingUnit:GlobalReading')" name="5"> <el-collapse-item
<GlobalReading :ref="`globalReading${item.TrialReadingCriterionId}`" :trial-reading-criterion-id="TrialReadingCriterionId" /> v-if="isGlobalReading && CriterionType !== 10"
:title="$t('trials:readingUnit:GlobalReading')"
name="5"
>
<GlobalReading
:ref="`globalReading${item.TrialReadingCriterionId}`"
:trial-reading-criterion-id="TrialReadingCriterionId"
/>
</el-collapse-item> </el-collapse-item>
<!-- 仲裁规则 --> <!-- 仲裁规则 -->
<el-collapse-item v-if="isArbitrationReading" :title="$t('trials:readingUnit:adRules')" name="3"> <el-collapse-item
<ArbitrationRules :ref="`arbitrationRules${item.TrialReadingCriterionId}`" :trial-reading-criterion-id="TrialReadingCriterionId" /> v-if="isArbitrationReading"
:title="$t('trials:readingUnit:adRules')"
name="3"
>
<ArbitrationRules
:ref="`arbitrationRules${item.TrialReadingCriterionId}`"
:trial-reading-criterion-id="TrialReadingCriterionId"
/>
</el-collapse-item> </el-collapse-item>
<!-- 肿瘤学阅片配置 --> <!-- 肿瘤学阅片配置 -->
<!-- v-if="isClinicalReading" --> <!-- v-if="isClinicalReading" -->
<el-collapse-item v-if="isOncologyReading" :title="$t('trials:readingUnit:oncologyReading')" name="4"> <el-collapse-item
<OncologyForm :ref="`oncologyForm${item.TrialReadingCriterionId}`" :trial-reading-criterion-id="TrialReadingCriterionId" /> v-if="isOncologyReading"
:title="$t('trials:readingUnit:oncologyReading')"
name="4"
>
<OncologyForm
:ref="`oncologyForm${item.TrialReadingCriterionId}`"
:trial-reading-criterion-id="TrialReadingCriterionId"
/>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</el-tab-pane> </el-tab-pane>
@ -62,13 +101,16 @@
</el-tabs> </el-tabs>
</div> </div>
<div v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:reading-unit:edit'])" class="bottom"> <div
<!-- 确认 --> v-if="
<el-button !isConfirm &&
type="danger" hasPermi(['trials:trials-panel:setting:reading-unit:edit'])
@click="handleConfirm" "
class="bottom"
> >
{{ $t('trials:readingUnit:button:confirm') }} <!-- 确认 -->
<el-button type="danger" @click="handleConfirm">
{{ $t("trials:readingUnit:button:confirm") }}
</el-button> </el-button>
</div> </div>
@ -81,10 +123,16 @@
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
> >
<div slot="title"> <div slot="title">
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span> <span style="font-size: 18px">{{ $t("common:dialogTitle:sign") }}</span>
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span> <span style="font-size: 12px; margin-left: 5px">{{
`(${$t("common:label:sign")}${currentUser})`
}}</span>
</div> </div>
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" /> <SignForm
ref="signForm"
:sign-code-enum="signCode"
@closeDialog="closeSignDialog"
/>
</el-dialog> </el-dialog>
<!--签名框 --> <!--签名框 -->
<el-dialog <el-dialog
@ -95,41 +143,63 @@
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
> >
<div slot="title"> <div slot="title">
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span> <span style="font-size: 18px">{{ $t("common:dialogTitle:sign") }}</span>
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span> <span style="font-size: 12px; margin-left: 5px">{{
`(${$t("common:label:sign")}${currentUser})`
}}</span>
</div> </div>
<SignForm ref="signForm2" :sign-code-enum="signCode2" @closeDialog="closeSignDialog2" /> <SignForm
ref="signForm2"
:sign-code-enum="signCode2"
@closeDialog="closeSignDialog2"
/>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { resetAndAsyncCriterion, resetTrialCriterionAsyncState, asyncTrialCriterionDictionary, getTrialCriterionList, trialReadingInfoSign, trialReadingInfoSignVerify, verifyeCriterionNeedSynchronize, synchronizeCriterion } from '@/api/trials' import {
import ReadingRules from './components/ReadingRules' resetAndAsyncCriterion,
import ReadingCriterions from './components/ReadingCriterions' resetTrialCriterionAsyncState,
import ArbitrationRules from './components/ArbitrationRules' asyncTrialCriterionDictionary,
import GlobalReading from './components/GlobalReading' getTrialCriterionList,
import OncologyForm from './components/OncologyForm' trialReadingInfoSign,
import SignForm from '@/views/trials/components/newSignForm' trialReadingInfoSignVerify,
import const_ from '@/const/sign-code' verifyeCriterionNeedSynchronize,
synchronizeCriterion,
} from "@/api/trials";
import ReadingRules from "./components/ReadingRules";
import ReadingCriterions from "./components/ReadingCriterions";
import ArbitrationRules from "./components/ArbitrationRules";
import GlobalReading from "./components/GlobalReading";
import OncologyForm from "./components/OncologyForm";
import SignForm from "@/views/trials/components/newSignForm";
import const_ from "@/const/sign-code";
export default { export default {
name: 'ReadingUnit', name: "ReadingUnit",
components: { GlobalReading, ReadingRules, ReadingCriterions, ArbitrationRules, OncologyForm, SignForm }, components: {
GlobalReading,
ReadingRules,
ReadingCriterions,
ArbitrationRules,
OncologyForm,
SignForm,
},
data() { data() {
return { return {
NODE_ENV: process.env.NODE_ENV, NODE_ENV: process.env.NODE_ENV,
activeCollapse: ['1', '2', '3', '4', '5'], activeCollapse: ["1", "2", "3", "4", "5"],
signCode: null, signCode: null,
signCode2: null, signCode2: null,
signVisible: false, signVisible: false,
signVisible2: false, signVisible2: false,
currentUser: zzSessionStorage.getItem('userName'), currentUser: zzSessionStorage.getItem("userName"),
isConfirm: true, isConfirm: true,
loading: false, loading: false,
isArbitrationReading: false, isArbitrationReading: false,
isClinicalReading: false, isClinicalReading: false,
trialCriterionList: [], trialCriterionList: [],
TrialReadingCriterionId: '0', TrialReadingCriterionId: "0",
CriterionType: 0, CriterionType: 0,
trialId: this.$route.query.trialId, trialId: this.$route.query.trialId,
isPaneShow: true, isPaneShow: true,
@ -137,8 +207,8 @@ export default {
isOncologyReading: false, isOncologyReading: false,
isGlobalReading: false, isGlobalReading: false,
digitPlaces: 0, digitPlaces: 0,
isAdditionalAssessment: false isAdditionalAssessment: false,
} };
}, },
watch: { watch: {
async TrialReadingCriterionId(v) { async TrialReadingCriterionId(v) {
@ -150,254 +220,317 @@ export default {
// this.$nextTick(() => { // this.$nextTick(() => {
// this.trialCriterionList[i].isPaneShow = true // this.trialCriterionList[i].isPaneShow = true
// }) // })
} },
}, },
mounted() { mounted() {
this.getTrialCriterionList() this.getTrialCriterionList();
}, },
methods: { methods: {
closeSignDialog2(isSign, signInfo) { closeSignDialog2(isSign, signInfo) {
if (isSign) { if (isSign) {
this.handleSync(signInfo) this.handleSync(signInfo);
} else { } else {
this.signVisible2 = false this.signVisible2 = false;
} }
}, },
syncSign() { syncSign() {
const { ResetAndAsyncCriterion } = const_.processSignature const { ResetAndAsyncCriterion } = const_.processSignature;
this.signCode2 = ResetAndAsyncCriterion this.signCode2 = ResetAndAsyncCriterion;
this.signVisible2 = true this.signVisible2 = true;
}, },
handleSync(signInfo) { handleSync(signInfo) {
// '' // ''
this.loading = true this.loading = true;
const params = { const params = {
data: { data: {
TrialReadingCriterionId: this.TrialReadingCriterionId TrialReadingCriterionId: this.TrialReadingCriterionId,
}, },
signInfo: signInfo signInfo: signInfo,
} };
resetAndAsyncCriterion(params).then(res => { resetAndAsyncCriterion(params)
this.loading = false .then((res) => {
let i = this.trialCriterionList.findIndex(i => i.TrialReadingCriterionId === this.TrialReadingCriterionId) this.loading = false;
if(i === -1) return let i = this.trialCriterionList.findIndex(
this.trialCriterionList[i].isPaneShow = false (i) => i.TrialReadingCriterionId === this.TrialReadingCriterionId
);
if (i === -1) return;
this.trialCriterionList[i].isPaneShow = false;
this.$nextTick(() => { this.$nextTick(() => {
this.signVisible2 = false this.signVisible2 = false;
this.trialCriterionList[i].isPaneShow = true this.trialCriterionList[i].isPaneShow = true;
});
})
}).catch(() => {
this.$refs['signForm2'].btnLoading = false
this.loading = false
}) })
.catch(() => {
this.$refs["signForm2"].btnLoading = false;
this.loading = false;
});
}, },
asyncTrialCriterionDictionary(TrialReadingCriterionId) { asyncTrialCriterionDictionary(TrialReadingCriterionId) {
return new Promise(resolve => { return new Promise((resolve) => {
asyncTrialCriterionDictionary({ TrialReadingCriterionId: this.TrialReadingCriterionId }).then(res => { asyncTrialCriterionDictionary({
resolve() TrialReadingCriterionId: this.TrialReadingCriterionId,
}) }).then((res) => {
}) resolve();
});
});
}, },
getTrialCriterionList() { getTrialCriterionList() {
getTrialCriterionList(this.trialId, false).then(async res => { getTrialCriterionList(this.trialId, false)
this.trialCriterionList = res.Result.map(item=>{ .then(async (res) => {
this.trialCriterionList = res.Result.map((item) => {
return { return {
...item, ...item,
isPaneShow: true, isPaneShow: true,
} };
}) });
this.TrialReadingCriterionId = this.trialCriterionList[0].TrialReadingCriterionId this.TrialReadingCriterionId =
this.isShow = true this.trialCriterionList[0].TrialReadingCriterionId;
}).catch(() => { this.isShow = true;
}) })
.catch(() => {});
}, },
setConfirm(isConfirm) { setConfirm(isConfirm) {
this.isConfirm = isConfirm this.isConfirm = isConfirm;
}, },
setDigitPlaces(digitPlaces) { setDigitPlaces(digitPlaces) {
this.digitPlaces = digitPlaces this.digitPlaces = digitPlaces;
}, },
setIsClinicalReading(isClinicalReading) { setIsClinicalReading(isClinicalReading) {
this.isClinicalReading = isClinicalReading this.isClinicalReading = isClinicalReading;
}, },
setAdditionalAssessment(isAdditionalAssessment) { setAdditionalAssessment(isAdditionalAssessment) {
this.isAdditionalAssessment = isAdditionalAssessment this.isAdditionalAssessment = isAdditionalAssessment;
}, },
setArbitrationReading(isArbitrationReading) { setArbitrationReading(isArbitrationReading) {
this.isArbitrationReading = isArbitrationReading this.isArbitrationReading = isArbitrationReading;
}, },
setGlobalReading(isGlobalReading) { setGlobalReading(isGlobalReading) {
this.isGlobalReading = isGlobalReading this.isGlobalReading = isGlobalReading;
}, },
setOncologyReading(isOncologyReading) { setOncologyReading(isOncologyReading) {
this.isOncologyReading = isOncologyReading this.isOncologyReading = isOncologyReading;
}, },
updateCriterions() { updateCriterions() {
this.loading = true this.loading = true;
synchronizeCriterion({ trialId: this.$route.query.trialId, TrialReadingCriterionId: this.TrialReadingCriterionId }).then(res => { synchronizeCriterion({
this.$router.push({ path: `/trials/trials-panel/setting/reading-unit?trialId=${this.$route.query.trialId}&trialCode=${this.$route.query.trialCode}&researchProgramNo=${this.$route.query.researchProgramNo}&t=${new Date().getTime()}` }) trialId: this.$route.query.trialId,
this.loading = false TrialReadingCriterionId: this.TrialReadingCriterionId,
}).catch(() => { this.loading = false }) })
.then((res) => {
this.$router.push({
path: `/trials/trials-panel/setting/reading-unit?trialId=${
this.$route.query.trialId
}&trialCode=${this.$route.query.trialCode}&researchProgramNo=${
this.$route.query.researchProgramNo
}&t=${new Date().getTime()}`,
});
this.loading = false;
})
.catch(() => {
this.loading = false;
});
}, },
handleConfirm() { handleConfirm() {
this.loading = true this.loading = true;
verifyeCriterionNeedSynchronize({ trialId: this.$route.query.trialId, TrialReadingCriterionId: this.TrialReadingCriterionId }).then(async res => { verifyeCriterionNeedSynchronize({
this.loading = false trialId: this.$route.query.trialId,
TrialReadingCriterionId: this.TrialReadingCriterionId,
})
.then(async (res) => {
this.loading = false;
if (res.Result !== 1) { if (res.Result !== 1) {
// //
this.$confirm(this.$t('trials:readingUnit:message:msg1'), { this.$confirm(this.$t("trials:readingUnit:message:msg1"), {
type: 'warning' type: "warning",
}) })
.then(() => { .then(() => {
this.updateCriterions() this.updateCriterions();
})
.catch(action => {
}) })
.catch((action) => {});
} else { } else {
try { try {
var isCheckList = [] var isCheckList = [];
if (this.$refs['arbitrationRules' + this.TrialReadingCriterionId] && this.$refs['arbitrationRules' + this.TrialReadingCriterionId].length) { if (
var arbitrationRules = await this.$refs['arbitrationRules' + this.TrialReadingCriterionId][0].saveAllSync() this.$refs["arbitrationRules" + this.TrialReadingCriterionId] &&
this.$refs["arbitrationRules" + this.TrialReadingCriterionId]
.length
) {
var arbitrationRules = await this.$refs[
"arbitrationRules" + this.TrialReadingCriterionId
][0].saveAllSync();
isCheckList.push({ isCheckList.push({
isCheck: arbitrationRules, isCheck: arbitrationRules,
msg: this.$t('trials:readingUnit:adRules')// '' msg: this.$t("trials:readingUnit:adRules"), // ''
}) });
} }
var readingRules = await this.$refs['readingRules' + this.TrialReadingCriterionId][0].handleSave(false) var readingRules = await this.$refs[
"readingRules" + this.TrialReadingCriterionId
][0].handleSave(false);
isCheckList.push({ isCheckList.push({
isCheck: readingRules, isCheck: readingRules,
msg: this.$t('trials:readingUnit:readingRules')// '' msg: this.$t("trials:readingUnit:readingRules"), // ''
}) });
// var readingCriterions = await this.$refs['readingCriterions' + this.TrialReadingCriterionId][0].handleSave(false) // var readingCriterions = await this.$refs['readingCriterions' + this.TrialReadingCriterionId][0].handleSave(false)
// isCheckList.push({ // isCheckList.push({
// isCheck: readingCriterions, // isCheck: readingCriterions,
// msg: '' // msg: ''
// }) // })
if (this.$refs['globalReading' + this.TrialReadingCriterionId] && this.$refs['globalReading' + this.TrialReadingCriterionId].length) { if (
var globalReading = await this.$refs['globalReading' + this.TrialReadingCriterionId][0].handleSave(false) this.$refs["globalReading" + this.TrialReadingCriterionId] &&
this.$refs["globalReading" + this.TrialReadingCriterionId]
.length
) {
var globalReading = await this.$refs[
"globalReading" + this.TrialReadingCriterionId
][0].handleSave(false);
isCheckList.push({ isCheckList.push({
isCheck: globalReading, isCheck: globalReading,
msg: this.$t('trials:readingUnit:GlobalReading')// '' msg: this.$t("trials:readingUnit:GlobalReading"), // ''
}) });
} }
if (this.$refs['oncologyForm' + this.TrialReadingCriterionId] && this.$refs['oncologyForm' + this.TrialReadingCriterionId].length) { if (
var oncologyForm = await this.$refs['oncologyForm' + this.TrialReadingCriterionId][0].handleSave(false) this.$refs["oncologyForm" + this.TrialReadingCriterionId] &&
this.$refs["oncologyForm" + this.TrialReadingCriterionId].length
) {
var oncologyForm = await this.$refs[
"oncologyForm" + this.TrialReadingCriterionId
][0].handleSave(false);
isCheckList.push({ isCheckList.push({
isCheck: oncologyForm, isCheck: oncologyForm,
msg: this.$t('trials:readingUnit:oncologyReading')// '' msg: this.$t("trials:readingUnit:oncologyReading"), // ''
}) });
} }
if (isCheckList.every(v => v.isCheck === true)) { if (isCheckList.every((v) => v.isCheck === true)) {
trialReadingInfoSignVerify({ trialId: this.$route.query.trialId, TrialReadingCriterionId: this.TrialReadingCriterionId }).then(res => { trialReadingInfoSignVerify({
trialId: this.$route.query.trialId,
TrialReadingCriterionId: this.TrialReadingCriterionId,
}).then((res) => {
if (res.IsSuccess) { if (res.IsSuccess) {
const { ReadingUnitConfirmation } = const_.processSignature const { ReadingUnitConfirmation } = const_.processSignature;
this.signCode = ReadingUnitConfirmation this.signCode = ReadingUnitConfirmation;
this.signVisible = true this.signVisible = true;
} }
}) });
} else { } else {
var notCheckList = isCheckList.filter(v => v.isCheck === false) var notCheckList = isCheckList.filter(
var msg = notCheckList.map(v => v.msg) (v) => v.isCheck === false
msg = this.$t('trials:readingUnit:message:msg2').replace('xxx', msg) );
this.$alert(msg) // ${msg} var msg = notCheckList.map((v) => v.msg);
msg = this.$t("trials:readingUnit:message:msg2").replace(
"xxx",
msg
);
this.$alert(msg); // ${msg}
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
} }
}).catch(() => {
console.log(222)
this.loading = false
}) })
.catch(() => {
console.log(222);
this.loading = false;
});
}, },
// //
closeSignDialog(isSign, signInfo) { closeSignDialog(isSign, signInfo) {
if (isSign) { if (isSign) {
this.signConfirm(signInfo) this.signConfirm(signInfo);
} else { } else {
this.signVisible = false this.signVisible = false;
} }
}, },
// //
signConfirm(signInfo) { signConfirm(signInfo) {
this.loading = true this.loading = true;
const params = { const params = {
data: { data: {
trialId: this.$route.query.trialId, trialId: this.$route.query.trialId,
TrialReadingCriterionId: this.TrialReadingCriterionId TrialReadingCriterionId: this.TrialReadingCriterionId,
}, },
signInfo: signInfo signInfo: signInfo,
} };
trialReadingInfoSign(params).then(res => { trialReadingInfoSign(params)
.then((res) => {
if (res.IsSuccess) { if (res.IsSuccess) {
try { try {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(
this.isConfirm = true this.$t("common:message:savedSuccessfully")
);
this.isConfirm = true;
try { try {
this.$refs['readingRules' + this.TrialReadingCriterionId][0].initPage() this.$refs[
} catch (e) { "readingRules" + this.TrialReadingCriterionId
} ][0].initPage();
} catch (e) {}
try { try {
this.$refs['readingCriterions' + this.TrialReadingCriterionId][0].initPage() this.$refs[
} catch (e) { "readingCriterions" + this.TrialReadingCriterionId
} ][0].initPage();
} catch (e) {}
try { try {
this.$refs['arbitrationRules' + this.TrialReadingCriterionId][0].getList() this.$refs[
} catch (e) { "arbitrationRules" + this.TrialReadingCriterionId
} ][0].getList();
} catch (e) {}
try { try {
this.$refs['globalReading' + this.TrialReadingCriterionId][0].initForm() this.$refs[
} catch (e) { "globalReading" + this.TrialReadingCriterionId
} ][0].initForm();
} catch (e) {}
try { try {
this.$refs['oncologyForm' + this.TrialReadingCriterionId][0].initForm() this.$refs[
"oncologyForm" + this.TrialReadingCriterionId
][0].initForm();
} catch (e) {}
this.$refs["signForm"].btnLoading = false;
this.signVisible = false;
} catch (e) { } catch (e) {
} console.log(e);
this.$refs['signForm'].btnLoading = false
this.signVisible = false
} catch (e) {
console.log(e)
} }
} }
this.loading = false this.loading = false;
}).catch(_ => {
this.loading = false
this.$refs['signForm'].btnLoading = false
}) })
.catch((_) => {
this.loading = false;
this.$refs["signForm"].btnLoading = false;
});
}, },
reloadArbitrationRules() { reloadArbitrationRules() {
this.$refs['arbitrationRules' + this.TrialReadingCriterionId][0].getList() this.$refs[
this.$refs['arbitrationRules' + this.TrialReadingCriterionId][0].getTrialJudgyInfo() "arbitrationRules" + this.TrialReadingCriterionId
} ][0].getList();
} this.$refs[
} "arbitrationRules" + this.TrialReadingCriterionId
][0].getTrialJudgyInfo();
},
},
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.reading-unit-wrapper{ .reading-unit-wrapper {
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.content{ .content {
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;
} }
/deep/ .el-collapse-item__header{ /deep/ .el-collapse-item__header {
background:#e5ecef; background: #e5ecef;
padding-left:10px; padding-left: 10px;
} }
/deep/ .el-collapse-item__content{ /deep/ .el-collapse-item__content {
padding: 10px; padding: 10px;
} }
.bottom{ .bottom {
height: 50px; height: 50px;
display:flex; display: flex;
align-items:center; align-items: center;
justify-content:center; justify-content: center;
text-align: center; text-align: center;
border-top: 1px solid #e1e1e1; border-top: 1px solid #e1e1e1;
} }
} }
</style> </style>