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

uat
caiyiling 2026-03-03 16:50:28 +08:00
commit 597ca07fcf
8 changed files with 91 additions and 91 deletions

View File

@ -83,7 +83,7 @@
</div>
</el-drawer>
<feedBack v-if="$route.matched.length > 0" />
<timeTag />
<!-- <timeTag /> -->
</div>
</template>
@ -94,12 +94,15 @@ import {
} from '@/api/dictionary/dictionary'
import { getTrialExtralConfig } from '@/api/trials'
import feedBack from '@/views/trials/trials-layout/components/feedBack'
import timeTag from '@/components/timeTag'
// import timeTag from '@/components/timeTag'
import Vue from 'vue'
import i18n from './lang'
export default {
name: 'App',
components: { feedBack, timeTag },
components: {
feedBack,
// timeTag
},
data() {
return {
drawer: false,

View File

@ -68,7 +68,7 @@
<el-table-column :label="$t('common:action:action')" fixed="right" width="150">
<template slot-scope="scope">
<!--预览--->
<el-button circle icon="el-icon-view" :title="$t('download:button:preview')"
<el-button circle icon="el-icon-view" :title="$t('download:button:preview')" :disabled="forbid"
@click.stop="preview(scope.row)" />
<!--下载--->
<el-button circle icon="el-icon-download" :title="$t('download:button:download')"
@ -111,6 +111,10 @@ export default {
type: Boolean,
default: false,
},
forbid: {
type: Boolean,
default: false,
},
SubjectId: {
type: String,
default: '',

View File

@ -42,7 +42,7 @@
<template slot-scope="scope">
<div class="btnBox">
<!--上传--->
<form id="inputForm" :ref="`uploadForm_${scope.row.Id}`" enctype="multipart/form-data">
<form id="inputForm" :ref="`uploadForm_${scope.row.Id}`" enctype="multipart/form-data" v-if="!forbid">
<div class="form-group" style="margin-right: 10px">
<div :id="`directoryInputWrapper_${scope.row.Id}`" class="btn btn-link file-input">
<el-button circle icon="el-icon-upload2" :disabled="btnLoading" :loading="btnLoading"
@ -69,7 +69,7 @@
</el-table>
<div style="margin: 10px 0" class="top">
<span>{{ $t('upload:dicom:uploadTitle') }}</span>
<div class="btnBox">
<div class="btnBox" v-if="!forbid">
<span style="margin-right: 10px">
{{ $store.state.trials.uploadTip }}
</span>
@ -354,6 +354,10 @@ export default {
return {}
},
},
forbid: {
type: Boolean,
default: false,
},
TaskId: {
type: String,
default: '',

View File

@ -6,12 +6,12 @@
<el-tab-pane :label="$t('uploadDicomAndNonedicom:label:dicom')" name="dicom">
<dicomFile v-if="activeName === 'dicom'" :SubjectId="SubjectId" :SubjectCode="SubjectCode"
:Criterion="Criterion" :TaskId="VisitTaskId" :isUpload.sync="isUpload"
:isReadingTaskViewInOrder="isReadingTaskViewInOrder" :IsImageSegment="IsImageSegment" />
:isReadingTaskViewInOrder="isReadingTaskViewInOrder" :IsImageSegment="IsImageSegment" :forbid="forbid" />
</el-tab-pane>
<el-tab-pane :label="$t('uploadDicomAndNonedicom:label:nonedicom')" name="nonedicom">
<nonedicomFile v-if="activeName === 'nonedicom'" :SubjectId="SubjectId" :SubjectCode="SubjectCode"
:Criterion="Criterion" :VisitTaskId="VisitTaskId" :isUpload.sync="isUpload"
:IsImageSegment="IsImageSegment" />
:Criterion="Criterion" :VisitTaskId="VisitTaskId" :isUpload.sync="isUpload" :IsImageSegment="IsImageSegment"
:forbid="forbid" />
</el-tab-pane>
</el-tabs>
</el-dialog>
@ -29,6 +29,10 @@ export default {
type: Boolean,
default: false,
},
forbid: {
type: Boolean,
default: false,
},
SubjectId: {
type: String,
default: '',

View File

@ -109,7 +109,7 @@
<el-button circle :disabled="scope.row.UploadedFileCount <= 0" icon="el-icon-view"
:title="$t('upload:nonedicom:button:preview')" @click.stop="handlePreviewNoneDicomFiles(scope.row)" />
<!--上传--->
<el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')"
<el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')" v-if="!forbid"
@click.native.prevent="handleUpload(scope.row)" />
<!--删除--->
<el-button :disabled="scope.row.UploadedFileCount <= 0 ||
@ -239,6 +239,10 @@ export default {
type: String,
default: '',
},
forbid: {
type: Boolean,
default: false,
},
SubjectCode: {
type: String,
default: '',

View File

@ -1,109 +1,63 @@
<template>
<base-model :config="model_cfg">
<template slot="dialog-body">
<el-form
ref="NoticeForm"
:model="form"
:rules="rules"
label-width="180px"
size="small"
>
<el-form-item :label="$t('system:notice:label:NoticeLevel')" prop="NoticeLevelEnum">
<el-form ref="NoticeForm" :model="form" :rules="rules" label-width="180px" size="small">
<el-form-item :label="$t('system:notice:label:NoticeLevel')" prop="NoticeLevelEnum">
<el-select v-model="form.NoticeLevelEnum" clearable size="small">
<el-option
v-for="item of dict.type.NoteLevel"
:key="item.value"
:label="item.label"
:value="item.raw.Code * 1"
/>
<el-option v-for="item of dict.type.NoteLevel" :key="item.value" :label="item.label"
:value="item.raw.Code * 1" />
</el-select>
</el-form-item>
<el-form-item :label="$t('system:notice:label:NoticeType')" prop="NoticeTypeEnum">
<el-select v-model="form.NoticeTypeEnum" clearable size="small">
<el-option
v-for="item of dict.type.NoteType"
:key="item.value"
:label="item.label"
:value="item.raw.Code * 1"
/>
<el-option v-for="item of dict.type.NoteType" :key="item.value" :label="item.label"
:value="item.raw.Code * 1" />
</el-select>
</el-form-item>
<el-form-item :label="$t('system:notice:label:ApplicableProject')" prop="ApplicableProjectEnum">
<el-select v-model="form.ApplicableProjectEnum" clearable size="small">
<el-option
v-for="item of dict.type.NoticeApplicableTrial"
:key="item.value"
:label="item.label"
:value="item.raw.Code * 1"
/>
<el-select v-model="form.ApplicableProjectEnum" clearable size="small">
<el-option v-for="item of dict.type.NoticeApplicableTrial" :key="item.value" :label="item.label"
:value="item.raw.Code * 1" />
</el-select>
</el-form-item>
<el-form-item :label="$t('system:notice:label:NoticeUserTypeIdList')" prop="NoticeUserTypeIdList">
<el-select v-model="form.NoticeUserTypeIdList" multiple clearable size="small">
<el-option
v-for="item of roleList"
:key="item.Id"
:label="item.UserTypeShortName"
:value="item.Id"
/>
<el-option v-for="item of roleList" :key="item.Id" :label="item.UserTypeShortName" :value="item.Id" />
</el-select>
</el-form-item>
<el-form-item :label="$t('system:notice:label:NoticeMode')" prop="NoticeModeEnum">
<el-select v-model="form.NoticeModeEnum" clearable size="small">
<el-option
v-for="item of dict.type.NoticeMode"
:key="item.value"
:label="item.label"
:value="item.raw.Code * 1"
/>
<el-option v-for="item of dict.type.NoticeMode" :key="item.value" :label="item.label"
:value="item.raw.Code * 1" />
</el-select>
</el-form-item>
<el-form-item :label="$t('system:notice:label:StartDate')" prop="StartDate">
<el-date-picker
v-model="form.StartDate"
type="datetime"
/>
<el-date-picker v-model="form.StartDate" type="datetime" />
</el-form-item>
<el-form-item :label="$t('system:notice:label:EndDate')" prop="EndDate">
<el-date-picker
v-model="form.EndDate"
type="datetime"
/>
<el-form-item :label="$t('system:notice:label:EndDate')" prop="EndDate">
<el-date-picker v-model="form.EndDate" type="datetime" :default-time="'23:59:59'" />
</el-form-item>
<el-form-item v-if="!form.Id" :label="$t('system:notice:label:IsPush')" prop="IsPush">
<el-switch
v-model="form.IsPush"
:active-value="true"
:inactive-value="false"
/>
<el-switch v-model="form.IsPush" :active-value="true" :inactive-value="false" />
</el-form-item>
<el-form-item :label="$t('system:notice:label:NoticeContent')" prop="NoticeContent">
<el-input
v-model="form.NoticeContent"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
/>
<el-form-item :label="$t('system:notice:label:NoticeContent')" prop="NoticeContent">
<el-input v-model="form.NoticeContent" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" />
</el-form-item>
<el-form-item :label="$t('system:notice:label:file')">
<el-upload
class="upload-demo"
action
:before-upload="beforeUpload"
:http-request="handleUploadFile"
:on-preview="handlePreview"
:on-remove="handleRemoveFile"
:show-file-list="true"
:limit="1"
:file-list="fileList"
>
<el-button size="small" type="primary" :disabled="fileList.length > 0">{{$t('common:button:upload')}}</el-button>
<el-form-item :label="$t('system:notice:label:file')">
<el-upload class="upload-demo" action :before-upload="beforeUpload" :http-request="handleUploadFile"
:on-preview="handlePreview" :on-remove="handleRemoveFile" :show-file-list="true" :limit="1"
:file-list="fileList">
<el-button size="small" type="primary"
:disabled="fileList.length > 0">{{ $t('common:button:upload') }}</el-button>
</el-upload>
</el-form-item>
</el-form>
</template>
<template slot="dialog-footer">
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancle">{{ $t('common:button:cancel') }}</el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">{{ $t('common:button:save') }}</el-button>
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancle">{{ $t('common:button:cancel')
}}</el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">{{ $t('common:button:save')
}}</el-button>
</template>
</base-model>
</template>
@ -178,7 +132,7 @@ export default {
this.loading = true
var file = await this.fileToBlob(param.file)
const res = await this.OSSclient.put(`/System/NoticeAttachment/${param.file.name}`, file)
this.fileList.push({ name: param.file.name, path: this.$getObjectName(res.url), fullPath: this.$getObjectName(res.url), url: this.$getObjectName(res.url)})
this.fileList.push({ name: param.file.name, path: this.$getObjectName(res.url), fullPath: this.$getObjectName(res.url), url: this.$getObjectName(res.url) })
this.form.Path = this.$getObjectName(res.url)
this.form.FileName = param.file.name
this.loading = false

View File

@ -69,11 +69,11 @@
: $t('trials:pendingReadingTasks:button:review')
" icon="el-icon-edit-outline" @click="handleReadImage(scope.row)" /> -->
<!-- 上传 -->
<el-button v-hasPermi="['role:ir']" circle icon="el-icon-upload2"
<el-button v-hasPermi="['role:ir', 'role:pm', 'role:apm']" circle icon="el-icon-upload2"
:title="$t('trials:pendingReadingTasks:button:upload')"
@click="openUploadImage(scope.row, 'upload')" />
<!-- 下载 -->
<el-button v-hasPermi="['role:ir']" circle icon="el-icon-download"
<el-button v-hasPermi="['role:ir', 'role:pm', 'role:apm']" circle icon="el-icon-download"
:title="$t('trials:pendingReadingTasks:button:download')"
@click="openUploadImage(scope.row, 'download')" />
</template>
@ -84,10 +84,10 @@
</div>
<upload-dicom-and-nonedicom v-if="uploadImageVisible" :SubjectId="uploadSubjectId"
:SubjectCode="uploadSubjectCode" :Criterion="uploadTrialCriterion" :visible.sync="uploadImageVisible"
:IsImageSegment="true" />
:IsImageSegment="true" :forbid="forbid" />
<download-dicom-and-nonedicom v-if="downloadImageVisible" :SubjectId="uploadSubjectId"
:SubjectCode="uploadSubjectCode" :Criterion="uploadTrialCriterion" :visible.sync="downloadImageVisible"
:IsImageSegment="true" />
:IsImageSegment="true" :forbid="forbid" />
</BaseContainer>
</template>
<script>
@ -121,6 +121,10 @@ export default {
default: () => {
return []
}
},
forbid: {
type: Boolean,
default: false
}
},
data() {

View File

@ -116,6 +116,11 @@
<el-button v-if="!viewStatus" type="primary" icon="el-icon-info" @click="handleViewRecord">
{{ $t('common:button:failureRecord') }}
</el-button>
<!-- 靶段标注 -->
<el-button type="primary" v-if="hasIVUSOROCT" v-hasPermi="['role:pm', 'role:apm']"
@click="handleTargetSection">
{{ $t('trials:pendingReadingTasks:button:TargetSection') }}
</el-button>
<!-- <el-button type="primary" @click="openReadingRules">-->
<!-- 阅片任务规则-->
<!-- </el-button>-->
@ -340,8 +345,8 @@
<el-table-column fixed="right" :label="$t('common:action:action')" width="220">
<template slot-scope="scope">
<!-- 查看阅片结果 -->
<el-button :disabled="scope.row.ReadingTaskState !== 2" icon="el-icon-view"
circle :title="$t('trials:reviewTrack:action:viewResults')" @click="lookReadingResults(scope.row)" />
<el-button :disabled="scope.row.ReadingTaskState !== 2" icon="el-icon-view" circle
:title="$t('trials:reviewTrack:action:viewResults')" @click="lookReadingResults(scope.row)" />
<!-- 申请重阅 -->
<el-button :disabled="scope.row.ReadingCategory !== 1 ||
(scope.row.TaskState !== 0 && scope.row.TaskState !== 5) ||
@ -860,6 +865,11 @@
custom-class="base-dialog-wrapper">
<RecordList />
</el-dialog>
<el-dialog :title="$t('trials:pendingReadingTasks:button:TargetSection')" :visible.sync="TargetSection_visible"
:fullscreen="true">
<TargetSection v-if="TargetSection_visible" :TrialReadingCriterionId="TrialReadingCriterionId" :forbid="true"
:trialCriterionList="trialCriterionList" />
</el-dialog>
</template>
</BaseContainer>
</template>
@ -884,6 +894,7 @@ import RefereeRules from './components/RefereeRules.vue'
import ReviewResults from './components/ReviewResults'
import ClinicalData from '../../subject/reading-period/components/ClinicalData'
import RecordList from './components/RecordList.vue'
import TargetSection from "@/views/trials/trials-panel/reading/reading-task/components/TargetSection"
const searchDataDefault = () => {
return {
PageIndex: 1,
@ -920,6 +931,7 @@ export default {
ClinicalData,
ReviewResults,
RecordList,
TargetSection
},
props: {
AllocationReadingCategory: {
@ -1031,6 +1043,13 @@ export default {
dialogLoading: false,
openWindow: null,
recordVisible: false,
TargetSection_visible: false
}
},
computed: {
hasIVUSOROCT() {
return this.trialCriterionList.some(item => item.CriterionType === 19 || item.CriterionType === 20)
}
},
mounted() {
@ -1065,6 +1084,10 @@ export default {
}
},
methods: {
handleTargetSection() {
this.TrialReadingCriterionId = this.trialCriterionList.find(item => item.CriterionType === 19 || item.CriterionType === 20).TrialReadingCriterionId
this.TargetSection_visible = true
},
//
openFeedBack(row) {
this.$FB({