uat_us
caiyiling 2024-03-14 15:31:54 +08:00
commit b195e6d7ce
15 changed files with 142 additions and 80 deletions

View File

@ -8,6 +8,7 @@
type="primary"
:disabled="approveIdArr.length==0"
@click="handleApprove()"
v-hasPermi="['trials:trials-panel:attachments:SPMEnrollment:button-agree']"
>
{{ $t('trials:seletctedReviews:button:approve') }}
</el-button>
@ -61,7 +62,7 @@
min-width="120"
>
<template slot-scope="scope">
{{ scope.row.SubspecialityIds.map(v => {return $fd('Subspeciality', v, 'id')}).toString() }}
{{ scope.row.SubspecialityIds.map(v => {return $fd('Subspeciality', v, 'id')}).join(", ") }}
</template>
</el-table-column>
<el-table-column
@ -110,6 +111,7 @@
/>
<!-- 同意 -->
<el-button
v-hasPermi="['trials:trials-panel:attachments:SPMEnrollment:button-agree']"
:disabled="scope.row.DoctorTrialState === 8"
icon="el-icon-check"
circle

View File

@ -39,7 +39,7 @@
</div>
<div class="div-col">
<label class="el-label">{{ $t('trials:trials-list:form:typeofReviewers:') }}</label>
<span>{{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).toString() }}</span>
<span>{{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).join(", ") }}</span>
<!-- <span>{{ $fd('AttendedReviewerType', trialInfo.AttendedReviewerType) }}</span>-->
</div>
<div class="div-col">

View File

@ -39,7 +39,7 @@
</div>
<div class="div-col">
<label class="el-label">{{ $t('trials:trials-list:form:typeofReviewers:') }}</label>
<span>{{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).toString() }}</span>
<span>{{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).join(', ') }}</span>
<!-- <span>{{ $fd('AttendedReviewerType', trialInfo.AttendedReviewerType) }}</span>-->
</div>
<div class="div-col">

View File

@ -29,6 +29,7 @@
width="150"
prop="FirstName"
sortable="custom"
v-if="!hasPermi(['role:ea'])"
>
<template slot-scope="scope">
<el-button type="text" @click="go(`/trialsResume?doctorId=${scope.row.DoctorId}&token=${token}`)">{{ scope.row.LastName }} / {{ scope.row.FirstName }}</el-button>
@ -39,6 +40,7 @@
prop="ChineseName"
sortable="custom"
:label="$t('trials:enrolledReviews:table:nameCN')"
v-if="!hasPermi(['role:ea'])"
width="120"
show-overflow-tooltip
/>
@ -46,7 +48,7 @@
<el-table-column
prop="UserName"
:label="$t('trials:enrolledReviews:table:userName')"
width="150"
:width="hasPermi(['role:ea'])?300:150"
sortable="custom"
show-overflow-tooltip
/>
@ -54,7 +56,7 @@
<el-table-column
prop="EnrollTimeStr"
:label="$t('trials:enrolledReviews:table:enrollmentTime')"
width="200"
:width="hasPermi(['role:ea'])?320:200"
sortable="custom"
show-overflow-tooltip
>
@ -77,6 +79,7 @@
:active-value="true"
:inactive-value="false"
@change="(v) => {return isEnableChange(scope.row, v)}"
:disabled="!hasPermi(['trials:trials-panel:enrolled-reviewers:list:edit'])"
/>
<span>{{$fd('IsEnable', scope.row.IsEnable)}}</span>
</div>
@ -84,6 +87,7 @@
</el-table-column>
<el-table-column
v-for="ite of TrialReadingCriterionList"
:key="ite"
:label="ite.TrialReadingCriterionName"
width="360"
header-align="center"
@ -95,7 +99,7 @@
show-overflow-tooltip
>
<template slot-scope="scope">
<span v-for="item of scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}) ? scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).ReadingCategorys : []">
<span v-for="item of scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}) ? scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).ReadingCategorys : []" :key="item">
<el-tag v-if="item === 1" type="primary">{{ $fd('ReadingCategory', item) + ' & ' + $fd('ReadingCategory', 2) }}</el-tag>
<!-- <el-tag v-if="item === 2" type="info">{{ $fd('ReadingCategory', item) }}</el-tag>-->
<el-tag v-if="item === 4" type="danger">{{ $fd('ReadingCategory', item) }}</el-tag>
@ -121,6 +125,7 @@
:active-value="true"
:inactive-value="false"
@change="(v) => {return isConsistencyChange(scope.row, ite, v, true)}"
:disabled="!hasPermi(['trials:trials-panel:enrolled-reviewers:list:edit'])"
/>
<span v-if="scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis">{{$fd('YesOrNo', scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).IsJoinAnalysis)}}</span>
<span v-else>{{$fd('YesOrNo',false)}}</span>
@ -253,9 +258,15 @@
default-first-option
style="width: 70%"
>
<el-option v-for="item of $d.ReadingCategory" v-if="item.value === 1" :key="item.id" :value="1" :label="$fd('ReadingCategory', 1) + ' & ' + $fd('ReadingCategory', 2)" />
<el-option v-for="item of $d.ReadingCategory" v-if="item.value === 4 && IsArbitrationReading" :key="item.id" :value="item.value" :label="$fd('ReadingCategory', 4)" />
<el-option v-for="item of $d.ReadingCategory" v-if="item.value === 5 && IsOncologyReading" :key="item.id" :value="item.value" :label="$fd('ReadingCategory', 5)" />
<template v-for="item of $d.ReadingCategory">
<el-option v-if="item.value === 1" :key="item.id" :value="1" :label="$fd('ReadingCategory', 1) + ' & ' + $fd('ReadingCategory', 2)" />
</template>
<template v-for="item of $d.ReadingCategory">
<el-option v-if="item.value === 4 && IsArbitrationReading" :key="item.id" :value="item.value" :label="$fd('ReadingCategory', 4)" />
</template>
<template v-for="item of $d.ReadingCategory">
<el-option v-if="item.value === 5 && IsOncologyReading" :key="item.id" :value="item.value" :label="$fd('ReadingCategory', 5)" />
</template>
</el-select>
</template>
<template slot="dialog-footer">
@ -486,7 +497,7 @@ export default {
return {
EnrollId: v.EnrollId,
TrialReadingCriterionId: v.TrialReadingCriterionId,
IsJoinAnalysis: false
IsJoinAnalysis: value
}
})
}
@ -494,6 +505,7 @@ export default {
if (showMessage) {
this.$message.success(this.$t('trials:enrolledReviews:message:batchSetCriterionJoinJoinAnalysis1'))
}
this.initPage()
})
},
go(path) {

View File

@ -64,7 +64,7 @@
>
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="save(true)">
<el-button size="small" type="primary" :disabled="!IsAllowAutoAllocate" :loading="btnLoading" @click="save(true)">
{{$t('trials:grouptConsistencyAnalysis:button:RandomCreate')}}
</el-button>
<!-- 生成 -->
@ -129,7 +129,8 @@ export default {
loading: false,
trialId: this.$route.query.trialId,
SelectList: [],
btnLoading: false
btnLoading: false,
IsAllowAutoAllocate: true
}
},
mounted() {
@ -157,7 +158,8 @@ export default {
var params = {
TrialId: this.$route.query.trialId,
SubejctIdList: this.SelectList.map(v => v.SubjectId),
IsAutoAllocateGenerateTask: IsAutoAllocateGenerateTask
IsAutoAllocateGenerateTask: IsAutoAllocateGenerateTask,
TrialReadingCriterionId: this.TrialReadingCriterionId
}
confirmGenerateGroupConsistentTask(params).then(res => {
this.loading = false
@ -176,11 +178,12 @@ export default {
this.loading = true
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
getGroupConsistentRuleSubjectList(this.searchData).then(res => {
if (res.OtherInfo) {
if (res.OtherInfo.Rule) {
this.$emit('setReaderRulesFormVisible', false)
} else {
this.$emit('setReaderRulesFormVisible', true)
}
this.IsAllowAutoAllocate = res.OtherInfo.IsAllowAutoAllocate
this.loading = false
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount

View File

@ -128,6 +128,9 @@ export default {
this.loading = false
this.$emit('getList')
this.$emit('close')
}).catch(() => {
this.loading = false
this.btnLoading = false
})
})
},

View File

@ -355,6 +355,7 @@
circle
:title="$t('trials:pmMedicalReview:action:failure')"
:disabled="scope.row.IsInvalid || !!scope.row.AuditSignTime"
v-hasPermi="['trials:trials-panel:reading:pm-medical-feedback:failure']"
icon="el-icon-close"
@click="setMedicalReviewInvalid(scope.row)"
/>
@ -363,6 +364,7 @@
:title="$t('trials:pmMedicalReview:action:assign')"
:disabled="!!scope.row.MedicalManagerUser || scope.row.IsInvalid || !!scope.row.AuditSignTime"
icon="el-icon-thumb"
v-hasPermi="['trials:trials-panel:reading:pm-medical-feedback:assign']"
@click="assignMedicalReviewTask(scope.row, 1)"
/>
<el-button
@ -370,6 +372,7 @@
:title="$t('trials:pmMedicalReview:action:cancelAssign')"
:disabled="!scope.row.MedicalManagerUser || scope.row.IsInvalid || !!scope.row.AuditSignTime"
icon="el-icon-refresh-left"
v-hasPermi="['trials:trials-panel:reading:pm-medical-feedback:cancelAssign']"
@click="assignMedicalReviewTask(scope.row, 3)"
/>
</template>

View File

@ -7,7 +7,7 @@
<div slot="search-container">
<el-form :inline="true">
<el-form-item :label="$t('trials:reviewAssign:table:siteCode')">
<el-select v-model="searchData.SiteId" clearable filterable style="width:120px;">
<el-select v-model="searchData.SiteId" clearable filterable style="width:240px;">
<el-option
v-for="(item,index) of siteOptions"
:key="'taskSearchData' + index"
@ -18,13 +18,25 @@
</el-form-item>
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewAssign:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width:100px;" />
<el-input v-model="searchData.SubjectCode" style="width:240px;" />
</el-form-item>
<!-- 阅片人 -->
<el-form-item :label="$t('trials:reviewAssign:searchForm:reader')">
<el-select v-model="searchData.DoctorUserId" clearable style="width:120px;">
<el-select v-model="searchData.DoctorUserId" clearable style="width:240px;">
<el-option v-for="item of DoctorUserList" :key="'taskSearchData' + item.DoctorUserId" :value="item.DoctorUserId" :label="`${item.UserName}(${item.FullName})`" />
</el-select>
</el-form-item>
<!-- 分配状态 -->
<el-form-item :label="$t('trials:reviewAssign:searchForm:status')">
<el-select v-model="searchData.SubjectAllocateState" clearable style="width:240px;">
<el-option v-for="item of $d.SubjectAllocateState" :key=" item.id" :value="item.value" :label="item.label" />
</el-select>
</el-form-item>
<!-- 分配角色 -->
<el-form-item :label="$t('trials:reviewAssign:searchForm:role')">
<el-select v-model="searchData.ArmList" clearable style="width:240px;" multiple>
<el-option v-for="item of $d.ArmEnum" :key="item.id" :value="item.value" :label="item.label" />
</el-select>
</el-form-item>
<!-- 查询 -->
<el-form-item>
@ -494,7 +506,9 @@ const searchDataDefault = () => {
DoctorUserId: null,
IsHaveAssigned: null,
IsAssignConfirmed: null,
TrialReadingCriterionId: null
TrialReadingCriterionId: null,
SubjectAllocateState:null,
ArmList:[]
}
}
const taskSearchDataDefault = () => {
@ -514,7 +528,9 @@ const taskSearchDataDefault = () => {
ReadingCategory: null,
TaskAllocationState: null,
BeginAllocateDate: null,
EndAllocateDate: null
EndAllocateDate: null,
SubjectAllocateState:null,
ArmList:[]
}
}
export default {
@ -585,7 +601,15 @@ export default {
if (v) {
this.getList()
}
}
},
// "searchData.SubjectAllocateState":{
// handler(){
// if(!this.searchData.SubjectAllocateState){
// this.searchData.ArmList = [];
// }
// },
// // immediate:true
// }
},
mounted() {
this.getDoctorUserSelectList()

View File

@ -323,7 +323,7 @@
</box-content>
</template>
<script>
import { batchDeteteCriterionMedicineQuestion, getReadingMedicineTrialQuestionList, deleteReadingMedicineTrialQuestion, confirmReadingMedicineQuestion, verifyReadingMedicineQuestion } from '@/api/trials'
import { batchDeteteCriterionMedicineQuestion, getReadingMedicineTrialQuestionList, deleteReadingMedicineTrialQuestion, confirmReadingMedicineQuestion, verifyReadingMedicineQuestion, verifyIsCanConfirm } from '@/api/trials'
import { getTrialCriterionList } from '@/api/trials/reading'
import BoxContent from '@/components/BoxContent'
import DefaultQS from './components/DefaultQsLang'
@ -489,12 +489,17 @@ export default {
return
}
this.loading = true
verifyIsCanConfirm({
TrialReadingCriterionId: this.trialReadingCriterionId
}).then(res => {
console.log(res)
verifyReadingMedicineQuestion({ trialId: this.trialId, TrialReadingCriterionId: this.trialReadingCriterionId }).then(res => {
this.loading = false
const { MedicalAuditConfirmation } = const_.processSignature
this.signCode = MedicalAuditConfirmation
this.signVisible = true
}).catch(() => { this.loading = false })
}).catch(() => { this.loading = false })
},
//
closeSignDialog(isSign, signInfo) {

View File

@ -17,21 +17,21 @@
v-model="form.QuestionName"
/>
</el-form-item>
<el-form-item
:label="$t('common:title:languageType')"
prop="LanguageType"
>
<el-select
v-model="form.LanguageType"
>
<el-option
v-for="item of $d.LanguageType"
:key="item.value"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<!-- <el-form-item-->
<!-- :label="$t('common:title:languageType')"-->
<!-- prop="LanguageType"-->
<!-- >-->
<!-- <el-select-->
<!-- v-model="form.LanguageType"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item of $d.LanguageType"-->
<!-- :key="item.value"-->
<!-- :value="item.value"-->
<!-- :label="item.label"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- 类型 -->
<el-form-item
:label="$t('trials:qcCfg:table:type')"
@ -223,6 +223,7 @@ export default {
mounted() {
this.trialId = this.$route.query.trialId
this.initForm()
},
methods: {
async initForm() {
@ -236,6 +237,11 @@ export default {
this.parentTriggerValOptions = this.parentOptions[index].TypeValue.split('|')
}
}
if (this.$i18n.locale === 'zh') {
this.form.LanguageType = 0
} else {
this.form.LanguageType = 1
}
if (Object.keys(this.data).length > 0) {
for (const k in this.form) {
if (this.data.hasOwnProperty(k)) {

View File

@ -8,23 +8,23 @@
<el-input v-model="searchData.QuestionName" clearable style="width:120px;" />
</el-form-item>
<!-- 语言类型 -->
<el-form-item
:label="$t('common:title:languageType')"
style="margin-top: 10px"
>
<el-select
v-model="searchData.LanguageType"
clearable
style="width:120px;"
>
<el-option
v-for="item of $d.LanguageType"
:key="item.value"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<!-- <el-form-item-->
<!-- :label="$t('common:title:languageType')"-->
<!-- style="margin-top: 10px"-->
<!-- >-->
<!-- <el-select-->
<!-- v-model="searchData.LanguageType"-->
<!-- clearable-->
<!-- style="width:120px;"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item of $d.LanguageType"-->
<!-- :key="item.value"-->
<!-- :value="item.value"-->
<!-- :label="item.label"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- 类型 -->
<el-form-item :label="$t('trials:qcCfg:table:type')" style="margin-top: 10px">
<el-select v-model="searchData.Type" clearable style="width:120px;">
@ -120,16 +120,16 @@
show-overflow-tooltip
/>
<!-- 审核问题 -->
<el-table-column
prop="LanguageType"
:label="$t('common:title:languageType')"
show-overflow-tooltip
width="100"
>
<template slot-scope="scope">
{{ $fd('LanguageType', scope.row.LanguageType) }}
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="LanguageType"-->
<!-- :label="$t('common:title:languageType')"-->
<!-- show-overflow-tooltip-->
<!-- width="100"-->
<!-- >-->
<!-- <template slot-scope="scope">-->
<!-- {{ $fd('LanguageType', scope.row.LanguageType) }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- 类型 -->
<el-table-column
prop="Type"

View File

@ -538,7 +538,7 @@
:data="$d.Bodypart"
stripe
height="450"
row-key="Id"
row-key="id"
@select="handleBodyPartSelectionChange"
>
<el-table-column
@ -589,7 +589,7 @@
:data="$d.Modality"
stripe
height="450"
row-key="Id"
row-key="id"
class="criterion-table"
@select="handleSelectionChange"
>

View File

@ -120,8 +120,8 @@ export default {
Description: '',
IsBaseLine: false,
// BlindName: '',
VisitWindowLeft: -3,
VisitWindowRight: 3,
VisitWindowLeft: -5,
VisitWindowRight: 5,
IsConfirmed: false,
IsDeleted: false,
IsHaveFirstConfirmed: false

View File

@ -286,7 +286,7 @@ export default {
})
},
handleAdd() {
this.row = { TrialId: this.trialId, Id: '', IsBaseLine: false, BlindName: '', VisitWindowLeft: -3, VisitWindowRight: 3, Description: '' }
this.row = { TrialId: this.trialId, Id: '', IsBaseLine: false, BlindName: '', VisitWindowLeft: -5, VisitWindowRight: 5, Description: '' }
this.timer = new Date().getTime()
if (this.list.length === 0) {
this.row.VisitName = 'Baseline'
@ -300,6 +300,10 @@ export default {
this.row.VisitName = this.list[this.list.length - 1].VisitName.split(' ')[0] + ' ' + (this.list[this.list.length - 1].VisitNum + 1)
this.row.VisitNum = this.list[this.list.length - 1].VisitNum + 1
this.row.VisitDay = this.list[this.list.length - 1].VisitDay - this.list[this.list.length - 2].VisitDay + this.list[this.list.length - 1].VisitDay
if (this.list[this.list.length - 1].VisitWindowLeft && this.list[this.list.length - 1].VisitWindowRight) {
this.row.VisitWindowLeft = this.list[this.list.length - 1].VisitWindowLeft
this.row.VisitWindowRight = this.list[this.list.length - 1].VisitWindowRight
}
}
this.visit_model.title = this.$t('common:button:add')
this.visit_model.visible = true

View File

@ -70,11 +70,11 @@
<div style="padding: 12px">
<div class="user-profile-wrapper" style="padding: 24px 0 24px 12px;">
<div style="display: flex;align-items: center;margin-bottom: 20px;" class="user-info">
<div style="margin-right: 0.75rem;background: #428bca;width: 44px;height: 44px;border-radius: 50%;line-height: 44px;text-align: center;font-size: 12px;color:#fff;">
<div style="margin-right: 0.75rem;background: #428bca;width: 44px;height: 44px;border-radius: 50%;line-height: 44px;text-align: center;font-size: 12px;color:#fff;overflow: hidden">
{{ user.LastName }}
</div>
<div class="user-description" style="">
<div style="font-size: .875rem;color: #333;line-height: 22px;display: flex;margin-bottom: 0.25rem;"><span style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;max-width: 75px">{{user.RealName}}</span></div>
<div style="font-size: .875rem;color: #333;line-height: 22px;display: flex;margin-bottom: 0.25rem;"><span style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;max-width: 150px">{{user.RealName}}</span></div>
<div style="font-size: .75rem;line-height: 18px;color:#999">{{new Date().getFullYear()}}{{$t('common:date:today')}}{{new Date().getMonth() + 1}}{{$t('common:date:month')}}{{new Date().getDate()}}{{$t('common:date:day')}}{{ dayOfWeek }}</div>
</div>
</div>
@ -98,7 +98,7 @@
<!-- </div>-->
<!-- </div>-->
<div class="thy-divider" style="border-top: 1px solid #eee;margin: 0;"></div>
<div class="my_select_title">{{ $t('trials:workbench:title:padding') }}</div>
<div class="my_select_title" style="font-size: 18px">{{ $t('trials:workbench:title:padding') }}</div>
<div class="my_select">
<!-- PM/APM -->
<!-- 阅片期 -->
@ -123,10 +123,10 @@
</div>
</div>
<!-- 中心调研 -->
<div class="my_select_box" :class="{selected: selected === 'SiteResearch'}" tab-data="SiteResearch" @click="selected = 'SiteResearch'" v-if="hasPermi(['trials:trials-workbench:reviewerScreen'])">
<div class="my_select_box" :class="{selected: selected === 'SiteResearch'}" tab-data="SiteResearch" @click="selected = 'SiteResearch'" v-if="hasPermi(['trials:trials-workbench:attachments:site-research'])">
<div class="my_select_box_content">
<span class="el-icon-edit-outline" style="padding: 4px;margin: 4px;color: #6698ff"></span>
<span class="my_select_box_content_text">{{ $t('trials:workbench:title:pendingSiteResearch') }}</span><span style="margin:0 0.25rem">·</span><span>{{ tabList.PM_SiteSurveryCount }}</span>
<span class="my_select_box_content_text">{{ $t('trials:workbench:title:pendingSiteResearch') }}</span><span style="margin:0 0.25rem">·</span><span>{{hasPermi(['role:pm'])? tabList.PM_SiteSurveryCount : tabList.SPM_SiteSurveryCount }}</span>
</div>
</div>
<!-- SPM/CPM -->
@ -227,7 +227,7 @@
</div>
</div>
<div class="thy-divider" style="border-top: 1px solid #eee;margin: 0;"></div>
<div class="my_select_title">{{ $t('trials:workbench:title:my') }}</div>
<div class="my_select_title" style="font-size: 18px">{{ $t('trials:workbench:title:my') }}</div>
<div class="my_select">
<!-- 项目已签署文件 -->
<div class="my_select_box" :class="{selected: selected === 'NeedSignedTrialDoc'}" tab-data="NeedSignedTrialDoc" @click="selected = 'NeedSignedTrialDoc'" v-if="!hasPermi(['role:zys'])">