中心调研支持上传文件
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
4709125107
commit
5ec234c9dd
|
|
@ -4514,4 +4514,12 @@ export function getLinkVerificationCodeIsEffective(data) {
|
|||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 上传通用文件记录
|
||||
export function addOrUpdateCommonUploadRecord(data) {
|
||||
return request({
|
||||
url: `/FileUploadRecord/addOrUpdateCommonUploadRecord`,
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-form v-if="isShow" ref="researchBSForm" size="small" :model="form" :rules="rules" style="width:80%"
|
||||
label-position="left">
|
||||
label-position="left" v-loading="loading">
|
||||
<!-- 项目编号 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:trialId')">
|
||||
<el-input v-model="form.TrialCode" disabled />
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
<!-- 中心名称 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:siteName')" prop="TrialSiteId">
|
||||
<el-select v-model="form.TrialSiteId" filterable style="width:100%;"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" @change="handleSiteChange">
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" @change="handleSiteChange">
|
||||
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteAliasName"
|
||||
:value="item.TrialSiteId" />
|
||||
</el-select>
|
||||
|
|
@ -31,28 +31,47 @@
|
|||
</el-form-item>
|
||||
<!-- 联系人 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:contactor')" prop="UserName">
|
||||
<el-input v-model="form.UserName" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||
<el-input v-model="form.UserName" :disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" />
|
||||
</el-form-item>
|
||||
<!-- 联系电话 -->
|
||||
<el-form-item :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) && !isPM" />
|
||||
</el-form-item>
|
||||
<!-- 联系邮箱 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:contactorEmail')" prop="Email">
|
||||
<el-input v-model="form.Email" disabled />
|
||||
</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="width: 30%;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-divider /> -->
|
||||
<!-- 平均刻盘周期(天) -->
|
||||
<el-form-item v-if="!notShowFieldList.includes('AverageEngravingCycle')"
|
||||
:label="$t('trials:researchForm:form:engravingCycle')">
|
||||
<el-input-number v-model="form.AverageEngravingCycle"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0" />
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" controls-position="right"
|
||||
:min="0" />
|
||||
</el-form-item>
|
||||
<!-- 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-group v-model="form.IsRoutineMRIPDEE"
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM">
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsRoutineMRIPDEE${item.value}`" :label="item.value">{{
|
||||
item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -65,27 +84,29 @@
|
|||
<!-- 单次检查时长(分钟) -->
|
||||
<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-input-number v-model="form.MRIPDFFScanTime"
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" 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-input-number v-model="form.MRIPDFFLeadTime"
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" 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" />
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" />
|
||||
</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-group v-model="form.IsAuthorize"
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" @input="handleIsAuthorizeInput">
|
||||
<el-radio label="IsAuthorizeRadiologistsParticipate">{{
|
||||
$t('trials:researchForm:form:IsAuthorizeRadiologistsParticipate') }}</el-radio>
|
||||
<el-radio label="AssignFixedTechnologists">{{
|
||||
|
|
@ -96,7 +117,7 @@
|
|||
<el-form-item v-if="!notShowFieldList.includes('IsConfirmImagingTechnologist')"
|
||||
:label="$t('trials:researchForm:form:isQualified')" prop="IsConfirmImagingTechnologist">
|
||||
<el-radio-group v-model="form.IsConfirmImagingTechnologist"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM">
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsConfirmImagingTechnologist${item.value}`" :label="item.value">{{
|
||||
item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -105,13 +126,13 @@
|
|||
<el-form-item v-if="!notShowFieldList.includes('NotConfirmReson') && form.IsConfirmImagingTechnologist === false"
|
||||
:label="$t('trials:researchForm:form:notQualifiedReason')" prop="NotConfirmReson">
|
||||
<el-input v-model="form.NotConfirmReson" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" />
|
||||
</el-form-item>
|
||||
<!-- 研究单位疗效评估人员类型 -->
|
||||
<el-form-item v-if="!notShowFieldList.includes('EfficacyEvaluatorType')"
|
||||
:label="$t('trials:researchForm:form:staffType')">
|
||||
<el-radio-group v-model="form.EfficacyEvaluatorType"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory">
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM">
|
||||
<el-radio v-for="item of $d.EfficacyEvaluatorType" :key="`EfficacyEvaluatorType${item.value}`"
|
||||
:label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -120,7 +141,7 @@
|
|||
<el-form-item v-if="!notShowFieldList.includes('IsFollowStudyParameters')" prop="IsFollowStudyParameters">
|
||||
<span slot="label" v-html="$t('trials:researchForm:form:isFollowStudyParam')" />
|
||||
<el-radio-group v-model="form.IsFollowStudyParameters"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" style="margin-right: 10px;">
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" style="margin-right: 10px;">
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsFollowStudyParameters${item.value}`" :label="item.value">{{
|
||||
item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -133,13 +154,13 @@
|
|||
prop="NotFollowReson">
|
||||
<span slot="label" v-html="$t('trials:researchForm:form:notFollowStudyParam')" />
|
||||
<el-input v-model="form.NotFollowReson" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" />
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" />
|
||||
</el-form-item>
|
||||
<!-- 是否严格按照影像手册参数完成刻盘 -->
|
||||
<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;">
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" 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>
|
||||
|
|
@ -149,7 +170,7 @@
|
|||
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" />
|
||||
:disabled="(!(state === 0 && userTypeEnumInt === 0) || isHistory) && !isPM" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 保存 -->
|
||||
|
|
@ -163,9 +184,10 @@
|
|||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
import { getTrialSiteSelect, getTrialDocumentList } from '@/api/trials'
|
||||
import { getTrialSiteSelect, getTrialDocumentList, addOrUpdateCommonUploadRecord } from '@/api/trials'
|
||||
import { addOrUpdateTrialSiteSurvey } from '@/api/research'
|
||||
import attachmentPreview from '@/views/dictionary/attachment/components/SignatureTemplate/attachmentPreview'
|
||||
import { downLoadFile } from '@/utils/stream.js'
|
||||
export default {
|
||||
name: 'QuestionForm',
|
||||
components: { attachmentPreview },
|
||||
|
|
@ -173,7 +195,19 @@ export default {
|
|||
isHistory: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
IsOnlyUploadFile: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
IsSupportUploadFile: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
isPM: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
var checkPhone = (rule, value, callback) => {
|
||||
|
|
@ -198,6 +232,7 @@ export default {
|
|||
}
|
||||
}
|
||||
return {
|
||||
loading: false,
|
||||
form: {
|
||||
Id: '',
|
||||
Sponsor: '', // 申办方
|
||||
|
|
@ -225,7 +260,9 @@ export default {
|
|||
NotConfirmReson: '',
|
||||
EfficacyEvaluatorType: '',
|
||||
IsFollowStudyParameters: '',
|
||||
NotFollowReson: ''
|
||||
NotFollowReson: '',
|
||||
CommonUploadRecordId: null,
|
||||
SiteSurveyFile: []
|
||||
},
|
||||
rules: {
|
||||
TrialSiteId: [
|
||||
|
|
@ -281,11 +318,68 @@ export default {
|
|||
}
|
||||
},
|
||||
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"))
|
||||
return await downLoadFile(
|
||||
this.OSSclientConfig.basePath + this.form.SiteSurveyFile.Path,
|
||||
this.form.SiteSurveyFile.FileName
|
||||
)
|
||||
},
|
||||
async viewManual() {
|
||||
try {
|
||||
let data = {
|
||||
|
|
@ -316,8 +410,46 @@ export default {
|
|||
}
|
||||
},
|
||||
// 保存基本信息
|
||||
handleSave(isAutoCommit) {
|
||||
handleSave(isAutoCommit, isCheck = false) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (this.IsOnlyUploadFile && !isCheck) {
|
||||
if (!this.form.CommonUploadRecordId) return this.$message.warning(this.$t("trials:researchForm:message:notCommonUploadRecordId"))
|
||||
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 false
|
||||
}
|
||||
this.$refs['researchBSForm'].validate(valid => {
|
||||
if (valid) {
|
||||
this.btnLoading = true
|
||||
|
|
@ -341,7 +473,8 @@ export default {
|
|||
notConfirmReson: this.form.NotConfirmReson,
|
||||
efficacyEvaluatorType: this.form.EfficacyEvaluatorType,
|
||||
isFollowStudyParameters: this.form.IsFollowStudyParameters,
|
||||
notFollowReson: this.form.NotFollowReson
|
||||
notFollowReson: this.form.NotFollowReson,
|
||||
CommonUploadRecordId: this.form.CommonUploadRecordId
|
||||
}
|
||||
addOrUpdateTrialSiteSurvey(param).then(res => {
|
||||
this.btnLoading = false
|
||||
|
|
@ -380,6 +513,9 @@ export default {
|
|||
this.form.UserName = trialSiteSurvey.UserName // 联系人
|
||||
this.form.Phone = trialSiteSurvey.Phone // 联系人电话
|
||||
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.IsRoutineMRIPDEE = trialSiteSurvey.IsRoutineMRIPDEE
|
||||
this.form.MRIPDFFScanTime = trialSiteSurvey.MRIPDFFScanTime
|
||||
|
|
@ -410,3 +546,54 @@ export default {
|
|||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.upload {
|
||||
display: inline-block;
|
||||
height: 30px;
|
||||
width: 90px;
|
||||
padding: 2px 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: 30px;
|
||||
width: 90px;
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
left: 0;
|
||||
top: 0;
|
||||
opacity: 0;
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
.btn-select {
|
||||
//给显示在页面上的按钮写样式
|
||||
width: 90px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
border-radius: 24px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
pointer-events: none; //pointer-events:none用来控制该标签的点击穿透事件
|
||||
}
|
||||
}
|
||||
|
||||
.file {
|
||||
::v-deep .el-form-item__content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -132,7 +132,11 @@ export default {
|
|||
default: () => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
isPM: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
<div class="equipment-wrapper">
|
||||
<div class="header-wrapper">
|
||||
<!-- 新增 -->
|
||||
<el-button v-if="state === 0 && userTypeEnumInt === 0 && !isHistory && EquipmentControlFieldList.length > 0"
|
||||
<el-button
|
||||
v-if="((state === 0 && userTypeEnumInt === 0 && !isHistory) || isPM) && EquipmentControlFieldList.length > 0"
|
||||
size="small" type="primary" @click="handleAdd">
|
||||
{{ $t('common:button:add') }}
|
||||
</el-button>
|
||||
|
|
@ -82,7 +83,7 @@
|
|||
<!-- 备注 -->
|
||||
<el-table-column v-if="EquipmentControlFieldList.includes('Note')" min-width="120" prop="Note"
|
||||
:label="$t('trials:equiptResearch:form:precautions')" show-overflow-tooltip />
|
||||
<el-table-column v-if="state === 0 && userTypeEnumInt === 0 && !isHistory" fixed="right"
|
||||
<el-table-column v-if="(state === 0 && userTypeEnumInt === 0 && !isHistory) || isPM" fixed="right"
|
||||
:label="$t('common:action:action')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<!-- 编辑 -->
|
||||
|
|
@ -121,7 +122,11 @@ export default {
|
|||
isHistory: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
isPM: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
<template>
|
||||
<div class="particiapant-wrapper">
|
||||
<div class="header-wrapper" />
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="list"
|
||||
border
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column
|
||||
prop="date"
|
||||
:label="$t('trials:staffResearch:form:name')"
|
||||
>
|
||||
<el-table v-loading="loading" :data="list" border style="width: 100%">
|
||||
<el-table-column prop="date" :label="$t('trials:staffResearch:form:name')">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip v-if="scope.row.ErrorMessage" class="item" effect="dark" :content="scope.row.ErrorMessage" placement="bottom">
|
||||
<el-tooltip v-if="scope.row.ErrorMessage" class="item" effect="dark" :content="scope.row.ErrorMessage"
|
||||
placement="bottom">
|
||||
<i class="el-icon-warning" style="color:red" />
|
||||
</el-tooltip>
|
||||
|
||||
|
|
@ -29,20 +22,11 @@
|
|||
</template>
|
||||
</el-table-column> -->
|
||||
<!-- 电话号码 -->
|
||||
<el-table-column
|
||||
prop="Phone"
|
||||
:label="$t('trials:staffResearch:form:phone')"
|
||||
/>
|
||||
<el-table-column prop="Phone" :label="$t('trials:staffResearch:form:phone')" />
|
||||
<!-- 邮箱 -->
|
||||
<el-table-column
|
||||
prop="Email"
|
||||
:label="$t('trials:staffResearch:form:email')"
|
||||
/>
|
||||
<el-table-column prop="Email" :label="$t('trials:staffResearch:form:email')" />
|
||||
<!-- 单位 -->
|
||||
<el-table-column
|
||||
prop="OrganizationName"
|
||||
:label="$t('trials:staffResearch:form:organization')"
|
||||
/>
|
||||
<el-table-column prop="OrganizationName" :label="$t('trials:staffResearch:form:organization')" />
|
||||
<!-- 是否生成账号 -->
|
||||
<!-- <el-table-column
|
||||
prop="IsGenerateAccount"
|
||||
|
|
@ -53,27 +37,20 @@
|
|||
</template>
|
||||
</el-table-column> -->
|
||||
<!-- 用户类型 -->
|
||||
<el-table-column
|
||||
prop="UserType"
|
||||
:label="$t('trials:staffResearch:form:userType')"
|
||||
/>
|
||||
<el-table-column prop="UserType" :label="$t('trials:staffResearch:form:userType')" />
|
||||
<!-- 原状态 -->
|
||||
<el-table-column
|
||||
prop="IsHistoryUserOriginDeleted"
|
||||
:label="$t('trials:staffResearch:form:originalState')"
|
||||
>
|
||||
<el-table-column prop="IsHistoryUserOriginDeleted" :label="$t('trials:staffResearch:form:originalState')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsHistoryUserOriginDeleted" type="info">{{ $fd('IsUserExitTrial', scope.row.IsHistoryUserOriginDeleted) }}</el-tag>
|
||||
<el-tag v-if="scope.row.IsHistoryUserOriginDeleted" type="info">{{ $fd('IsUserExitTrial',
|
||||
scope.row.IsHistoryUserOriginDeleted) }}</el-tag>
|
||||
<el-tag v-else type="danger">{{ $fd('IsUserExitTrial', scope.row.IsHistoryUserOriginDeleted) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 更新状态 -->
|
||||
<el-table-column
|
||||
prop="IsHistoryUserDeleted"
|
||||
:label="$t('trials:staffResearch:form:updateState')"
|
||||
>
|
||||
<el-table-column prop="IsHistoryUserDeleted" :label="$t('trials:staffResearch:form:updateState')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsHistoryUserDeleted" type="info">{{ $fd('IsUserExitTrial', scope.row.IsHistoryUserDeleted) }}</el-tag>
|
||||
<el-tag v-if="scope.row.IsHistoryUserDeleted" type="info">{{ $fd('IsUserExitTrial',
|
||||
scope.row.IsHistoryUserDeleted) }}</el-tag>
|
||||
<el-tag v-else type="danger">{{ $fd('IsUserExitTrial', scope.row.IsHistoryUserDeleted) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -88,14 +65,10 @@
|
|||
<el-tag v-else type="danger">{{ $fd('IsJoin', scope.row.IsJoin) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column
|
||||
v-if="state === 0 && (userTypeEnumInt===0 ) && !isHistory"
|
||||
fixed="right"
|
||||
:label="$t('common:action:action')"
|
||||
width="100"
|
||||
>
|
||||
<el-table-column v-if="(state === 0 && (userTypeEnumInt === 0) && !isHistory) || isPM" fixed="right"
|
||||
:label="$t('common:action:action')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="userTypeEnumInt===0" type="text" size="small" @click="handleEdit(scope.row)">
|
||||
<el-button v-if="userTypeEnumInt === 0 || isPM" type="text" size="small" @click="handleEdit(scope.row)">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
|
@ -103,16 +76,9 @@
|
|||
</el-table>
|
||||
|
||||
<!-- 新增/编辑人员信息 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="900px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
:append-to-body="userTypeEnumInt !== 0"
|
||||
>
|
||||
<HistoricalParticipantForm :state="state" :data="rowData" @getList="getList" @close="closeDialog" />
|
||||
<el-dialog v-if="editVisible" :visible.sync="editVisible" :close-on-click-modal="false" :title="title" width="900px"
|
||||
custom-class="base-dialog-wrapper" :append-to-body="userTypeEnumInt !== 0">
|
||||
<HistoricalParticipantForm :state="state" :isPM="isPM" :data="rowData" @getList="getList" @close="closeDialog" />
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
|
|
@ -128,7 +94,11 @@ export default {
|
|||
isHistory: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
isPM: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -199,8 +169,8 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.particiapant-wrapper{
|
||||
.header-wrapper{
|
||||
.particiapant-wrapper {
|
||||
.header-wrapper {
|
||||
text-align: right;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,43 +3,32 @@
|
|||
<div class="base-dialog-body">
|
||||
<!-- 姓 -->
|
||||
<el-form-item :label="$t('trials:staffResearch:form:lastName')" prop="LastName">
|
||||
<el-input v-model="form.LastName" :disabled="!(state === 0 && userTypeEnumInt === 0)" style="width: 200px" />
|
||||
<el-input v-model="form.LastName" :disabled="(!(state === 0 && userTypeEnumInt === 0))&&!isPM" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<!-- 名 -->
|
||||
<el-form-item :label="$t('trials:staffResearch:form:firstName')" prop="FirstName">
|
||||
<el-input v-model="form.FirstName" :disabled="!(state === 0 && userTypeEnumInt === 0)" style="width: 200px" />
|
||||
<el-input v-model="form.FirstName" :disabled="(!(state === 0 && userTypeEnumInt === 0))&&!isPM" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<!-- 角色 -->
|
||||
<el-form-item :label="$t('trials:staffResearch:form:role')" prop="TrialRoleCode">
|
||||
<el-select
|
||||
v-model="form.TrialRoleCode"
|
||||
style="width: 200px"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0)"
|
||||
@change="handleTrialRoleChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.SiteSurvey_UserRoles"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="parseInt(item.value)"
|
||||
/>
|
||||
<el-select v-model="form.TrialRoleCode" style="width: 200px" :disabled="(!(state === 0 && userTypeEnumInt === 0))&&!isPM"
|
||||
@change="handleTrialRoleChange">
|
||||
<el-option v-for="item of $d.SiteSurvey_UserRoles" :key="item.id" :label="item.label"
|
||||
:value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 电话号码 -->
|
||||
<el-form-item :label="$t('trials:staffResearch:form:phone')" prop="Phone">
|
||||
<el-input v-model="form.Phone" :disabled="!(state === 0 && userTypeEnumInt === 0)" style="width: 200px" />
|
||||
<el-input v-model="form.Phone" :disabled="(!(state === 0 && userTypeEnumInt === 0))&&!isPM" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<!-- 邮箱 -->
|
||||
<el-form-item :label="$t('trials:staffResearch:form:email')" prop="Email">
|
||||
<el-input v-model="form.Email" :disabled="!(state === 0 && userTypeEnumInt === 0)" style="width: 200px" />
|
||||
<el-input v-model="form.Email" :disabled="(!(state === 0 && userTypeEnumInt === 0))&&!isPM" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<!-- 单位 -->
|
||||
<el-form-item :label="$t('trials:staffResearch:form:organization')" prop="OrganizationName">
|
||||
<el-input
|
||||
v-model="form.OrganizationName"
|
||||
:disabled="!(state === 0 && userTypeEnumInt === 0)"
|
||||
style="width: 200px"
|
||||
/>
|
||||
<el-input v-model="form.OrganizationName" :disabled="(!(state === 0 && userTypeEnumInt === 0))&&!isPM"
|
||||
style="width: 200px" />
|
||||
</el-form-item>
|
||||
<!-- <el-row>
|
||||
<!– 是否生成账号 –>
|
||||
|
|
@ -112,7 +101,11 @@ export default {
|
|||
state: {
|
||||
type: Number,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
isPM: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
// var checkPhone = (rule, value, callback) => {
|
||||
|
|
|
|||
|
|
@ -2,27 +2,16 @@
|
|||
<div class="particiapant-wrapper">
|
||||
<div class="header-wrapper">
|
||||
<!-- 新增 -->
|
||||
<el-button
|
||||
v-if="state === 0 && userTypeEnumInt === 0 && !isHistory"
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="handleAdd"
|
||||
>
|
||||
<el-button v-if="(state === 0 && userTypeEnumInt === 0 && !isHistory) || isPM" size="small" type="primary"
|
||||
@click="handleAdd">
|
||||
{{ $t('common:button:add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="list"
|
||||
border
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column
|
||||
prop="date"
|
||||
:label="$t('trials:staffResearch:form:name')"
|
||||
>
|
||||
<el-table v-loading="loading" :data="list" border style="width: 100%">
|
||||
<el-table-column prop="date" :label="$t('trials:staffResearch:form:name')">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip v-if="scope.row.ErrorMessage" class="item" effect="dark" :content="scope.row.ErrorMessage" placement="bottom">
|
||||
<el-tooltip v-if="scope.row.ErrorMessage" class="item" effect="dark" :content="scope.row.ErrorMessage"
|
||||
placement="bottom">
|
||||
<i class="el-icon-warning" style="color:red" />
|
||||
</el-tooltip>
|
||||
|
||||
|
|
@ -30,29 +19,17 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!-- 姓名 -->
|
||||
<el-table-column
|
||||
prop="TrialRoleCode"
|
||||
:label="$t('trials:staffResearch:form:role')"
|
||||
>
|
||||
<el-table-column prop="TrialRoleCode" :label="$t('trials:staffResearch:form:role')">
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('SiteSurvey_UserRoles',scope.row.TrialRoleCode) }}
|
||||
{{ $fd('SiteSurvey_UserRoles', scope.row.TrialRoleCode) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 电话号码 -->
|
||||
<el-table-column
|
||||
prop="Phone"
|
||||
:label="$t('trials:staffResearch:form:phone')"
|
||||
/>
|
||||
<el-table-column prop="Phone" :label="$t('trials:staffResearch:form:phone')" />
|
||||
<!-- 邮箱 -->
|
||||
<el-table-column
|
||||
prop="Email"
|
||||
:label="$t('trials:staffResearch:form:email')"
|
||||
/>
|
||||
<el-table-column prop="Email" :label="$t('trials:staffResearch:form:email')" />
|
||||
<!-- 单位 -->
|
||||
<el-table-column
|
||||
prop="OrganizationName"
|
||||
:label="$t('trials:staffResearch:form:organization')"
|
||||
/>
|
||||
<el-table-column prop="OrganizationName" :label="$t('trials:staffResearch:form:organization')" />
|
||||
<!-- 是否生成账号 -->
|
||||
<!-- <el-table-column
|
||||
prop="IsGenerateAccount"
|
||||
|
|
@ -68,33 +45,28 @@
|
|||
:label="$t('trials:staffResearch:form:userType')"
|
||||
/>-->
|
||||
<!-- 状态 -->
|
||||
<el-table-column
|
||||
v-if="hasPermi(['role:pm','role:apm'])"
|
||||
prop="State"
|
||||
:label="$t('trials:staffResearch:form:status')"
|
||||
>
|
||||
<el-table-column v-if="hasPermi(['role:pm', 'role:apm'])" prop="State"
|
||||
:label="$t('trials:staffResearch:form:status')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsJoin" type="info">{{ $fd('IsJoin', scope.row.IsJoin) }}</el-tag>
|
||||
<el-tag v-else type="danger">{{ $fd('IsJoin', scope.row.IsJoin) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- v-if="state !== 3 && (userTypeEnumInt===0 || hasPermi(['role:pm','role:apm']))" -->
|
||||
<el-table-column
|
||||
v-if="state === 0 && (userTypeEnumInt===0 ) && !isHistory"
|
||||
fixed="right"
|
||||
:label="$t('common:action:action')"
|
||||
width="100"
|
||||
>
|
||||
<el-table-column v-if="(state === 0 && (userTypeEnumInt === 0) && !isHistory) || isPM" fixed="right"
|
||||
:label="$t('common:action:action')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<!-- 编辑 -->
|
||||
<!-- <el-button type="text" size="small" :disabled="scope.row.IsGenerateSuccess || (state !== 0 && userTypeEnumInt===0) || (state !== 2 &&hasPermi(['role:pm']))" @click="handleEdit(scope.row)">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button> -->
|
||||
<el-button v-if="userTypeEnumInt===0" type="text" size="small" :disabled="state!==0 || scope.row.IsGenerateSuccess" @click="handleEdit(scope.row)">
|
||||
<el-button v-if="userTypeEnumInt === 0 || isPM" type="text" size="small"
|
||||
:disabled="(state !== 0 || scope.row.IsGenerateSuccess) && !isPM" @click="handleEdit(scope.row)">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
<!-- 删除 -->
|
||||
<el-button v-if="userTypeEnumInt===0" type="text" size="small" :disabled="state!==0 || scope.row.IsGenerateSuccess" @click="handleDelete(scope.row)">
|
||||
<el-button v-if="userTypeEnumInt === 0 || isPM" type="text" size="small"
|
||||
:disabled="(state !== 0 || scope.row.IsGenerateSuccess) && !isPM" @click="handleDelete(scope.row)">
|
||||
{{ $t('common:button:delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
|
@ -102,16 +74,9 @@
|
|||
</el-table>
|
||||
|
||||
<!-- 新增/编辑人员信息 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="900px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
:append-to-body="userTypeEnumInt !== 0"
|
||||
>
|
||||
<ParticipantForm :state="state" :data="rowData" @getList="getList" @close="closeDialog" />
|
||||
<el-dialog v-if="editVisible" :visible.sync="editVisible" :close-on-click-modal="false" :title="title" width="900px"
|
||||
custom-class="base-dialog-wrapper" :append-to-body="userTypeEnumInt !== 0">
|
||||
<ParticipantForm :state="state" :isPM="isPM" :data="rowData" @getList="getList" @close="closeDialog" />
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
|
|
@ -127,7 +92,11 @@ export default {
|
|||
isHistory: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
isPM: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -197,7 +166,7 @@ export default {
|
|||
this.$message.success(this.$t('trials:staffResearch:message:delSuccessfully'))
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
}).catch(() => {})
|
||||
}).catch(() => { })
|
||||
},
|
||||
isExistIncorrect() {
|
||||
return this.list.some(item => item.IsCorrect === false)
|
||||
|
|
@ -224,8 +193,8 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.particiapant-wrapper{
|
||||
.header-wrapper{
|
||||
.particiapant-wrapper {
|
||||
.header-wrapper {
|
||||
text-align: right;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@
|
|||
<div class="center-wrapper">
|
||||
<!-- 基本信息 -->
|
||||
<el-card shadow="hover">
|
||||
<BaseInfo ref="baseResearchInfo" :is-history="true" />
|
||||
<BaseInfo ref="baseResearchInfo" :is-history="true" :IsOnlyUploadFile="IsOnlyUploadFile"
|
||||
:IsSupportUploadFile="IsSupportUploadFile" />
|
||||
</el-card>
|
||||
|
||||
<!-- 人员调查 -->
|
||||
|
|
@ -125,7 +126,7 @@ export default {
|
|||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
trialId: this.$route.query.trialId,
|
||||
|
|
@ -139,7 +140,9 @@ export default {
|
|||
btnLoading: false,
|
||||
isFullscreen: false,
|
||||
historyVisible: false,
|
||||
siteSurveyNoteInfo: {}
|
||||
siteSurveyNoteInfo: {},
|
||||
IsSupportUploadFile: false,
|
||||
IsOnlyUploadFile: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -154,6 +157,8 @@ export default {
|
|||
this.loading = true
|
||||
getSiteSurveyInfo(this.trialId, this.trialSiteSurveyId).then(res => {
|
||||
if (res.Result) {
|
||||
this.IsSupportUploadFile = res.Result.SiteSurveyFiledConfig.IsSupportUploadFile
|
||||
this.IsOnlyUploadFile = res.Result.SiteSurveyFiledConfig.IsOnlyUploadFile
|
||||
// this.trialSiteSurveyEquipmentType = res.Result.TrialInfo.TrialSiteSurveyEquipmentType
|
||||
// this.trialSiteSurveyUserRoles = res.Result.TrialInfo.TrialSiteSurveyUserRoles
|
||||
if (res.Result.SiteSurveyFiledConfig && res.Result.SiteSurveyFiledConfig.ModifyFiledList.length > 0) {
|
||||
|
|
|
|||
|
|
@ -45,26 +45,27 @@
|
|||
<div class="center-wrapper">
|
||||
<!-- 基本信息 -->
|
||||
<el-card shadow="hover">
|
||||
<BaseInfo ref="baseResearchInfo" :isPreview="isPreview" />
|
||||
<BaseInfo ref="baseResearchInfo" :isPreview="isPreview" :IsOnlyUploadFile="IsOnlyUploadFile"
|
||||
:IsSupportUploadFile="IsSupportUploadFile" :isPM="isPM" />
|
||||
</el-card>
|
||||
|
||||
<!-- 人员调查 -->
|
||||
<el-card shadow="hover" class="mt10">
|
||||
<!-- 历史人员 -->
|
||||
<h4>{{ $t('trials:staffResearch:title:historicalStaff') }}</h4>
|
||||
<HistoricalParticipant ref="historicalParticipant" :isPreview="isPreview" @refreshPage="refreshPage"
|
||||
@getList="initPage" />
|
||||
<HistoricalParticipant ref="historicalParticipant" :isPreview="isPreview" :isPM="isPM"
|
||||
@refreshPage="refreshPage" @getList="initPage" />
|
||||
<!-- <h4>{{ $t('trials:staffResearch:title:staff') }}</h4> -->
|
||||
<!-- 新增人员 -->
|
||||
<h4>{{ $t('trials:staffResearch:title:newStaff') }}</h4>
|
||||
<ParticipantList ref="researchParticipants" :isPreview="isPreview" @refreshPage="refreshPage"
|
||||
<ParticipantList ref="researchParticipants" :isPreview="isPreview" :isPM="isPM" @refreshPage="refreshPage"
|
||||
@getList="initPage" />
|
||||
</el-card>
|
||||
|
||||
<!-- 设备调研 -->
|
||||
<el-card shadow="hover" class="mt10" v-if="!siteSurveyNoteInfo.IsCloseEquipmentSurvey">
|
||||
<h4>{{ $t('trials:equiptResearch:title:equiptResearch') }}</h4>
|
||||
<EquipmentList ref="researchEquipments" :isPreview="isPreview" />
|
||||
<EquipmentList ref="researchEquipments" :isPreview="isPreview" :isPM="isPM" />
|
||||
</el-card>
|
||||
|
||||
<!-- 其他信息调研 -->
|
||||
|
|
@ -146,7 +147,7 @@ import BaseInfo from './components/BaseInfo'
|
|||
import HistoricalParticipant from './components/HistoricalParticipant'
|
||||
import ParticipantList from './components/ParticipantList'
|
||||
import EquipmentList from './components/EquipmentList'
|
||||
|
||||
import { mapMutations } from 'vuex'
|
||||
import TopLang from './topLang'
|
||||
import HistoricalRecord from './components/HistoricalRecord'
|
||||
export default {
|
||||
|
|
@ -172,17 +173,36 @@ export default {
|
|||
btnLoading: false,
|
||||
isFullscreen: false,
|
||||
historyVisible: false,
|
||||
siteSurveyNoteInfo: {}
|
||||
siteSurveyNoteInfo: {},
|
||||
IsSupportUploadFile: false,
|
||||
IsOnlyUploadFile: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
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)
|
||||
this.$updateDictionary()
|
||||
this.trialSiteSurveyId = getQueryString('trialSiteSurveyId')
|
||||
this.initPage()
|
||||
if (zzSessionStorage.getItem('userTypeEnumInt')) {
|
||||
this.userTypeEnumInt = zzSessionStorage.getItem('userTypeEnumInt') * 1
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isPM() {
|
||||
return this.hasPermi(['role:pm', 'role:spm', 'role:cpm', 'role:apm'])
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
// 初始化页面
|
||||
initPage() {
|
||||
this.loading = true
|
||||
|
|
@ -193,6 +213,8 @@ export default {
|
|||
if (res.Result.SiteSurveyFiledConfig && res.Result.SiteSurveyFiledConfig.ModifyFiledList.length > 0) {
|
||||
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.siteId = res.Result.TrialSiteSurvey.TrialSiteId
|
||||
|
|
@ -219,7 +241,7 @@ export default {
|
|||
handleSubmit(type) {
|
||||
if (this.userTypeEnumInt === 0) {
|
||||
this.loading = true
|
||||
this.$refs['baseResearchInfo'].handleSave(true).then(res => {
|
||||
this.$refs['baseResearchInfo'].handleSave(true, type === 'approve').then(res => {
|
||||
this.loading = false
|
||||
if (res) {
|
||||
this.submit(type)
|
||||
|
|
@ -259,38 +281,33 @@ export default {
|
|||
},
|
||||
// 生成账号
|
||||
generateAccount() {
|
||||
// 是否确认审核通过?
|
||||
this.$confirm(this.$t('trials:researchForm:message:auditWarning'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true
|
||||
}).then(() => {
|
||||
// 校验必须至少有1个crc账号和至少1个SR账号
|
||||
// var list = this.$refs['researchParticipants'].list
|
||||
// var cIdx = list.findIndex(i => i.UserTypeEnum === 5)
|
||||
// var sIdx = list.findIndex(i => i.UserTypeEnum === 9)
|
||||
// if (cIdx === -1 || sIdx === -1) {
|
||||
// this.$alert(this.$t('trials:researchForm:message:saveWarning2'))
|
||||
// return
|
||||
// }
|
||||
this.loading = true
|
||||
var param = {
|
||||
TrialId: this.trialId,
|
||||
TrialSiteSurveyId: this.trialSiteSurveyId,
|
||||
LoginUrl: `${location.protocol}//${location.host}/login`,
|
||||
BaseUrl: `${location.protocol}//${location.host}/login`,
|
||||
RouteUrl: `${location.protocol}//${location.host}/email-recompose`
|
||||
}
|
||||
trialSurveySubmit(param).then((res) => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.initPage()
|
||||
this.$emit('refreshPage')
|
||||
this.$message.success(this.$t('common:message:approvedSuccessfully'))
|
||||
this.$refs['baseResearchInfo'].handleSave(true, true).then(res => {
|
||||
this.$confirm(this.$t('trials:researchForm:message:auditWarning'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true
|
||||
}).then(() => {
|
||||
if (res) {
|
||||
var param = {
|
||||
TrialId: this.trialId,
|
||||
TrialSiteSurveyId: this.trialSiteSurveyId,
|
||||
LoginUrl: `${location.protocol}//${location.host}/login`,
|
||||
BaseUrl: `${location.protocol}//${location.host}/login`,
|
||||
RouteUrl: `${location.protocol}//${location.host}/email-recompose`
|
||||
}
|
||||
this.loading = false
|
||||
trialSurveySubmit(param).then((res) => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.initPage()
|
||||
this.$emit('refreshPage')
|
||||
this.$message.success(this.$t('common:message:approvedSuccessfully'))
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}).catch(() => { })
|
||||
})
|
||||
},
|
||||
// 驳回
|
||||
handleReject() {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,25 @@
|
|||
<template>
|
||||
<div class="ImageManual">
|
||||
<div class="config">
|
||||
<div style="margin-bottom: 20px;font-weight: bold;">
|
||||
{{ $t("trials:researchRecord:ImageManual:uploadFile") }}
|
||||
</div>
|
||||
<el-form size="small" :model="uploadForm" style="width:80%">
|
||||
<el-form-item :label="$t('trials:researchRecord:ImageManual:IsSupportUploadFile')">
|
||||
<el-radio-group v-model="uploadForm.IsSupportUploadFile"
|
||||
@input="uploadForm.IsOnlyUploadFile = false">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:researchRecord:ImageManual:IsOnlyUploadFile')"
|
||||
v-if="uploadForm.IsSupportUploadFile">
|
||||
<el-radio-group v-model="uploadForm.IsOnlyUploadFile">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="margin-bottom: 20px;font-weight: bold;">
|
||||
{{ $t("trials:researchRecord:ImageManual:BasicQuestion") }}
|
||||
</div>
|
||||
|
|
@ -56,11 +75,11 @@
|
|||
<el-form-item :label="$t('trials:researchRecord:ImageManual:Equipment')">
|
||||
<el-radio-group v-model="form.IsCloseEquipmentSurvey" @input="handleInput">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label
|
||||
}}</el-radio>
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="margin-bottom: 20px;font-weight: bold;">
|
||||
<div style="margin-bottom: 20px;font-weight: bold;" v-if="form.IsCloseEquipmentSurvey">
|
||||
{{ $t("trials:researchRecord:ImageManual:EquipmentConfig") }}
|
||||
</div>
|
||||
<el-form size="small" :model="EquipmentForm" style="width:80%" v-if="form.IsCloseEquipmentSurvey">
|
||||
|
|
@ -192,6 +211,10 @@ export default {
|
|||
HasT2R2Correction: false,
|
||||
CanFullyExportPdfParameterMapsAndRawDicom: false,
|
||||
},
|
||||
uploadForm: {
|
||||
IsSupportUploadFile: false,
|
||||
IsOnlyUploadFile: false
|
||||
},
|
||||
obj: {
|
||||
AverageEngravingCycle: false,
|
||||
IsConfirmImagingTechnologist: false,
|
||||
|
|
@ -206,7 +229,7 @@ export default {
|
|||
IsAuthorizeRadiologistsParticipate: false,
|
||||
AssignFixedTechnologists: false,
|
||||
ISStrictManualBurnFlag: false,
|
||||
NotStrictManualBurnFlagReason: false,
|
||||
NotStrictManualBurnFlagReason: false,
|
||||
},
|
||||
loading: false
|
||||
}
|
||||
|
|
@ -241,6 +264,8 @@ export default {
|
|||
}
|
||||
let res = await getTrialExtralConfig(param)
|
||||
if (res.IsSuccess) {
|
||||
this.uploadForm.IsOnlyUploadFile = res.Result.IsOnlyUploadFile
|
||||
this.uploadForm.IsSupportUploadFile = res.Result.IsSupportUploadFile
|
||||
Object.keys(this.form).forEach(key => {
|
||||
this.form[key] = true
|
||||
if (key === 'ReplaceContent' || key === 'ReplaceContentCN') this.form[key] = ''
|
||||
|
|
@ -314,6 +339,8 @@ export default {
|
|||
IsOpenLostVistRead: this.form.IsOpenLostVistRead,
|
||||
IsSupportQCDownloadImage: this.form.IsSupportQCDownloadImage,
|
||||
IsCloseEquipmentSurvey: !this.form.IsCloseEquipmentSurvey,
|
||||
IsOnlyUploadFile: this.uploadForm.IsOnlyUploadFile,
|
||||
IsSupportUploadFile: this.uploadForm.IsSupportUploadFile,
|
||||
ModifyFiledList: [],
|
||||
NotShowFieldList: [],
|
||||
EquipmentControlFieldList: []
|
||||
|
|
|
|||
Loading…
Reference in New Issue