Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
commit
48f3d4e40c
|
@ -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'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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>
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue