Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is running Details

uat
caiyiling 2026-01-30 18:06:28 +08:00
commit 742b60bba2
10 changed files with 141 additions and 359 deletions

BIN
src/assets/mp4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
src/assets/system.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

View File

@ -24,7 +24,10 @@
<div v-if="NODE_ENV === 'usa'"> <div v-if="NODE_ENV === 'usa'">
<svg-icon icon-class="login-logo" style="width: 300px; height: 94px" /> <svg-icon icon-class="login-logo" style="width: 300px; height: 94px" />
</div> </div>
<div class="title" v-else>{{ $t('login:title:system') }}</div> <div class="title" v-else>
<img src="@/assets/system.png" alt="" :style="{ width: isEN ? '180px' : '200px', height: isEN ? '60px' : '65px' }" />
<div :style="`font-size:${isEN ? '28px' : '35px'}`">{{ $t('login:title:system') }}</div>
</div>
</div> </div>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on"
label-position="left"> label-position="left">
@ -250,6 +253,9 @@ export default {
// return window.location.host // return window.location.host
return 'elevateimaging.ai ' return 'elevateimaging.ai '
}, },
isEN() {
return this.$i18n.locale !== 'zh'
}
}, },
watch: { watch: {
'$i18n.locale': { '$i18n.locale': {
@ -697,7 +703,7 @@ $light_gray: #606266;
.login-form { .login-form {
position: absolute; position: absolute;
top: 55%; top: 60%;
// transform: translateY(-50%); // transform: translateY(-50%);
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);

View File

@ -49,6 +49,9 @@
<el-image v-else-if=" <el-image v-else-if="
item.FileType === 'application/x-zip-compressed' item.FileType === 'application/x-zip-compressed'
" style="width: 100%; height: 100%" :src="zip" fit="contain" crossorigin="anonymous" /> " style="width: 100%; height: 100%" :src="zip" fit="contain" crossorigin="anonymous" />
<el-image v-else-if="
!!~item.FileType.indexOf('mp4')
" style="width: 100%; height: 100%" :src="mp4" fit="contain" crossorigin="anonymous" />
</div> </div>
<div v-if="item.FileName.length < 15" class="img-text"> <div v-if="item.FileName.length < 15" class="img-text">
{{ `${j + 1}. ${item.FileName}` }} {{ `${j + 1}. ${item.FileName}` }}
@ -102,6 +105,7 @@ import { getNoneDicomStudyList, setNodicomStudyState } from '@/api/trials'
import store from '@/store' import store from '@/store'
import pdf from '@/assets/pdf.png' import pdf from '@/assets/pdf.png'
import zip from '@/assets/zip.jpg' import zip from '@/assets/zip.jpg'
import mp4 from '@/assets/mp4.png'
import { changeURLStatic } from '@/utils/history.js' import { changeURLStatic } from '@/utils/history.js'
import Preview from './components/preview' import Preview from './components/preview'
import PreviewFile from '@/components/PreviewFile' import PreviewFile from '@/components/PreviewFile'
@ -118,6 +122,7 @@ export default {
return { return {
pdf, pdf,
zip, zip,
mp4,
activeName: 'first', activeName: 'first',
currentFileId: '', currentFileId: '',
currentStudyIndex: 0, currentStudyIndex: 0,
@ -341,10 +346,15 @@ export default {
this.pdfFile.type = 'pdf' this.pdfFile.type = 'pdf'
this.showPDF = true this.showPDF = true
return true return true
} else if (!!~file.FileType.indexOf('mp4')) {
this.pdfFile.path = file.Path || file.FullFilePath
this.pdfFile.type = file.FileType
this.showPDF = true
return true
} else { } else {
this.showPDF = false this.showPDF = false
} }
console.log(this.pdfFile)
this.currentStudyIndex = studyIndex this.currentStudyIndex = studyIndex
this.previewImage.imgList = this.previewImage.imgList =
this.studyList[studyIndex].NoneDicomStudyFileList this.studyList[studyIndex].NoneDicomStudyFileList

View File

@ -4,176 +4,79 @@
<el-form :inline="true"> <el-form :inline="true">
<!-- Name --> <!-- Name -->
<el-form-item :label="$t('trials:seletctedReviews:table:name')"> <el-form-item :label="$t('trials:seletctedReviews:table:name')">
<el-input <el-input v-model="listQuery.Name" size="small" clearable style="width: 120px" />
v-model="listQuery.Name"
size="small"
clearable
style="width: 120px"
/>
</el-form-item> </el-form-item>
<!-- Modality --> <!-- Modality -->
<el-form-item :label="$t('trials:seletctedReviews:form:modality')"> <el-form-item :label="$t('trials:seletctedReviews:form:modality')">
<el-select <el-select v-model="listQuery.ReadingTypeIdList" class="handle-select" clearable multiple collapse-tags
v-model="listQuery.ReadingTypeIdList" style="width: 160px">
class="handle-select" <el-option v-for="item of $d.ReadingType" :key="item.id" :label="item.label" :value="item.id" />
clearable
multiple
collapse-tags
style="width: 160px"
>
<el-option
v-for="item of $d.ReadingType"
:key="item.id"
:label="item.label"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- Subspeciality --> <!-- Subspeciality -->
<el-form-item :label="$t('trials:seletctedReviews:form:subspeciality')"> <el-form-item :label="$t('trials:seletctedReviews:form:subspeciality')">
<el-select <el-select v-model="listQuery.SubspecialityIdList" class="handle-select" clearable multiple collapse-tags
v-model="listQuery.SubspecialityIdList" style="width: 160px">
class="handle-select" <el-option v-for="item of $d.Subspeciality" :key="item.id" :label="item.label" :value="item.id" />
clearable
multiple
collapse-tags
style="width: 160px"
>
<el-option
v-for="item of $d.Subspeciality"
:key="item.id"
:label="item.label"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- Position --> <!-- Position -->
<el-form-item :label="$t('trials:seletctedReviews:form:position')"> <el-form-item :label="$t('trials:seletctedReviews:form:position')">
<el-select <el-select v-model="listQuery.PositionId" class="handle-select" clearable style="width: 160px">
v-model="listQuery.PositionId" <el-option v-for="item of $d.Position" :key="item.id" :label="item.label" :value="item.id" />
class="handle-select"
clearable
style="width: 160px"
>
<el-option
v-for="item of $d.Position"
:key="item.id"
:label="item.label"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- Rank --> <!-- Rank -->
<el-form-item :label="$t('trials:seletctedReviews:form:rank')"> <el-form-item :label="$t('trials:seletctedReviews:form:rank')">
<el-select <el-select v-model="listQuery.RankId" class="handle-select" style="width: 160px" clearable>
v-model="listQuery.RankId" <el-option v-for="item of $d.Rank" :key="item.id" :label="item.label" :value="item.id" />
class="handle-select"
style="width: 160px"
clearable
>
<el-option
v-for="item of $d.Rank"
:key="item.id"
:label="item.label"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- Institution --> <!-- Institution -->
<el-form-item :label="$t('trials:seletctedReviews:form:institution')"> <el-form-item :label="$t('trials:seletctedReviews:form:institution')">
<el-select <el-select v-model="listQuery.HospitalId" class="handle-select mr10" clearable style="width: 160px">
v-model="listQuery.HospitalId" <el-option v-for="(item, index) in hospitalList" :key="index" :label="item.HospitalName" :value="item.Id" />
class="handle-select mr10"
clearable
style="width: 160px"
>
<el-option
v-for="(item, index) in hospitalList"
:key="index"
:label="item.HospitalName"
:value="item.Id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 查询 --> <!-- 查询 -->
<el-button <el-button type="primary" icon="el-icon-search" :loading="loading" @click="handleSearch">
type="primary"
icon="el-icon-search"
:loading="loading"
@click="handleSearch"
>
{{ $t('common:button:search') }} {{ $t('common:button:search') }}
</el-button> </el-button>
<!-- 重置 --> <!-- 重置 -->
<el-button <el-button type="primary" icon="el-icon-refresh-left" :loading="loading" @click="handleReset">
type="primary"
icon="el-icon-refresh-left"
:loading="loading"
@click="handleReset"
>
{{ $t('common:button:reset') }} {{ $t('common:button:reset') }}
</el-button> </el-button>
<el-button <el-button v-if="hasPermi(['role:pm'])" type="primary" :disabled="selectIdArr.length == 0" icon="el-icon-check"
v-if="hasPermi(['role:pm'])" :loading="loading" @click="handleApply">
type="primary"
:disabled="selectIdArr.length == 0"
icon="el-icon-check"
:loading="loading"
@click="handleApply"
>
{{ $t('trials:seletctedReviews:button:select') }} {{ $t('trials:seletctedReviews:button:select') }}
</el-button> </el-button>
<!---简历采集--> <!---简历采集-->
<el-button <el-button type="primary" @click="resumeCollection"
type="primary" v-hasPermi="['trials:trials-panel:attachments:enrollment:viewer']">
@click="resumeCollection"
v-hasPermi="['trials:trials-panel:attachments:enrollment:viewer']"
>
{{ $t('trials:seletctedReviews:button:resumeCollection') }} {{ $t('trials:seletctedReviews:button:resumeCollection') }}
</el-button> </el-button>
<!---添加阅片人--> <!---添加阅片人-->
<el-button <el-button icon="el-icon-plus" type="primary" @click="openViewer('add')"
icon="el-icon-plus" v-hasPermi="['trials:trials-panel:attachments:enrollment:viewer']">
type="primary"
@click="openViewer('add')"
v-hasPermi="['trials:trials-panel:attachments:enrollment:viewer']"
>
{{ $t('trials:seletctedReviews:button:addViewer') }} {{ $t('trials:seletctedReviews:button:addViewer') }}
</el-button> </el-button>
</el-form> </el-form>
</template> </template>
<template slot="main-container"> <template slot="main-container">
<el-table <el-table ref="selectionList" v-loading="listLoading" v-adaptive="{ bottomOffset: 65 }" height="100" :data="list"
ref="selectionList" class="table" :row-class-name="handleHighLighRow" @sort-change="handleSortChange"
v-loading="listLoading" @selection-change="handleSelectionChange">
v-adaptive="{ bottomOffset: 65 }"
height="100"
:data="list"
class="table"
:row-class-name="handleHighLighRow"
@sort-change="handleSortChange"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" :selectable="handleSelectTable" /> <el-table-column type="selection" :selectable="handleSelectTable" />
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<!-- Name --> <!-- Name -->
<el-table-column <el-table-column prop="LastName" :label="$t('trials:seletctedReviews:table:name')" show-overflow-tooltip
prop="LastName" width="120" sortable="custom">
:label="$t('trials:seletctedReviews:table:name')"
show-overflow-tooltip
width="120"
sortable="custom"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span <span style="color: #428bca; cursor: pointer" @click="
style="color: #428bca; cursor: pointer" go(
@click=" `/trialsResume?doctorId=${scope.row.Id}&trialId=${$route.query.trialId}&token=${token}`
go( )
`/trialsResume?doctorId=${scope.row.Id}&trialId=${$route.query.trialId}&token=${token}` ">{{ scope.row.LastName }} / {{ scope.row.FirstName }}</span>
)
"
>{{ scope.row.LastName }} / {{ scope.row.FirstName }}</span
>
<!-- <el-button type="text" @click="go(`/trialsResume?doctorId=${scope.row.Id}&token=${token}`)">{{ scope.row.LastName }} / {{ scope.row.FirstName }}</el-button> --> <!-- <el-button type="text" @click="go(`/trialsResume?doctorId=${scope.row.Id}&token=${token}`)">{{ scope.row.LastName }} / {{ scope.row.FirstName }}</el-button> -->
<!-- <router-link--> <!-- <router-link-->
<!-- style="color: #428bca;"--> <!-- style="color: #428bca;"-->
@ -186,28 +89,13 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- Name CN --> <!-- Name CN -->
<el-table-column <el-table-column v-if="!isEN" prop="ChineseName" :label="$t('trials:seletctedReviews:table:nameCN')"
v-if="!isEN" show-overflow-tooltip sortable="custom" width="120" />
prop="ChineseName"
:label="$t('trials:seletctedReviews:table:nameCN')"
show-overflow-tooltip
sortable="custom"
width="120"
/>
<el-table-column <el-table-column prop="DoctorUserName" :label="$t('trials:seletctedReviews:table:doctorUserName')"
prop="DoctorUserName" show-overflow-tooltip sortable="custom" width="120" />
:label="$t('trials:seletctedReviews:table:doctorUserName')"
show-overflow-tooltip
sortable="custom"
width="120"
/>
<!-- Status --> <!-- Status -->
<el-table-column <el-table-column prop="DoctorTrialState" :label="$t('trials:seletctedReviews:table:status')" width="120">
prop="DoctorTrialState"
:label="$t('trials:seletctedReviews:table:status')"
width="120"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.DoctorTrialState === 1" type="primary">{{ <el-tag v-if="scope.row.DoctorTrialState === 1" type="primary">{{
$fd('DoctorTrialState', 16) $fd('DoctorTrialState', 16)
@ -215,35 +103,16 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- Submitted --> <!-- Submitted -->
<el-table-column <el-table-column prop="Submitted" :label="$t('trials:seletctedReviews:table:submitted')" show-overflow-tooltip
prop="Submitted" sortable="custom" width="140" />
:label="$t('trials:seletctedReviews:table:submitted')"
show-overflow-tooltip
sortable="custom"
width="140"
/>
<!-- Approved --> <!-- Approved -->
<el-table-column <el-table-column prop="Approved" :label="$t('trials:seletctedReviews:table:approved')" show-overflow-tooltip
prop="Approved" sortable="custom" width="120" />
:label="$t('trials:seletctedReviews:table:approved')"
show-overflow-tooltip
sortable="custom"
width="120"
/>
<!-- Reading --> <!-- Reading -->
<el-table-column <el-table-column prop="Reading" :label="$t('trials:seletctedReviews:table:reading')" show-overflow-tooltip
prop="Reading" sortable="custom" width="120" />
:label="$t('trials:seletctedReviews:table:reading')" <el-table-column prop="Speciality" :label="$t('trials:seletctedReviews:form:modality')" show-overflow-tooltip
show-overflow-tooltip min-width="120">
sortable="custom"
width="120"
/>
<el-table-column
prop="Speciality"
:label="$t('trials:seletctedReviews:form:modality')"
show-overflow-tooltip
min-width="120"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.ReadingTypeIds.map((v) => { scope.row.ReadingTypeIds.map((v) => {
@ -253,12 +122,8 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- Specialty --> <!-- Specialty -->
<el-table-column <el-table-column prop="Speciality" :label="$t('trials:seletctedReviews:table:specialty')" show-overflow-tooltip
prop="Speciality" min-width="120">
:label="$t('trials:seletctedReviews:table:specialty')"
show-overflow-tooltip
min-width="120"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.SpecialityId === otherId scope.row.SpecialityId === otherId
@ -270,12 +135,8 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- Subspecialty --> <!-- Subspecialty -->
<el-table-column <el-table-column prop="Subspeciality" :label="$t('trials:seletctedReviews:table:subspecialty')"
prop="Subspeciality" show-overflow-tooltip min-width="150">
:label="$t('trials:seletctedReviews:table:subspecialty')"
show-overflow-tooltip
min-width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.SubspecialityIds.map((v) => { scope.row.SubspecialityIds.map((v) => {
@ -286,76 +147,42 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- Institution --> <!-- Institution -->
<el-table-column <el-table-column prop="HospitalName" :label="$t('trials:seletctedReviews:table:institution')"
prop="HospitalName" show-overflow-tooltip width="150">
:label="$t('trials:seletctedReviews:table:institution')"
show-overflow-tooltip
width="150"
>
<template slot-scope="scope">
<span>{{ isEN?scope.row.HospitalName:scope.row.HospitalNameCN }}</span>
</template>
</el-table-column>
<!-- City -->
<el-table-column
prop="City"
:label="$t('trials:seletctedReviews:table:city')"
show-overflow-tooltip
width="150"
>
<template slot-scope="scope">
<span>{{ isEN?scope.row.City:scope.row.CityCN }}</span>
</template>
</el-table-column>
<!-- Country -->
<el-table-column
prop="Country"
:label="$t('trials:seletctedReviews:table:country')"
show-overflow-tooltip
width="150"
>
<template slot-scope="scope">
<span>{{ isEN?scope.row.Country:scope.row.CountryCN }}</span>
</template>
</el-table-column>
<!-- Selector -->
<el-table-column
prop="OptUserName"
:label="$t('trials:seletctedReviews:table:selector')"
width="150"
/>
<!-- Selection Time -->
<el-table-column
prop="OptTimeStr"
:label="$t('trials:seletctedReviews:table:selectionTime')"
width="150"
/>
<el-table-column
fixed="right"
prop="OptTimeStr"
:label="$t('common:action:action')"
width="150"
v-if="hasPermi(['trials:trials-panel:attachments:enrollment:viewer'])"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <span>{{ isEN ? scope.row.HospitalName : scope.row.HospitalNameCN }}</span>
icon="el-icon-edit-outline" </template>
:title="$t('common:button:edit')" </el-table-column>
<!-- City -->
<el-table-column prop="City" :label="$t('trials:seletctedReviews:table:city')" show-overflow-tooltip
width="150">
<template slot-scope="scope">
<span>{{ isEN ? scope.row.City : scope.row.CityCN }}</span>
</template>
</el-table-column>
<!-- Country -->
<el-table-column prop="Country" :label="$t('trials:seletctedReviews:table:country')" show-overflow-tooltip
width="150">
<template slot-scope="scope">
<span>{{ isEN ? scope.row.Country : scope.row.CountryCN }}</span>
</template>
</el-table-column>
<!-- Selector -->
<el-table-column prop="OptUserName" :label="$t('trials:seletctedReviews:table:selector')" width="150" />
<!-- Selection Time -->
<el-table-column prop="OptTimeStr" :label="$t('trials:seletctedReviews:table:selectionTime')" width="150" />
<el-table-column fixed="right" prop="OptTimeStr" :label="$t('common:action:action')" width="150"
v-if="hasPermi(['trials:trials-panel:attachments:enrollment:viewer'])">
<template slot-scope="scope">
<el-button icon="el-icon-edit-outline" :title="$t('common:button:edit')"
@click.stop="openViewer('edit', scope.row)" @click.stop="openViewer('edit', scope.row)"
v-hasPermi="['trials:trials-panel:attachments:enrollment:viewer']" v-hasPermi="['trials:trials-panel:attachments:enrollment:viewer']" :disabled="scope.row.IsEnroll"
:disabled="scope.row.IsEnroll" circle />
circle
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination class="page" :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize"
class="page" @pagination="getList" />
:total="total"
:page.sync="listQuery.PageIndex"
:limit.sync="listQuery.PageSize"
@pagination="getList"
/>
</template> </template>
<!--简历采集--> <!--简历采集-->
<base-model :config="share_model"> <base-model :config="share_model">
@ -365,14 +192,8 @@
<span>{{ $t('reviewers-list:message:msg1') }}</span> <span>{{ $t('reviewers-list:message:msg1') }}</span>
</div> </div>
<div style="margin: 10px 0"> <div style="margin: 10px 0">
<span style="">{{ $t('reviewers-list:message:msg2') }}</span <span style="">{{ $t('reviewers-list:message:msg2') }}</span><el-input type="textarea"
><el-input :autosize="{ minRows: 2, maxRows: 4 }" v-model="shareLink" readonly style="width: 100%; margin-top: 10px" />
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
v-model="shareLink"
readonly
style="width: 100%; margin-top: 10px"
/>
</div> </div>
<div> <div>
<el-button type="primary" round @click="copyCode">{{ <el-button type="primary" round @click="copyCode">{{
@ -380,80 +201,34 @@
}}</el-button> }}</el-button>
</div> </div>
<div class="sendEmailBox"> <div class="sendEmailBox">
<el-input <el-input v-model="email" clearable :placeholder="$t('reviewers-list:placeholder:sendEmail')"></el-input>
v-model="email" <el-button type="primary" round :disabled="!email" @click="sendEmail" :loading="emailLoading"
clearable style="margin-left: 10px">
:placeholder="$t('reviewers-list:placeholder:sendEmail')"
></el-input>
<el-button
type="primary"
round
:disabled="!email"
@click="sendEmail"
:loading="emailLoading"
style="margin-left: 10px"
>
{{ $t('reviewers-list:button:sendEmail') }} {{ $t('reviewers-list:button:sendEmail') }}
</el-button> </el-button>
</div> </div>
</template> </template>
</base-model> </base-model>
<!--新增或修改简历--> <!--新增或修改简历-->
<el-dialog <el-dialog :title="$t('curriculumVitae:content:title')" :visible.sync="visible" fullscreen v-if="visible"
:title="$t('curriculumVitae:content:title')" appendToBody :before-close="beforeClose">
:visible.sync="visible"
fullscreen
v-if="visible"
appendToBody
:before-close="beforeClose"
>
<curriculumVitae :reviewerId="reviewerId" /> <curriculumVitae :reviewerId="reviewerId" />
</el-dialog> </el-dialog>
<!--新增阅片人输入邮箱---> <!--新增阅片人输入邮箱--->
<el-dialog <el-dialog :title="$t('curriculumVitae:content:title')" :visible.sync="emailVisible" v-if="emailVisible"
:title="$t('curriculumVitae:content:title')" appendToBody :close-on-click-modal="false" v-dialogDrag width="400px">
:visible.sync="emailVisible" <el-form v-if="emailVisible" ref="emailForm" :model="emailForm" :rules="emailRule" class="demo-form-inline"
v-if="emailVisible" label-width="80px">
appendToBody <el-form-item :label="$t('trials:trials-panel:attachments:enrollment:form:email')" prop="EmailOrPhone">
:close-on-click-modal="false" <el-input v-model="emailForm.EmailOrPhone" clearable :maxlength="400"></el-input>
v-dialogDrag <el-input style="display: none" v-model="emailForm.EmailOrPhone" clearable :maxlength="400"></el-input>
width="400px"
>
<el-form
v-if="emailVisible"
ref="emailForm"
:model="emailForm"
:rules="emailRule"
class="demo-form-inline"
label-width="80px"
>
<el-form-item
:label="$t('trials:trials-panel:attachments:enrollment:form:email')"
prop="EmailOrPhone"
>
<el-input
v-model="emailForm.EmailOrPhone"
clearable
:maxlength="400"
></el-input>
<el-input
style="display: none"
v-model="emailForm.EmailOrPhone"
clearable
:maxlength="400"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="handleCancle"> <el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }} {{ $t('common:button:cancel') }}
</el-button> </el-button>
<el-button <el-button size="small" type="primary" @click="handleSave" :loading="emailLoading">
size="small"
type="primary"
@click="handleSave"
:loading="emailLoading"
>
{{ $t('common:button:save') }} {{ $t('common:button:save') }}
</el-button> </el-button>
</span> </span>
@ -483,7 +258,7 @@ const getListQueryDefault = () => {
Asc: false, Asc: false,
SortField: '', SortField: '',
AcceptingNewTrial: true, AcceptingNewTrial: true,
InformationConfirmed: true, // InformationConfirmed: true,
ContractorStatus: 1, ContractorStatus: 1,
} }
} }
@ -583,7 +358,7 @@ export default {
}, },
copyCode() { copyCode() {
this.$copyText( this.$copyText(
`${this.$t('reviewers-list:message:msg1')}: ${this.shareLink}` `${this.$t('reviewers-list:message:msg2')}: ${this.shareLink}`
) )
.then((res) => { .then((res) => {
this.$message.success( this.$message.success(
@ -707,7 +482,7 @@ export default {
} }
}, },
handleSelectTable(row) { handleSelectTable(row) {
return row.DoctorTrialState !== 1 return row.DoctorTrialState !== 1 && row.ResumeStatus === 1 && row.AcceptingNewTrial && !row.IsVirtual && !row.IsVacation && row.CooperateStatus === 1
}, },
handleDetail(row) { handleDetail(row) {
const { href } = this.$router.resolve({ const { href } = this.$router.resolve({
@ -733,8 +508,8 @@ export default {
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
::v-deep .el-card__body { ::v-deep .el-card__body {
padding: 20px !important; padding: 20px !important;
} }
</style> </style>

View File

@ -1042,7 +1042,7 @@ export default {
seriesArr.push(seriesList[0], seriesList[0]) seriesArr.push(seriesList[0], seriesList[0])
activeStudyIndex = seriesList[0].StudyIndex activeStudyIndex = seriesList[0].StudyIndex
activeSeriesIndex = seriesList[0].SeriesIndex activeSeriesIndex = seriesList[0].SeriesIndex
} else if (seriesArr.length > 1) { } else if (seriesList.length > 1) {
seriesArr.push(seriesList[0], seriesList[1]) seriesArr.push(seriesList[0], seriesList[1])
activeStudyIndex = seriesList[1].StudyIndex activeStudyIndex = seriesList[1].StudyIndex
activeSeriesIndex = seriesList[1].SeriesIndex activeSeriesIndex = seriesList[1].SeriesIndex

View File

@ -1,18 +1,13 @@
/* eslint-disable */ /* eslint-disable */
<template> <template>
<el-form <el-form ref="taskAllocationRuleDataForm" v-loading="loading" :model="form" size="small" :rules="rules"
ref="taskAllocationRuleDataForm" label-width="130px">
v-loading="loading"
:model="form"
size="small"
:rules="rules"
label-width="130px"
>
<div class="base-dialog-body"> <div class="base-dialog-body">
<!-- 阅片人 --> <!-- 阅片人 -->
<el-form-item :label="$t('trials:reviewAssign:allocationRules:table:reader')" prop="DoctorUserId"> <el-form-item :label="$t('trials:reviewAssign:allocationRules:table:reader')" prop="DoctorUserId">
<el-select v-model="form.DoctorUserId" :disabled="!!form.Id" clearable> <el-select v-model="form.DoctorUserId" :disabled="!!form.Id" clearable>
<el-option v-for="item of doctorUserList" :key="item.DoctorUserId" :label="`${item.UserName}(${item.FullName})`" :value="item.DoctorUserId" /> <el-option v-for="item of doctorUserList" :key="item.DoctorUser.UserId"
:label="`${item.DoctorUser.UserName}(${item.DoctorUser.FullName})`" :value="item.DoctorUser.UserId" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 计划受试者数量 --> <!-- 计划受试者数量 -->
@ -22,30 +17,21 @@
</div> </div>
</el-form-item> </el-form-item>
<!-- 状态 --> <!-- 状态 -->
<el-form-item :label="$t('trials:reviewAssign:allocationRules:table:status')" > <el-form-item :label="$t('trials:reviewAssign:allocationRules:table:status')">
<el-radio-group v-model="form.IsEnable"> <el-radio-group v-model="form.IsEnable">
<el-radio v-for="item of $d.IsEnable" :key="'form.IsEnable' + item.value" :label="item.value">{{ item.label }}</el-radio> <el-radio v-for="item of $d.IsEnable" :key="'form.IsEnable' + item.value" :label="item.value">{{ item.label
}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- 备注 --> <!-- 备注 -->
<el-form-item :label="$t('trials:reviewAssign:allocationRules:table:remark')"> <el-form-item :label="$t('trials:reviewAssign:allocationRules:table:remark')">
<el-input <el-input v-model="form.Note" type="textarea" maxlength="100" show-word-limit />
v-model="form.Note"
type="textarea"
maxlength="100"
show-word-limit
/>
</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;">
<el-form-item> <el-form-item>
<!-- 取消 --> <!-- 取消 -->
<el-button <el-button :disabled="btnLoading" size="small" type="primary" @click="close">
:disabled="btnLoading"
size="small"
type="primary"
@click="close"
>
{{ $t('common:button:cancel') }} {{ $t('common:button:cancel') }}
</el-button> </el-button>
<!-- 保存 --> <!-- 保存 -->
@ -128,5 +114,4 @@ export default {
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped></style>
</style>

View File

@ -317,7 +317,7 @@
<el-dialog v-if="taskAllocationRuleVisible" :title="title" :visible.sync="taskAllocationRuleVisible" <el-dialog v-if="taskAllocationRuleVisible" :title="title" :visible.sync="taskAllocationRuleVisible"
width="600px" :close-on-click-modal="false"> width="600px" :close-on-click-modal="false">
<AddOrEditTaskAllocationRule :data="rowData" :TaskAllocationRuleList="TaskAllocationRuleList" <AddOrEditTaskAllocationRule :data="rowData" :TaskAllocationRuleList="TaskAllocationRuleList"
:doctor-user-list="DoctorUserList" @close="() => { taskAllocationRuleVisible = false }" :doctor-user-list="TaskAllocationRuleList" @close="() => { taskAllocationRuleVisible = false }"
@getList="openAllocationConfigVisible" /> @getList="openAllocationConfigVisible" />
</el-dialog> </el-dialog>
<!--分配阅片人 --> <!--分配阅片人 -->

View File

@ -1057,7 +1057,7 @@ export default {
// //
return return
} }
this.$emit('getMarkedFileIds', { type: "remove", visitTaskId: this.taskInfo.VisitTaskId, fileId: annotation.noneDicomFileId})
if (annotation.visitTaskId === this.taskInfo.VisitTaskId) { if (annotation.visitTaskId === this.taskInfo.VisitTaskId) {
this.$emit('getEcrf', { type: "verifyAnnotationIsBound", VisitTaskId: annotation.visitTaskId, annotation }) this.$emit('getEcrf', { type: "verifyAnnotationIsBound", VisitTaskId: annotation.visitTaskId, annotation })
this.$nextTick(async () => { this.$nextTick(async () => {
@ -1102,7 +1102,6 @@ export default {
viewport.render() viewport.render()
} }
} }
this.$emit('getMarkedFileIds', { type: "remove", visitTaskId: this.taskInfo.VisitTaskId, fileId: annotation.noneDicomFileId})
// else { // else {
// console.log(1234567) // console.log(1234567)
// const errorMsg = { message: 'annotation Not allowed to operate' } // const errorMsg = { message: 'annotation Not allowed to operate' }

View File

@ -41,13 +41,18 @@
fit="contain" crossorigin="anonymous" /> fit="contain" crossorigin="anonymous" />
<el-image v-else-if="k.FileType === 'application/pdf'" style="width: 100%;height: 100%;" :src="pdf" <el-image v-else-if="k.FileType === 'application/pdf'" style="width: 100%;height: 100%;" :src="pdf"
fit="contain" crossorigin="anonymous" /> fit="contain" crossorigin="anonymous" />
<el-image v-else-if="
!!~k.FileType.indexOf('mp4')
" style="width: 100%; height: 100%" :src="mp4" fit="contain" crossorigin="anonymous" />
</div> </div>
<div class="file-text" :title="k.FileName"> <div class="file-text" :title="k.FileName">
{{ k.FileName }} {{ k.FileName }}
</div> </div>
<div> <div>
<i v-if="visitTaskInfo.ReadingTaskState < 2 && (currentMarkedFiles[k.Id] && currentMarkedFiles[k.Id].count > 0)" class="el-icon-star-on" style="font-size: 12px;color: #ff5722;" /> <i v-if="visitTaskInfo.ReadingTaskState < 2 && (currentMarkedFiles[k.Id] && currentMarkedFiles[k.Id].count > 0)"
<i v-else-if="visitTaskInfo.ReadingTaskState >= 2 && k.IsBeMark" class="el-icon-star-on" style="font-size: 12px;color: #ff5722;" /> class="el-icon-star-on" style="font-size: 12px;color: #ff5722;" />
<i v-else-if="visitTaskInfo.ReadingTaskState >= 2 && k.IsBeMark" class="el-icon-star-on"
style="font-size: 12px;color: #ff5722;" />
</div> </div>
</div> </div>
</div> </div>
@ -59,6 +64,7 @@
</template> </template>
<script> <script>
import pdf from '@/assets/pdf.png' import pdf from '@/assets/pdf.png'
import mp4 from '@/assets/mp4.png'
export default { export default {
name: 'StudyList', name: 'StudyList',
props: { props: {
@ -78,6 +84,7 @@ export default {
taskInfo: null, taskInfo: null,
studyList: [], studyList: [],
pdf, pdf,
mp4,
BodyPart: {}, BodyPart: {},
currentMarkedFiles: {} currentMarkedFiles: {}
} }
@ -181,11 +188,11 @@ export default {
} else { } else {
this.currentMarkedFiles[fileId].count++ this.currentMarkedFiles[fileId].count++
} }
} }
}, },
initCurrentMaredFiles() { initCurrentMaredFiles() {
this.visitTaskInfo.Annotations.map(i=>{ this.visitTaskInfo.Annotations.map(i => {
if (!Object.hasOwn(this.currentMarkedFiles, i.NoneDicomFileId)) { if (!Object.hasOwn(this.currentMarkedFiles, i.NoneDicomFileId)) {
this.$set(this.currentMarkedFiles, i.NoneDicomFileId, { count: 1 }) this.$set(this.currentMarkedFiles, i.NoneDicomFileId, { count: 1 })
} else { } else {