质控添加复核
continuous-integration/drone/push Build encountered an error
Details
continuous-integration/drone/push Build encountered an error
Details
parent
79b14eee67
commit
07fbbf5a74
|
@ -1,51 +1,37 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="criterion-form-item">
|
<div class="criterion-form-item">
|
||||||
<div
|
<div v-if="!!question.QuestionName && question.ClinicalQuestionType === 'group'"
|
||||||
v-if="!!question.QuestionName && question.ClinicalQuestionType==='group'"
|
style="font-weight: bold;font-size: 16px;margin: 5px 0px;margin-bottom: 10px">
|
||||||
style="font-weight: bold;font-size: 16px;margin: 5px 0px;margin-bottom: 10px"
|
{{ language === 'en' ? question.QuestionEnName : question.QuestionName }}
|
||||||
>
|
</div>
|
||||||
{{ language==='en'?question.QuestionEnName:question.QuestionName }}
|
<div v-else-if="question.ClinicalQuestionType === 'summary'"
|
||||||
|
style="background:#f3f3f3;border-radius:4px;font-size: 12px;margin: 5px 0px;margin-bottom: 10px;font-size: 12px;padding: 10px">
|
||||||
|
{{ language === 'en' ? question.QuestionEnName : question.QuestionName }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-else-if="question.ClinicalQuestionType==='summary'"
|
v-else-if="question.ClinicalQuestionType === 'table' && ((question.ClinicalQuestionShowEnum === 1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum === 0)"
|
||||||
style="background:#f3f3f3;border-radius:4px;font-size: 12px;margin: 5px 0px;margin-bottom: 10px;font-size: 12px;padding: 10px"
|
style="font-weight: bold;font-size: 14px;margin: 5px 0px;">
|
||||||
>
|
|
||||||
{{ language==='en'?question.QuestionEnName:question.QuestionName }}
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-else-if="question.ClinicalQuestionType==='table' && ((question.ClinicalQuestionShowEnum===1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum===0)"
|
|
||||||
style="font-weight: bold;font-size: 14px;margin: 5px 0px;"
|
|
||||||
>
|
|
||||||
<div style="display: flex;justify-content: space-between;">
|
<div style="display: flex;justify-content: space-between;">
|
||||||
<span>
|
<span>
|
||||||
{{ question.QuestionName }}
|
{{ question.QuestionName }}
|
||||||
</span>
|
</span>
|
||||||
<!-- 添加 -->
|
<!-- 添加 -->
|
||||||
<el-button type="primary" size="mini" @click="openAddTableCol(question)">
|
<el-button type="primary" size="mini" @click="openAddTableCol(question)" v-if="SecondReviewState <= 0">
|
||||||
{{ $t('trials:readingUnit:qsList:title:add') }}
|
{{ $t('trials:readingUnit:qsList:title:add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table :data="questionForm[question.Id]">
|
||||||
:data="questionForm[question.Id]"
|
<el-table-column v-for="item of question.TableQuestions" :key="item.Id" :prop="item.Id"
|
||||||
>
|
:label="item.QuestionName" min-width="100" show-overflow-tooltip />
|
||||||
<el-table-column
|
<el-table-column :label="$t('common:action:action')" min-width="100" show-overflow-tooltip
|
||||||
v-for="item of question.TableQuestions"
|
v-if="SecondReviewState <= 0">
|
||||||
:key="item.Id"
|
|
||||||
:prop="item.Id"
|
|
||||||
:label="item.QuestionName"
|
|
||||||
min-width="100"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
:label="$t('common:action:action')"
|
|
||||||
min-width="100"
|
|
||||||
show-overflow-tooltip
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="text" size="mini" @click="openAddTableCol(question, scope.$index)">
|
<el-button type="text" size="mini" @click="openAddTableCol(question, scope.$index)">
|
||||||
{{ $t('common:button:edit') }}
|
{{ $t('common:button:edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="text" size="mini" v-if="scope.row.IsCurrentTaskAdd === 'True' || !question.IsCopyLesions || IsBaseline" @click="deleteTableCol(question, scope.$index)">
|
<el-button type="text" size="mini"
|
||||||
|
v-if="scope.row.IsCurrentTaskAdd === 'True' || !question.IsCopyLesions || IsBaseline"
|
||||||
|
@click="deleteTableCol(question, scope.$index)">
|
||||||
{{ $t('common:button:delete') }}
|
{{ $t('common:button:delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
@ -54,187 +40,109 @@
|
||||||
</div>
|
</div>
|
||||||
<el-col v-else :span="12">
|
<el-col v-else :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="(question.ClinicalQuestionShowEnum===1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum===0"
|
v-if="(question.ClinicalQuestionShowEnum === 1 && question.ParentTriggerValue === questionForm[question.ParentId].toString()) || question.ClinicalQuestionShowEnum === 0"
|
||||||
:label="`${question.QuestionName}`"
|
:label="`${question.QuestionName}`" :prop="question.Id" :rules="[
|
||||||
:prop="question.Id"
|
{
|
||||||
:rules="[
|
required: (question.IsRequired === 0 || (question.IsRequired === 1 && question.RelevanceId && (question.RelevanceValue === questionForm[question.RelevanceId].toString()))) && question.ClinicalQuestionType !== 'summary' && question.ClinicalQuestionType !== 'group' && question.ClinicalQuestionType !== 'table',
|
||||||
{ required: (question.IsRequired === 0 || (question.IsRequired ===1 && question.RelevanceId && (question.RelevanceValue === questionForm[question.RelevanceId].toString()))) && question.ClinicalQuestionType !== 'summary' && question.ClinicalQuestionType!=='group' && question.ClinicalQuestionType!=='table',
|
message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||||
message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']}
|
}
|
||||||
]"
|
]" :class="[question.Type === 'group' ? 'mb' : question.Type === 'upload' ? 'uploadWrapper' : '']">
|
||||||
:class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']"
|
|
||||||
>
|
|
||||||
<!-- 输入框 -->
|
<!-- 输入框 -->
|
||||||
<el-input
|
<el-input v-if="question.ClinicalQuestionType === 'input'" v-model="questionForm[question.Id]"
|
||||||
v-if="question.ClinicalQuestionType==='input'"
|
|
||||||
v-model="questionForm[question.Id]"
|
|
||||||
:disabled="question.TableQuestionType === 2"
|
:disabled="question.TableQuestionType === 2"
|
||||||
:max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200"
|
:max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200" />
|
||||||
/>
|
|
||||||
<!-- 多行文本输入框 -->
|
<!-- 多行文本输入框 -->
|
||||||
<el-input
|
<el-input v-if="question.ClinicalQuestionType === 'textarea'" v-model="questionForm[question.Id]"
|
||||||
v-if="question.ClinicalQuestionType==='textarea'"
|
type="textarea" :max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200"
|
||||||
v-model="questionForm[question.Id]"
|
:autosize="{ minRows: 2, maxRows: 4 }" />
|
||||||
type="textarea"
|
|
||||||
:max-length="question.MaxAnswerLength ? question.MaxAnswerLength : 200"
|
|
||||||
:autosize="{ minRows: 2, maxRows: 4}"
|
|
||||||
/>
|
|
||||||
<!-- 下拉框 -->
|
<!-- 下拉框 -->
|
||||||
<el-select
|
<el-select v-if="question.ClinicalQuestionType === 'select'" v-model="questionForm[question.Id]" clearable
|
||||||
v-if="question.ClinicalQuestionType==='select'"
|
|
||||||
v-model="questionForm[question.Id]"
|
|
||||||
clearable
|
|
||||||
:disabled="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode"
|
:disabled="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode"
|
||||||
@change="((val)=>{formItemChange(val, question)})"
|
@change="((val) => { formItemChange(val, question) })">
|
||||||
>
|
|
||||||
<template v-if="question.TableQuestionType === 1">
|
<template v-if="question.TableQuestionType === 1">
|
||||||
<el-option
|
<el-option v-for="item in organList" :key="item.Id" :label="item[question.DataTableColumn]"
|
||||||
v-for="item in organList"
|
:value="item[question.DataTableColumn]" />
|
||||||
:key="item.Id"
|
|
||||||
:label="item[question.DataTableColumn]"
|
|
||||||
:value="item[question.DataTableColumn]"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="question.TableQuestionType === 3 || question.QuestionGenre === 3">
|
<template v-else-if="question.TableQuestionType === 3 || question.QuestionGenre === 3">
|
||||||
<el-option
|
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="item.value"
|
||||||
v-for="item of $d[question.DictionaryCode]"
|
:label="item.label" />
|
||||||
:key="item.id"
|
|
||||||
:value="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && question.DictionaryCode">
|
<template
|
||||||
<el-option
|
v-else-if="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && question.DictionaryCode">
|
||||||
v-for="item of $d[question.DictionaryCode]"
|
<el-option v-for="item of $d[question.DictionaryCode]" :key="item.id" :value="item.value"
|
||||||
:key="item.id"
|
:label="item.label" />
|
||||||
:value="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-option
|
<el-option v-for="val in question.TypeValue.split('|')" :key="val" :label="val" :value="val.trim()" />
|
||||||
v-for="val in question.TypeValue.split('|')"
|
|
||||||
:key="val"
|
|
||||||
:label="val"
|
|
||||||
:value="val.trim()"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- 单选 -->
|
<!-- 单选 -->
|
||||||
<el-date-picker
|
<el-date-picker v-if="question.ClinicalQuestionType === 'time'" v-model="questionForm[question.Id]"
|
||||||
v-if="question.ClinicalQuestionType === 'time'"
|
style="width: 200px" align="right" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" />
|
||||||
v-model="questionForm[question.Id]"
|
|
||||||
style="width: 200px"
|
|
||||||
align="right"
|
|
||||||
type="date"
|
|
||||||
format="yyyy-MM-dd"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
/>
|
|
||||||
<!-- 单选 -->
|
<!-- 单选 -->
|
||||||
<el-radio-group
|
<el-radio-group v-if="question.ClinicalQuestionType === 'radio'" v-model="questionForm[question.Id]"
|
||||||
v-if="question.ClinicalQuestionType==='radio'"
|
@change="((val) => { formItemChange(val, question) })">
|
||||||
v-model="questionForm[question.Id]"
|
|
||||||
@change="((val)=>{formItemChange(val, question)})"
|
|
||||||
>
|
|
||||||
<template v-if="question.DictionaryCode">
|
<template v-if="question.DictionaryCode">
|
||||||
<el-radio
|
<el-radio v-for="item of $d[question.DictionaryCode]" :key="item.id" :label="item.value">
|
||||||
v-for="item of $d[question.DictionaryCode]"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.value"
|
|
||||||
>
|
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="question.TypeValue">
|
<template v-if="question.TypeValue">
|
||||||
<el-radio
|
<el-radio v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
||||||
v-for="val in question.TypeValue.split('|')"
|
|
||||||
:key="val"
|
|
||||||
:label="val"
|
|
||||||
>
|
|
||||||
{{ val }}
|
{{ val }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</template>
|
</template>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- 复选框 -->
|
<!-- 复选框 -->
|
||||||
<el-checkbox-group
|
<el-checkbox-group v-if="question.ClinicalQuestionType === 'checkbox' && questionForm[question.Id] !== ''"
|
||||||
v-if="question.ClinicalQuestionType==='checkbox' && questionForm[question.Id] !== ''"
|
v-model="questionForm[question.Id]">
|
||||||
v-model="questionForm[question.Id]"
|
<el-checkbox v-for="val of question.TypeValue.split('|')" :key="val" :label="val" :value="val">
|
||||||
>
|
|
||||||
<el-checkbox
|
|
||||||
v-for="val of question.TypeValue.split('|')"
|
|
||||||
:key="val"
|
|
||||||
:label="val"
|
|
||||||
:value="val"
|
|
||||||
>
|
|
||||||
{{ val }}
|
{{ val }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
<el-input
|
<el-input v-if="question.ClinicalQuestionType === 'number'" :ref="question.Id"
|
||||||
v-if="question.ClinicalQuestionType === 'number'"
|
v-model="questionForm[question.Id]" type="number" style="width: 200px"
|
||||||
:ref="question.Id"
|
:disabled="question.CustomCalculateMark > 0" @input="limitInput($event, questionForm, question)">
|
||||||
v-model="questionForm[question.Id]"
|
|
||||||
type="number"
|
|
||||||
style="width: 200px"
|
|
||||||
:disabled="question.CustomCalculateMark > 0"
|
|
||||||
@input="limitInput($event, questionForm, question)"
|
|
||||||
>
|
|
||||||
<template v-if="question.Unit" slot="append">{{ question.Unit }}</template>
|
<template v-if="question.Unit" slot="append">{{ question.Unit }}</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'" v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] <= questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]" style="margin-left: 10px">
|
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'"
|
||||||
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{ questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId] }}
|
v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] <= questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]"
|
||||||
|
style="margin-left: 10px">
|
||||||
|
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{
|
||||||
|
questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId] }}
|
||||||
</span>
|
</span>
|
||||||
<span v-if="question.CustomCalculateMark === 10 && question.ClinicalQuestionType === 'number' && questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId]" style="margin-left: 10px">
|
<span
|
||||||
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{ questionForm.CreateTime ? questionForm.CreateTime : parseTime(new Date(), '{y}-{m}-{d}') }}
|
v-if="question.CustomCalculateMark === 10 && question.ClinicalQuestionType === 'number' && questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId]"
|
||||||
|
style="margin-left: 10px">
|
||||||
|
{{ questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] }}~{{ questionForm.CreateTime ?
|
||||||
|
questionForm.CreateTime : parseTime(new Date(), '{y}-{m}-{d}') }}
|
||||||
</span>
|
</span>
|
||||||
<!-- 生日不能大于截止日期 -->
|
<!-- 生日不能大于截止日期 -->
|
||||||
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'" v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] > questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]" style="margin-left: 10px;font-size: 12px;color:#f66">
|
<span v-if="question.CustomCalculateMark === 11 && question.ClinicalQuestionType === 'number'"
|
||||||
|
v-show="questionForm[JSON.parse(question.CalculateQuestions)[0].TableQuestionId] > questionForm[JSON.parse(question.CalculateQuestions)[0].QuestionId]"
|
||||||
|
style="margin-left: 10px;font-size: 12px;color:#f66">
|
||||||
{{ $t('trials:components:clinicalDataQS:msg:birthDay') }}
|
{{ $t('trials:components:clinicalDataQS:msg:birthDay') }}
|
||||||
</span>
|
</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
|
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
|
||||||
<!-- eslint-disable vue/valid-v-for -->
|
<!-- eslint-disable vue/valid-v-for -->
|
||||||
<el-col v-for="(item) in question.Childrens" :key="item.Id" v-if="question.Childrens && question.Childrens.length>0 && question.ClinicalQuestionType !== 'table'" :span="['group', 'summary', 'table'].includes(item.ClinicalQuestionType) || item.Childrens.length > 0 ? 24 : 12">
|
<el-col v-for="(item) in question.Childrens" :key="item.Id"
|
||||||
<QuestionFormItem
|
v-if="question.Childrens && question.Childrens.length > 0 && question.ClinicalQuestionType !== 'table'"
|
||||||
:key="item.Id"
|
:span="['group', 'summary', 'table'].includes(item.ClinicalQuestionType) || item.Childrens.length > 0 ? 24 : 12">
|
||||||
:question="item"
|
<QuestionFormItem :key="item.Id" :question="item" :question-form="questionForm"
|
||||||
:question-form="questionForm"
|
:trial-clinical-id="trialClinicalId" @formItemNumberChange="formItemNumberChange"
|
||||||
:trial-clinical-id="trialClinicalId"
|
@setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData" />
|
||||||
@formItemNumberChange="formItemNumberChange"
|
|
||||||
@setFormItemData="setFormItemData"
|
|
||||||
@resetFormItemData="resetFormItemData"
|
|
||||||
/>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-dialog
|
<el-dialog v-if="addOrEdit.visible" class="my_dialog" :visible.sync="addOrEdit.visible"
|
||||||
v-if="addOrEdit.visible"
|
:close-on-click-modal="false" :title="addOrEdit.title" width="400px" append-to-body>
|
||||||
class="my_dialog"
|
<el-form ref="tableQsForm" v-loading="loading" size="small" :model="QuestionsForm">
|
||||||
:visible.sync="addOrEdit.visible"
|
<QuestionTableFormItem v-for="(item) in QuestionsList" :key="item.Id" :question="item"
|
||||||
:close-on-click-modal="false"
|
:question-form="QuestionsForm" @setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData" />
|
||||||
:title="addOrEdit.title"
|
|
||||||
width="400px"
|
|
||||||
append-to-body
|
|
||||||
>
|
|
||||||
<el-form
|
|
||||||
ref="tableQsForm"
|
|
||||||
v-loading="loading"
|
|
||||||
size="small"
|
|
||||||
:model="QuestionsForm"
|
|
||||||
>
|
|
||||||
<QuestionTableFormItem
|
|
||||||
v-for="(item) in QuestionsList"
|
|
||||||
:key="item.Id"
|
|
||||||
:question="item"
|
|
||||||
:question-form="QuestionsForm"
|
|
||||||
@setFormItemData="setFormItemData"
|
|
||||||
@resetFormItemData="resetFormItemData"
|
|
||||||
/>
|
|
||||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button size="small" type="primary" @click="addOrEdit.visible = false">
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="addOrEdit.visible = false"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 保存 -->
|
<!-- 保存 -->
|
||||||
|
@ -251,7 +159,6 @@
|
||||||
import { getTrialClinicalQuestionCalculateRelation } from '@/api/dictionary'
|
import { getTrialClinicalQuestionCalculateRelation } from '@/api/dictionary'
|
||||||
import QuestionTableFormItem from './QuestionTableFormItem'
|
import QuestionTableFormItem from './QuestionTableFormItem'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import DicomEvent from "../../../views/trials/trials-panel/reading/dicoms/components/DicomEvent";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'QuestionFormItem',
|
name: 'QuestionFormItem',
|
||||||
|
@ -263,6 +170,10 @@ export default {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
SecondReviewState: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
questionForm: {
|
questionForm: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default() {
|
default() {
|
||||||
|
@ -282,7 +193,7 @@ export default {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
addOrEdit: { visible: false, title: '', id: null, index: 0},
|
addOrEdit: { visible: false, title: '', id: null, index: 0 },
|
||||||
fileList: [],
|
fileList: [],
|
||||||
accept: '.png,.jpg,.jpeg',
|
accept: '.png,.jpg,.jpeg',
|
||||||
imgVisible: false,
|
imgVisible: false,
|
||||||
|
@ -591,40 +502,47 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.my_dialog{
|
.my_dialog {
|
||||||
.criterion-form-item{
|
.criterion-form-item {
|
||||||
::v-deep .el-form-item__content{
|
::v-deep .el-form-item__content {
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.el-col-12 .el-col-12{
|
|
||||||
|
.el-col-12 .el-col-12 {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.criterion-form-item{
|
|
||||||
.el-form-item{
|
.criterion-form-item {
|
||||||
|
.el-form-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
.el-input{
|
|
||||||
width:100%;
|
.el-input {
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
.mb{
|
|
||||||
|
.mb {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
}
|
}
|
||||||
.disabled{
|
|
||||||
|
.disabled {
|
||||||
::v-deep .el-upload--picture-card {
|
::v-deep .el-upload--picture-card {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.uploadWrapper{
|
|
||||||
|
.uploadWrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.clearfix:after{
|
|
||||||
|
.clearfix:after {
|
||||||
content: '';
|
content: '';
|
||||||
display: table;
|
display: table;
|
||||||
clear: both;
|
clear: both;
|
||||||
|
|
|
@ -1,52 +1,31 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading" style="min-height: 500px;">
|
<div v-loading="loading" style="min-height: 500px;">
|
||||||
<el-form
|
<el-form v-if="isRender" data-viewport-uid="lc" ref="questions" size="small" :model="questionForm"
|
||||||
v-if="isRender"
|
:disabled="openType === 'look'">
|
||||||
data-viewport-uid="lc"
|
|
||||||
ref="questions"
|
|
||||||
size="small"
|
|
||||||
:model="questionForm"
|
|
||||||
:disabled="openType === 'look'"
|
|
||||||
>
|
|
||||||
<template>
|
<template>
|
||||||
<QuestionFormItem
|
<QuestionFormItem class="father" v-for="question of questions" :key="question.Id" :question="question"
|
||||||
class="father"
|
:question-form="questionForm" :trial-clinical-id="trialClinicalId" :SecondReviewState="SecondReviewState"
|
||||||
v-for="question of questions"
|
@resetFormItemData="resetFormItemData" @setFormItemData="setFormItemData" />
|
||||||
:key="question.Id"
|
|
||||||
:question="question"
|
|
||||||
:question-form="questionForm"
|
|
||||||
:trial-clinical-id="trialClinicalId"
|
|
||||||
@resetFormItemData="resetFormItemData"
|
|
||||||
@setFormItemData="setFormItemData"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="base-dialog-footer" v-if="!isViewer && openType !== 'look' && [2, 3].includes(clinicalDataLevel)" style="text-align:right;margin-top:10px;">
|
<div class="base-dialog-footer"
|
||||||
<!-- 取消 -->
|
v-if="!isViewer && openType !== 'look' && [2, 3].includes(clinicalDataLevel) && SecondReviewState <= 0"
|
||||||
<el-button
|
style="text-align:right;margin-top:10px;">
|
||||||
size="small"
|
<!-- 取消 -->
|
||||||
type="primary"
|
<el-button size="small" type="primary" @click="close"
|
||||||
@click="close"
|
v-show="$route.path !== '/trials/trials-panel/visit/crc-upload' && $route.path !== '/trials/trials-panel/visit/crc-question'">
|
||||||
v-show="$route.path !== '/trials/trials-panel/visit/crc-upload'&&$route.path!=='/trials/trials-panel/visit/crc-question'"
|
{{ $t('common:button:cancel') }}
|
||||||
>
|
</el-button>
|
||||||
{{ $t('common:button:cancel') }}
|
<!-- 保存 -->
|
||||||
</el-button>
|
<el-button size="small" type="primary" @click="submitClinicalForm">
|
||||||
<!-- 保存 -->
|
{{ $t('common:button:save') }}
|
||||||
<el-button size="small" type="primary" @click="submitClinicalForm">
|
</el-button>
|
||||||
{{ $t('common:button:save') }}
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
<el-dialog
|
<el-dialog v-if="signVisible" :visible.sync="signVisible" :close-on-click-modal="false" width="600px" append-to-body
|
||||||
v-if="signVisible"
|
custom-class="base-dialog-wrapper">
|
||||||
:visible.sync="signVisible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
width="600px"
|
|
||||||
append-to-body
|
|
||||||
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>
|
||||||
|
@ -77,6 +56,10 @@ export default {
|
||||||
return 2
|
return 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
SecondReviewState: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
openType: {
|
openType: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
|
@ -106,7 +89,7 @@ export default {
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => {}
|
default: () => { }
|
||||||
},
|
},
|
||||||
trialClinicalId: {
|
trialClinicalId: {
|
||||||
type: String,
|
type: String,
|
||||||
|
@ -166,7 +149,7 @@ export default {
|
||||||
let item = this.questionForm[v]
|
let item = this.questionForm[v]
|
||||||
if (item instanceof Array) {
|
if (item instanceof Array) {
|
||||||
let TableQuestionAnswers = item.map(o => {
|
let TableQuestionAnswers = item.map(o => {
|
||||||
if (o instanceof Object) {
|
if (o instanceof Object) {
|
||||||
return Object.keys(o).map(x => {
|
return Object.keys(o).map(x => {
|
||||||
return {
|
return {
|
||||||
TableQuestionId: x,
|
TableQuestionId: x,
|
||||||
|
@ -251,7 +234,7 @@ export default {
|
||||||
if (item instanceof Array) {
|
if (item instanceof Array) {
|
||||||
let isCheckBox = false
|
let isCheckBox = false
|
||||||
let TableQuestionAnswers = item.map(o => {
|
let TableQuestionAnswers = item.map(o => {
|
||||||
if (o instanceof Object) {
|
if (o instanceof Object) {
|
||||||
return Object.keys(o).map(x => {
|
return Object.keys(o).map(x => {
|
||||||
return {
|
return {
|
||||||
TableQuestionId: x,
|
TableQuestionId: x,
|
||||||
|
@ -387,11 +370,11 @@ export default {
|
||||||
}
|
}
|
||||||
if (i.ClinicalQuestionType === 'table') {
|
if (i.ClinicalQuestionType === 'table') {
|
||||||
this.$set(this.questionForm, i.Id, i.TableAnswer)
|
this.$set(this.questionForm, i.Id, i.TableAnswer)
|
||||||
} else if (i.ClinicalQuestionType === 'checkbox') {
|
} else if (i.ClinicalQuestionType === 'checkbox') {
|
||||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer.split(',') : [])
|
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer.split(',') : [])
|
||||||
console.log(i.Answer ? i.Answer.split(',') : [])
|
console.log(i.Answer ? i.Answer.split(',') : [])
|
||||||
console.log(this.questionForm)
|
console.log(this.questionForm)
|
||||||
} else if (i.ClinicalQuestionType === 'number') {
|
} else if (i.ClinicalQuestionType === 'number') {
|
||||||
this.$set(this.questionForm, i.Id, i.Answer)
|
this.$set(this.questionForm, i.Id, i.Answer)
|
||||||
} else if (i.Childrens && i.Childrens.length > 0) {
|
} else if (i.Childrens && i.Childrens.length > 0) {
|
||||||
this.setChild(i.Childrens)
|
this.setChild(i.Childrens)
|
||||||
|
@ -405,7 +388,7 @@ export default {
|
||||||
this.questionForm[v] = 0
|
this.questionForm[v] = 0
|
||||||
} else if (qs.ClinicalQuestionType === 'checkbox') {
|
} else if (qs.ClinicalQuestionType === 'checkbox') {
|
||||||
this.questionForm[v] = []
|
this.questionForm[v] = []
|
||||||
} else{
|
} else {
|
||||||
this.questionForm[v] = ''
|
this.questionForm[v] = ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -426,23 +409,26 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 7px;
|
width: 7px;
|
||||||
height: 7px;
|
height: 7px;
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
border-radius: 10px;
|
::-webkit-scrollbar-thumb {
|
||||||
background: #d0d0d0;
|
border-radius: 10px;
|
||||||
}
|
background: #d0d0d0;
|
||||||
.tabContent{
|
}
|
||||||
height:300px;
|
|
||||||
|
.tabContent {
|
||||||
|
height: 300px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
}
|
}
|
||||||
.father:after{
|
|
||||||
|
.father:after {
|
||||||
content: "";
|
content: "";
|
||||||
display: block;
|
display: block;
|
||||||
height: 0;
|
height: 0;
|
||||||
clear:both;
|
clear: both;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,42 +1,30 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<QuestionsForm
|
<QuestionsForm v-if="clinicalUploadType === 2" :data="data" :trial-clinical-id="trialClinicalId"
|
||||||
v-if="clinicalUploadType === 2"
|
:is-viewer="isViewer" :visit-id="visitId" :subject-id="subjectId" :open-type="openType"
|
||||||
:data="data"
|
:system-clinical-id="systemClinicalId" :trial-id="trialId" :reading-id="readingId"
|
||||||
:trial-clinical-id="trialClinicalId"
|
:clinical-form-id="clinicalFormId" :SecondReviewState="SecondReviewState" :clinical-data-level="clinicalDataLevel"
|
||||||
:is-viewer="isViewer"
|
@close="close"></QuestionsForm>
|
||||||
:visit-id="visitId"
|
<uploadClinicalData v-else :subject-visit-id="subjectVisitId" :SecondReviewState="SecondReviewState" :data="data"
|
||||||
:subject-id="subjectId"
|
:enum-type="0" :allow-add-or-edit="true" @getList="() => { }">
|
||||||
:open-type="openType"
|
|
||||||
:system-clinical-id="systemClinicalId"
|
|
||||||
:trial-id="trialId"
|
|
||||||
:reading-id="readingId"
|
|
||||||
:clinical-form-id="clinicalFormId"
|
|
||||||
:clinical-data-level="clinicalDataLevel"
|
|
||||||
@close="close"
|
|
||||||
></QuestionsForm>
|
|
||||||
<uploadClinicalData v-else :subject-visit-id="subjectVisitId" :data="data" :enum-type="0" :allow-add-or-edit="true" @getList="() => {}">
|
|
||||||
</uploadClinicalData>
|
</uploadClinicalData>
|
||||||
<div class="base-dialog-footer" v-if="!isViewer && openType !== 'look' && [0, 1].includes(clinicalDataLevel)" style="text-align:right;margin-top:10px;">
|
<div class="base-dialog-footer"
|
||||||
|
v-if="!isViewer && openType !== 'look' && [0, 1].includes(clinicalDataLevel) && SecondReviewState <= 0"
|
||||||
|
style="text-align:right;margin-top:10px;">
|
||||||
<!-- 保存 -->
|
<!-- 保存 -->
|
||||||
<el-button size="small" type="primary" @click="submitClinicalForm">
|
<el-button size="small" type="primary" @click="submitClinicalForm">
|
||||||
{{ $t('common:button:submit') }}
|
{{ $t('common:button:submit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<!-- 临床数据签名框 -->
|
<!-- 临床数据签名框 -->
|
||||||
<el-dialog
|
<el-dialog v-if="signVisible" :visible.sync="signVisible" :close-on-click-modal="false" width="600px" append-to-body
|
||||||
v-if="signVisible"
|
custom-class="base-dialog-wrapper">
|
||||||
:visible.sync="signVisible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
width="600px"
|
|
||||||
append-to-body
|
|
||||||
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" :subject-visit-id="subjectVisitId" @closeDialog="closeSignDialog" />
|
<SignForm ref="signForm" :sign-code-enum="signCode" :subject-visit-id="subjectVisitId"
|
||||||
|
@closeDialog="closeSignDialog" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -49,7 +37,7 @@ import uploadClinicalData from './components/uploadClinicalData'
|
||||||
import const_ from '@/const/sign-code'
|
import const_ from '@/const/sign-code'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "index",
|
name: "index",
|
||||||
components: { QuestionsForm, uploadClinicalData, SignForm },
|
components: { QuestionsForm, uploadClinicalData, SignForm },
|
||||||
methods: {
|
methods: {
|
||||||
submitClinicalForm() {
|
submitClinicalForm() {
|
||||||
|
@ -83,7 +71,7 @@ name: "index",
|
||||||
this.close()
|
this.close()
|
||||||
}).catch((res) => {
|
}).catch((res) => {
|
||||||
this.$refs['signForm'].btnLoading = false
|
this.$refs['signForm'].btnLoading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -106,6 +94,10 @@ name: "index",
|
||||||
type: String,
|
type: String,
|
||||||
default: () => ''
|
default: () => ''
|
||||||
},
|
},
|
||||||
|
SecondReviewState: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
clinicalUploadType: {
|
clinicalUploadType: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: () => {
|
default: () => {
|
||||||
|
@ -148,7 +140,7 @@ name: "index",
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => {}
|
default: () => { }
|
||||||
},
|
},
|
||||||
trialClinicalId: {
|
trialClinicalId: {
|
||||||
type: String,
|
type: String,
|
||||||
|
@ -166,6 +158,4 @@ name: "index",
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
|
@ -29,6 +29,10 @@ export default {
|
||||||
MedicalAudit: 215, // 医学审核
|
MedicalAudit: 215, // 医学审核
|
||||||
HeavyReadingApproval: 216, // 重阅审批
|
HeavyReadingApproval: 216, // 重阅审批
|
||||||
ResetAndAsyncCriterion: 218, //同步签名
|
ResetAndAsyncCriterion: 218, //同步签名
|
||||||
|
ResetImageQualityControlQuestion: 112, // 重置影像质控问题
|
||||||
|
CreateReviewTask: 113, // 生成复核任务
|
||||||
|
ReviewImageQualityControlQuestion: 219, // 复核质控问题
|
||||||
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -8,23 +8,23 @@
|
||||||
<el-input v-model="searchData.QuestionName" clearable style="width:120px;" />
|
<el-input v-model="searchData.QuestionName" clearable style="width:120px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 语言类型 -->
|
<!-- 语言类型 -->
|
||||||
<!-- <el-form-item-->
|
<!-- <el-form-item-->
|
||||||
<!-- :label="$t('common:title:languageType')"-->
|
<!-- :label="$t('common:title:languageType')"-->
|
||||||
<!-- style="margin-top: 10px"-->
|
<!-- style="margin-top: 10px"-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<!-- <el-select-->
|
<!-- <el-select-->
|
||||||
<!-- v-model="searchData.LanguageType"-->
|
<!-- v-model="searchData.LanguageType"-->
|
||||||
<!-- clearable-->
|
<!-- clearable-->
|
||||||
<!-- style="width:120px;"-->
|
<!-- style="width:120px;"-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<!-- <el-option-->
|
<!-- <el-option-->
|
||||||
<!-- v-for="item of $d.LanguageType"-->
|
<!-- v-for="item of $d.LanguageType"-->
|
||||||
<!-- :key="item.value"-->
|
<!-- :key="item.value"-->
|
||||||
<!-- :value="item.value"-->
|
<!-- :value="item.value"-->
|
||||||
<!-- :label="item.label"-->
|
<!-- :label="item.label"-->
|
||||||
<!-- />-->
|
<!-- />-->
|
||||||
<!-- </el-select>-->
|
<!-- </el-select>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<!-- 类型 -->
|
<!-- 类型 -->
|
||||||
<el-form-item :label="$t('trials:qcCfg:table:type')">
|
<el-form-item :label="$t('trials:qcCfg:table:type')">
|
||||||
<el-select v-model="searchData.Type" clearable style="width:120px;">
|
<el-select v-model="searchData.Type" clearable style="width:120px;">
|
||||||
|
@ -38,228 +38,139 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('trials:qcCfg:table:isRequired')">
|
<el-form-item :label="$t('trials:qcCfg:table:isRequired')">
|
||||||
<el-select v-model="searchData.IsRequired" clearable style="width:120px;">
|
<el-select v-model="searchData.IsRequired" clearable style="width:120px;">
|
||||||
<el-option v-for="item of $d.YesOrNo" :key="`IsRequired${item.label}`" :value="item.value" :label="item.label" />
|
<el-option v-for="item of $d.YesOrNo" :key="`IsRequired${item.label}`" :value="item.value"
|
||||||
|
:label="item.label" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item >
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||||
{{ $t('common:button:search') }}
|
{{ $t('common:button:search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||||
{{ $t('common:button:reset') }}
|
{{ $t('common:button:reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="isHaveQCQuestion" type="primary" icon="el-icon-view" @click="preview.visible = true">
|
||||||
v-if="isHaveQCQuestion"
|
|
||||||
type="primary"
|
|
||||||
icon="el-icon-view"
|
|
||||||
@click="preview.visible = true"
|
|
||||||
>
|
|
||||||
{{ $t('trials:qcCfg:button:preview') }}
|
{{ $t('trials:qcCfg:button:preview') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:qc-question:default-question'])"
|
||||||
v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:qc-question:default-question'])"
|
type="primary" icon="el-icon-plus" @click="handleAdd">
|
||||||
type="primary"
|
|
||||||
icon="el-icon-plus"
|
|
||||||
@click="handleAdd"
|
|
||||||
>
|
|
||||||
{{ $t('trials:qcCfg:button:default') }}
|
{{ $t('trials:qcCfg:button:default') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:qc-question:custom-question'])"
|
||||||
v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:qc-question:custom-question'])"
|
type="primary" icon="el-icon-delete" @click="handleBatchDelete">
|
||||||
type="primary"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="handleBatchDelete"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:batchDelete') }}
|
{{ $t('common:button:batchDelete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:qc-question:custom-question'])"
|
||||||
v-if="!isConfirm && hasPermi(['trials:trials-panel:setting:qc-question:custom-question'])"
|
type="primary" icon="el-icon-plus" @click="handleCustomQS">
|
||||||
type="primary"
|
|
||||||
icon="el-icon-plus"
|
|
||||||
@click="handleCustomQS"
|
|
||||||
>
|
|
||||||
{{ $t('trials:qcCfg:button:custom') }}
|
{{ $t('trials:qcCfg:button:custom') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="(!isConfirm && isHaveQCQuestion)"
|
||||||
v-if="(!isConfirm && isHaveQCQuestion)"
|
v-hasPermi="['trials:trials-panel:setting:qc-question:confirm']" type="danger" icon="el-icon-circle-check"
|
||||||
v-hasPermi="['trials:trials-panel:setting:qc-question:confirm']"
|
@click="handleConfirm">
|
||||||
type="danger"
|
|
||||||
icon="el-icon-circle-check"
|
|
||||||
@click="handleConfirm"
|
|
||||||
>
|
|
||||||
{{ $t('trials:qcCfg:button:confirm') }}
|
{{ $t('trials:qcCfg:button:confirm') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button v-if="isConfirm" v-hasPermi="['trials:trials-panel:setting:qc-question:resetQuestion']"
|
||||||
|
type="primary" @click="resetQuestion">
|
||||||
|
{{ $t('trials:qcCfg:button:resetQuestion') }}
|
||||||
|
</el-button>
|
||||||
|
<el-button v-if="isConfirm" v-hasPermi="['trials:trials-panel:setting:qc-question:reviewTask']" type="primary"
|
||||||
|
@click="reviewTask">
|
||||||
|
{{ $t('trials:qcCfg:button:reviewTask') }}
|
||||||
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- <span style="margin-left:auto">-->
|
<!-- <span style="margin-left:auto">-->
|
||||||
<!-- </span>-->
|
<!-- </span>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-table
|
<el-table v-adaptive="{ bottomOffset: 45 }" :data="list" stripe height="100"
|
||||||
v-adaptive="{bottomOffset:45}"
|
@selection-change="handleSelectionChange">
|
||||||
:data="list"
|
<el-table-column type="selection" width="55" :selectable="(row) => !row.IsQuestionQCAuditPassed" />
|
||||||
stripe
|
|
||||||
height="100"
|
|
||||||
@selection-change="handleSelectionChange"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="selection"
|
|
||||||
width="55"
|
|
||||||
/>
|
|
||||||
<!-- 序号 -->
|
<!-- 序号 -->
|
||||||
<el-table-column
|
<el-table-column prop="ShowOrder" :label="$t('trials:qcCfg:table:order')" width="60" />
|
||||||
prop="ShowOrder"
|
|
||||||
:label="$t('trials:qcCfg:table:order')"
|
|
||||||
width="60"
|
|
||||||
/>
|
|
||||||
<!-- 审核问题 -->
|
<!-- 审核问题 -->
|
||||||
<el-table-column
|
<el-table-column prop="QuestionName" :label="$t('trials:qcCfg:table:questionName')" min-width="300"
|
||||||
prop="QuestionName"
|
show-overflow-tooltip />
|
||||||
:label="$t('trials:qcCfg:table:questionName')"
|
|
||||||
min-width="300"
|
|
||||||
show-overflow-tooltip
|
|
||||||
/>
|
|
||||||
<!-- 审核问题 -->
|
<!-- 审核问题 -->
|
||||||
<!-- <el-table-column-->
|
<!-- <el-table-column-->
|
||||||
<!-- prop="LanguageType"-->
|
<!-- prop="LanguageType"-->
|
||||||
<!-- :label="$t('common:title:languageType')"-->
|
<!-- :label="$t('common:title:languageType')"-->
|
||||||
<!-- show-overflow-tooltip-->
|
<!-- show-overflow-tooltip-->
|
||||||
<!-- width="100"-->
|
<!-- width="100"-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">-->
|
||||||
<!-- {{ $fd('LanguageType', scope.row.LanguageType) }}-->
|
<!-- {{ $fd('LanguageType', scope.row.LanguageType) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- </el-table-column>-->
|
<!-- </el-table-column>-->
|
||||||
<!-- 类型 -->
|
<!-- 类型 -->
|
||||||
<el-table-column
|
<el-table-column prop="Type" :label="$t('trials:qcCfg:table:type')" show-overflow-tooltip width="120">
|
||||||
prop="Type"
|
|
||||||
:label="$t('trials:qcCfg:table:type')"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="120"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('QcType', scope.row.Type) }}
|
{{ $fd('QcType', scope.row.Type) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 选项 -->
|
<!-- 选项 -->
|
||||||
<el-table-column
|
<el-table-column prop="TypeValue" :label="$t('trials:qcCfg:table:typeValue')" show-overflow-tooltip width="180" />
|
||||||
prop="TypeValue"
|
|
||||||
:label="$t('trials:qcCfg:table:typeValue')"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 是否必填 -->
|
<!-- 是否必填 -->
|
||||||
<el-table-column
|
<el-table-column prop="IsRequired" :label="$t('trials:qcCfg:table:isRequired')" width="160">
|
||||||
prop="IsRequired"
|
|
||||||
:label="$t('trials:qcCfg:table:isRequired')"
|
|
||||||
width="160"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('YesOrNo', scope.row.IsRequired) }}
|
{{ $fd('YesOrNo', scope.row.IsRequired) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 启用状态 -->
|
<!-- 启用状态 -->
|
||||||
<el-table-column
|
<el-table-column prop="IsEnable" :label="$t('trials:qcCfg:table:isEnable')" width="120">
|
||||||
prop="IsEnable"
|
|
||||||
:label="$t('trials:qcCfg:table:isEnable')"
|
|
||||||
width="120"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('YesOrNo', scope.row.IsEnable) }}
|
{{ $fd('YesOrNo', scope.row.IsEnable) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 父问题 -->
|
<!-- 父问题 -->
|
||||||
<el-table-column
|
<el-table-column prop="ParentShowOrder" :label="$t('trials:qcCfg:table:parentQs')" show-overflow-tooltip
|
||||||
prop="ParentShowOrder"
|
width="160" />
|
||||||
:label="$t('trials:qcCfg:table:parentQs')"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="160"
|
|
||||||
/>
|
|
||||||
<!-- 父问题触发值 -->
|
<!-- 父问题触发值 -->
|
||||||
<el-table-column
|
<el-table-column prop="ParentTriggerValue" :label="$t('trials:qcCfg:table:parentTriggerValue')"
|
||||||
prop="ParentTriggerValue"
|
show-overflow-tooltip width="160" />
|
||||||
:label="$t('trials:qcCfg:table:parentTriggerValue')"
|
|
||||||
show-overflow-tooltip
|
|
||||||
width="160"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-if="hasPermi(['trials:trials-panel:setting:qc-question:edit','trials:trials-panel:setting:qc-question:delete']) && !isConfirm"
|
v-if="hasPermi(['trials:trials-panel:setting:qc-question:edit', 'trials:trials-panel:setting:qc-question:delete']) && !isConfirm"
|
||||||
:label="$t('common:action:action')"
|
:label="$t('common:action:action')" min-width="150">
|
||||||
min-width="150"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button v-hasPermi="['trials:trials-panel:setting:qc-question:edit']" circle
|
||||||
v-hasPermi="['trials:trials-panel:setting:qc-question:edit']"
|
:title="$t('common:button:edit')" icon="el-icon-edit-outline" @click="handleEdit(scope.row)"
|
||||||
circle
|
:disabled="scope.row.IsQuestionQCAuditPassed" />
|
||||||
:title="$t('common:button:edit')"
|
<el-button v-hasPermi="['trials:trials-panel:setting:qc-question:delete']" circle
|
||||||
icon="el-icon-edit-outline"
|
:title="$t('common:button:delete')" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||||
@click="handleEdit(scope.row)"
|
:disabled="scope.row.IsQuestionQCAuditPassed" />
|
||||||
/>
|
|
||||||
<el-button
|
|
||||||
v-hasPermi="['trials:trials-panel:setting:qc-question:delete']"
|
|
||||||
circle
|
|
||||||
:title="$t('common:button:delete')"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
@click="handleDelete(scope.row)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 新增默认问题 -->
|
<!-- 新增默认问题 -->
|
||||||
<el-dialog
|
<el-dialog v-if="addVisible" :visible.sync="addVisible" width="1200px" :close-on-click-modal="false"
|
||||||
v-if="addVisible"
|
custom-class="base-dialog-wrapper" :title="$t('trials:qcCfg:button:default')">
|
||||||
:visible.sync="addVisible"
|
|
||||||
width="1200px"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
:title="$t('trials:qcCfg:button:default')"
|
|
||||||
>
|
|
||||||
<div class="base-modal-body">
|
<div class="base-modal-body">
|
||||||
<DefaultQS @getList="getList" @close="addVisible = false" />
|
<DefaultQS @getList="getList" @close="addVisible = false" />
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 新增/编辑问题 -->
|
<!-- 新增/编辑问题 -->
|
||||||
<el-dialog
|
<el-dialog v-if="qsForm.visible" :visible.sync="qsForm.visible" :close-on-click-modal="false"
|
||||||
v-if="qsForm.visible"
|
custom-class="base-dialog-wrapper" :title="qsForm.title" width="600px">
|
||||||
:visible.sync="qsForm.visible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
:title="qsForm.title"
|
|
||||||
width="600px"
|
|
||||||
>
|
|
||||||
<QsForm :data="currentRow" @getList="getList" @close="qsForm.visible = false" />
|
<QsForm :data="currentRow" @getList="getList" @close="qsForm.visible = false" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!--签名框 -->
|
<!--签名框 -->
|
||||||
<el-dialog
|
<el-dialog v-if="signVisible" :visible.sync="signVisible" :close-on-click-modal="false" width="600px"
|
||||||
v-if="signVisible"
|
custom-class="base-dialog-wrapper">
|
||||||
:visible.sync="signVisible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
width="600px"
|
|
||||||
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 v-if="preview.visible" v-dialogDrag :visible.sync="preview.visible" :close-on-click-modal="false"
|
||||||
v-if="preview.visible"
|
:title="preview.title" width="500px" append-to-body custom-class="base-dialog-wrapper">
|
||||||
v-dialogDrag
|
|
||||||
:visible.sync="preview.visible"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
:title="preview.title"
|
|
||||||
width="500px"
|
|
||||||
append-to-body
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
>
|
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<QcQuestionPreview :trial-id="trialId" />
|
<QcQuestionPreview :trial-id="trialId" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -311,6 +222,18 @@ export default {
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 重置问题签名
|
||||||
|
resetQuestion() {
|
||||||
|
const { ResetImageQualityControlQuestion } = const_.processSignature
|
||||||
|
this.signCode = ResetImageQualityControlQuestion
|
||||||
|
this.signVisible = true
|
||||||
|
},
|
||||||
|
// 复核任务签名
|
||||||
|
reviewTask() {
|
||||||
|
const { CreateReviewTask } = const_.processSignature
|
||||||
|
this.signCode = CreateReviewTask
|
||||||
|
this.signVisible = true
|
||||||
|
},
|
||||||
handleSelectionChange(value) {
|
handleSelectionChange(value) {
|
||||||
this.selectedList = value
|
this.selectedList = value
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,54 +2,28 @@
|
||||||
<div v-loading="loading" class="clinical-data-wrapper">
|
<div v-loading="loading" class="clinical-data-wrapper">
|
||||||
<el-tabs type="border-card">
|
<el-tabs type="border-card">
|
||||||
<!-- 既往局部治疗史 -->
|
<!-- 既往局部治疗史 -->
|
||||||
<el-tab-pane
|
<el-tab-pane v-for="cd in clinicalDatas" :key="cd.ClinicalDataTrialSetId" :label="cd.ClinicalDataSetName">
|
||||||
v-for="cd in clinicalDatas"
|
<div v-if="cd.ClinicalUploadType * 1 === 0">
|
||||||
:key="cd.ClinicalDataTrialSetId"
|
|
||||||
:label="cd.ClinicalDataSetName"
|
|
||||||
>
|
|
||||||
<div v-if="cd.ClinicalUploadType*1 === 0">
|
|
||||||
<!-- 既往放疗史 -->
|
<!-- 既往放疗史 -->
|
||||||
<h4>{{ $t('trials:uploadClinicalData:title:pastTreatment') }}</h4>
|
<h4>{{ $t('trials:uploadClinicalData:title:pastTreatment') }}</h4>
|
||||||
<el-table
|
<el-table :data="cd.ClinicalTableData.PreviousHistoryList" style="width: 100%">
|
||||||
:data="cd.ClinicalTableData.PreviousHistoryList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 放疗部位 -->
|
<!-- 放疗部位 -->
|
||||||
<el-table-column
|
<el-table-column prop="Position" :label="$t('trials:uploadClinicalData:table:bodyPart')" width="180" />
|
||||||
prop="Position"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:bodyPart')"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<!-- 开始日期 -->
|
<!-- 开始日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="StartTime" :label="$t('trials:uploadClinicalData:table:beginDate')" width="180">
|
||||||
prop="StartTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:beginDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
|
{{ scope.row.StartTime ? moment(scope.row.StartTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 结束日期 -->
|
<!-- 结束日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="EndTime" :label="$t('trials:uploadClinicalData:table:endDate')" width="180">
|
||||||
prop="EndTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:endDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
|
{{ scope.row.EndTime ? moment(scope.row.EndTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 病灶是否PD -->
|
<!-- 病灶是否PD -->
|
||||||
<el-table-column
|
<el-table-column prop="IsPD" :label="$t('trials:uploadClinicalData:table:isPD')" width="180">
|
||||||
prop="IsPD"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:isPD')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ $fd('IsPdEnum', scope.row.IsPD) }}
|
{{ $fd('IsPdEnum', scope.row.IsPD) }}
|
||||||
</template>
|
</template>
|
||||||
|
@ -57,133 +31,71 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 既往手术史 -->
|
<!-- 既往手术史 -->
|
||||||
<h4>{{ $t('trials:uploadClinicalData:title:pastSurgery') }}</h4>
|
<h4>{{ $t('trials:uploadClinicalData:title:pastSurgery') }}</h4>
|
||||||
<el-table
|
<el-table :data="cd.ClinicalTableData.PreviousSurgeryList" style="width: 100%">
|
||||||
:data="cd.ClinicalTableData.PreviousSurgeryList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 手术名称 -->
|
<!-- 手术名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="OperationName" :label="$t('trials:uploadClinicalData:table:surgeryName')"
|
||||||
prop="OperationName"
|
width="180" />
|
||||||
:label="$t('trials:uploadClinicalData:table:surgeryName')"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<!-- 手术日期 -->
|
<!-- 手术日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="OperationTime" :label="$t('trials:uploadClinicalData:table:surgeryDate')"
|
||||||
prop="OperationTime"
|
width="180">
|
||||||
:label="$t('trials:uploadClinicalData:table:surgeryDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
|
{{ scope.row.OperationTime ? moment(scope.row.OperationTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 既往其他治疗史 -->
|
<!-- 既往其他治疗史 -->
|
||||||
<h4>{{ $t('trials:uploadClinicalData:title:others') }}</h4>
|
<h4>{{ $t('trials:uploadClinicalData:title:others') }}</h4>
|
||||||
<el-table
|
<el-table :data="cd.ClinicalTableData.PreviousOtherList" style="width: 100%">
|
||||||
:data="cd.ClinicalTableData.PreviousOtherList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 治疗类型 -->
|
<!-- 治疗类型 -->
|
||||||
<el-table-column
|
<el-table-column prop="TreatmentType" :label="$t('trials:uploadClinicalData:table:treatmentType')"
|
||||||
prop="TreatmentType"
|
width="180" />
|
||||||
:label="$t('trials:uploadClinicalData:table:treatmentType')"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<!-- 开始日期 -->
|
<!-- 开始日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="StartTime" :label="$t('trials:uploadClinicalData:table:treatmentbeginDate')"
|
||||||
prop="StartTime"
|
width="180">
|
||||||
:label="$t('trials:uploadClinicalData:table:treatmentbeginDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
|
{{ scope.row.StartTime ? moment(scope.row.StartTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 结束日期 -->
|
<!-- 结束日期 -->
|
||||||
<el-table-column
|
<el-table-column prop="EndTime" :label="$t('trials:uploadClinicalData:table:treatmentendDate')" width="180">
|
||||||
prop="EndTime"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:treatmentendDate')"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
|
{{ scope.row.EndTime ? moment(scope.row.EndTime).format('YYYY-MM-DD') : '' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="cd.ClinicalUploadType*1 === 1">
|
<div v-if="cd.ClinicalUploadType * 1 === 1">
|
||||||
<el-table
|
<el-table :data="cd.PDFFileList" style="width: 100%">
|
||||||
:data="cd.PDFFileList"
|
<el-table-column type="index" width="50" />
|
||||||
style="width: 100%"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
type="index"
|
|
||||||
width="50"
|
|
||||||
/>
|
|
||||||
<!-- 文件名称 -->
|
<!-- 文件名称 -->
|
||||||
<el-table-column
|
<el-table-column prop="FileName" :label="$t('trials:uploadClinicalData:table:fileName')" width="250" />
|
||||||
prop="FileName"
|
|
||||||
:label="$t('trials:uploadClinicalData:table:fileName')"
|
|
||||||
width="250"
|
|
||||||
/>
|
|
||||||
<!-- 上传时间 -->
|
<!-- 上传时间 -->
|
||||||
<el-table-column
|
<el-table-column prop="CreateTime" :label="$t('trials:uploadClinicalData:table:uploadedTime')"
|
||||||
prop="CreateTime"
|
width="200" />
|
||||||
:label="$t('trials:uploadClinicalData:table:uploadedTime')"
|
<el-table-column :label="$t('common:action:action')" width="200">
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
:label="$t('common:action:action')"
|
|
||||||
width="200"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 预览 -->
|
<!-- 预览 -->
|
||||||
|
|
||||||
<el-button
|
<el-button type="text" size="small" @click.native.prevent="preview(scope.row)">
|
||||||
type="text"
|
|
||||||
size="small"
|
|
||||||
@click.native.prevent="preview(scope.row)"
|
|
||||||
>
|
|
||||||
{{ $t('trials:uploadClinicalData:action:preview') }}
|
{{ $t('trials:uploadClinicalData:action:preview') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="cd.ClinicalUploadType*1 === 2">
|
<div v-if="cd.ClinicalUploadType * 1 === 2">
|
||||||
<clinicalDataQuestions
|
<clinicalDataQuestions :data="cd" :trial-clinical-id="cd.ClinicalDataTrialSetId" :is-viewer="false"
|
||||||
:data="cd"
|
:SecondReviewState="SecondReviewState" :visit-id="cd.VisitId" :subject-id="cd.SubjectId"
|
||||||
:trial-clinical-id="cd.ClinicalDataTrialSetId"
|
:trial-id="cd.TrialId" :reading-id="cd.ReadingId" :clinical-form-id="cd.ClinicalFromList[0].ClinicalFormId"
|
||||||
:is-viewer="false"
|
:open-type="'look'" @close="false" />
|
||||||
:visit-id="cd.VisitId"
|
|
||||||
:subject-id="cd.SubjectId"
|
|
||||||
:trial-id="cd.TrialId"
|
|
||||||
:reading-id="cd.ReadingId"
|
|
||||||
:clinical-form-id="cd.ClinicalFromList[0].ClinicalFormId"
|
|
||||||
:open-type="'look'"
|
|
||||||
@close="false"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<!-- 预览文件 -->
|
<!-- 预览文件 -->
|
||||||
<el-dialog
|
<el-dialog v-if="previewObj.visible" :visible.sync="previewObj.visible" :title="previewObj.fileName"
|
||||||
v-if="previewObj.visible"
|
:fullscreen="true" append-to-body custom-class="base-dialog-wrapper">
|
||||||
:visible.sync="previewObj.visible"
|
|
||||||
:title="previewObj.fileName"
|
|
||||||
:fullscreen="true"
|
|
||||||
append-to-body
|
|
||||||
custom-class="base-dialog-wrapper"
|
|
||||||
>
|
|
||||||
<div class="base-modal-body" style="border:2px solid #ccc;padding: 10px">
|
<div class="base-modal-body" style="border:2px solid #ccc;padding: 10px">
|
||||||
<PreviewFile v-if="previewObj.visible" :file-path="previewObj.filePath" :file-type="previewObj.fileType" />
|
<PreviewFile v-if="previewObj.visible" :file-path="previewObj.filePath" :file-type="previewObj.fileType" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -209,6 +121,10 @@ export default {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0
|
default: 0
|
||||||
},
|
},
|
||||||
|
SecondReviewState: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
subjectId: {
|
subjectId: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true
|
||||||
|
@ -234,7 +150,7 @@ export default {
|
||||||
// PreviousOtherList: this.subjectClinicalData.PreviousOtherList,
|
// PreviousOtherList: this.subjectClinicalData.PreviousOtherList,
|
||||||
// PreviousPDFList: this.subjectClinicalData.PreviousPDFList,
|
// PreviousPDFList: this.subjectClinicalData.PreviousPDFList,
|
||||||
moment,
|
moment,
|
||||||
previewObj:{visible:false,filePath:'',fileType:''},
|
previewObj: { visible: false, filePath: '', fileType: '' },
|
||||||
clinicalDatas: []
|
clinicalDatas: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -247,7 +163,7 @@ export default {
|
||||||
if (!row.FileName) return
|
if (!row.FileName) return
|
||||||
this.previewObj.fileName = row.FileName
|
this.previewObj.fileName = row.FileName
|
||||||
this.previewObj.filePath = row.Path
|
this.previewObj.filePath = row.Path
|
||||||
this.previewObj.fileType ='pdf'
|
this.previewObj.fileType = 'pdf'
|
||||||
this.previewObj.visible = true
|
this.previewObj.visible = true
|
||||||
// window.open(this.OSSclientConfig.basePath + path, '_blank')
|
// window.open(this.OSSclientConfig.basePath + path, '_blank')
|
||||||
},
|
},
|
||||||
|
@ -284,4 +200,3 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-loading="loading">
|
<div v-loading="loading">
|
||||||
<el-form
|
<el-form v-if="isRender" ref="questionForm" size="small" :model="questionForm" style="width:100%;">
|
||||||
v-if="isRender"
|
<qSFormItem v-for="question of questions" :key="question.Id" :question="question" :question-form="questionForm"
|
||||||
ref="questionForm"
|
:is-audit="isAudit" @resetFormItemData="resetFormItemData" />
|
||||||
size="small"
|
|
||||||
:model="questionForm"
|
|
||||||
style="width:100%;"
|
|
||||||
>
|
|
||||||
<qSFormItem
|
|
||||||
v-for="question of questions"
|
|
||||||
:key="question.Id"
|
|
||||||
:question="question"
|
|
||||||
:question-form="questionForm"
|
|
||||||
:is-audit="isAudit"
|
|
||||||
@resetFormItemData="resetFormItemData"
|
|
||||||
/>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -49,6 +37,10 @@ export default {
|
||||||
isAudit: {
|
isAudit: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
SecondReviewTime: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -59,6 +51,13 @@ export default {
|
||||||
isRender: false
|
isRender: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
SecondReviewTime() {
|
||||||
|
if (this.SecondReviewTime) {
|
||||||
|
this.getQuestions()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getQuestions()
|
this.getQuestions()
|
||||||
},
|
},
|
||||||
|
@ -66,11 +65,14 @@ export default {
|
||||||
getQuestions() {
|
getQuestions() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
var param = {
|
var param = {
|
||||||
trialId: this.trialId,
|
trialId: this.trialId || this.$route.query.trialId,
|
||||||
subjectVisitId: this.subjectVisitId,
|
subjectVisitId: this.subjectVisitId,
|
||||||
qcProcessEnum: this.qcProcessEnum,
|
qcProcessEnum: this.qcProcessEnum,
|
||||||
currentQCEnum: this.currentQCEnum
|
currentQCEnum: this.currentQCEnum
|
||||||
}
|
}
|
||||||
|
if (this.SecondReviewTime) {
|
||||||
|
param.SecondReviewTime = this.SecondReviewTime
|
||||||
|
}
|
||||||
getQCQuestionAnswer(param).then(res => {
|
getQCQuestionAnswer(param).then(res => {
|
||||||
res.Result.map((v) => {
|
res.Result.map((v) => {
|
||||||
this.$set(this.questionForm, v.Id, v.Answer)
|
this.$set(this.questionForm, v.Id, v.Answer)
|
||||||
|
@ -99,10 +101,14 @@ export default {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.$refs['questionForm'].validate(valid => {
|
this.$refs['questionForm'].validate(valid => {
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
this.$confirm(this.$t('trials:audit:message:specifyQuestions'), {
|
let message = this.$t('trials:audit:message:specifyQuestions')
|
||||||
|
if (this.SecondReviewTime) {
|
||||||
|
message = this.$t('trials:audit:message:specifyResetQuestions')
|
||||||
|
}
|
||||||
|
this.$confirm(message, {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
showCancelButton: false,
|
showCancelButton: false,
|
||||||
callback: action => {}
|
callback: action => { }
|
||||||
})
|
})
|
||||||
reject()
|
reject()
|
||||||
} else {
|
} else {
|
||||||
|
@ -111,7 +117,7 @@ export default {
|
||||||
answers.push({ Id: k, answer: this.questionForm[k] })
|
answers.push({ Id: k, answer: this.questionForm[k] })
|
||||||
}
|
}
|
||||||
resolve(answers)
|
resolve(answers)
|
||||||
// 设置当前节点的Answer
|
// 设置当前节点的Answer
|
||||||
// this.answers.forEach((item, index) => {
|
// this.answers.forEach((item, index) => {
|
||||||
// if (item.IsShow) {
|
// if (item.IsShow) {
|
||||||
// this.$set(this.answers[index], 'Answer', this.questionForm[item.TrialQCQuestionConfigureId])
|
// this.$set(this.answers[index], 'Answer', this.questionForm[item.TrialQCQuestionConfigureId])
|
||||||
|
@ -121,8 +127,16 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
save() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
var answers = []
|
||||||
|
for (const k in this.questionForm) {
|
||||||
|
answers.push({ Id: k, answer: this.questionForm[k] })
|
||||||
|
}
|
||||||
|
resolve(answers)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -337,9 +337,14 @@
|
||||||
'trials:trials-panel:visit:qc-check:audit',
|
'trials:trials-panel:visit:qc-check:audit',
|
||||||
'trials:trials-panel:visit:qc-check:back'
|
'trials:trials-panel:visit:qc-check:back'
|
||||||
])
|
])
|
||||||
" :label="$t('common:action:action')" width="240" fixed="right">
|
" :label="$t('common:action:action')" width="280" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.AuditState * 1 >= 3">
|
<div v-if="scope.row.AuditState * 1 >= 3">
|
||||||
|
<!--复核 -->
|
||||||
|
<el-button v-if="scope.row.SecondReviewState > 0"
|
||||||
|
v-hasPermi="['trials:trials-panel:visit:qc-check:reviewTask']"
|
||||||
|
:title="$t('trials:qcCheck:button:reviewTask')" circle icon="el-icon-edit-outline" :disabled="scope.row.IsImageBackApplying
|
||||||
|
" @click="reviewTask(scope.row)" />
|
||||||
<!-- 领取 -->
|
<!-- 领取 -->
|
||||||
<!-- ((scope.row.AuditState*1 === 3 || scope.row.AuditState*1 === 5)) ||(!scope.row.IsTake && (scope.row.AuditState*1 === 4 || scope.row.AuditState*1 === 6)) -->
|
<!-- ((scope.row.AuditState*1 === 3 || scope.row.AuditState*1 === 5)) ||(!scope.row.IsTake && (scope.row.AuditState*1 === 4 || scope.row.AuditState*1 === 6)) -->
|
||||||
<el-button v-hasPermi="['trials:trials-panel:visit:qc-check:receive']"
|
<el-button v-hasPermi="['trials:trials-panel:visit:qc-check:receive']"
|
||||||
|
@ -461,8 +466,8 @@
|
||||||
</span>
|
</span>
|
||||||
<div class="qc-dialog-body">
|
<div class="qc-dialog-body">
|
||||||
<quality-assurance v-if="qcVisible" :data="rowData" :disabled="rowData.disabled ? rowData.disabled : false"
|
<quality-assurance v-if="qcVisible" :data="rowData" :disabled="rowData.disabled ? rowData.disabled : false"
|
||||||
:q-type="rowData.qcType ? rowData.qcType : 1" @getList="getList" @nextTask="nextTask"
|
:SecondReviewState="rowData.SecondReviewState" :q-type="rowData.qcType ? rowData.qcType : 1"
|
||||||
@openManuals="openManuals" @close="qcVisible = false" />
|
@getList="getList" @nextTask="nextTask" @openManuals="openManuals" @close="qcVisible = false" />
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 手册 -->
|
<!-- 手册 -->
|
||||||
|
@ -805,6 +810,11 @@ export default {
|
||||||
})
|
})
|
||||||
.catch(() => { })
|
.catch(() => { })
|
||||||
},
|
},
|
||||||
|
// 复审
|
||||||
|
reviewTask(row) {
|
||||||
|
this.rowData = { ...row }
|
||||||
|
this.qcVisible = true
|
||||||
|
},
|
||||||
// 初审
|
// 初审
|
||||||
handlePrimaryQC(row) {
|
handlePrimaryQC(row) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
|
|
Loading…
Reference in New Issue