uat_us
caiyiling 2024-03-07 10:09:01 +08:00
commit 48f3d4e40c
6 changed files with 228 additions and 17 deletions

View File

@ -3566,3 +3566,21 @@ export function batchSetCriterionJoinJoinAnalysis(param) {
data: param
})
}
export function updateTrialVirtualSiteCode(param) {
return request({
url: `/TaskConsistentRule/updateTrialVirtualSiteCode`,
method: 'post',
data: param
})
}
export function getUpdateVirtualSiteCodeList(param) {
return request({
url: `/TaskConsistentRule/getUpdateVirtualSiteCodeList?trialId=${param.trialId}`,
method: 'get'
})
}

View File

@ -1,7 +1,7 @@
/* eslint-disable */
<template>
<el-form>
<div class="base-dialog-body">
<div class="base-dialog-body" v-if="!data.IsAutoAllocateGenerateTask">
<el-table
v-loading="loading"
:data="list"
@ -48,9 +48,11 @@
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
</div>
<div v-else>{{$t('trials:grouptConsistencyAnalysis:message:createRandom')}}</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-form-item>
<!-- 取消 -->
@ -64,7 +66,7 @@
</el-button>
<!-- 生成 -->
<el-button size="small" type="primary" :loading="btnLoading" @click="save">
{{$t('trials:grouptConsistencyAnalysis:button:create')}}
{{data.IsAutoAllocateGenerateTask ? $t('trials:grouptConsistencyAnalysis:button:createRandom') : $t('trials:grouptConsistencyAnalysis:button:create')}}
</el-button>
</el-form-item>
</div>
@ -123,7 +125,7 @@ export default {
this.SelectList = e
},
save () {
if (this.SelectList.length === 0) {
if (this.SelectList.length === 0 && !this.data.IsAutoAllocateGenerateTask) {
// ''
this.$alert(this.$t('trials:grouptConsistencyAnalysis:message:msg1'))
return
@ -133,7 +135,8 @@ export default {
var params = {
TaskConsistentRuleId: this.searchData.TaskConsistentRuleId,
SubejctIdList: this.SelectList.map(v => v.SubjectId),
DoctorUserId: this.searchData.DoctorUserId
DoctorUserId: this.searchData.DoctorUserId,
IsAutoAllocateGenerateTask: this.data.IsAutoAllocateGenerateTask
}
confirmGenerateSelfConsistentTask(params).then(res => {
this.loading = false

View File

@ -52,8 +52,11 @@
>
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="save(true)">
{{$t('trials:grouptConsistencyAnalysis:button:RandomCreate')}}
</el-button>
<!-- 生成 -->
<el-button size="small" type="primary" :loading="btnLoading" @click="save">
<el-button size="small" type="primary" :loading="btnLoading" @click="save(false)">
{{$t('trials:grouptConsistencyAnalysis:button:create')}}
</el-button>
</el-form-item>
@ -131,7 +134,7 @@ export default {
handleSelectChange(e) {
this.SelectList = e
},
save () {
save (IsAutoAllocateGenerateTask) {
if (this.SelectList.length === 0) {
// ''
this.$alert(this.$t('trials:grouptConsistencyAnalysis:message:msg1'))
@ -141,7 +144,8 @@ export default {
this.loading = true
var params = {
TrialId: this.$route.query.trialId,
SubejctIdList: this.SelectList.map(v => v.SubjectId)
SubejctIdList: this.SelectList.map(v => v.SubjectId),
IsAutoAllocateGenerateTask: IsAutoAllocateGenerateTask
}
confirmGenerateGroupConsistentTask(params).then(res => {
this.loading = false

View File

@ -29,7 +29,7 @@
</el-form-item>
<!-- 虚拟中心编号 -->
<el-form-item :label="$t('trials:consistencyAnalysisRule:table:siteCode')" prop="BlindTrialSiteCode">
<el-input v-model="form.BlindTrialSiteCode" style="width: 140px;" :disabled="isDisable" />
<el-input v-model="form.BlindTrialSiteCode" style="width: 140px;" disabled />
</el-form-item>
<!-- 虚拟受试者位数 -->
<el-form-item :label="$t('trials:consistencyAnalysisRule:table:subjectNum')" prop="BlindSubjectNumberOfPlaces">
@ -73,6 +73,18 @@ export default {
return ''
}
},
OtherInfo: {
type: Object,
default() {
return {}
}
},
trialCriterionList: {
type: Array,
default() {
return []
}
},
data: {
type: Object,
default() {
@ -142,7 +154,14 @@ export default {
}).then(res => {
if (res.Result) {
this.form = res.Result
} else {
let o = this.trialCriterionList.find(v => {
return v.TrialReadingCriterionId === this.TrialReadingCriterionId
})
this.form.IsHaveReadingPeriod = o.IsReadingPeriod
this.form.IsGenerateGlobalTask = o.IsReadingPeriod
}
this.form.BlindTrialSiteCode = this.OtherInfo.VitrualSiteCode
})
},
save() {

View File

@ -0,0 +1,138 @@
/* eslint-disable */
<template>
<el-form
ref="taskAllocationRuleDataForm"
v-loading="loading"
:model="form"
size="small"
:rules="rules"
label-width="170px"
>
<div class="base-dialog-body" style="position: relative;padding-top: 50px">
<el-button @click="openSiteCodeHistory" type="text" style="position: absolute;right: 10px;top: 10px;">{{$t('trials:consistencyAnalysisRule:table:SiteCodeHistory')}}</el-button>
<!-- 访视数 -->
<el-form-item :label="$t('trials:consistencyAnalysisRule:table:nowSiteCode')">
{{ OtherInfo.VitrualSiteCode }}
</el-form-item>
<!-- 虚拟中心编号 -->
<el-form-item :label="$t('trials:consistencyAnalysisRule:table:siteCode')" prop="VirtualSiteCode">
<el-input v-model="form.VirtualSiteCode" style="width: 140px;" />
</el-form-item>
</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-form-item>
<!-- 取消 -->
<el-button
:disabled="btnLoading"
size="small"
type="primary"
@click="close"
>
{{ $t('common:button:cancel') }}
</el-button>
<!-- 保存 -->
<el-button size="small" type="primary" :loading="btnLoading" @click="save">
{{ $t('common:button:save') }}
</el-button>
</el-form-item>
</div>
<el-dialog
v-if="isSiteCodeHistory"
:title="$t('trials:consistencyAnalysis:dialog:isSiteCodeHistory')"
:visible.sync="isSiteCodeHistory"
width="800px"
append-to-body
:close-on-click-modal="false"
custom-class="base-dialog-wrapper"
>
<el-table
v-loading="loading"
:data="list"
stripe
min-height="300"
>
<el-table-column
show-overflow-tooltip
width="80"
>
<template slot-scope="scope">
{{scope.$index + 1}}
</template>
</el-table-column>
<el-table-column
prop="VirtualSiteCode"
:label="$t('trials:consistencyAnalysis:siteTable:VirtualSiteCode')"
show-overflow-tooltip
min-width="120"
>
</el-table-column>
<el-table-column
prop="Creatime"
:label="$t('trials:consistencyAnalysis:siteTable:Creatime')"
show-overflow-tooltip
sortable="custom"
>
</el-table-column>
</el-table>
</el-dialog>
</el-form>
</template>
<script>
import { updateTrialVirtualSiteCode, getUpdateVirtualSiteCodeList } from '@/api/trials'
export default {
name: 'VirtualCenter',
props: {
OtherInfo: {
type: Object,
default() {
return {}
}
}
},
data() {
return {
form: {
TrialId: this.$route.query.trialId,
VirtualSiteCode: '',
},
rules: {
VirtualSiteCode: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }],
},
loading: false,
btnLoading: false,
isSiteCodeHistory: false,
list: []
}
},
mounted() {
},
methods: {
openSiteCodeHistory() {
this.isSiteCodeHistory = true
getUpdateVirtualSiteCodeList({
trialId: this.$route.query.trialId
}).then(res => {
this.list = res.Result
})
},
save() {
this.$refs.taskAllocationRuleDataForm.validate(valid => {
if (!valid) return
this.btnLoading = true
this.loading = true
updateTrialVirtualSiteCode(this.form).then(res => {
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.btnLoading = false
this.loading = false
this.$emit('getList')
this.$emit('close')
})
})
},
close() { this.$emit('close') }
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -104,9 +104,13 @@
{{$t('trials:consistencyAnalysis:button:self')}}
</el-button>
<!-- 组间一致性分析 -->
<el-button type="primary" v-if="hasPermi(['trials:trials-panel:reading:consistency-analysis:edit'])" @click="openTaskConsistentRule(false)">
<el-button :disabled="!OtherInfo.IsHaveDoubleReadCriterion" type="primary" v-if="hasPermi(['trials:trials-panel:reading:consistency-analysis:edit'])" @click="openTaskConsistentRule(false)">
{{$t('trials:consistencyAnalysis:button:group')}}
</el-button>
<!-- 虚拟中心编号 -->
<el-button type="primary" v-if="hasPermi(['trials:trials-panel:reading:consistency-analysis:edit'])" @click="openSite()">
{{$t('trials:consistencyAnalysis:button:site')}}
</el-button>
</el-form-item>
</el-form>
</template>
@ -482,7 +486,14 @@
circle
icon="el-icon-s-check"
:title="$t('trials:selftConsistencyAnalysis:button:select')"
@click="openDoctorConsistentRuleSubjectTable(scope.row)"
@click="openDoctorConsistentRuleSubjectTable(scope.row, false)"
/>
<!-- 选择 -->
<el-button
circle
icon="el-icon-connection"
:title="$t('trials:grouptConsistencyAnalysis:button:RandomCreate')"
@click="openDoctorConsistentRuleSubjectTable(scope.row, true)"
/>
</template>
</el-table-column>
@ -514,7 +525,7 @@
<!-- 配置组间一致性分析规则 -->
{{$t('trials:grouptConsistencyAnalysis:button:config')}}
</el-button>
<GroupConsistentRuleSubjectTable :TrialReadingCriterionId="item.TrialReadingCriterionId"
<GroupConsistentRuleSubjectTable v-if="TrialReadingCriterionId === item.TrialReadingCriterionId" :TrialReadingCriterionId="item.TrialReadingCriterionId"
:ref="`GroupConsistentRuleSubjectTable${item.TrialReadingCriterionId}`" style="margin-top: 40px" :IsSelfAnalysis="IsSelfAnalysis" :changeNum="changeNum" @close="() => {ReaderRulesVisible2 = false; ; rowData = {}}" @getList="getList()" />
</el-tab-pane>
</el-tabs>
@ -526,19 +537,31 @@
width="480px"
:close-on-click-modal="false"
>
<ReaderRulesForm :isDisable="isDisable" :TrialReadingCriterionId="TrialReadingCriterionId" :data="rowData" :select-list="SelectList" :doctor-user-list="DoctorUserList" :is-self-analysis="IsSelfAnalysis" @close="() => {ReaderRulesFormVisible = false; rowData = {}}" @getList="openTaskConsistentRule(IsSelfAnalysis)" />
<ReaderRulesForm :other-info="OtherInfo" :isDisable="isDisable" :trial-criterion-list="trialCriterionList" :TrialReadingCriterionId="TrialReadingCriterionId" :data="rowData" :select-list="SelectList" :doctor-user-list="DoctorUserList" :is-self-analysis="IsSelfAnalysis" @close="() => {ReaderRulesFormVisible = false; rowData = {}}" @getList="openTaskConsistentRule(IsSelfAnalysis)" />
</el-dialog>
<!-- 选择受试者 -->
<el-dialog
v-if="DoctorConsistentRuleSubjectTableVisible"
:title="$t('trials:consistencyAnalysis:dialog:selectSubject')"
:title="rowData.IsAutoAllocateGenerateTask ? $t('trials:consistencyAnalysis:dialog:selectSubjectRandom') : $t('trials:consistencyAnalysis:dialog:selectSubject')"
:visible.sync="DoctorConsistentRuleSubjectTableVisible"
width="1000px"
:width="rowData.IsAutoAllocateGenerateTask ? '400px' : '1000px'"
:close-on-click-modal="false"
>
<DoctorConsistentRuleSubjectTable :data="rowData" @close="() => {DoctorConsistentRuleSubjectTableVisible = false; ; rowData = {}}" @getList="openTaskConsistentRule(IsSelfAnalysis)" />
</el-dialog>
<!-- 申请重阅 -->
<el-dialog
v-if="isOpenSite"
:title="$t('trials:consistencyAnalysis:dialog:isOpenSite')"
:visible.sync="isOpenSite"
width="600px"
append-to-body
:close-on-click-modal="false"
custom-class="base-dialog-wrapper"
>
<VirtualCenter :other-info="OtherInfo" @getList="getList" @close="isOpenSite=false"></VirtualCenter>
</el-dialog>
<el-dialog
v-if="ApplyforReasonVisible"
:title="$t('trials:consistencyAnalysis:dialog:applyReread')"
@ -605,6 +628,7 @@ import { getSelfAnalysisTaskList_Export, getGroupAnalysisTaskList_Export } from
import ReaderRulesForm from './components/ReaderRulesForm'
import DoctorConsistentRuleSubjectTable from './components/DoctorConsistentRuleSubjectTable'
import GroupConsistentRuleSubjectTable from './components/GroupConsistentRuleSubjectTable'
import VirtualCenter from './components/VirtualCenter'
import BaseContainer from '@/components/BaseContainer'
import Pagination from '@/components/Pagination'
import { getToken } from '@/utils/auth'
@ -632,7 +656,7 @@ const searchDataDefault = () => {
}
export default {
name: 'TrialsNotice',
components: { BaseContainer, Pagination, ReaderRulesForm, DoctorConsistentRuleSubjectTable, GroupConsistentRuleSubjectTable },
components: { BaseContainer, Pagination, ReaderRulesForm, DoctorConsistentRuleSubjectTable, GroupConsistentRuleSubjectTable, VirtualCenter },
data() {
return {
TrialReadingCriterionId: null,
@ -670,7 +694,8 @@ export default {
RequestReReadingReason: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }]
},
changeNum: 0,
openWindow:null
openWindow:null,
isOpenSite: false
}
},
mounted() {
@ -685,6 +710,9 @@ export default {
}
},
methods: {
openSite() {
this.isOpenSite = true
},
handleExport(type) {
if (!this.searchData.TrialReadingCriterionId) {
this.$alert(this.$t('trials:consistencyAnalysis:message:selectCriterion'))//''
@ -794,9 +822,10 @@ export default {
this.rowData = {...row}
this.ReaderRulesFormVisible = true
},
openDoctorConsistentRuleSubjectTable(row) {
openDoctorConsistentRuleSubjectTable(row, IsAutoAllocateGenerateTask) {
this.rowData = {...row}
this.DoctorConsistentRuleSubjectTableVisible = true
this.rowData.IsAutoAllocateGenerateTask = IsAutoAllocateGenerateTask
},
addReaderRulesForm(isg) {
this.isDisable = false