部分问题修复
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-12-02 17:52:47 +08:00
parent c2cb5b1999
commit d57c080916
8 changed files with 66 additions and 52 deletions

View File

@ -26,8 +26,11 @@ export function getTrialSurveyInitInfo(trialId) {
export function getSiteSurveyInfo(trialId, id) { export function getSiteSurveyInfo(trialId, id) {
return request({ return request({
url: `/TrialSiteSurvey/getSiteSurveyInfo/${trialId}/${id}`, url: `/TrialSiteSurvey/getSiteSurveyInfo/${trialId}`,
method: 'get' method: 'get',
params: {
TrialsiteSurveyId: id
}
}) })
} }

View File

@ -21,14 +21,15 @@
<!-- <h4>{{ $t('trials:staffResearch:title:staff') }}</h4>--> <!-- <h4>{{ $t('trials:staffResearch:title:staff') }}</h4>-->
<!-- 历史人员 --> <!-- 历史人员 -->
<h4>{{ $t('trials:staffResearch:title:historicalStaff') }}</h4> <h4>{{ $t('trials:staffResearch:title:historicalStaff') }}</h4>
<HistoricalParticipant ref="historicalParticipant" :is-history="true" @refreshPage="refreshPage" @getList="initPage" /> <HistoricalParticipant ref="historicalParticipant" :is-history="true" @refreshPage="refreshPage"
@getList="initPage" />
<!-- 新增人员 --> <!-- 新增人员 -->
<h4>{{ $t('trials:staffResearch:title:newStaff') }}</h4> <h4>{{ $t('trials:staffResearch:title:newStaff') }}</h4>
<ParticipantList ref="researchParticipants" :is-history="true" @refreshPage="refreshPage" @getList="initPage" /> <ParticipantList ref="researchParticipants" :is-history="true" @refreshPage="refreshPage" @getList="initPage" />
</el-card> </el-card>
<!-- 设备调研 --> <!-- 设备调研 -->
<el-card shadow="hover" class="mt10"> <el-card shadow="hover" class="mt10" v-if="siteSurveyNoteInfo.IsCloseEquipmentSurvey">
<h4>{{ $t('trials:equiptResearch:title:equiptResearch') }}</h4> <h4>{{ $t('trials:equiptResearch:title:equiptResearch') }}</h4>
<EquipmentList ref="researchEquipments" :is-history="true" /> <EquipmentList ref="researchEquipments" :is-history="true" />
</el-card> </el-card>
@ -53,31 +54,17 @@
</el-card> </el-card>
</div> </div>
<el-dialog <el-dialog v-if="rejectVisible" :visible.sync="rejectVisible" :close-on-click-modal="false"
v-if="rejectVisible" :title="$t('trials:researchForm:dialogTitle:reject')" width="600px" custom-class="base-dialog-wrapper"
:visible.sync="rejectVisible" :append-to-body="userTypeEnumInt !== 0">
:close-on-click-modal="false"
:title="$t('trials:researchForm:dialogTitle:reject')"
width="600px"
custom-class="base-dialog-wrapper"
:append-to-body="userTypeEnumInt !== 0"
>
<el-form ref="rejectForm" :model="rejectForm" label-width="100px"> <el-form ref="rejectForm" :model="rejectForm" label-width="100px">
<div class="base-dialog-body"> <div class="base-dialog-body">
<!-- 驳回原因 --> <!-- 驳回原因 -->
<el-form-item <el-form-item :label="$t('trials:researchForm:form:rejectReson')" prop="reason" :rules="[
:label="$t('trials:researchForm:form:rejectReson')" { required: true, message: $t('trials:researchForm:formRule:specify') }
prop="reason" ]">
:rules="[ <el-input v-model="rejectForm.reason" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
{ required: true, message: $t('trials:researchForm:formRule:specify')} style="width:100%;" />
]"
>
<el-input
v-model="rejectForm.reason"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
style="width:100%;"
/>
</el-form-item> </el-form-item>
</div> </div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;"> <div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
@ -136,7 +123,7 @@ export default {
props: { props: {
trialSiteSurveyId: { trialSiteSurveyId: {
type: String, type: String,
required: true default: ''
} }
}, },
data() { data() {
@ -152,7 +139,7 @@ export default {
btnLoading: false, btnLoading: false,
isFullscreen: false, isFullscreen: false,
historyVisible: false, historyVisible: false,
siteSurveyNoteInfo: null siteSurveyNoteInfo: {}
} }
}, },
mounted() { mounted() {
@ -172,6 +159,7 @@ 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.siteSurveyNoteInfo.IsCloseEquipmentSurvey = res.Result.SiteSurveyFiledConfig.IsCloseEquipmentSurvey
var historicalArr = [] var historicalArr = []
var newArr = [] var newArr = []
res.Result.TrialSiteUserSurveyList.map(i => { res.Result.TrialSiteUserSurveyList.map(i => {
@ -241,7 +229,7 @@ export default {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}).catch(() => {}) }).catch(() => { })
}, },
// //
generateAccount() { generateAccount() {
@ -276,7 +264,7 @@ export default {
}).catch(() => { }).catch(() => {
this.loading = false this.loading = false
}) })
}).catch(() => {}) }).catch(() => { })
}, },
// //
handleReject() { handleReject() {
@ -324,37 +312,44 @@ export default {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; height: 100%;
.mt10{
.mt10 {
margin-top: 10px; margin-top: 10px;
} }
.header-wrapper{
.header-wrapper {
width: 70%; width: 70%;
margin: 20px auto; margin: 20px auto;
} }
.center-wrapper{
.center-wrapper {
flex: 1; flex: 1;
width: 70%; width: 70%;
margin: 0px auto; margin: 0px auto;
padding-bottom: 20px; padding-bottom: 20px;
overflow-y: auto; overflow-y: auto;
} }
::v-deep .el-card__body{
::v-deep .el-card__body {
padding: 10px; padding: 10px;
} }
// >>>.el-dialog__body{ // >>>.el-dialog__body{
// padding: 10px 20px 20px 20px; // padding: 10px 20px 20px 20px;
// } // }
::v-deep .full-dialog-container{ ::v-deep .full-dialog-container {
.el-dialog__body{ .el-dialog__body {
height: calc(100% - 80px); height: calc(100% - 80px);
} }
} }
::v-deep .dialog-container{
::v-deep .dialog-container {
// margin-top: 50px !important; // margin-top: 50px !important;
width:75%; width: 75%;
height:80%; height: 80%;
.el-dialog__body{
.el-dialog__body {
padding: 10px; padding: 10px;
height: calc(100% - 80px); height: calc(100% - 80px);
} }

View File

@ -62,7 +62,7 @@
</el-card> </el-card>
<!-- 设备调研 --> <!-- 设备调研 -->
<el-card shadow="hover" class="mt10"> <el-card shadow="hover" class="mt10" v-if="siteSurveyNoteInfo.IsCloseEquipmentSurvey">
<h4>{{ $t('trials:equiptResearch:title:equiptResearch') }}</h4> <h4>{{ $t('trials:equiptResearch:title:equiptResearch') }}</h4>
<EquipmentList ref="researchEquipments" :isPreview="isPreview" /> <EquipmentList ref="researchEquipments" :isPreview="isPreview" />
</el-card> </el-card>
@ -193,6 +193,7 @@ 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.siteSurveyNoteInfo.IsCloseEquipmentSurvey = res.Result.SiteSurveyFiledConfig.IsCloseEquipmentSurvey
this.state = res.Result.TrialSiteSurvey.State this.state = res.Result.TrialSiteSurvey.State
this.siteId = res.Result.TrialSiteSurvey.TrialSiteId this.siteId = res.Result.TrialSiteSurvey.TrialSiteId
this.$refs['baseResearchInfo'].initForm(res.Result.TrialInfo, res.Result.TrialSiteSurvey, res.Result.SiteSurveyFiledConfig ? res.Result.SiteSurveyFiledConfig.NotShowFieldList : null) this.$refs['baseResearchInfo'].initForm(res.Result.TrialInfo, res.Result.TrialSiteSurvey, res.Result.SiteSurveyFiledConfig ? res.Result.SiteSurveyFiledConfig.NotShowFieldList : null)

View File

@ -28,6 +28,17 @@
</el-checkbox> </el-checkbox>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="margin-bottom: 20px;font-weight: bold;">
{{ $t("trials:researchRecord:ImageManual:TableConfiguration") }}
</div>
<el-form size="small" :model="form" style="width:80%">
<el-form-item :label="$t('trials:researchRecord:ImageManual:Equipment')">
<el-radio-group v-model="form.IsCloseEquipmentSurvey">
<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;"> <div style="margin-bottom: 20px;font-weight: bold;">
{{ $t("trials:researchRecord:ImageManual:Precautions") }} {{ $t("trials:researchRecord:ImageManual:Precautions") }}
</div> </div>
@ -53,7 +64,7 @@ export default {
props: { props: {
trialSiteSurveyId: { trialSiteSurveyId: {
type: String, type: String,
required: true default: ''
} }
}, },
data() { data() {
@ -68,7 +79,8 @@ export default {
ReplaceContent: '', ReplaceContent: '',
ReplaceContentCN: '', ReplaceContentCN: '',
IsOpenLostVistRead: false, IsOpenLostVistRead: false,
IsSupportQCDownloadImage: false IsSupportQCDownloadImage: false,
IsCloseEquipmentSurvey: true
}, },
obj: { obj: {
AverageEngravingCycle: false, AverageEngravingCycle: false,
@ -105,6 +117,7 @@ export default {
}) })
this.form.IsOpenLostVistRead = res.Result.IsOpenLostVistRead this.form.IsOpenLostVistRead = res.Result.IsOpenLostVistRead
this.form.IsSupportQCDownloadImage = res.Result.IsSupportQCDownloadImage this.form.IsSupportQCDownloadImage = res.Result.IsSupportQCDownloadImage
this.form.IsCloseEquipmentSurvey = res.Result.IsCloseEquipmentSurvey
if (Array.isArray(res.Result.NotShowFieldList) && res.Result.NotShowFieldList.length > 0) { if (Array.isArray(res.Result.NotShowFieldList) && res.Result.NotShowFieldList.length > 0) {
res.Result.NotShowFieldList.forEach(key => { res.Result.NotShowFieldList.forEach(key => {
this.form[key] = false this.form[key] = false
@ -151,6 +164,7 @@ export default {
let data = { let data = {
IsOpenLostVistRead: this.form.IsOpenLostVistRead, IsOpenLostVistRead: this.form.IsOpenLostVistRead,
IsSupportQCDownloadImage: this.form.IsSupportQCDownloadImage, IsSupportQCDownloadImage: this.form.IsSupportQCDownloadImage,
IsCloseEquipmentSurvey: this.form.IsCloseEquipmentSurvey,
ModifyFiledList: [], ModifyFiledList: [],
NotShowFieldList: [] NotShowFieldList: []
} }

View File

@ -288,7 +288,7 @@ export default {
}, },
methods: { methods: {
openImageManual() { openImageManual() {
if (!this.trialSiteSurveyId) return false // if (!this.trialSiteSurveyId) return false
this.ImageManualVisible = true this.ImageManualVisible = true
}, },
// //
@ -418,7 +418,7 @@ export default {
const trialId = this.trialId const trialId = this.trialId
this.shareLink = `${location.protocol}//${location.host}/researchLogin?trialId=${trialId}&lang=${this.$i18n.locale}` this.shareLink = `${location.protocol}//${location.host}/researchLogin?trialId=${trialId}&lang=${this.$i18n.locale}`
this.share_model.visible = true this.share_model.visible = true
this.trialSiteSurveyId = this.list[0].Id // this.trialSiteSurveyId = this.list[0].Id
this.$nextTick(() => { this.$nextTick(() => {
this.creatQrCode() this.creatQrCode()
}) })

View File

@ -36,7 +36,7 @@
class="svg-icon svg-readingChart-mini" @click.stop="(e) => handleReadingChart({ class="svg-icon svg-readingChart-mini" @click.stop="(e) => handleReadingChart({
e, e,
data: { data: {
ReportChartTypeEnum: 0, ReportChartTypeEnum: 1,
QuestionName: item.QuestionName QuestionName: item.QuestionName
}, },
})" /> })" />

View File

@ -49,7 +49,7 @@
QuestionId: scope.row.RowIndex ? null : scope.row.QuestionId, QuestionId: scope.row.RowIndex ? null : scope.row.QuestionId,
TableQuestionId: scope.row.RowIndex ? scope.row.TableQuestionId : null, TableQuestionId: scope.row.RowIndex ? scope.row.TableQuestionId : null,
RowIndex: scope.row.RowIndex ? scope.row.RowIndex : null, RowIndex: scope.row.RowIndex ? scope.row.RowIndex : null,
ReportChartTypeEnum: (scope.row.LesionType === 0 && scope.row.ReportLayType === 1) || (scope.row.LesionType === 4 && scope.row.ReportLayType === 1) ? 0 : null, ReportChartTypeEnum: (scope.row.LesionType === 0 && scope.row.ReportLayType === 1) ? 0 : (scope.row.LesionType === 4 && scope.row.ReportLayType === 1) ? 1 : null,
QuestionName: scope.row.QuestionName QuestionName: scope.row.QuestionName
} }
})" /> })" />
@ -169,7 +169,8 @@
<span v-else>{{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}</span> <span v-else>{{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}</span>
</template> </template>
<template v-else-if="scope.row.QuestionType === 22"> <template v-else-if="scope.row.QuestionType === 22">
{{ scope.row.Answers[task.VisitTaskId] === '-2' ? "NA" : scope.row.Answers[task.VisitTaskId] === '-1' ? {{ scope.row.Answers[task.VisitTaskId] === '-2' ? "NA" : scope.row.Answers[task.VisitTaskId] === '-1'
?
$t('trials:readingReport:title:unknow') : $t('trials:readingReport:title:unknow') :
scope.row.Answers[task.VisitTaskId] }} scope.row.Answers[task.VisitTaskId] }}
</template> </template>

View File

@ -88,11 +88,11 @@
<span style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;max-width: 150px">{{ <span style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;max-width: 150px">{{
user.RealName }}</span> user.RealName }}</span>
</div> </div>
<!-- <div style="font-size: .75rem;line-height: 18px;color:#999" v-if="NODE_ENV !== 'usa'">{{ new <div style="font-size: .75rem;line-height: 18px;color:#999" v-if="NODE_ENV !== 'usa'">{{ new
Date().getFullYear() }}{{ $t('common:date:today') }}{{ new Date().getMonth() + Date().getFullYear() }}{{ $t('common:date:today') }}{{ new Date().getMonth() +
1 }}{{ $t('common:date:month') }}{{ new Date().getDate() }}{{ $t('common:date:day') }}{{ dayOfWeek }} 1 }}{{ $t('common:date:month') }}{{ new Date().getDate() }}{{ $t('common:date:day') }}{{ dayOfWeek }}
</div> --> </div>
<div style="font-size: .75rem;line-height: 18px;color:#999">{{ moment().format('DDMMMYYYY') }}{{ <div style="font-size: .75rem;line-height: 18px;color:#999" v-else>{{ moment().format('DDMMMYYYY') }}{{
dayOfWeek }} dayOfWeek }}
</div> </div>
</div> </div>