【中心调研】中心调研表手机扫描二维码进入时,同pc一样也需要增加验证。上传文件功能也要能正常使用
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
69ba30e5a9
commit
7bc70bfd6c
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="wscn-http404-container">
|
<div class="wscn-http404-container">
|
||||||
<div class="wscn-http404" style="display: flex;align-items: center">
|
<div class="wscn-http404" style="display: flex;align-items: center;flex-wrap: wrap;justify-content: center;">
|
||||||
<div class="pic-404">
|
<div class="pic-404">
|
||||||
<!-- <img class="pic-404__parent" src="@/assets/login-bg.png" alt="404"> -->
|
<!-- <img class="pic-404__parent" src="@/assets/login-bg.png" alt="404"> -->
|
||||||
<svg-icon icon-class="login-bg" style="width: 100%; height: 100%" />
|
<svg-icon icon-class="login-bg" style="width: 100%; height: 100%" />
|
||||||
|
|
@ -55,18 +55,20 @@ export default {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 40%;
|
top: 40%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wscn-http404 {
|
.wscn-http404 {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 1200px;
|
width: 100%;
|
||||||
padding: 0 50px;
|
padding: 0 50px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
.pic-404 {
|
.pic-404 {
|
||||||
position: relative;
|
position: relative;
|
||||||
float: left;
|
float: left;
|
||||||
width: 500px;
|
width: 100%;
|
||||||
|
max-width: 500px;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
|
@ -211,6 +213,7 @@ export default {
|
||||||
animation-name: slideUp;
|
animation-name: slideUp;
|
||||||
animation-duration: 0.5s;
|
animation-duration: 0.5s;
|
||||||
animation-fill-mode: forwards;
|
animation-fill-mode: forwards;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__headline {
|
&__headline {
|
||||||
|
|
|
||||||
|
|
@ -25,19 +25,10 @@
|
||||||
<div class="login_content">
|
<div class="login_content">
|
||||||
<div class="form-label-width">
|
<div class="form-label-width">
|
||||||
<el-form-item :label="$t('trials:researchForm:form:siteName')" prop="TrialSiteId">
|
<el-form-item :label="$t('trials:researchForm:form:siteName')" prop="TrialSiteId">
|
||||||
<el-select
|
<el-select v-model="form.TrialSiteId" filterable style="width:100%;"
|
||||||
v-model="form.TrialSiteId"
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" @change="handleSiteChange">
|
||||||
filterable
|
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteAliasName"
|
||||||
style="width:100%;"
|
:value="item.TrialSiteId" />
|
||||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory"
|
|
||||||
@change="handleSiteChange"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="(item,index) of siteOptions"
|
|
||||||
:key="index"
|
|
||||||
:label="item.TrialSiteAliasName"
|
|
||||||
:value="item.TrialSiteId"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 中心编号 -->
|
<!-- 中心编号 -->
|
||||||
|
|
@ -49,74 +40,149 @@
|
||||||
<el-input v-model="form.UserName" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
<el-input v-model="form.UserName" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 联系电话 -->
|
<!-- 联系电话 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:researchForm:form:contactorPhone')" prop="Phone">
|
||||||
:label="$t('trials:researchForm:form:contactorPhone')"
|
|
||||||
prop="Phone"
|
|
||||||
>
|
|
||||||
<el-input v-model="form.Phone" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
<el-input v-model="form.Phone" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 联系邮箱 -->
|
<!-- 联系邮箱 -->
|
||||||
<el-form-item :label="$t('trials:researchForm:form:contactorEmail')">
|
<el-form-item :label="$t('trials:researchForm:form:contactorEmail')" prop="Email">
|
||||||
<el-input v-model="form.Email" disabled />
|
<el-input v-model="form.Email" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item :label="$t('trials:researchForm:form:CommonUploadRecordId')
|
||||||
|
" v-if="IsSupportUploadFile" class="file">
|
||||||
|
<el-input v-model="form.SiteSurveyFile.FileName" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"
|
||||||
|
style="margin-right: 5px;" disabled />
|
||||||
|
<div class="upload" v-if="!(!(state === 0 && userTypeEnumInt === 0) || isHistory)">
|
||||||
|
<input accept=".pdf,.docx,.doc" type="file" name="uploadFolder" class="select-file" title=""
|
||||||
|
@change="beginScanFiles($event)" />
|
||||||
|
<div class="btn-select">
|
||||||
|
{{ $t('dictionary:template:basicData:button:selectFile') }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <el-button type="primary" @click="viewManualFile"
|
||||||
|
:disabled="!this.form.SiteSurveyFile || !this.form.SiteSurveyFile.Path">{{
|
||||||
|
$t('trials:researchForm:form:preview') }}</el-button> -->
|
||||||
|
<el-button type="primary" @click="downLoad"
|
||||||
|
:disabled="!this.form.SiteSurveyFile || !this.form.SiteSurveyFile.Path">{{
|
||||||
|
$t('trials:researchForm:form:download') }}</el-button>
|
||||||
|
</el-form-item>
|
||||||
<!-- 平均刻盘周期(天) -->
|
<!-- 平均刻盘周期(天) -->
|
||||||
<el-form-item v-if="!notShowFieldList.includes('AverageEngravingCycle')" :label="$t('trials:researchForm:form:engravingCycle')">
|
<el-form-item v-if="!notShowFieldList.includes('AverageEngravingCycle')"
|
||||||
<el-input-number v-model="form.AverageEngravingCycle" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0" style="width:100%;" />
|
:label="$t('trials:researchForm:form:engravingCycle')">
|
||||||
|
<el-input-number v-model="form.AverageEngravingCycle"
|
||||||
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0"
|
||||||
|
style="width:100%;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- MRI-PDFF 是否为本中心该适应症的常规诊疗检查项目? -->
|
||||||
|
<el-form-item v-if="!notShowFieldList.includes('IsRoutineMRIPDEE')"
|
||||||
|
:label="$t('trials:researchForm:form:IsRoutineMRIPDEE')" prop="IsRoutineMRIPDEE">
|
||||||
|
<el-radio-group v-model="form.IsRoutineMRIPDEE"
|
||||||
|
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)">
|
||||||
|
<el-radio v-for="item of $d.YesOrNo" :key="`IsRoutineMRIPDEE${item.value}`" :label="item.value">{{
|
||||||
|
item.label }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- MRI-PDFF 检查的检测周期(含单次检查时长、预约等待时长等) -->
|
||||||
|
<el-form-item
|
||||||
|
v-if="!notShowFieldList.includes('MRIPDFFScanTime') || !notShowFieldList.includes('MRIPDFFLeadTime') || !notShowFieldList.includes('MRIPDFFOther')"
|
||||||
|
:label="$t('trials:researchForm:form:IsMRIPDFF')">
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 单次检查时长(分钟) -->
|
||||||
|
<el-form-item v-if="!notShowFieldList.includes('MRIPDFFScanTime')"
|
||||||
|
:label="$t('trials:researchForm:form:MRIPDFFScanTime')">
|
||||||
|
<el-input-number v-model="form.MRIPDFFScanTime"
|
||||||
|
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)" controls-position="right" :min="0" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 平均预约等待时长(天) -->
|
||||||
|
<el-form-item v-if="!notShowFieldList.includes('MRIPDFFLeadTime')"
|
||||||
|
:label="$t('trials:researchForm:form:MRIPDFFLeadTime')">
|
||||||
|
<el-input-number v-model="form.MRIPDFFLeadTime"
|
||||||
|
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)" controls-position="right" :min="0" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 特殊情况备注-->
|
||||||
|
<el-form-item v-if="!notShowFieldList.includes('MRIPDFFOther')"
|
||||||
|
:label="$t('trials:researchForm:form:MRIPDFFOther')">
|
||||||
|
<el-input v-model="form.MRIPDFFOther" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
|
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 如已选择研究者评估,项目是否会授权影像科老师参与本试验?如不单独授权,是否可在试验中保持 1-2 名固定技师操作?-->
|
||||||
|
<el-form-item
|
||||||
|
v-if="!notShowFieldList.includes('IsAuthorizeRadiologistsParticipate') || !notShowFieldList.includes('AssignFixedTechnologists')"
|
||||||
|
:label="$t('trials:researchForm:form:IsAuthorize')" prop="IsAuthorize">
|
||||||
|
<el-radio-group v-model="form.IsAuthorize" :disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)"
|
||||||
|
@input="handleIsAuthorizeInput">
|
||||||
|
<el-radio label="IsAuthorizeRadiologistsParticipate">{{
|
||||||
|
$t('trials:researchForm:form:IsAuthorizeRadiologistsParticipate') }}</el-radio>
|
||||||
|
<el-radio label="AssignFixedTechnologists">{{
|
||||||
|
$t('trials:researchForm:form:AssignFixedTechnologists') }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”) -->
|
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”) -->
|
||||||
<el-form-item v-if="!notShowFieldList.includes('IsConfirmImagingTechnologist')" :label="$t('trials:researchForm:form:isQualified')">
|
<el-form-item v-if="!notShowFieldList.includes('IsConfirmImagingTechnologist')"
|
||||||
<el-radio-group v-model="form.IsConfirmImagingTechnologist" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
:label="$t('trials:researchForm:form:isQualified')" prop="IsConfirmImagingTechnologist">
|
||||||
<el-radio
|
<el-radio-group v-model="form.IsConfirmImagingTechnologist"
|
||||||
v-for="item of $d.YesOrNo"
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
||||||
:key="`IsConfirmImagingTechnologist${item.value}`"
|
<el-radio v-for="item of $d.YesOrNo" :key="`IsConfirmImagingTechnologist${item.value}`"
|
||||||
:label="item.value"
|
:label="item.value">{{ item.label }}</el-radio>
|
||||||
>{{ item.label }}</el-radio>
|
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 原因 -->
|
<!-- 原因 -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="!notShowFieldList.includes('NotConfirmReson') && form.IsConfirmImagingTechnologist === false"
|
v-if="!notShowFieldList.includes('NotConfirmReson') && form.IsConfirmImagingTechnologist === false"
|
||||||
:label="$t('trials:researchForm:form:notQualifiedReason')"
|
:label="$t('trials:researchForm:form:notQualifiedReason')" prop="NotConfirmReson">
|
||||||
>
|
<el-input v-model="form.NotConfirmReson" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
<el-input
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||||
v-model="form.NotConfirmReson"
|
|
||||||
type="textarea"
|
|
||||||
:autosize="{ minRows: 2, maxRows: 4}"
|
|
||||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 研究单位疗效评估人员类型 -->
|
<!-- 研究单位疗效评估人员类型 -->
|
||||||
<el-form-item v-if="!notShowFieldList.includes('EfficacyEvaluatorType')" :label="$t('trials:researchForm:form:staffType')">
|
<el-form-item v-if="!notShowFieldList.includes('EfficacyEvaluatorType')"
|
||||||
<el-radio-group v-model="form.EfficacyEvaluatorType" :disabled="!(state === 0 && userTypeEnumInt === 0)|| isHistory">
|
:label="$t('trials:researchForm:form:staffType')">
|
||||||
<el-radio v-for="item of $d.EfficacyEvaluatorType" :key="`EfficacyEvaluatorType${item.value}`" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio-group v-model="form.EfficacyEvaluatorType"
|
||||||
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
||||||
|
<el-radio v-for="item of $d.EfficacyEvaluatorType" :key="`EfficacyEvaluatorType${item.value}`"
|
||||||
|
:label="item.value">{{ item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 是否严格按照研究单位影像手册参数完成图像采集 -->
|
<!-- 是否严格按照研究单位影像手册参数完成图像采集 -->
|
||||||
<el-form-item v-if="!notShowFieldList.includes('IsFollowStudyParameters')">
|
<el-form-item v-if="!notShowFieldList.includes('IsFollowStudyParameters')" prop="IsFollowStudyParameters">
|
||||||
<span slot="label" v-html="$t('trials:researchForm:form:isFollowStudyParam')" />
|
<span slot="label" v-html="$t('trials:researchForm:form:isFollowStudyParam')" />
|
||||||
<el-radio-group v-model="form.IsFollowStudyParameters" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
<el-radio-group v-model="form.IsFollowStudyParameters"
|
||||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsFollowStudyParameters${item.value}`" :label="item.value">{{ item.label }}</el-radio>
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
||||||
|
<el-radio v-for="item of $d.YesOrNo" :key="`IsFollowStudyParameters${item.value}`" :label="item.value">{{
|
||||||
|
item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
<el-button type="primary" size="small" style="margin-left: 5px;" @click="viewManual">
|
||||||
|
{{ $t('trials:researchForm:button:viewManual') }}
|
||||||
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 不能严格按照研究单位影像手册参数采集图像原因 -->
|
<!-- 不能严格按照研究单位影像手册参数采集图像原因 -->
|
||||||
<el-form-item
|
<el-form-item v-if="!notShowFieldList.includes('NotFollowReson') && !form.IsFollowStudyParameters"
|
||||||
v-if="!notShowFieldList.includes('NotFollowReson') && !form.IsFollowStudyParameters"
|
prop="NotFollowReson">
|
||||||
>
|
|
||||||
<span slot="label" v-html="$t('trials:researchForm:form:notFollowStudyParam')" />
|
<span slot="label" v-html="$t('trials:researchForm:form:notFollowStudyParam')" />
|
||||||
<el-input
|
<el-input v-model="form.NotFollowReson" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
v-model="form.NotFollowReson"
|
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||||
type="textarea"
|
</el-form-item>
|
||||||
:autosize="{ minRows: 2, maxRows: 4}"
|
<!-- 是否严格按照影像手册参数完成刻盘 -->
|
||||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory"
|
<el-form-item v-if="!notShowFieldList.includes('ISStrictManualBurnFlag')" prop="ISStrictManualBurnFlag">
|
||||||
/>
|
<span slot="label" v-html="$t('trials:researchForm:form:ISStrictManualBurnFlag')" />
|
||||||
|
<el-radio-group v-model="form.ISStrictManualBurnFlag"
|
||||||
|
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)" style="margin-right: 10px;">
|
||||||
|
<el-radio v-for="item of $d.YesOrNo" :key="`ISStrictManualBurnFlag${item.value}`" :label="item.value">{{
|
||||||
|
item.label }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 不能严格按照影像手册参数完成刻盘原因 -->
|
||||||
|
<el-form-item v-if="!notShowFieldList.includes('NotStrictManualBurnFlagReason') && !form.ISStrictManualBurnFlag"
|
||||||
|
prop="NotStrictManualBurnFlagReason">
|
||||||
|
<span slot="label" v-html="$t('trials:researchForm:form:NotStrictManualBurnFlagReason')" />
|
||||||
|
<el-input v-model="form.NotStrictManualBurnFlagReason" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
|
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory)" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getTrialSiteSelect } from '@/api/trials'
|
import { getTrialSiteSelect, getTrialDocumentList, addOrUpdateCommonUploadRecord } from '@/api/trials'
|
||||||
import { addOrUpdateTrialSiteSurvey } from '@/api/research'
|
import { addOrUpdateTrialSiteSurvey } from '@/api/research'
|
||||||
export default {
|
export default {
|
||||||
name: 'ResearchBasicInfo',
|
name: 'ResearchBasicInfo',
|
||||||
|
|
@ -124,7 +190,15 @@ export default {
|
||||||
isHistory: {
|
isHistory: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
}
|
},
|
||||||
|
IsOnlyUploadFile: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
IsSupportUploadFile: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
var checkPhone = (rule, value, callback) => {
|
var checkPhone = (rule, value, callback) => {
|
||||||
|
|
@ -156,16 +230,51 @@ export default {
|
||||||
Phone: '', // 联系人电话
|
Phone: '', // 联系人电话
|
||||||
Email: '', // 联系人邮箱
|
Email: '', // 联系人邮箱
|
||||||
AverageEngravingCycle: '',
|
AverageEngravingCycle: '',
|
||||||
|
IsRoutineMRIPDEE: '',
|
||||||
|
MRIPDFFScanTime: '',
|
||||||
|
MRIPDFFLeadTime: '',
|
||||||
|
MRIPDFFOther: '',
|
||||||
|
IsAuthorize: '',
|
||||||
|
IsAuthorizeRadiologistsParticipate: '',
|
||||||
|
AssignFixedTechnologists: '',
|
||||||
|
ISStrictManualBurnFlag: '',
|
||||||
|
NotStrictManualBurnFlagReason: '',
|
||||||
IsConfirmImagingTechnologist: '',
|
IsConfirmImagingTechnologist: '',
|
||||||
NotConfirmReson: '',
|
NotConfirmReson: '',
|
||||||
EfficacyEvaluatorType: '',
|
EfficacyEvaluatorType: '',
|
||||||
IsFollowStudyParameters: '',
|
IsFollowStudyParameters: '',
|
||||||
NotFollowReson: ''
|
NotFollowReson: '',
|
||||||
|
CommonUploadRecordId: null,
|
||||||
|
SiteSurveyFile: []
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
TrialSiteId: [
|
TrialSiteId: [
|
||||||
{ required: true, message: this.$t('trials:researchForm:formRule:specify'), trigger: 'blur' }
|
{ required: true, message: this.$t('trials:researchForm:formRule:specify'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
|
IsRoutineMRIPDEE: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
IsAuthorize: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
ISStrictManualBurnFlag: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
IsFollowStudyParameters: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
IsConfirmImagingTechnologist: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
NotConfirmReson: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:specify'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
NotFollowReson: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:specify'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
NotStrictManualBurnFlagReason: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:specify'), trigger: 'blur' }
|
||||||
|
],
|
||||||
UserName: [
|
UserName: [
|
||||||
{ required: true, validator: (rule, value, callback) => { !value ? callback(new Error(this.$t('trials:researchForm:formRule:specify'))) : callback() }, trigger: 'blur' },
|
{ required: true, validator: (rule, value, callback) => { !value ? callback(new Error(this.$t('trials:researchForm:formRule:specify'))) : callback() }, trigger: 'blur' },
|
||||||
{ min: 0, max: 50, message: this.$t('trials:researchForm:formRule:maxLength'), trigger: ['blur', 'change'] }
|
{ min: 0, max: 50, message: this.$t('trials:researchForm:formRule:maxLength'), trigger: ['blur', 'change'] }
|
||||||
|
|
@ -186,14 +295,173 @@ export default {
|
||||||
state: null,
|
state: null,
|
||||||
userTypeEnumInt: zzSessionStorage.getItem('userTypeEnumInt') * 1,
|
userTypeEnumInt: zzSessionStorage.getItem('userTypeEnumInt') * 1,
|
||||||
isShow: false,
|
isShow: false,
|
||||||
notShowFieldList: []
|
notShowFieldList: [],
|
||||||
|
perview_visible: false,
|
||||||
|
ExternalList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async beginScanFiles(e) {
|
||||||
|
try {
|
||||||
|
let file = e.target.files[0]
|
||||||
|
let name = file.name
|
||||||
|
if (!this.checkFileSuffix(name)) return this.$message.warning(this.$t("trials:researchRecord:ImageManual:message:checkFileSuffix"))
|
||||||
|
this.loading = true
|
||||||
|
file = await this.fileToBlob(file)
|
||||||
|
let scope = this
|
||||||
|
var index = name.lastIndexOf('.')
|
||||||
|
var type = name.substring(index + 1, name.length)
|
||||||
|
let res = await this.OSSclient.put(
|
||||||
|
`/${this.$route.query.trialId}/InspectionUpload/SiteSurvey/${this.form.TrialSiteId}/${scope.getGuid(Date.now() + '_' + name.split('.')[0])}.${type}`,
|
||||||
|
file
|
||||||
|
)
|
||||||
|
let data = {
|
||||||
|
Path: this.$getObjectName(res.url),
|
||||||
|
FileName: name,
|
||||||
|
FileSize: file.size,
|
||||||
|
FileType: type
|
||||||
|
|
||||||
|
}
|
||||||
|
res = await addOrUpdateCommonUploadRecord(data)
|
||||||
|
this.loading = false
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.form.CommonUploadRecordId = res.Result
|
||||||
|
data.Id = res.Result
|
||||||
|
this.form.SiteSurveyFile = data
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checkFileSuffix(fileName) {
|
||||||
|
var index = fileName.lastIndexOf('.')
|
||||||
|
var suffix = fileName.substring(index + 1, fileName.length)
|
||||||
|
if ('.pdf'.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) === -1 && '.docx'.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) === -1 && '.doc'.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) === -1) {
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleIsAuthorizeInput(label) {
|
||||||
|
this.form.IsAuthorizeRadiologistsParticipate = false
|
||||||
|
this.form.AssignFixedTechnologists = false
|
||||||
|
this.form[label] = true
|
||||||
|
},
|
||||||
|
async viewManualFile() {
|
||||||
|
if (!this.form.SiteSurveyFile || !this.form.SiteSurveyFile.Path) return this.$message.warning(this.$t("trials:researchForm:message:notFile"))
|
||||||
|
this.$preview({
|
||||||
|
path: this.form.SiteSurveyFile.Path,
|
||||||
|
type: this.form.SiteSurveyFile.FileType,
|
||||||
|
title: this.form.SiteSurveyFile.Path.FileName,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async downLoad() {
|
||||||
|
if (!this.form.SiteSurveyFile || !this.form.SiteSurveyFile.Path) return this.$message.warning(this.$t("trials:researchForm:message:notFile"))
|
||||||
|
let link = document.createElement('a')
|
||||||
|
link.href = this.OSSclientConfig.basePath + this.form.SiteSurveyFile.Path;
|
||||||
|
link.target = '_blank'
|
||||||
|
link.download = this.form.SiteSurveyFile.FileName
|
||||||
|
link.style.display = 'none'
|
||||||
|
document.body.append(link)
|
||||||
|
link.click()
|
||||||
|
document.body.removeChild(link)
|
||||||
|
link = null
|
||||||
|
},
|
||||||
|
async viewManual() {
|
||||||
|
try {
|
||||||
|
let data = {
|
||||||
|
PageIndex: 1,
|
||||||
|
PageSize: 20,
|
||||||
|
TrialId: this.$route.query.trialId,
|
||||||
|
IsPublish: true,
|
||||||
|
FileTypeCode: 4,
|
||||||
|
IsDeleted: false
|
||||||
|
}
|
||||||
|
let res = await getTrialDocumentList(data)
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
const { CurrentPageData } = res.Result
|
||||||
|
if (CurrentPageData.length <= 0) return this.$message.warning(this.$t("trials:researchRecord:ImageManual:message:noImageManual"))
|
||||||
|
this.ExternalList = []
|
||||||
|
CurrentPageData.forEach(item => {
|
||||||
|
let obj = {
|
||||||
|
FilePath: item.Path,
|
||||||
|
FileFormat: 'pdf',
|
||||||
|
Name: item.Name
|
||||||
|
}
|
||||||
|
this.ExternalList.push(obj)
|
||||||
|
});
|
||||||
|
// this.perview_visible = true
|
||||||
|
this.ExternalList.forEach(item => {
|
||||||
|
let link = document.createElement('a')
|
||||||
|
link.href = this.OSSclientConfig.basePath + item.FilePath;
|
||||||
|
link.target = '_blank'
|
||||||
|
link.download = item.Name
|
||||||
|
link.style.display = 'none'
|
||||||
|
document.body.append(link)
|
||||||
|
link.click()
|
||||||
|
document.body.removeChild(link)
|
||||||
|
link = null
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
},
|
||||||
// 保存基本信息
|
// 保存基本信息
|
||||||
handleSave(isAutoCommit) {
|
handleSave(isAutoCommit, isCheck = false) {
|
||||||
return new Promise(async(resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
|
isCheck = false
|
||||||
try {
|
try {
|
||||||
|
if (this.IsOnlyUploadFile && !isCheck) {
|
||||||
|
if (!this.form.UserName) {
|
||||||
|
this.$message.warning(this.$t("trials:researchForm:message:notUserName"))
|
||||||
|
return resolve(false)
|
||||||
|
}
|
||||||
|
if (!this.form.Phone) {
|
||||||
|
this.$message.warning(this.$t("trials:researchForm:message:notPhone"))
|
||||||
|
return resolve(false)
|
||||||
|
}
|
||||||
|
if (!this.form.CommonUploadRecordId) {
|
||||||
|
this.$message.warning(this.$t("trials:researchForm:message:notCommonUploadRecordId"))
|
||||||
|
return resolve(false)
|
||||||
|
}
|
||||||
|
this.btnLoading = true
|
||||||
|
const param = {
|
||||||
|
id: this.form.Id,
|
||||||
|
trialId: this.$route.query.trialId,
|
||||||
|
trialSiteId: this.form.TrialSiteId,
|
||||||
|
userName: this.form.UserName,
|
||||||
|
phone: this.form.Phone,
|
||||||
|
email: this.form.Email,
|
||||||
|
averageEngravingCycle: this.form.AverageEngravingCycle,
|
||||||
|
IsRoutineMRIPDEE: this.form.IsRoutineMRIPDEE,
|
||||||
|
MRIPDFFScanTime: this.form.MRIPDFFScanTime,
|
||||||
|
MRIPDFFLeadTime: this.form.MRIPDFFLeadTime,
|
||||||
|
MRIPDFFOther: this.form.MRIPDFFOther,
|
||||||
|
IsAuthorizeRadiologistsParticipate: this.form.IsAuthorizeRadiologistsParticipate,
|
||||||
|
AssignFixedTechnologists: this.form.AssignFixedTechnologists,
|
||||||
|
ISStrictManualBurnFlag: this.form.ISStrictManualBurnFlag,
|
||||||
|
NotStrictManualBurnFlagReason: this.form.NotStrictManualBurnFlagReason,
|
||||||
|
isConfirmImagingTechnologist: this.form.IsConfirmImagingTechnologist,
|
||||||
|
notConfirmReson: this.form.NotConfirmReson,
|
||||||
|
efficacyEvaluatorType: this.form.EfficacyEvaluatorType,
|
||||||
|
isFollowStudyParameters: this.form.IsFollowStudyParameters,
|
||||||
|
notFollowReson: this.form.NotFollowReson,
|
||||||
|
CommonUploadRecordId: this.form.CommonUploadRecordId
|
||||||
|
}
|
||||||
|
addOrUpdateTrialSiteSurvey(param).then(res => {
|
||||||
|
this.btnLoading = false
|
||||||
|
if (res.IsSuccess && !isAutoCommit) {
|
||||||
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
|
}
|
||||||
|
resolve(true)
|
||||||
|
}).catch(() => {
|
||||||
|
this.btnLoading = false
|
||||||
|
reject(false)
|
||||||
|
})
|
||||||
|
return resolve(true)
|
||||||
|
}
|
||||||
const valid = await this.$refs['researchBSForm'].validate()
|
const valid = await this.$refs['researchBSForm'].validate()
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
|
|
@ -205,11 +473,20 @@ export default {
|
||||||
phone: this.form.Phone,
|
phone: this.form.Phone,
|
||||||
email: this.form.Email,
|
email: this.form.Email,
|
||||||
averageEngravingCycle: this.form.AverageEngravingCycle,
|
averageEngravingCycle: this.form.AverageEngravingCycle,
|
||||||
|
IsRoutineMRIPDEE: this.form.IsRoutineMRIPDEE,
|
||||||
|
MRIPDFFScanTime: this.form.MRIPDFFScanTime,
|
||||||
|
MRIPDFFLeadTime: this.form.MRIPDFFLeadTime,
|
||||||
|
MRIPDFFOther: this.form.MRIPDFFOther,
|
||||||
|
IsAuthorizeRadiologistsParticipate: this.form.IsAuthorizeRadiologistsParticipate,
|
||||||
|
AssignFixedTechnologists: this.form.AssignFixedTechnologists,
|
||||||
|
ISStrictManualBurnFlag: this.form.ISStrictManualBurnFlag,
|
||||||
|
NotStrictManualBurnFlagReason: this.form.NotStrictManualBurnFlagReason,
|
||||||
isConfirmImagingTechnologist: this.form.IsConfirmImagingTechnologist,
|
isConfirmImagingTechnologist: this.form.IsConfirmImagingTechnologist,
|
||||||
notConfirmReson: this.form.NotConfirmReson,
|
notConfirmReson: this.form.NotConfirmReson,
|
||||||
efficacyEvaluatorType: this.form.EfficacyEvaluatorType,
|
efficacyEvaluatorType: this.form.EfficacyEvaluatorType,
|
||||||
isFollowStudyParameters: this.form.IsFollowStudyParameters,
|
isFollowStudyParameters: this.form.IsFollowStudyParameters,
|
||||||
notFollowReson: this.form.NotFollowReson
|
notFollowReson: this.form.NotFollowReson,
|
||||||
|
CommonUploadRecordId: this.form.CommonUploadRecordId
|
||||||
}
|
}
|
||||||
const res = await addOrUpdateTrialSiteSurvey(param)
|
const res = await addOrUpdateTrialSiteSurvey(param)
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
|
@ -232,7 +509,7 @@ export default {
|
||||||
// 初始化
|
// 初始化
|
||||||
async initForm(trialInfo, trialSiteSurvey, notShowFieldList) {
|
async initForm(trialInfo, trialSiteSurvey, notShowFieldList) {
|
||||||
// 获取项目下的site
|
// 获取项目下的site
|
||||||
const { Result } = await getTrialSiteSelect(this.$route.query.trialId)
|
const { Result } = await getTrialSiteSelect(this.$route.query.trialId, { IgnoreDisable: true })
|
||||||
this.siteOptions = Result
|
this.siteOptions = Result
|
||||||
this.form.Id = trialSiteSurvey.Id
|
this.form.Id = trialSiteSurvey.Id
|
||||||
this.form.Sponsor = trialInfo.Sponsor // 申办方
|
this.form.Sponsor = trialInfo.Sponsor // 申办方
|
||||||
|
|
@ -246,7 +523,20 @@ export default {
|
||||||
this.form.UserName = trialSiteSurvey.UserName // 联系人
|
this.form.UserName = trialSiteSurvey.UserName // 联系人
|
||||||
this.form.Phone = trialSiteSurvey.Phone // 联系人电话
|
this.form.Phone = trialSiteSurvey.Phone // 联系人电话
|
||||||
this.form.Email = trialSiteSurvey.Email // 联系人邮箱
|
this.form.Email = trialSiteSurvey.Email // 联系人邮箱
|
||||||
|
this.form.CommonUploadRecordId = trialSiteSurvey.CommonUploadRecordId
|
||||||
|
this.form.SiteSurveyFile = trialSiteSurvey.SiteSurveyFile || {}
|
||||||
|
this.form.fileStr = this.form.SiteSurveyFile.FileName
|
||||||
this.form.AverageEngravingCycle = trialSiteSurvey.AverageEngravingCycle
|
this.form.AverageEngravingCycle = trialSiteSurvey.AverageEngravingCycle
|
||||||
|
this.form.IsRoutineMRIPDEE = trialSiteSurvey.IsRoutineMRIPDEE
|
||||||
|
this.form.MRIPDFFScanTime = trialSiteSurvey.MRIPDFFScanTime
|
||||||
|
this.form.MRIPDFFLeadTime = trialSiteSurvey.MRIPDFFLeadTime
|
||||||
|
this.form.MRIPDFFOther = trialSiteSurvey.MRIPDFFOther
|
||||||
|
this.form.IsAuthorizeRadiologistsParticipate = trialSiteSurvey.IsAuthorizeRadiologistsParticipate
|
||||||
|
this.form.AssignFixedTechnologists = trialSiteSurvey.AssignFixedTechnologists
|
||||||
|
if (this.form.IsAuthorizeRadiologistsParticipate) this.form.IsAuthorize = 'IsAuthorizeRadiologistsParticipate'
|
||||||
|
if (this.form.AssignFixedTechnologists) this.form.IsAuthorize = 'AssignFixedTechnologists'
|
||||||
|
this.form.ISStrictManualBurnFlag = trialSiteSurvey.ISStrictManualBurnFlag
|
||||||
|
this.form.NotStrictManualBurnFlagReason = trialSiteSurvey.NotStrictManualBurnFlagReason
|
||||||
this.form.IsConfirmImagingTechnologist = trialSiteSurvey.IsConfirmImagingTechnologist
|
this.form.IsConfirmImagingTechnologist = trialSiteSurvey.IsConfirmImagingTechnologist
|
||||||
this.form.NotConfirmReson = trialSiteSurvey.NotConfirmReson
|
this.form.NotConfirmReson = trialSiteSurvey.NotConfirmReson
|
||||||
this.form.EfficacyEvaluatorType = trialSiteSurvey.EfficacyEvaluatorType
|
this.form.EfficacyEvaluatorType = trialSiteSurvey.EfficacyEvaluatorType
|
||||||
|
|
@ -267,39 +557,46 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.research_bs_content{
|
.research_bs_content {
|
||||||
|
|
||||||
.basic_content{
|
.basic_content {
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
||||||
}
|
}
|
||||||
.login_content{
|
|
||||||
|
.login_content {
|
||||||
padding: 5px 20px;
|
padding: 5px 20px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
||||||
::v-deep .el-form-item {
|
::v-deep .el-form-item {
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.code_content{
|
|
||||||
display:flex;
|
.code_content {
|
||||||
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
.el-input{
|
|
||||||
|
.el-input {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.form-label-width{
|
|
||||||
::v-deep .el-form-item__label{
|
.form-label-width {
|
||||||
|
::v-deep .el-form-item__label {
|
||||||
width: 140px;
|
width: 140px;
|
||||||
}
|
}
|
||||||
::v-deep .el-form-item__content{
|
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
margin-left: 140px;
|
margin-left: 140px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.submit_content{
|
|
||||||
|
.submit_content {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
@ -308,10 +605,61 @@ export default {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
border-bottom: 1px solid #f5f7fa;
|
border-bottom: 1px solid #f5f7fa;
|
||||||
.el-form-item__content{
|
|
||||||
|
.el-form-item__content {
|
||||||
color: #82848a;
|
color: #82848a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.upload {
|
||||||
|
display: inline-block;
|
||||||
|
height: 36px;
|
||||||
|
width: 90px;
|
||||||
|
padding: 0 10px;
|
||||||
|
line-height: 23px;
|
||||||
|
position: relative;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: center;
|
||||||
|
background: #428bca;
|
||||||
|
border-color: #428bca;
|
||||||
|
color: #fff;
|
||||||
|
margin-right: 5px;
|
||||||
|
|
||||||
|
.select-file {
|
||||||
|
height: 36px;
|
||||||
|
width: 90px;
|
||||||
|
position: absolute;
|
||||||
|
overflow: hidden;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
opacity: 0;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-select {
|
||||||
|
//给显示在页面上的按钮写样式
|
||||||
|
// width: 70px;
|
||||||
|
height: 36px;
|
||||||
|
line-height: 36px;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 10px;
|
||||||
|
pointer-events: none; //pointer-events:none用来控制该标签的点击穿透事件
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file {
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,59 +1,107 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div v-loading="loading" class="equipment_form_content">
|
||||||
v-loading="loading"
|
<el-form ref="equipmentForm" :model="form" :rules="rules" label-position="left">
|
||||||
class="equipment_form_content"
|
|
||||||
>
|
|
||||||
<el-form
|
|
||||||
ref="equipmentForm"
|
|
||||||
:model="form"
|
|
||||||
:rules="rules"
|
|
||||||
label-position="left"
|
|
||||||
>
|
|
||||||
<!-- 扫描设备 -->
|
<!-- 扫描设备 -->
|
||||||
<el-form-item :label="$t('trials:equiptResearch:form:equipment')" prop="EquipmentTypeId">
|
<el-form-item :label="$t('trials:equiptResearch:form:equipment')" prop="EquipmentTypeEnum"
|
||||||
<el-select
|
v-if="EquipmentControlFieldList.includes('EquipmentTypeEnum')">
|
||||||
v-model="form.EquipmentTypeId"
|
<div style="display: flex;align-items: center;">
|
||||||
style="width:100%"
|
<el-select v-model="form.EquipmentTypeEnum" style="width:100%" @change="form.OtherEquipmentType = null">
|
||||||
>
|
<el-option v-for="item of $d.SiteSurvey_ScanEquipmentType" :key="item.id" :label="item.label"
|
||||||
<el-option
|
:value="item.value" />
|
||||||
v-for="item of $d.SiteSurvey_ScanEquipmentType"
|
</el-select>
|
||||||
:key="item.id"
|
<el-input placeholder="" v-model="form.OtherEquipmentType" style="margin-left: 10px;"
|
||||||
:label="item.label"
|
v-if="form.EquipmentTypeEnum == '-1'" clearable>
|
||||||
:value="item.id"
|
</el-input>
|
||||||
/>
|
</div>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 扫描参数 -->
|
<!-- 扫描参数 -->
|
||||||
<el-form-item v-if="isShowParameters" :label="$t('trials:equiptResearch:form:param')">
|
<el-form-item :label="$t('trials:equiptResearch:form:param')"
|
||||||
|
v-if="EquipmentControlFieldList.includes('Parameters')" prop="Parameters">
|
||||||
<el-input v-model="form.Parameters" />
|
<el-input v-model="form.Parameters" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 扫描仪器制造商名称 -->
|
<!-- 扫描仪器制造商名称 -->
|
||||||
<el-form-item :label="$t('trials:equiptResearch:form:manufacturer')">
|
<el-form-item :label="$t('trials:equiptResearch:form:manufacturer')"
|
||||||
<el-input v-model="form.ManufacturerName" />
|
v-if="EquipmentControlFieldList.includes('ManufacturerType')" prop="ManufacturerType">
|
||||||
|
<div style="display: flex;align-items: center;">
|
||||||
|
<el-select v-model="form.ManufacturerType" style="width:100%" @change="form.ManufacturerName = null">
|
||||||
|
<el-option v-for="item of $d.ManufacturerType" :key="item.id" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
<el-input placeholder="" v-model="form.ManufacturerName" style="margin-left: 10px;"
|
||||||
|
v-if="form.ManufacturerType == '-1'" clearable>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 扫描仪型号 -->
|
<!-- 扫描仪型号 -->
|
||||||
<el-form-item :label="$t('trials:equiptResearch:form:model')">
|
<el-form-item :label="$t('trials:equiptResearch:form:model')"
|
||||||
|
v-if="EquipmentControlFieldList.includes('ScannerType')" prop="ScannerType">
|
||||||
<el-input v-model="form.ScannerType" />
|
<el-input v-model="form.ScannerType" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- 磁场强度 -->
|
||||||
|
<el-form-item :label="$t('trials:equiptResearch:form:MagneticFieldStrengthType')"
|
||||||
|
v-if="EquipmentControlFieldList.includes('MagneticFieldStrengthType')" prop="MagneticFieldStrengthType">
|
||||||
|
<el-select v-model="form.MagneticFieldStrengthType" style="width:100%">
|
||||||
|
<el-option v-for="item of $d.MagneticFieldStrengthType" :key="item.id" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 体部线圈通道数 -->
|
||||||
|
<el-form-item :label="$t('trials:equiptResearch:form:BodyCoilChannelCount')"
|
||||||
|
v-if="EquipmentControlFieldList.includes('BodyCoilChannelCount')" prop="BodyCoilChannelCount">
|
||||||
|
<el-select v-model="form.BodyCoilChannelCount" style="width:100%">
|
||||||
|
<el-option v-for="item of $d.BodyCoilChannelCount" :key="item.id" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 是否具备专用的PDFF脂肪定量序列(CSE-MRI序列) -->
|
||||||
|
<el-form-item :label="$t('trials:equiptResearch:form:HasDedicatedPdfFatQuantificationSequence')"
|
||||||
|
v-if="EquipmentControlFieldList.includes('HasDedicatedPdfFatQuantificationSequence')"
|
||||||
|
prop="HasDedicatedPdfFatQuantificationSequence">
|
||||||
|
<el-select v-model="form.HasDedicatedPdfFatQuantificationSequence" style="width:100%"
|
||||||
|
@change="form.PdfFatQuantificationSequenceType = null, form.OtherSequenceSpecification = null">
|
||||||
|
<el-option v-for="item of $d.YesOrNo" :key="item.id" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- PDFF脂肪定量序列 -->
|
||||||
|
<el-form-item :label="$t('trials:equiptResearch:form:PdfFatQuantificationSequenceType')"
|
||||||
|
prop="PdfFatQuantificationSequenceType"
|
||||||
|
v-if="form.HasDedicatedPdfFatQuantificationSequence && EquipmentControlFieldList.includes('PdfFatQuantificationSequenceType')">
|
||||||
|
<div style="display: flex;align-items: center;">
|
||||||
|
<el-select v-model="form.PdfFatQuantificationSequenceType" style="width:100%"
|
||||||
|
@change="form.OtherSequenceSpecification = null">
|
||||||
|
<el-option v-for="item of $d.PdfFatQuantificationSequenceType" :key="item.id" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
<el-input placeholder="" v-model="form.OtherSequenceSpecification" style="margin-left: 10px;"
|
||||||
|
v-if="form.PdfFatQuantificationSequenceType == '-1'" clearable>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 是否包含 T2/R2 校正(用于铁沉积校正) -->
|
||||||
|
<el-form-item :label="$t('trials:equiptResearch:form:HasT2R2Correction')" prop="HasT2R2Correction"
|
||||||
|
v-if="EquipmentControlFieldList.includes('HasT2R2Correction')">
|
||||||
|
<el-select v-model="form.HasT2R2Correction" style="width:100%">
|
||||||
|
<el-option v-for="item of $d.YesOrNo" :key="item.id" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 是否可完整导出 PDFF 参数图及全部原始 DICOM 数据 -->
|
||||||
|
<el-form-item :label="$t('trials:equiptResearch:form:CanFullyExportPdfParameterMapsAndRawDicom')"
|
||||||
|
prop="CanFullyExportPdfParameterMapsAndRawDicom"
|
||||||
|
v-if="EquipmentControlFieldList.includes('CanFullyExportPdfParameterMapsAndRawDicom')">
|
||||||
|
<el-select v-model="form.CanFullyExportPdfParameterMapsAndRawDicom" style="width:100%">
|
||||||
|
<el-option v-for="item of $d.YesOrNo" :key="item.id" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<!-- 备注 -->
|
<!-- 备注 -->
|
||||||
<el-form-item :label="$t('trials:equiptResearch:form:remark')">
|
<el-form-item :label="$t('trials:equiptResearch:form:remark')" prop="Note"
|
||||||
|
v-if="EquipmentControlFieldList.includes('Note')">
|
||||||
<el-input v-model="form.Note" />
|
<el-input v-model="form.Note" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div style="text-align: center;padding:20px 0px;">
|
<div style="text-align: center;padding:20px 0px;">
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button size="large" type="primary" @click="handleCancel">
|
||||||
size="large"
|
|
||||||
type="primary"
|
|
||||||
@click="handleCancel"
|
|
||||||
>
|
|
||||||
{{ $t("common:button:cancel") }}
|
{{ $t("common:button:cancel") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 保存 -->
|
<!-- 保存 -->
|
||||||
<el-button
|
<el-button size="large" type="primary" @click="handleSave">
|
||||||
size="large"
|
|
||||||
type="primary"
|
|
||||||
@click="handleSave"
|
|
||||||
>
|
|
||||||
{{ $t("common:button:save") }}
|
{{ $t("common:button:save") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -76,29 +124,96 @@ export default {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: ''
|
||||||
},
|
},
|
||||||
isShowParameters: {
|
EquipmentControlFieldList: {
|
||||||
type: Boolean,
|
type: Array,
|
||||||
default: false
|
default: () => {
|
||||||
|
return []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
form: {
|
form: {
|
||||||
Id: '',
|
Id: '',
|
||||||
EquipmentTypeId: '',
|
EquipmentTypeEnum: null,
|
||||||
Parameters: '',
|
OtherEquipmentType: null,
|
||||||
ManufacturerName: '',
|
Parameters: null,
|
||||||
ScannerType: '',
|
Note: null,
|
||||||
Note: '',
|
ManufacturerType: null,
|
||||||
|
ManufacturerName: null,
|
||||||
|
ScannerType: null,
|
||||||
|
MagneticFieldStrengthType: null,
|
||||||
|
BodyCoilChannelCount: null,
|
||||||
|
HasDedicatedPdfFatQuantificationSequence: null,
|
||||||
|
PdfFatQuantificationSequenceType: null,
|
||||||
|
OtherSequenceSpecification: null,
|
||||||
|
HasT2R2Correction: null,
|
||||||
|
CanFullyExportPdfParameterMapsAndRawDicom: null,
|
||||||
TrialSiteSurveyId: ''
|
TrialSiteSurveyId: ''
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
EquipmentTypeId: [
|
EquipmentTypeEnum: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] },
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (this.form.EquipmentTypeEnum === -1 && !this.form.OtherEquipmentType) {
|
||||||
|
callback(this.$t('common:ruleMessage:specify'));
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
],
|
||||||
|
Parameters: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change'] }
|
||||||
|
],
|
||||||
|
// Note: [
|
||||||
|
// { required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change'] }
|
||||||
|
// ],
|
||||||
|
ManufacturerType: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] },
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (this.form.ManufacturerType === -1 && !this.form.ManufacturerName) {
|
||||||
|
callback(this.$t('common:ruleMessage:specify'));
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ScannerType: [
|
||||||
|
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change'] }
|
||||||
|
],
|
||||||
|
MagneticFieldStrengthType: [
|
||||||
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] }
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] }
|
||||||
]
|
],
|
||||||
|
BodyCoilChannelCount: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] }
|
||||||
|
],
|
||||||
|
HasDedicatedPdfFatQuantificationSequence: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] }
|
||||||
|
],
|
||||||
|
PdfFatQuantificationSequenceType: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] },
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (this.form.PdfFatQuantificationSequenceType === -1 && !this.form.OtherSequenceSpecification) {
|
||||||
|
callback(this.$t('common:ruleMessage:specify'));
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
],
|
||||||
|
HasT2R2Correction: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] }
|
||||||
|
],
|
||||||
|
CanFullyExportPdfParameterMapsAndRawDicom: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:select'), trigger: ['blur', 'change'] }
|
||||||
|
],
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
dictionaryList: {}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
@ -154,13 +269,15 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.equipment_form_content{
|
.equipment_form_content {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
|
||||||
::v-deep .el-form-item {
|
::v-deep .el-form-item {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
padding: 5px 0 20px 0;
|
padding: 5px 0 20px 0;
|
||||||
border-bottom: 1px solid #f5f7fa;
|
border-bottom: 1px solid #f5f7fa;
|
||||||
.el-form-item__content{
|
|
||||||
|
.el-form-item__content {
|
||||||
color: #82848a;
|
color: #82848a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,18 +13,22 @@
|
||||||
<i class="el-icon-receiving" />
|
<i class="el-icon-receiving" />
|
||||||
</div>
|
</div>
|
||||||
<div class="p_info">
|
<div class="p_info">
|
||||||
<div
|
<div class="p_info_basic" :style="{
|
||||||
class="p_info_basic"
|
maxWidth: w + 'px', 'white-space': 'nowrap',
|
||||||
:style="{maxWidth:w+'px','white-space': 'nowrap',
|
overflow: 'hidden',
|
||||||
overflow: 'hidden',
|
'text-overflow': 'ellipsis'
|
||||||
'text-overflow': 'ellipsis'}"
|
}">
|
||||||
>
|
<div class="p_text" v-if="EquipmentControlFieldList.includes('EquipmentTypeEnum')">
|
||||||
<div class="p_text">{{ item.EquipmentType }}</div>
|
{{ item.OtherEquipmentType ? item.OtherEquipmentType :
|
||||||
<div v-if="isShowParameters" class="p_text" style="margin-left:10px">{{ item.Parameters }}</div>
|
$fd('SiteSurvey_ScanEquipmentType', item.EquipmentTypeEnum) }}</div>
|
||||||
<div class="p_text" style="margin-left:10px">{{ item.ManufacturerName }}</div>
|
<div v-if="EquipmentControlFieldList.includes('Parameters')" class="p_text" style="margin-left:10px">{{
|
||||||
|
item.Parameters }}</div>
|
||||||
|
<div class="p_text" style="margin-left:10px" v-if="EquipmentControlFieldList.includes('ManufacturerType')">{{
|
||||||
|
item.ManufacturerName ? item.ManufacturerName : $fd('ManufacturerType',
|
||||||
|
item.ManufacturerType) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="p_text">{{ item.ScannerType }}</div>
|
<div class="p_text" v-if="EquipmentControlFieldList.includes('ScannerType')">{{ item.ScannerType }}</div>
|
||||||
<div class="p_text">{{ item.Note }}</div>
|
<div class="p_text" v-if="EquipmentControlFieldList.includes('Note')">{{ item.Note }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="state === 0 && userTypeEnumInt === 0 && !isHistory" class="p_func">
|
<div v-if="state === 0 && userTypeEnumInt === 0 && !isHistory" class="p_func">
|
||||||
<el-button type="text" @click="handleEdit(item)">
|
<el-button type="text" @click="handleEdit(item)">
|
||||||
|
|
@ -36,19 +40,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 添加/编辑设备信息 -->
|
<!-- 添加/编辑设备信息 -->
|
||||||
<el-drawer
|
<el-drawer :title="title" :visible.sync="formVisible" direction="btt" size="70%">
|
||||||
:title="title"
|
<EquipmentForm v-if="formVisible" :equipment-info="equipmentInfo"
|
||||||
:visible.sync="formVisible"
|
:EquipmentControlFieldList="EquipmentControlFieldList" @getList="getList" @close="close" />
|
||||||
direction="btt"
|
|
||||||
size="70%"
|
|
||||||
>
|
|
||||||
<EquipmentForm
|
|
||||||
v-if="formVisible"
|
|
||||||
:equipment-info="equipmentInfo"
|
|
||||||
:is-show-parameters="isShowParameters"
|
|
||||||
@getList="getList"
|
|
||||||
@close="close"
|
|
||||||
/>
|
|
||||||
</el-drawer>
|
</el-drawer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -81,7 +75,7 @@ export default {
|
||||||
state: null,
|
state: null,
|
||||||
trialSiteSurveyId: '',
|
trialSiteSurveyId: '',
|
||||||
trialId: '',
|
trialId: '',
|
||||||
isShowParameters: false
|
EquipmentControlFieldList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
@ -142,8 +136,11 @@ export default {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
initList(TrialSiteEquipmentSurveyList, trialSiteSurvey, isShowParameters) {
|
initList(TrialSiteEquipmentSurveyList, trialSiteSurvey, EquipmentControlFieldList) {
|
||||||
this.isShowParameters = isShowParameters
|
this.EquipmentControlFieldList = []
|
||||||
|
EquipmentControlFieldList.forEach(item => {
|
||||||
|
this.EquipmentControlFieldList.push(item.FiledName)
|
||||||
|
})
|
||||||
this.list = TrialSiteEquipmentSurveyList
|
this.list = TrialSiteEquipmentSurveyList
|
||||||
this.state = trialSiteSurvey.State
|
this.state = trialSiteSurvey.State
|
||||||
this.$forceUpdate()
|
this.$forceUpdate()
|
||||||
|
|
@ -157,63 +154,70 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.equipments_content{
|
.equipments_content {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
.title{
|
|
||||||
|
.title {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.equipment_info{
|
|
||||||
|
.equipment_info {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-top: 1px solid #f5f7fa;
|
border-top: 1px solid #f5f7fa;
|
||||||
.p_icon{
|
|
||||||
|
.p_icon {
|
||||||
width: 70px;
|
width: 70px;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.p_info{
|
|
||||||
|
.p_info {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex:1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-evenly;
|
justify-content: space-evenly;
|
||||||
// border-right: 1px solid #f5f7fa;
|
// border-right: 1px solid #f5f7fa;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p_info:after {
|
.p_info:after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
right: 0;
|
right: 0;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
background-color: #f5f7fa;
|
background-color: #f5f7fa;
|
||||||
}
|
}
|
||||||
.p_info_basic{
|
|
||||||
|
.p_info_basic {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
}
|
}
|
||||||
.p_text{
|
|
||||||
|
.p_text {
|
||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
color: #82848a;
|
color: #82848a;
|
||||||
}
|
}
|
||||||
.p_func{
|
|
||||||
|
.p_func {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -4,30 +4,22 @@
|
||||||
<div class="d_content">
|
<div class="d_content">
|
||||||
|
|
||||||
<!-- 项目基本信息 -->
|
<!-- 项目基本信息 -->
|
||||||
<BasicInfo ref="basicInfo" />
|
<BasicInfo ref="basicInfo" :IsOnlyUploadFile="IsOnlyUploadFile" :IsSupportUploadFile="IsSupportUploadFile" />
|
||||||
<!-- 历史人员 -->
|
<!-- 历史人员 -->
|
||||||
<HistoricalParticipants ref="historicalParticipant" class="mt5" />
|
<HistoricalParticipants ref="historicalParticipant" class="mt5" />
|
||||||
<!-- 新增人员 -->
|
<!-- 新增人员 -->
|
||||||
<Participants ref="participants" class="mt5" />
|
<Participants ref="participants" class="mt5" />
|
||||||
<!-- 设备调研 -->
|
<!-- 设备调研 -->
|
||||||
<Equipments ref="equipments" class="mt5" />
|
<Equipments ref="equipments" class="mt5" v-if="!siteSurveyNoteInfo.IsCloseEquipmentSurvey" />
|
||||||
<!-- 备注 -->
|
<!-- 备注 -->
|
||||||
<Notes ref="notes" class="mt5" />
|
<Notes ref="notes" class="mt5" />
|
||||||
</div>
|
</div>
|
||||||
<div class="d_footer">
|
<div class="d_footer">
|
||||||
<div class="d_func_row">
|
<div class="d_func_row">
|
||||||
<div
|
<div v-if="state === 0 && userTypeEnumInt === 0" class="d_func" @click="handleSave">
|
||||||
v-if="state === 0 && userTypeEnumInt === 0"
|
|
||||||
class="d_func"
|
|
||||||
@click="handleSave"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:save') }}
|
{{ $t('common:button:save') }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-if="(state === 0 && userTypeEnumInt === 0)" class="d_func" @click="handleSubmit('submit')">
|
||||||
v-if="(state === 0 && userTypeEnumInt === 0)"
|
|
||||||
class="d_func"
|
|
||||||
@click="handleSubmit('submit')"
|
|
||||||
>
|
|
||||||
{{ $t('trials:researchForm:button:submit') }}
|
{{ $t('trials:researchForm:button:submit') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -58,7 +50,9 @@ export default {
|
||||||
userTypeEnumInt: 0,
|
userTypeEnumInt: 0,
|
||||||
rejectVisible: false,
|
rejectVisible: false,
|
||||||
rejectForm: { reason: '' },
|
rejectForm: { reason: '' },
|
||||||
siteSurveyNoteInfo: null
|
siteSurveyNoteInfo: {},
|
||||||
|
IsSupportUploadFile: false,
|
||||||
|
IsOnlyUploadFile: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
@ -78,6 +72,9 @@ export default {
|
||||||
if (res.Result.SiteSurveyFiledConfig && res.Result.SiteSurveyFiledConfig.ModifyFiledList.length > 0) {
|
if (res.Result.SiteSurveyFiledConfig && res.Result.SiteSurveyFiledConfig.ModifyFiledList.length > 0) {
|
||||||
this.siteSurveyNoteInfo = res.Result.SiteSurveyFiledConfig.ModifyFiledList.find(i => i.NeedModifyFiled === 'SiteSurveyNote')
|
this.siteSurveyNoteInfo = res.Result.SiteSurveyFiledConfig.ModifyFiledList.find(i => i.NeedModifyFiled === 'SiteSurveyNote')
|
||||||
}
|
}
|
||||||
|
this.IsSupportUploadFile = res.Result.SiteSurveyFiledConfig.IsSupportUploadFile
|
||||||
|
this.IsOnlyUploadFile = res.Result.SiteSurveyFiledConfig.IsOnlyUploadFile
|
||||||
|
this.siteSurveyNoteInfo.IsCloseEquipmentSurvey = res.Result.SiteSurveyFiledConfig.IsCloseEquipmentSurvey
|
||||||
this.state = res.Result.TrialSiteSurvey.State
|
this.state = res.Result.TrialSiteSurvey.State
|
||||||
this.$refs['basicInfo'].initForm(res.Result.TrialInfo, res.Result.TrialSiteSurvey, res.Result.SiteSurveyFiledConfig ? res.Result.SiteSurveyFiledConfig.NotShowFieldList : null)
|
this.$refs['basicInfo'].initForm(res.Result.TrialInfo, res.Result.TrialSiteSurvey, res.Result.SiteSurveyFiledConfig ? res.Result.SiteSurveyFiledConfig.NotShowFieldList : null)
|
||||||
var historicalArr = []
|
var historicalArr = []
|
||||||
|
|
@ -92,7 +89,7 @@ export default {
|
||||||
|
|
||||||
this.$refs['historicalParticipant'].initList(historicalArr, res.Result.TrialSiteSurvey)
|
this.$refs['historicalParticipant'].initList(historicalArr, res.Result.TrialSiteSurvey)
|
||||||
this.$refs['participants'].initList(newArr, res.Result.TrialSiteSurvey)
|
this.$refs['participants'].initList(newArr, res.Result.TrialSiteSurvey)
|
||||||
this.$refs['equipments'].initList(res.Result.TrialSiteEquipmentSurveyList, res.Result.TrialSiteSurvey, !(res.Result.SiteSurveyFiledConfig && res.Result.SiteSurveyFiledConfig.ModifyFiledList.length > 0))
|
this.$refs['equipments'].initList(res.Result.TrialSiteEquipmentSurveyList, res.Result.TrialSiteSurvey, res.Result.SiteSurveyFiledConfig.EquipmentControlFieldList)
|
||||||
this.$refs['notes'].initPage(this.siteSurveyNoteInfo)
|
this.$refs['notes'].initPage(this.siteSurveyNoteInfo)
|
||||||
}
|
}
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
|
@ -160,9 +157,10 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.research_detal_wrapper{
|
.research_detal_wrapper {
|
||||||
background-color:#f5f7fa;
|
background-color: #f5f7fa;
|
||||||
.d_title{
|
|
||||||
|
.d_title {
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
line-height: 80px;
|
line-height: 80px;
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
|
|
@ -173,10 +171,11 @@ export default {
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
// .d_content{
|
// .d_content{
|
||||||
|
|
||||||
// }
|
// }
|
||||||
.d_footer{
|
.d_footer {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
|
|
@ -185,12 +184,14 @@ export default {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
// padding: 20px;
|
// padding: 20px;
|
||||||
}
|
}
|
||||||
.d_func_row{
|
|
||||||
|
.d_func_row {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
.d_func{
|
|
||||||
|
.d_func {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
@ -207,15 +208,16 @@ export default {
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
&:hover{
|
|
||||||
|
&:hover {
|
||||||
background: #68a2d5;
|
background: #68a2d5;
|
||||||
border-color: #68a2d5;
|
border-color: #68a2d5;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.mt5{
|
|
||||||
|
.mt5 {
|
||||||
margin-top: 5px
|
margin-top: 5px
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,131 +1,88 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="research_login_m_content">
|
<div class="research_login_m_content">
|
||||||
<div class="title">{{ $t('trials:researchForm:title:question') }}</div>
|
<div v-if="IsExpired"></div>
|
||||||
<el-form
|
<div v-else-if="verify" class="LinkVerificationCode_content">
|
||||||
ref="loginForm"
|
<el-form ref="codeForm" v-loading="loading" label-position="top" label-width="120px" :model="codeForm"
|
||||||
v-loading="loading"
|
:rules="code_rules">
|
||||||
label-position="left"
|
<div class="basic_content">
|
||||||
label-width="120px"
|
<!-- 项目编号 -->
|
||||||
:model="form"
|
<el-form-item :label="$t('trials:researchForm:message:LinkVerificationCode')" prop="LinkVerificationCode">
|
||||||
:rules="rules"
|
<el-input v-model="codeForm.LinkVerificationCode" autocomplete="new-password" />
|
||||||
>
|
</el-form-item>
|
||||||
<div class="basic_content">
|
</div>
|
||||||
<!-- 项目编号 -->
|
</el-form>
|
||||||
<el-form-item
|
<div class="submit_content">
|
||||||
:label="$t('trials:researchForm:form:trialId')"
|
<el-button size="large" type="primary" @click="getLinkVerificationCodeIsEffective">
|
||||||
>
|
{{ $t('common:button:submit') }}
|
||||||
<span>{{ form.TrialCode }}</span>
|
</el-button>
|
||||||
</el-form-item>
|
|
||||||
<!-- 试验方案号 -->
|
|
||||||
<el-form-item
|
|
||||||
:label="$t('trials:researchForm:form:researchNo')"
|
|
||||||
>
|
|
||||||
<span>{{ form.ResearchProgramNo }}</span>
|
|
||||||
</el-form-item>
|
|
||||||
<!-- 试验名称 -->
|
|
||||||
<el-form-item
|
|
||||||
:label="$t('trials:researchForm:form:researchName')"
|
|
||||||
>
|
|
||||||
<span>{{ form.ExperimentName }}</span>
|
|
||||||
</el-form-item>
|
|
||||||
<!-- 适应症类型 -->
|
|
||||||
<el-form-item
|
|
||||||
:label="$t('trials:researchForm:form:decleareType')"
|
|
||||||
>
|
|
||||||
<span>{{ form.IndicationType }}</span>
|
|
||||||
</el-form-item>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="login_content">
|
</div>
|
||||||
<el-form-item
|
<template v-else>
|
||||||
:label="$t('trials:researchForm:form:siteName')"
|
<div class="title">{{ $t('trials:researchForm:title:question') }}</div>
|
||||||
prop="TrialSiteId"
|
<el-form ref="loginForm" v-loading="loading" label-position="left" label-width="120px" :model="form"
|
||||||
>
|
:rules="rules">
|
||||||
<el-select
|
<div class="basic_content">
|
||||||
v-model="form.TrialSiteId"
|
<!-- 项目编号 -->
|
||||||
filterable
|
<el-form-item :label="$t('trials:researchForm:form:trialId')">
|
||||||
style="width:100%;"
|
<span>{{ form.TrialCode }}</span>
|
||||||
@change="handleSiteChange"
|
</el-form-item>
|
||||||
>
|
<!-- 试验方案号 -->
|
||||||
<el-option
|
<el-form-item :label="$t('trials:researchForm:form:researchNo')">
|
||||||
v-for="(item,index) of siteOptions"
|
<span>{{ form.ResearchProgramNo }}</span>
|
||||||
:key="index"
|
</el-form-item>
|
||||||
:label="item.TrialSiteAliasName"
|
<!-- 试验名称 -->
|
||||||
:value="item.TrialSiteId"
|
<el-form-item :label="$t('trials:researchForm:form:researchName')">
|
||||||
/>
|
<span>{{ form.ExperimentName }}</span>
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
<!-- 适应症类型 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:researchForm:form:decleareType')">
|
||||||
v-if="form.TrialSiteId && isHaveSiteSurveyRecord"
|
<span>{{ form.IndicationType }}</span>
|
||||||
label=""
|
</el-form-item>
|
||||||
style="text-align:right;"
|
</div>
|
||||||
>
|
<div class="login_content">
|
||||||
<!-- 更新调研表 -->
|
<el-form-item :label="$t('trials:researchForm:form:siteName')" prop="TrialSiteId">
|
||||||
<el-link
|
<el-select v-model="form.TrialSiteId" filterable style="width:100%;" @change="handleSiteChange">
|
||||||
v-if="!form.IsUpdate"
|
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteAliasName"
|
||||||
type="primary"
|
:value="item.TrialSiteId" />
|
||||||
@click="form.IsUpdate = true"
|
</el-select>
|
||||||
>
|
</el-form-item>
|
||||||
{{ $t('trials:researchForm:button:updateQsForm') }}
|
<el-form-item v-if="form.TrialSiteId && isHaveSiteSurveyRecord" label="" style="text-align:right;">
|
||||||
</el-link>
|
<!-- 更新调研表 -->
|
||||||
<!-- 取消更新调研表 -->
|
<el-link v-if="!form.IsUpdate" type="primary" @click="form.IsUpdate = true">
|
||||||
<el-link
|
{{ $t('trials:researchForm:button:updateQsForm') }}
|
||||||
v-else
|
</el-link>
|
||||||
type="primary"
|
<!-- 取消更新调研表 -->
|
||||||
@click="form.IsUpdate = false;form.ReplaceUserEmailOrPhone=''"
|
<el-link v-else type="primary" @click="form.IsUpdate = false; form.ReplaceUserEmailOrPhone = ''">
|
||||||
>
|
{{ $t('trials:researchForm:button:cancelUpdateQsForm') }}
|
||||||
{{ $t('trials:researchForm:button:cancelUpdateQsForm') }}
|
</el-link>
|
||||||
</el-link>
|
</el-form-item>
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<!-- 原调研表填写人邮箱 -->
|
<!-- 原调研表填写人邮箱 -->
|
||||||
<el-form-item
|
<el-form-item v-if="form.IsUpdate" :label="$t('trials:researchForm:form:originalEmail')"
|
||||||
v-if="form.IsUpdate"
|
prop="ReplaceUserEmailOrPhone">
|
||||||
:label="$t('trials:researchForm:form:originalEmail')"
|
<el-input v-model="form.ReplaceUserEmailOrPhone" autocomplete="new-password" />
|
||||||
prop="ReplaceUserEmailOrPhone"
|
</el-form-item>
|
||||||
>
|
<!-- 联系邮箱 -->
|
||||||
<el-input
|
<el-form-item :label="$t('trials:researchForm:form:contactorEmail')" prop="EmailOrPhone">
|
||||||
v-model="form.ReplaceUserEmailOrPhone"
|
<el-input v-model="form.EmailOrPhone" autocomplete="new-password" />
|
||||||
autocomplete="new-password"
|
</el-form-item>
|
||||||
/>
|
<el-form-item :label="$t('trials:researchForm:form:verifyCode')">
|
||||||
</el-form-item>
|
<div class="code_content">
|
||||||
<!-- 联系邮箱 -->
|
<el-input v-model="form.VerificationCode" autocomplete="new-password" />
|
||||||
<el-form-item
|
<el-button type="primary" :disabled="sendDisabled || !form.EmailOrPhone || count > 0"
|
||||||
:label="$t('trials:researchForm:form:contactorEmail')"
|
@click="handleSendCode">
|
||||||
prop="EmailOrPhone"
|
{{ this.$t('trials:researchForm:button:send') }} {{ sendTitle ? `${sendTitle}` : null }}
|
||||||
>
|
</el-button>
|
||||||
<el-input
|
</div>
|
||||||
v-model="form.EmailOrPhone"
|
</el-form-item>
|
||||||
autocomplete="new-password"
|
<div class="submit_content">
|
||||||
/>
|
<el-button size="large" type="primary" @click="onSubmit">
|
||||||
</el-form-item>
|
{{ $t('common:button:submit') }}
|
||||||
<el-form-item
|
|
||||||
:label="$t('trials:researchForm:form:verifyCode')"
|
|
||||||
>
|
|
||||||
<div class="code_content">
|
|
||||||
<el-input
|
|
||||||
v-model="form.VerificationCode"
|
|
||||||
autocomplete="new-password"
|
|
||||||
/>
|
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
:disabled="sendDisabled || !form.EmailOrPhone || count > 0"
|
|
||||||
@click="handleSendCode"
|
|
||||||
>
|
|
||||||
{{ this.$t('trials:researchForm:button:send') }} {{ sendTitle ? `${sendTitle}` : null }}
|
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
|
||||||
<div class="submit_content">
|
|
||||||
<el-button
|
|
||||||
size="large"
|
|
||||||
type="primary"
|
|
||||||
@click="onSubmit"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:submit') }}
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</el-form>
|
||||||
</el-form>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -133,6 +90,10 @@ import { sendVerifyCode, verifySendCode, getTrialSurveyInitInfo } from '@/api/re
|
||||||
import { getUserMenuTree, getUserPermissions } from '@/api/user'
|
import { getUserMenuTree, getUserPermissions } from '@/api/user'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { mapGetters, mapMutations } from 'vuex'
|
import { mapGetters, mapMutations } from 'vuex'
|
||||||
|
import {
|
||||||
|
getLinkLinkExpirationTime,
|
||||||
|
getLinkVerificationCodeIsEffective
|
||||||
|
} from '@/api/trials'
|
||||||
export default {
|
export default {
|
||||||
name: 'ResearchMobileLogin',
|
name: 'ResearchMobileLogin',
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -185,6 +146,16 @@ export default {
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
trialId: '',
|
trialId: '',
|
||||||
|
IsExpired: true,
|
||||||
|
verify: true,
|
||||||
|
codeForm: {
|
||||||
|
LinkVerificationCode: null,
|
||||||
|
},
|
||||||
|
code_rules: {
|
||||||
|
LinkVerificationCode: [
|
||||||
|
{ required: true, message: this.$t('trials:researchForm:formRule:specify'), trigger: ['blur'] }
|
||||||
|
],
|
||||||
|
},
|
||||||
form: {
|
form: {
|
||||||
Sponsor: null, // 申办方
|
Sponsor: null, // 申办方
|
||||||
ResearchProgramNo: null, // 方案号
|
ResearchProgramNo: null, // 方案号
|
||||||
|
|
@ -239,16 +210,119 @@ export default {
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$i18n.locale = this.$route.query.lang
|
let lang = this.$route.query.lang
|
||||||
this.setLanguage(this.$route.query.lang)
|
if (!lang) {
|
||||||
this.$updateDictionary()
|
const language = navigator.language
|
||||||
if (this.$route.query.trialId) {
|
lang = 'en'
|
||||||
this.trialId = this.$route.query.trialId
|
if (language.includes("zh")) {
|
||||||
this.initPage()
|
lang = 'zh'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
this.$i18n.locale = lang
|
||||||
|
this.setLanguage(lang)
|
||||||
|
this.$updateDictionary()
|
||||||
|
this.getLinkTimeIsExpired()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||||
|
async getLinkTimeIsExpired() {
|
||||||
|
try {
|
||||||
|
let data = {
|
||||||
|
TrialId: this.$route.query.trialId,
|
||||||
|
}
|
||||||
|
let res = await getLinkLinkExpirationTime(data)
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
if (res.Result.IsExpired) {
|
||||||
|
return this.$router.replace('/link_expired')
|
||||||
|
// return this.$confirm(this.$t("trials:researchForm:confirm:linkIsExpired"), '', {
|
||||||
|
// type: 'warning'
|
||||||
|
// })
|
||||||
|
// return this.IsExpired = true
|
||||||
|
}
|
||||||
|
// this.customPrompt()
|
||||||
|
this.IsExpired = false
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getLinkVerificationCodeIsEffective() {
|
||||||
|
try {
|
||||||
|
let validate = await this.$refs.codeForm.validate()
|
||||||
|
if (!validate) return false
|
||||||
|
let data = {
|
||||||
|
TrialId: this.$route.query.trialId,
|
||||||
|
LinkVerificationCode: this.codeForm.LinkVerificationCode
|
||||||
|
}
|
||||||
|
let res = await getLinkVerificationCodeIsEffective(data)
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
if (!res.Result.IsEffective) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
this.verify = false
|
||||||
|
if (this.$route.query.trialId) {
|
||||||
|
this.trialId = this.$route.query.trialId
|
||||||
|
this.initPage()
|
||||||
|
}
|
||||||
|
if (this.$route.query.isUpload) {
|
||||||
|
this.isUpload = true
|
||||||
|
this.form.IsUpdate = true
|
||||||
|
let { email, oldEMail, trialSiteId } = this.$route.query
|
||||||
|
if (trialSiteId) this.form.TrialSiteId = trialSiteId
|
||||||
|
if (oldEMail) this.form.ReplaceUserEmailOrPhone = oldEMail
|
||||||
|
if (email && email !== 'null') {
|
||||||
|
this.form.EmailOrPhone = email
|
||||||
|
} else {
|
||||||
|
this.form.EmailOrPhone = oldEMail
|
||||||
|
}
|
||||||
|
if ((email && email !== 'null') || (oldEMail && oldEMail !== 'null')) {
|
||||||
|
this.isNeedUpload = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
} catch (err) {
|
||||||
|
return false
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async customPrompt(name) {
|
||||||
|
try {
|
||||||
|
const that = this
|
||||||
|
// 请输入标记名称
|
||||||
|
let message = this.$t('trials:researchForm:message:LinkVerificationCode')
|
||||||
|
const { value } = await this.$prompt(message, '', {
|
||||||
|
showClose: false,
|
||||||
|
cancelButtonText: this.$t('common:button:cancel'),
|
||||||
|
confirmButtonText: this.$t('trials:researchForm:button:saveLinkCode'),
|
||||||
|
showCancelButton: false,
|
||||||
|
closeOnClickModal: false,
|
||||||
|
closeOnPressEscape: false,
|
||||||
|
inputValue: name,
|
||||||
|
beforeClose: async (action, instance, done) => {
|
||||||
|
if (action === 'confirm') {
|
||||||
|
const value = instance.inputValue
|
||||||
|
if (!value) {
|
||||||
|
that.$message.error(this.$t('trials:researchForm:error:noValue'))
|
||||||
|
} else {
|
||||||
|
let flag = await this.getLinkVerificationCodeIsEffective(value)
|
||||||
|
if (!flag) {
|
||||||
|
that.$message.error(this.$t('trials:researchForm:confirm:isEffective'))
|
||||||
|
} else {
|
||||||
|
done()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
done()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getLinkVerificationCodeIsEffective(value)
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
},
|
||||||
// 初始化页面
|
// 初始化页面
|
||||||
async initPage() {
|
async initPage() {
|
||||||
try {
|
try {
|
||||||
|
|
@ -292,8 +366,18 @@ export default {
|
||||||
|
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
zzSessionStorage.clear()
|
zzSessionStorage.clear()
|
||||||
this.$i18n.locale = this.$route.query.lang
|
// this.$i18n.locale = this.$route.query.lang
|
||||||
this.setLanguage(this.$route.query.lang)
|
// this.setLanguage(this.$route.query.lang)
|
||||||
|
let lang = this.$route.query.lang
|
||||||
|
if (!lang) {
|
||||||
|
const language = navigator.language
|
||||||
|
lang = 'en'
|
||||||
|
if (language.includes("zh")) {
|
||||||
|
lang = 'zh'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.$i18n.locale = lang
|
||||||
|
this.setLanguage(lang)
|
||||||
store.dispatch('user/setToken', res.Result.Token)
|
store.dispatch('user/setToken', res.Result.Token)
|
||||||
zzSessionStorage.setItem('TokenKey', res.Result.Token)
|
zzSessionStorage.setItem('TokenKey', res.Result.Token)
|
||||||
var permissions = await getUserPermissions()
|
var permissions = await getUserPermissions()
|
||||||
|
|
@ -363,9 +447,10 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.research_login_m_content{
|
.research_login_m_content {
|
||||||
background-color:#f5f7fa;
|
background-color: #f5f7fa;
|
||||||
.title{
|
|
||||||
|
.title {
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
line-height: 80px;
|
line-height: 80px;
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
|
|
@ -373,27 +458,33 @@ export default {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
.basic_content{
|
|
||||||
|
.basic_content {
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
.login_content{
|
|
||||||
|
.login_content {
|
||||||
padding: 5px 20px;
|
padding: 5px 20px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
||||||
::v-deep .el-form-item {
|
::v-deep .el-form-item {
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.code_content{
|
|
||||||
display:flex;
|
.code_content {
|
||||||
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
.el-input{
|
|
||||||
|
.el-input {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.submit_content{
|
|
||||||
|
.submit_content {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
@ -402,11 +493,20 @@ export default {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
border-bottom: 1px solid #f5f7fa;
|
border-bottom: 1px solid #f5f7fa;
|
||||||
.el-form-item__content{
|
|
||||||
|
.el-form-item__content {
|
||||||
color: #82848a;
|
color: #82848a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.LinkVerificationCode_content {
|
||||||
|
position: fixed;
|
||||||
|
top: 40%;
|
||||||
|
bottom: 40%;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -412,6 +412,7 @@ export default {
|
||||||
// 保存基本信息
|
// 保存基本信息
|
||||||
handleSave(isAutoCommit, isCheck = false) {
|
handleSave(isAutoCommit, isCheck = false) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
isCheck = false
|
||||||
if (this.IsOnlyUploadFile && !isCheck) {
|
if (this.IsOnlyUploadFile && !isCheck) {
|
||||||
if (!this.form.UserName) {
|
if (!this.form.UserName) {
|
||||||
this.$message.warning(this.$t("trials:researchForm:message:notUserName"))
|
this.$message.warning(this.$t("trials:researchForm:message:notUserName"))
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,6 @@ export default {
|
||||||
EquipmentControlFieldList.forEach(item => {
|
EquipmentControlFieldList.forEach(item => {
|
||||||
this.EquipmentControlFieldList.push(item.FiledName)
|
this.EquipmentControlFieldList.push(item.FiledName)
|
||||||
})
|
})
|
||||||
console.log(this.EquipmentControlFieldList, 'this.EquipmentControlFieldList')
|
|
||||||
this.list = TrialSiteEquipmentSurveyList
|
this.list = TrialSiteEquipmentSurveyList
|
||||||
this.state = trialSiteSurvey.State
|
this.state = trialSiteSurvey.State
|
||||||
this.$forceUpdate()
|
this.$forceUpdate()
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@
|
||||||
<el-table-column v-for="(item, index) in tableKey" :key="item.key" :prop="item.key" :label="item.title">
|
<el-table-column v-for="(item, index) in tableKey" :key="item.key" :prop="item.key" :label="item.title">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span :class="{ IsHighlight: scope.row.IsHighlight.includes(item.key) }">{{ scope.row[item.key]
|
<span :class="{ IsHighlight: scope.row.IsHighlight.includes(item.key) }">{{ scope.row[item.key]
|
||||||
}}</span>
|
}}</span>
|
||||||
<el-button icon="el-icon-view" circle v-if="index > 0" size="mini" style="margin-left: 5px;"
|
<el-button icon="el-icon-view" circle v-if="index > 0 && scope.row[item.key]" size="mini"
|
||||||
:title="$t('common:button:view')"
|
style="margin-left: 5px;" :title="$t('common:button:view')"
|
||||||
@click="lookReadingResults(scope.row.VisitTaskId[item.key])"></el-button>
|
@click="lookReadingResults(scope.row.VisitTaskId[item.key])"></el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue