Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
597ca07fcf
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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: '',
|
||||
|
|
|
|||
|
|
@ -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: '',
|
||||
|
|
|
|||
|
|
@ -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: '',
|
||||
|
|
|
|||
|
|
@ -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: '',
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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({
|
||||
|
|
|
|||
Loading…
Reference in New Issue