bug修复
parent
33be113d8d
commit
d224bf8700
|
@ -27,7 +27,7 @@ VUE_APP_LOGOUT_FOR_PERMISSION = false
|
|||
VUE_APP_LOGOUT_FOR_TIME = 1800
|
||||
|
||||
# 是否开启密码正则验证 true:是 false:否
|
||||
VUE_APP_PASSWORD_FOR_PERMISSION = true
|
||||
VUE_APP_PASSWORD_FOR_PERMISSION = false
|
||||
|
||||
# 密码校验规则
|
||||
VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
|
||||
|
|
|
@ -1747,6 +1747,22 @@ export function deleteTrialExternalUser(id) {
|
|||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
export function getUserTobeDoneRecord() {
|
||||
return request({
|
||||
url: `/PersonalWorkstation/getUserTobeDoneRecord`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function getNeedSignTrialDocTrialIdList() {
|
||||
return request({
|
||||
url: `/PersonalWorkstation/getNeedSignTrialDocTrialIdList`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function getBasicStat() {
|
||||
return request({
|
||||
url: `/PersonalWorkstation/getBasicStat`,
|
||||
|
@ -3534,3 +3550,11 @@ export function mergeLesion(param) {
|
|||
data: param
|
||||
})
|
||||
}
|
||||
|
||||
export function resetAndAsyncCriterion(param) {
|
||||
return request({
|
||||
url: `/Inspection/ReadingCriterion/ResetAndAsyncCriterion`,
|
||||
method: 'post',
|
||||
data: param
|
||||
})
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ export default
|
|||
ReadingUnitConfirmation: 108, // 医学审核问题确认
|
||||
MedicalAudit: 215,// 医学审核
|
||||
HeavyReadingApproval: 216,// 重阅审批
|
||||
ResetAndAsyncCriterion: 218, //同步签名
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -167,7 +167,7 @@
|
|||
{ required: true, message: this.$t('common:ruleMessage:select')}
|
||||
]"
|
||||
>
|
||||
<el-input :value="$fd('DigitPlaces', ValueType).toString()" :disabled="true"/>
|
||||
<el-input :value="$fd('DigitPlaces', digitPlaces).toString()" :disabled="true"/>
|
||||
</el-form-item>
|
||||
<!-- 单位 -->
|
||||
<el-form-item
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
icon="el-icon-refresh-left"
|
||||
:loading="loading"
|
||||
size="mini"
|
||||
v-if="NODE_ENV !== 'prod' && !hasPermi(['role:admin'])"
|
||||
@click="handleSync"
|
||||
v-if="!hasPermi(['role:admin'])"
|
||||
@click="syncSign"
|
||||
>
|
||||
{{ $t('trials:readingUnit:button:sync') }}
|
||||
</el-button>
|
||||
|
@ -84,10 +84,24 @@
|
|||
</div>
|
||||
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
|
||||
</el-dialog>
|
||||
<!--签名框 -->
|
||||
<el-dialog
|
||||
v-if="signVisible2"
|
||||
:visible.sync="signVisible2"
|
||||
:close-on-click-modal="false"
|
||||
width="600px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<div slot="title">
|
||||
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
|
||||
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
|
||||
</div>
|
||||
<SignForm ref="signForm" :sign-code-enum="signCode2" @closeDialog="closeSignDialog2" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { resetTrialCriterionAsyncState, asyncTrialCriterionDictionary, getTrialCriterionList, trialReadingInfoSign, trialReadingInfoSignVerify, verifyeCriterionNeedSynchronize, synchronizeCriterion } from '@/api/trials'
|
||||
import { resetAndAsyncCriterion, resetTrialCriterionAsyncState, asyncTrialCriterionDictionary, getTrialCriterionList, trialReadingInfoSign, trialReadingInfoSignVerify, verifyeCriterionNeedSynchronize, synchronizeCriterion } from '@/api/trials'
|
||||
import ReadingRules from './components/ReadingRules'
|
||||
import ReadingCriterions from './components/ReadingCriterions'
|
||||
import ArbitrationRules from './components/ArbitrationRules'
|
||||
|
@ -104,7 +118,9 @@ export default {
|
|||
NODE_ENV: process.env.NODE_ENV,
|
||||
activeCollapse: ['1', '2', '3', '4', '5'],
|
||||
signCode: null,
|
||||
signCode2: null,
|
||||
signVisible: false,
|
||||
signVisible2: false,
|
||||
currentUser: zzSessionStorage.getItem('userName'),
|
||||
isConfirm: true,
|
||||
loading: false,
|
||||
|
@ -137,19 +153,35 @@ export default {
|
|||
this.getTrialCriterionList()
|
||||
},
|
||||
methods: {
|
||||
handleSync() {
|
||||
closeSignDialog2(isSign, signInfo) {
|
||||
if (isSign) {
|
||||
this.handleSync(signInfo)
|
||||
} else {
|
||||
this.signVisible2 = false
|
||||
}
|
||||
},
|
||||
syncSign() {
|
||||
const { ResetAndAsyncCriterion } = const_.processSignature
|
||||
this.signCode2 = ResetAndAsyncCriterion
|
||||
this.signVisible2 = true
|
||||
},
|
||||
handleSync(signInfo) {
|
||||
// '确定要同步最新标准配置吗?'
|
||||
this.$confirm(this.$t('trials:readingUnit:message:sync')).then(() => {
|
||||
this.loading = true
|
||||
resetTrialCriterionAsyncState(this.TrialReadingCriterionId).then(async res => {
|
||||
await this.asyncTrialCriterionDictionary(this.TrialReadingCriterionId)
|
||||
const params = {
|
||||
data: {
|
||||
TrialReadingCriterionId: this.TrialReadingCriterionId
|
||||
},
|
||||
signInfo: signInfo
|
||||
}
|
||||
resetAndAsyncCriterion(params).then(async res => {
|
||||
this.isPaneShow = false
|
||||
this.$nextTick(() => {
|
||||
this.signVisible2 = false
|
||||
this.isPaneShow = true
|
||||
this.loading = false
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
asyncTrialCriterionDictionary(TrialReadingCriterionId) {
|
||||
return new Promise(resolve => {
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
icon="el-icon-upload"
|
||||
v-if="scope.row.ToBeDealedCount !== 0 || scope.row.ReadModuleCount !== 0"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:title:UploadClinicalData')"
|
||||
@click="handleUpload(scope.row)"
|
||||
/>
|
||||
|
@ -74,6 +75,7 @@
|
|||
v-if="scope.row.ToBeVisitCount !== 0"
|
||||
icon="el-icon-link"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:UploadImage')"
|
||||
@click="goVisit(scope.row)"
|
||||
/>
|
||||
|
@ -371,6 +373,12 @@ const searchDataDefault2 = () => {
|
|||
export default {
|
||||
name: 'NeedSignDoc',
|
||||
components: { Pagination, clinicalDataQuestions, SignForm, BaseContainer },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formRow: {},
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
<el-button
|
||||
icon="el-icon-upload"
|
||||
v-if="scope.row.ToBeDealedCount !== 0 || scope.row.ReadModuleCount !== 0"
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
circle
|
||||
:title="$t('trials:workbench:title:UploadClinicalData')"
|
||||
@click="handleUpload(scope.row)"
|
||||
|
@ -378,6 +379,12 @@ const searchDataDefault2 = () => {
|
|||
export default {
|
||||
name: 'NeedSignDoc',
|
||||
components: { Pagination, clinicalDataQuestions, SignForm, BaseContainer },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isListShow: false,
|
||||
|
|
|
@ -58,12 +58,14 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:action:sign')"
|
||||
@click="handleUpload(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
icon="el-icon-link"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:action:access')"
|
||||
@click="goVisit(scope.row)"
|
||||
/>
|
||||
|
@ -389,6 +391,12 @@ const searchDataDefault = () => {
|
|||
}
|
||||
export default {
|
||||
name: 'NeedSignDoc',
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
components: { Pagination, clinicalDataQuestions, SignForm },
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -75,6 +75,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:action:sign')"
|
||||
@click="handleSign(scope.row)"
|
||||
/>
|
||||
|
@ -98,6 +99,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'NeedSignDoc',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -95,6 +96,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ImageQC',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -88,6 +89,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ImageQuestion',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -87,6 +88,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ImageReupload',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -88,6 +89,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ImageSubmission',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -88,6 +89,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ImageVerification',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -79,6 +79,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -102,6 +103,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ImageToRead',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -79,6 +79,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -102,6 +103,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'MedicalAudit',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -95,6 +96,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'MedicalFeedback',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:button:handle')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -88,6 +89,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'QcQuestion',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:researchRecord:action:view')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -88,6 +89,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'RereadApproval',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:seletctedReviews:timeline:approval')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -93,6 +94,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ReviewerApproval',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('common:button:confirm')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -93,6 +94,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'ReviewerScreen',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:pendingSiteResearch:action:audit')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -79,6 +80,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'SiteResearch',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
<el-button
|
||||
icon="el-icon-edit-outline"
|
||||
circle
|
||||
:disabled="!!~trialIdList.indexOf(scope.row.TrialId)"
|
||||
:title="$t('trials:workbench:table:approve')"
|
||||
@click="handleAudit(scope.row)"
|
||||
/>
|
||||
|
@ -88,6 +89,12 @@ const searchDataDefault = () => {
|
|||
export default {
|
||||
name: 'RereadApproval',
|
||||
components: { Pagination },
|
||||
props: {
|
||||
trialIdList: {
|
||||
type: Array,
|
||||
default() { return [] }
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listLoading: false,
|
||||
|
|
|
@ -7,128 +7,124 @@
|
|||
<div class="content-wrapper">
|
||||
<!-- PM/APM -->
|
||||
<!-- 阅片期 -->
|
||||
<div v-if="hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<clinicalDataPM />
|
||||
<clinicalDataPM :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 一致性核查 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:consistencyCheck'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:consistencyCheck'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<consistencyCheck />
|
||||
<consistencyCheck :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 重阅审批 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:rereadApproval'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:rereadApproval'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<RereadApproval />
|
||||
<RereadApproval :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 阅片人筛选 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:reviewerScreen'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:reviewerScreen'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ReviewerScreen />
|
||||
<ReviewerScreen :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 中心调研 -->
|
||||
<div v-hasPermi="['trials:trials-workbench:attachments:site-research']" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:attachments:site-research'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<SiteResearch />
|
||||
<SiteResearch :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 核对临床数据 -->
|
||||
<!-- SPM/CPM -->
|
||||
<!-- 阅片人审批 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:reviewerApproval'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:reviewerApproval'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ReviewerApproval />
|
||||
<ReviewerApproval :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 重阅审批 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:spmRereadApproval'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:spmRereadApproval'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<SpmRereadApproval />
|
||||
<SpmRereadApproval :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<!-- CRC -->
|
||||
<!-- 临床数据录入 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:clinicalDataEntry'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:clinicalDataEntry'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<clinicalData />
|
||||
<clinicalData :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 临床数据确认 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:clinicalDataEntry'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:clinicalDataEntry'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<clinicalDataConfirm />
|
||||
<clinicalDataConfirm :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 影像质疑 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbench:imageQuestion'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbench:imageQuestion'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ImageQuestion />
|
||||
<ImageQuestion :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<!-- 核查质疑 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:imageVerification'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:imageVerification'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ImageVerification />
|
||||
<ImageVerification :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 影像重传 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:imageReupload'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:imageReupload'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ImageReupload />
|
||||
<ImageReupload :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 加急影像提交 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:imageSubmission'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:imageSubmission'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ImageSubmission />
|
||||
<ImageSubmission :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- IQC -->
|
||||
<!-- 影像质控 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:imageQC'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:imageQC'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ImageQualityControl />
|
||||
<ImageQualityControl :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- QC质疑 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:qcQuestion'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:qcQuestion'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<QcQuestion />
|
||||
<QcQuestion :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- IR -->
|
||||
<!-- 影像待阅 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:imagesToRead'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:imagesToRead'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<ImagesToRead />
|
||||
<ImagesToRead :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- 医学反馈 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:medicalFeedback'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:medicalFeedback'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<MedicalFeedback />
|
||||
<MedicalFeedback :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<!-- MIM -->
|
||||
<!-- 医学审核 -->
|
||||
<div v-if="hasPermi(['trials:trials-workbenck:medicalAudit'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && hasPermi(['trials:trials-workbenck:medicalAudit'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<MedicalAudit />
|
||||
<MedicalAudit :trial-id-list="trialIdList" />
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<div v-if="!hasPermi(['role:zys'])" class="item">
|
||||
<div v-if="!isSignSystemDoc && !hasPermi(['role:zys'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<NeedSignTrialDoc />
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<div v-if="isSignSystemDoc || hasPermi(['role:zys'])" class="item">
|
||||
<el-card :body-style="{ padding: '10px'}" style="height:100%">
|
||||
<NeedSignSysDoc @refreshStats="refreshStats" />
|
||||
|
@ -161,20 +157,39 @@ import QcQuestion from './components/qcQuestion'
|
|||
import ImagesToRead from './components/imagesToRead'
|
||||
import MedicalFeedback from './components/medicalFeedback'
|
||||
import MedicalAudit from './components/medicalAudit'
|
||||
|
||||
import { getUserTobeDoneRecord, getNeedSignTrialDocTrialIdList } from '@/api/trials'
|
||||
|
||||
export default {
|
||||
name: 'WorkBench',
|
||||
components: { clinicalDataConfirm, clinicalDataPM, PanelCount, NeedSignTrialDoc, SiteResearch, NeedSignSysDoc, consistencyCheck, clinicalData, RereadApproval, ReviewerScreen, ReviewerApproval, SpmRereadApproval, ImageQuestion, ImageVerification, ImageReupload, ImageSubmission, ImageQualityControl, QcQuestion, ImagesToRead, MedicalFeedback, MedicalAudit },
|
||||
data() {
|
||||
return {
|
||||
isSignSystemDoc: false
|
||||
isSignSystemDoc: false,
|
||||
trialIdList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getUserTobeDoneRecord()
|
||||
this.getNeedSignTrialDocTrialIdList()
|
||||
},
|
||||
methods: {
|
||||
getSignSystemDocCount(count) {
|
||||
this.isSignSystemDoc = count > 0
|
||||
},
|
||||
refreshStats() {
|
||||
this.$refs['panelCount'].getData()
|
||||
},
|
||||
getNeedSignTrialDocTrialIdList() {
|
||||
getNeedSignTrialDocTrialIdList().then(res => {
|
||||
console.log(res)
|
||||
this.trialIdList = res.Result
|
||||
})
|
||||
},
|
||||
getUserTobeDoneRecord() {
|
||||
getUserTobeDoneRecord().then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue